{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Route53.UpdateHealthCheck
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates an existing health check. Note that some values can\'t be
-- updated.
--
-- For more information about updating health checks, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating-deleting.html Creating, Updating, and Deleting Health Checks>
-- in the /Amazon Route 53 Developer Guide/.
module Amazonka.Route53.UpdateHealthCheck
  ( -- * Creating a Request
    UpdateHealthCheck (..),
    newUpdateHealthCheck,

    -- * Request Lenses
    updateHealthCheck_failureThreshold,
    updateHealthCheck_iPAddress,
    updateHealthCheck_enableSNI,
    updateHealthCheck_disabled,
    updateHealthCheck_resetElements,
    updateHealthCheck_searchString,
    updateHealthCheck_healthThreshold,
    updateHealthCheck_regions,
    updateHealthCheck_resourcePath,
    updateHealthCheck_insufficientDataHealthStatus,
    updateHealthCheck_healthCheckVersion,
    updateHealthCheck_alarmIdentifier,
    updateHealthCheck_inverted,
    updateHealthCheck_fullyQualifiedDomainName,
    updateHealthCheck_childHealthChecks,
    updateHealthCheck_port,
    updateHealthCheck_healthCheckId,

    -- * Destructuring the Response
    UpdateHealthCheckResponse (..),
    newUpdateHealthCheckResponse,

    -- * Response Lenses
    updateHealthCheckResponse_httpStatus,
    updateHealthCheckResponse_healthCheck,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.Route53.Types

-- | A complex type that contains information about a request to update a
-- health check.
--
-- /See:/ 'newUpdateHealthCheck' smart constructor.
data UpdateHealthCheck = UpdateHealthCheck'
  { -- | The number of consecutive health checks that an endpoint must pass or
    -- fail for Amazon Route 53 to change the current status of the endpoint
    -- from unhealthy to healthy or vice versa. For more information, see
    -- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html How Amazon Route 53 Determines Whether an Endpoint Is Healthy>
    -- in the /Amazon Route 53 Developer Guide/.
    --
    -- If you don\'t specify a value for @FailureThreshold@, the default value
    -- is three health checks.
    UpdateHealthCheck -> Maybe Natural
failureThreshold :: Prelude.Maybe Prelude.Natural,
    -- | The IPv4 or IPv6 IP address for the endpoint that you want Amazon Route
    -- 53 to perform health checks on. If you don\'t specify a value for
    -- @IPAddress@, Route 53 sends a DNS request to resolve the domain name
    -- that you specify in @FullyQualifiedDomainName@ at the interval that you
    -- specify in @RequestInterval@. Using an IP address that is returned by
    -- DNS, Route 53 then checks the health of the endpoint.
    --
    -- Use one of the following formats for the value of @IPAddress@:
    --
    -- -   __IPv4 address__: four values between 0 and 255, separated by
    --     periods (.), for example, @192.0.2.44@.
    --
    -- -   __IPv6 address__: eight groups of four hexadecimal values, separated
    --     by colons (:), for example,
    --     @2001:0db8:85a3:0000:0000:abcd:0001:2345@. You can also shorten IPv6
    --     addresses as described in RFC 5952, for example,
    --     @2001:db8:85a3::abcd:1:2345@.
    --
    -- If the endpoint is an EC2 instance, we recommend that you create an
    -- Elastic IP address, associate it with your EC2 instance, and specify the
    -- Elastic IP address for @IPAddress@. This ensures that the IP address of
    -- your instance never changes. For more information, see the applicable
    -- documentation:
    --
    -- -   Linux:
    --     <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses (EIP)>
    --     in the /Amazon EC2 User Guide for Linux Instances/
    --
    -- -   Windows:
    --     <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-ip-addresses-eip.html Elastic IP Addresses (EIP)>
    --     in the /Amazon EC2 User Guide for Windows Instances/
    --
    -- If a health check already has a value for @IPAddress@, you can change
    -- the value. However, you can\'t update an existing health check to add or
    -- remove the value of @IPAddress@.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-FullyQualifiedDomainName FullyQualifiedDomainName>.
    --
    -- Constraints: Route 53 can\'t check the health of endpoints for which the
    -- IP address is in local, private, non-routable, or multicast ranges. For
    -- more information about IP addresses for which you can\'t create health
    -- checks, see the following documents:
    --
    -- -   <https://tools.ietf.org/html/rfc5735 RFC 5735, Special Use IPv4 Addresses>
    --
    -- -   <https://tools.ietf.org/html/rfc6598 RFC 6598, IANA-Reserved IPv4 Prefix for Shared Address Space>
    --
    -- -   <https://tools.ietf.org/html/rfc5156 RFC 5156, Special-Use IPv6 Addresses>
    UpdateHealthCheck -> Maybe Text
iPAddress :: Prelude.Maybe Prelude.Text,
    -- | Specify whether you want Amazon Route 53 to send the value of
    -- @FullyQualifiedDomainName@ to the endpoint in the @client_hello@ message
    -- during @TLS@ negotiation. This allows the endpoint to respond to @HTTPS@
    -- health check requests with the applicable SSL\/TLS certificate.
    --
    -- Some endpoints require that HTTPS requests include the host name in the
    -- @client_hello@ message. If you don\'t enable SNI, the status of the
    -- health check will be SSL alert @handshake_failure@. A health check can
    -- also have that status for other reasons. If SNI is enabled and you\'re
    -- still getting the error, check the SSL\/TLS configuration on your
    -- endpoint and confirm that your certificate is valid.
    --
    -- The SSL\/TLS certificate on your endpoint includes a domain name in the
    -- @Common Name@ field and possibly several more in the
    -- @Subject Alternative Names@ field. One of the domain names in the
    -- certificate should match the value that you specify for
    -- @FullyQualifiedDomainName@. If the endpoint responds to the
    -- @client_hello@ message with a certificate that does not include the
    -- domain name that you specified in @FullyQualifiedDomainName@, a health
    -- checker will retry the handshake. In the second attempt, the health
    -- checker will omit @FullyQualifiedDomainName@ from the @client_hello@
    -- message.
    UpdateHealthCheck -> Maybe Bool
enableSNI :: Prelude.Maybe Prelude.Bool,
    -- | Stops Route 53 from performing health checks. When you disable a health
    -- check, here\'s what happens:
    --
    -- -   __Health checks that check the health of endpoints:__ Route 53 stops
    --     submitting requests to your application, server, or other resource.
    --
    -- -   __Calculated health checks:__ Route 53 stops aggregating the status
    --     of the referenced health checks.
    --
    -- -   __Health checks that monitor CloudWatch alarms:__ Route 53 stops
    --     monitoring the corresponding CloudWatch metrics.
    --
    -- After you disable a health check, Route 53 considers the status of the
    -- health check to always be healthy. If you configured DNS failover, Route
    -- 53 continues to route traffic to the corresponding resources. If you
    -- want to stop routing traffic to a resource, change the value of
    -- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-Inverted Inverted>.
    --
    -- Charges for a health check still apply when the health check is
    -- disabled. For more information, see
    -- <http://aws.amazon.com/route53/pricing/ Amazon Route 53 Pricing>.
    UpdateHealthCheck -> Maybe Bool
disabled :: Prelude.Maybe Prelude.Bool,
    -- | A complex type that contains one @ResettableElementName@ element for
    -- each element that you want to reset to the default value. Valid values
    -- for @ResettableElementName@ include the following:
    --
    -- -   @ChildHealthChecks@: Amazon Route 53 resets
    --     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-ChildHealthChecks ChildHealthChecks>
    --     to null.
    --
    -- -   @FullyQualifiedDomainName@: Route 53 resets
    --     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-FullyQualifiedDomainName FullyQualifiedDomainName>.
    --     to null.
    --
    -- -   @Regions@: Route 53 resets the
    --     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-Regions Regions>
    --     list to the default set of regions.
    --
    -- -   @ResourcePath@: Route 53 resets
    --     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-ResourcePath ResourcePath>
    --     to null.
    UpdateHealthCheck -> Maybe [ResettableElementName]
resetElements :: Prelude.Maybe [ResettableElementName],
    -- | If the value of @Type@ is @HTTP_STR_MATCH@ or @HTTPS_STR_MATCH@, the
    -- string that you want Amazon Route 53 to search for in the response body
    -- from the specified resource. If the string appears in the response body,
    -- Route 53 considers the resource healthy. (You can\'t change the value of
    -- @Type@ when you update a health check.)
    UpdateHealthCheck -> Maybe Text
searchString :: Prelude.Maybe Prelude.Text,
    -- | The number of child health checks that are associated with a
    -- @CALCULATED@ health that Amazon Route 53 must consider healthy for the
    -- @CALCULATED@ health check to be considered healthy. To specify the child
    -- health checks that you want to associate with a @CALCULATED@ health
    -- check, use the @ChildHealthChecks@ and @ChildHealthCheck@ elements.
    --
    -- Note the following:
    --
    -- -   If you specify a number greater than the number of child health
    --     checks, Route 53 always considers this health check to be unhealthy.
    --
    -- -   If you specify @0@, Route 53 always considers this health check to
    --     be healthy.
    UpdateHealthCheck -> Maybe Natural
healthThreshold :: Prelude.Maybe Prelude.Natural,
    -- | A complex type that contains one @Region@ element for each region that
    -- you want Amazon Route 53 health checkers to check the specified endpoint
    -- from.
    UpdateHealthCheck -> Maybe (NonEmpty HealthCheckRegion)
regions :: Prelude.Maybe (Prelude.NonEmpty HealthCheckRegion),
    -- | The path that you want Amazon Route 53 to request when performing health
    -- checks. The path can be any value for which your endpoint will return an
    -- HTTP status code of 2xx or 3xx when the endpoint is healthy, for example
    -- the file \/docs\/route53-health-check.html. You can also include query
    -- string parameters, for example, @\/welcome.html?language=jp&login=y@.
    --
    -- Specify this value only if you want to change it.
    UpdateHealthCheck -> Maybe Text
resourcePath :: Prelude.Maybe Prelude.Text,
    -- | When CloudWatch has insufficient data about the metric to determine the
    -- alarm state, the status that you want Amazon Route 53 to assign to the
    -- health check:
    --
    -- -   @Healthy@: Route 53 considers the health check to be healthy.
    --
    -- -   @Unhealthy@: Route 53 considers the health check to be unhealthy.
    --
    -- -   @LastKnownStatus@: Route 53 uses the status of the health check from
    --     the last time CloudWatch had sufficient data to determine the alarm
    --     state. For new health checks that have no last known status, the
    --     default status for the health check is healthy.
    UpdateHealthCheck -> Maybe InsufficientDataHealthStatus
insufficientDataHealthStatus :: Prelude.Maybe InsufficientDataHealthStatus,
    -- | A sequential counter that Amazon Route 53 sets to @1@ when you create a
    -- health check and increments by 1 each time you update settings for the
    -- health check.
    --
    -- We recommend that you use @GetHealthCheck@ or @ListHealthChecks@ to get
    -- the current value of @HealthCheckVersion@ for the health check that you
    -- want to update, and that you include that value in your
    -- @UpdateHealthCheck@ request. This prevents Route 53 from overwriting an
    -- intervening update:
    --
    -- -   If the value in the @UpdateHealthCheck@ request matches the value of
    --     @HealthCheckVersion@ in the health check, Route 53 updates the
    --     health check with the new settings.
    --
    -- -   If the value of @HealthCheckVersion@ in the health check is greater,
    --     the health check was changed after you got the version number. Route
    --     53 does not update the health check, and it returns a
    --     @HealthCheckVersionMismatch@ error.
    UpdateHealthCheck -> Maybe Natural
healthCheckVersion :: Prelude.Maybe Prelude.Natural,
    -- | A complex type that identifies the CloudWatch alarm that you want Amazon
    -- Route 53 health checkers to use to determine whether the specified
    -- health check is healthy.
    UpdateHealthCheck -> Maybe AlarmIdentifier
alarmIdentifier :: Prelude.Maybe AlarmIdentifier,
    -- | Specify whether you want Amazon Route 53 to invert the status of a
    -- health check, for example, to consider a health check unhealthy when it
    -- otherwise would be considered healthy.
    UpdateHealthCheck -> Maybe Bool
inverted :: Prelude.Maybe Prelude.Bool,
    -- | Amazon Route 53 behavior depends on whether you specify a value for
    -- @IPAddress@.
    --
    -- If a health check already has a value for @IPAddress@, you can change
    -- the value. However, you can\'t update an existing health check to add or
    -- remove the value of @IPAddress@.
    --
    -- __If you specify a value for__ @IPAddress@:
    --
    -- Route 53 sends health check requests to the specified IPv4 or IPv6
    -- address and passes the value of @FullyQualifiedDomainName@ in the @Host@
    -- header for all health checks except TCP health checks. This is typically
    -- the fully qualified DNS name of the endpoint on which you want Route 53
    -- to perform health checks.
    --
    -- When Route 53 checks the health of an endpoint, here is how it
    -- constructs the @Host@ header:
    --
    -- -   If you specify a value of @80@ for @Port@ and @HTTP@ or
    --     @HTTP_STR_MATCH@ for @Type@, Route 53 passes the value of
    --     @FullyQualifiedDomainName@ to the endpoint in the @Host@ header.
    --
    -- -   If you specify a value of @443@ for @Port@ and @HTTPS@ or
    --     @HTTPS_STR_MATCH@ for @Type@, Route 53 passes the value of
    --     @FullyQualifiedDomainName@ to the endpoint in the @Host@ header.
    --
    -- -   If you specify another value for @Port@ and any value except @TCP@
    --     for @Type@, Route 53 passes /@FullyQualifiedDomainName@:@Port@/ to
    --     the endpoint in the @Host@ header.
    --
    -- If you don\'t specify a value for @FullyQualifiedDomainName@, Route 53
    -- substitutes the value of @IPAddress@ in the @Host@ header in each of the
    -- above cases.
    --
    -- __If you don\'t specify a value for__ @IPAddress@:
    --
    -- If you don\'t specify a value for @IPAddress@, Route 53 sends a DNS
    -- request to the domain that you specify in @FullyQualifiedDomainName@ at
    -- the interval you specify in @RequestInterval@. Using an IPv4 address
    -- that is returned by DNS, Route 53 then checks the health of the
    -- endpoint.
    --
    -- If you don\'t specify a value for @IPAddress@, Route 53 uses only IPv4
    -- to send health checks to the endpoint. If there\'s no resource record
    -- set with a type of A for the name that you specify for
    -- @FullyQualifiedDomainName@, the health check fails with a \"DNS
    -- resolution failed\" error.
    --
    -- If you want to check the health of weighted, latency, or failover
    -- resource record sets and you choose to specify the endpoint only by
    -- @FullyQualifiedDomainName@, we recommend that you create a separate
    -- health check for each endpoint. For example, create a health check for
    -- each HTTP server that is serving content for www.example.com. For the
    -- value of @FullyQualifiedDomainName@, specify the domain name of the
    -- server (such as @us-east-2-www.example.com@), not the name of the
    -- resource record sets (www.example.com).
    --
    -- In this configuration, if the value of @FullyQualifiedDomainName@
    -- matches the name of the resource record sets and you then associate the
    -- health check with those resource record sets, health check results will
    -- be unpredictable.
    --
    -- In addition, if the value of @Type@ is @HTTP@, @HTTPS@,
    -- @HTTP_STR_MATCH@, or @HTTPS_STR_MATCH@, Route 53 passes the value of
    -- @FullyQualifiedDomainName@ in the @Host@ header, as it does when you
    -- specify a value for @IPAddress@. If the value of @Type@ is @TCP@, Route
    -- 53 doesn\'t pass a @Host@ header.
    UpdateHealthCheck -> Maybe Text
fullyQualifiedDomainName :: Prelude.Maybe Prelude.Text,
    -- | A complex type that contains one @ChildHealthCheck@ element for each
    -- health check that you want to associate with a @CALCULATED@ health
    -- check.
    UpdateHealthCheck -> Maybe [Text]
childHealthChecks :: Prelude.Maybe [Prelude.Text],
    -- | The port on the endpoint that you want Amazon Route 53 to perform health
    -- checks on.
    --
    -- Don\'t specify a value for @Port@ when you specify a value for @Type@ of
    -- @CLOUDWATCH_METRIC@ or @CALCULATED@.
    UpdateHealthCheck -> Maybe Natural
port :: Prelude.Maybe Prelude.Natural,
    -- | The ID for the health check for which you want detailed information.
    -- When you created the health check, @CreateHealthCheck@ returned the ID
    -- in the response, in the @HealthCheckId@ element.
    UpdateHealthCheck -> Text
healthCheckId :: Prelude.Text
  }
  deriving (UpdateHealthCheck -> UpdateHealthCheck -> Bool
(UpdateHealthCheck -> UpdateHealthCheck -> Bool)
-> (UpdateHealthCheck -> UpdateHealthCheck -> Bool)
-> Eq UpdateHealthCheck
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateHealthCheck -> UpdateHealthCheck -> Bool
$c/= :: UpdateHealthCheck -> UpdateHealthCheck -> Bool
== :: UpdateHealthCheck -> UpdateHealthCheck -> Bool
$c== :: UpdateHealthCheck -> UpdateHealthCheck -> Bool
Prelude.Eq, ReadPrec [UpdateHealthCheck]
ReadPrec UpdateHealthCheck
Int -> ReadS UpdateHealthCheck
ReadS [UpdateHealthCheck]
(Int -> ReadS UpdateHealthCheck)
-> ReadS [UpdateHealthCheck]
-> ReadPrec UpdateHealthCheck
-> ReadPrec [UpdateHealthCheck]
-> Read UpdateHealthCheck
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateHealthCheck]
$creadListPrec :: ReadPrec [UpdateHealthCheck]
readPrec :: ReadPrec UpdateHealthCheck
$creadPrec :: ReadPrec UpdateHealthCheck
readList :: ReadS [UpdateHealthCheck]
$creadList :: ReadS [UpdateHealthCheck]
readsPrec :: Int -> ReadS UpdateHealthCheck
$creadsPrec :: Int -> ReadS UpdateHealthCheck
Prelude.Read, Int -> UpdateHealthCheck -> ShowS
[UpdateHealthCheck] -> ShowS
UpdateHealthCheck -> String
(Int -> UpdateHealthCheck -> ShowS)
-> (UpdateHealthCheck -> String)
-> ([UpdateHealthCheck] -> ShowS)
-> Show UpdateHealthCheck
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateHealthCheck] -> ShowS
$cshowList :: [UpdateHealthCheck] -> ShowS
show :: UpdateHealthCheck -> String
$cshow :: UpdateHealthCheck -> String
showsPrec :: Int -> UpdateHealthCheck -> ShowS
$cshowsPrec :: Int -> UpdateHealthCheck -> ShowS
Prelude.Show, (forall x. UpdateHealthCheck -> Rep UpdateHealthCheck x)
-> (forall x. Rep UpdateHealthCheck x -> UpdateHealthCheck)
-> Generic UpdateHealthCheck
forall x. Rep UpdateHealthCheck x -> UpdateHealthCheck
forall x. UpdateHealthCheck -> Rep UpdateHealthCheck x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateHealthCheck x -> UpdateHealthCheck
$cfrom :: forall x. UpdateHealthCheck -> Rep UpdateHealthCheck x
Prelude.Generic)

-- |
-- Create a value of 'UpdateHealthCheck' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'failureThreshold', 'updateHealthCheck_failureThreshold' - The number of consecutive health checks that an endpoint must pass or
-- fail for Amazon Route 53 to change the current status of the endpoint
-- from unhealthy to healthy or vice versa. For more information, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html How Amazon Route 53 Determines Whether an Endpoint Is Healthy>
-- in the /Amazon Route 53 Developer Guide/.
--
-- If you don\'t specify a value for @FailureThreshold@, the default value
-- is three health checks.
--
-- 'iPAddress', 'updateHealthCheck_iPAddress' - The IPv4 or IPv6 IP address for the endpoint that you want Amazon Route
-- 53 to perform health checks on. If you don\'t specify a value for
-- @IPAddress@, Route 53 sends a DNS request to resolve the domain name
-- that you specify in @FullyQualifiedDomainName@ at the interval that you
-- specify in @RequestInterval@. Using an IP address that is returned by
-- DNS, Route 53 then checks the health of the endpoint.
--
-- Use one of the following formats for the value of @IPAddress@:
--
-- -   __IPv4 address__: four values between 0 and 255, separated by
--     periods (.), for example, @192.0.2.44@.
--
-- -   __IPv6 address__: eight groups of four hexadecimal values, separated
--     by colons (:), for example,
--     @2001:0db8:85a3:0000:0000:abcd:0001:2345@. You can also shorten IPv6
--     addresses as described in RFC 5952, for example,
--     @2001:db8:85a3::abcd:1:2345@.
--
-- If the endpoint is an EC2 instance, we recommend that you create an
-- Elastic IP address, associate it with your EC2 instance, and specify the
-- Elastic IP address for @IPAddress@. This ensures that the IP address of
-- your instance never changes. For more information, see the applicable
-- documentation:
--
-- -   Linux:
--     <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses (EIP)>
--     in the /Amazon EC2 User Guide for Linux Instances/
--
-- -   Windows:
--     <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-ip-addresses-eip.html Elastic IP Addresses (EIP)>
--     in the /Amazon EC2 User Guide for Windows Instances/
--
-- If a health check already has a value for @IPAddress@, you can change
-- the value. However, you can\'t update an existing health check to add or
-- remove the value of @IPAddress@.
--
-- For more information, see
-- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-FullyQualifiedDomainName FullyQualifiedDomainName>.
--
-- Constraints: Route 53 can\'t check the health of endpoints for which the
-- IP address is in local, private, non-routable, or multicast ranges. For
-- more information about IP addresses for which you can\'t create health
-- checks, see the following documents:
--
-- -   <https://tools.ietf.org/html/rfc5735 RFC 5735, Special Use IPv4 Addresses>
--
-- -   <https://tools.ietf.org/html/rfc6598 RFC 6598, IANA-Reserved IPv4 Prefix for Shared Address Space>
--
-- -   <https://tools.ietf.org/html/rfc5156 RFC 5156, Special-Use IPv6 Addresses>
--
-- 'enableSNI', 'updateHealthCheck_enableSNI' - Specify whether you want Amazon Route 53 to send the value of
-- @FullyQualifiedDomainName@ to the endpoint in the @client_hello@ message
-- during @TLS@ negotiation. This allows the endpoint to respond to @HTTPS@
-- health check requests with the applicable SSL\/TLS certificate.
--
-- Some endpoints require that HTTPS requests include the host name in the
-- @client_hello@ message. If you don\'t enable SNI, the status of the
-- health check will be SSL alert @handshake_failure@. A health check can
-- also have that status for other reasons. If SNI is enabled and you\'re
-- still getting the error, check the SSL\/TLS configuration on your
-- endpoint and confirm that your certificate is valid.
--
-- The SSL\/TLS certificate on your endpoint includes a domain name in the
-- @Common Name@ field and possibly several more in the
-- @Subject Alternative Names@ field. One of the domain names in the
-- certificate should match the value that you specify for
-- @FullyQualifiedDomainName@. If the endpoint responds to the
-- @client_hello@ message with a certificate that does not include the
-- domain name that you specified in @FullyQualifiedDomainName@, a health
-- checker will retry the handshake. In the second attempt, the health
-- checker will omit @FullyQualifiedDomainName@ from the @client_hello@
-- message.
--
-- 'disabled', 'updateHealthCheck_disabled' - Stops Route 53 from performing health checks. When you disable a health
-- check, here\'s what happens:
--
-- -   __Health checks that check the health of endpoints:__ Route 53 stops
--     submitting requests to your application, server, or other resource.
--
-- -   __Calculated health checks:__ Route 53 stops aggregating the status
--     of the referenced health checks.
--
-- -   __Health checks that monitor CloudWatch alarms:__ Route 53 stops
--     monitoring the corresponding CloudWatch metrics.
--
-- After you disable a health check, Route 53 considers the status of the
-- health check to always be healthy. If you configured DNS failover, Route
-- 53 continues to route traffic to the corresponding resources. If you
-- want to stop routing traffic to a resource, change the value of
-- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-Inverted Inverted>.
--
-- Charges for a health check still apply when the health check is
-- disabled. For more information, see
-- <http://aws.amazon.com/route53/pricing/ Amazon Route 53 Pricing>.
--
-- 'resetElements', 'updateHealthCheck_resetElements' - A complex type that contains one @ResettableElementName@ element for
-- each element that you want to reset to the default value. Valid values
-- for @ResettableElementName@ include the following:
--
-- -   @ChildHealthChecks@: Amazon Route 53 resets
--     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-ChildHealthChecks ChildHealthChecks>
--     to null.
--
-- -   @FullyQualifiedDomainName@: Route 53 resets
--     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-FullyQualifiedDomainName FullyQualifiedDomainName>.
--     to null.
--
-- -   @Regions@: Route 53 resets the
--     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-Regions Regions>
--     list to the default set of regions.
--
-- -   @ResourcePath@: Route 53 resets
--     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-ResourcePath ResourcePath>
--     to null.
--
-- 'searchString', 'updateHealthCheck_searchString' - If the value of @Type@ is @HTTP_STR_MATCH@ or @HTTPS_STR_MATCH@, the
-- string that you want Amazon Route 53 to search for in the response body
-- from the specified resource. If the string appears in the response body,
-- Route 53 considers the resource healthy. (You can\'t change the value of
-- @Type@ when you update a health check.)
--
-- 'healthThreshold', 'updateHealthCheck_healthThreshold' - The number of child health checks that are associated with a
-- @CALCULATED@ health that Amazon Route 53 must consider healthy for the
-- @CALCULATED@ health check to be considered healthy. To specify the child
-- health checks that you want to associate with a @CALCULATED@ health
-- check, use the @ChildHealthChecks@ and @ChildHealthCheck@ elements.
--
-- Note the following:
--
-- -   If you specify a number greater than the number of child health
--     checks, Route 53 always considers this health check to be unhealthy.
--
-- -   If you specify @0@, Route 53 always considers this health check to
--     be healthy.
--
-- 'regions', 'updateHealthCheck_regions' - A complex type that contains one @Region@ element for each region that
-- you want Amazon Route 53 health checkers to check the specified endpoint
-- from.
--
-- 'resourcePath', 'updateHealthCheck_resourcePath' - The path that you want Amazon Route 53 to request when performing health
-- checks. The path can be any value for which your endpoint will return an
-- HTTP status code of 2xx or 3xx when the endpoint is healthy, for example
-- the file \/docs\/route53-health-check.html. You can also include query
-- string parameters, for example, @\/welcome.html?language=jp&login=y@.
--
-- Specify this value only if you want to change it.
--
-- 'insufficientDataHealthStatus', 'updateHealthCheck_insufficientDataHealthStatus' - When CloudWatch has insufficient data about the metric to determine the
-- alarm state, the status that you want Amazon Route 53 to assign to the
-- health check:
--
-- -   @Healthy@: Route 53 considers the health check to be healthy.
--
-- -   @Unhealthy@: Route 53 considers the health check to be unhealthy.
--
-- -   @LastKnownStatus@: Route 53 uses the status of the health check from
--     the last time CloudWatch had sufficient data to determine the alarm
--     state. For new health checks that have no last known status, the
--     default status for the health check is healthy.
--
-- 'healthCheckVersion', 'updateHealthCheck_healthCheckVersion' - A sequential counter that Amazon Route 53 sets to @1@ when you create a
-- health check and increments by 1 each time you update settings for the
-- health check.
--
-- We recommend that you use @GetHealthCheck@ or @ListHealthChecks@ to get
-- the current value of @HealthCheckVersion@ for the health check that you
-- want to update, and that you include that value in your
-- @UpdateHealthCheck@ request. This prevents Route 53 from overwriting an
-- intervening update:
--
-- -   If the value in the @UpdateHealthCheck@ request matches the value of
--     @HealthCheckVersion@ in the health check, Route 53 updates the
--     health check with the new settings.
--
-- -   If the value of @HealthCheckVersion@ in the health check is greater,
--     the health check was changed after you got the version number. Route
--     53 does not update the health check, and it returns a
--     @HealthCheckVersionMismatch@ error.
--
-- 'alarmIdentifier', 'updateHealthCheck_alarmIdentifier' - A complex type that identifies the CloudWatch alarm that you want Amazon
-- Route 53 health checkers to use to determine whether the specified
-- health check is healthy.
--
-- 'inverted', 'updateHealthCheck_inverted' - Specify whether you want Amazon Route 53 to invert the status of a
-- health check, for example, to consider a health check unhealthy when it
-- otherwise would be considered healthy.
--
-- 'fullyQualifiedDomainName', 'updateHealthCheck_fullyQualifiedDomainName' - Amazon Route 53 behavior depends on whether you specify a value for
-- @IPAddress@.
--
-- If a health check already has a value for @IPAddress@, you can change
-- the value. However, you can\'t update an existing health check to add or
-- remove the value of @IPAddress@.
--
-- __If you specify a value for__ @IPAddress@:
--
-- Route 53 sends health check requests to the specified IPv4 or IPv6
-- address and passes the value of @FullyQualifiedDomainName@ in the @Host@
-- header for all health checks except TCP health checks. This is typically
-- the fully qualified DNS name of the endpoint on which you want Route 53
-- to perform health checks.
--
-- When Route 53 checks the health of an endpoint, here is how it
-- constructs the @Host@ header:
--
-- -   If you specify a value of @80@ for @Port@ and @HTTP@ or
--     @HTTP_STR_MATCH@ for @Type@, Route 53 passes the value of
--     @FullyQualifiedDomainName@ to the endpoint in the @Host@ header.
--
-- -   If you specify a value of @443@ for @Port@ and @HTTPS@ or
--     @HTTPS_STR_MATCH@ for @Type@, Route 53 passes the value of
--     @FullyQualifiedDomainName@ to the endpoint in the @Host@ header.
--
-- -   If you specify another value for @Port@ and any value except @TCP@
--     for @Type@, Route 53 passes /@FullyQualifiedDomainName@:@Port@/ to
--     the endpoint in the @Host@ header.
--
-- If you don\'t specify a value for @FullyQualifiedDomainName@, Route 53
-- substitutes the value of @IPAddress@ in the @Host@ header in each of the
-- above cases.
--
-- __If you don\'t specify a value for__ @IPAddress@:
--
-- If you don\'t specify a value for @IPAddress@, Route 53 sends a DNS
-- request to the domain that you specify in @FullyQualifiedDomainName@ at
-- the interval you specify in @RequestInterval@. Using an IPv4 address
-- that is returned by DNS, Route 53 then checks the health of the
-- endpoint.
--
-- If you don\'t specify a value for @IPAddress@, Route 53 uses only IPv4
-- to send health checks to the endpoint. If there\'s no resource record
-- set with a type of A for the name that you specify for
-- @FullyQualifiedDomainName@, the health check fails with a \"DNS
-- resolution failed\" error.
--
-- If you want to check the health of weighted, latency, or failover
-- resource record sets and you choose to specify the endpoint only by
-- @FullyQualifiedDomainName@, we recommend that you create a separate
-- health check for each endpoint. For example, create a health check for
-- each HTTP server that is serving content for www.example.com. For the
-- value of @FullyQualifiedDomainName@, specify the domain name of the
-- server (such as @us-east-2-www.example.com@), not the name of the
-- resource record sets (www.example.com).
--
-- In this configuration, if the value of @FullyQualifiedDomainName@
-- matches the name of the resource record sets and you then associate the
-- health check with those resource record sets, health check results will
-- be unpredictable.
--
-- In addition, if the value of @Type@ is @HTTP@, @HTTPS@,
-- @HTTP_STR_MATCH@, or @HTTPS_STR_MATCH@, Route 53 passes the value of
-- @FullyQualifiedDomainName@ in the @Host@ header, as it does when you
-- specify a value for @IPAddress@. If the value of @Type@ is @TCP@, Route
-- 53 doesn\'t pass a @Host@ header.
--
-- 'childHealthChecks', 'updateHealthCheck_childHealthChecks' - A complex type that contains one @ChildHealthCheck@ element for each
-- health check that you want to associate with a @CALCULATED@ health
-- check.
--
-- 'port', 'updateHealthCheck_port' - The port on the endpoint that you want Amazon Route 53 to perform health
-- checks on.
--
-- Don\'t specify a value for @Port@ when you specify a value for @Type@ of
-- @CLOUDWATCH_METRIC@ or @CALCULATED@.
--
-- 'healthCheckId', 'updateHealthCheck_healthCheckId' - The ID for the health check for which you want detailed information.
-- When you created the health check, @CreateHealthCheck@ returned the ID
-- in the response, in the @HealthCheckId@ element.
newUpdateHealthCheck ::
  -- | 'healthCheckId'
  Prelude.Text ->
  UpdateHealthCheck
newUpdateHealthCheck :: Text -> UpdateHealthCheck
newUpdateHealthCheck Text
pHealthCheckId_ =
  UpdateHealthCheck' :: Maybe Natural
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe [ResettableElementName]
-> Maybe Text
-> Maybe Natural
-> Maybe (NonEmpty HealthCheckRegion)
-> Maybe Text
-> Maybe InsufficientDataHealthStatus
-> Maybe Natural
-> Maybe AlarmIdentifier
-> Maybe Bool
-> Maybe Text
-> Maybe [Text]
-> Maybe Natural
-> Text
-> UpdateHealthCheck
UpdateHealthCheck'
    { $sel:failureThreshold:UpdateHealthCheck' :: Maybe Natural
failureThreshold =
        Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:iPAddress:UpdateHealthCheck' :: Maybe Text
iPAddress = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:enableSNI:UpdateHealthCheck' :: Maybe Bool
enableSNI = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:disabled:UpdateHealthCheck' :: Maybe Bool
disabled = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:resetElements:UpdateHealthCheck' :: Maybe [ResettableElementName]
resetElements = Maybe [ResettableElementName]
forall a. Maybe a
Prelude.Nothing,
      $sel:searchString:UpdateHealthCheck' :: Maybe Text
searchString = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:healthThreshold:UpdateHealthCheck' :: Maybe Natural
healthThreshold = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:regions:UpdateHealthCheck' :: Maybe (NonEmpty HealthCheckRegion)
regions = Maybe (NonEmpty HealthCheckRegion)
forall a. Maybe a
Prelude.Nothing,
      $sel:resourcePath:UpdateHealthCheck' :: Maybe Text
resourcePath = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:insufficientDataHealthStatus:UpdateHealthCheck' :: Maybe InsufficientDataHealthStatus
insufficientDataHealthStatus = Maybe InsufficientDataHealthStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:healthCheckVersion:UpdateHealthCheck' :: Maybe Natural
healthCheckVersion = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:alarmIdentifier:UpdateHealthCheck' :: Maybe AlarmIdentifier
alarmIdentifier = Maybe AlarmIdentifier
forall a. Maybe a
Prelude.Nothing,
      $sel:inverted:UpdateHealthCheck' :: Maybe Bool
inverted = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:fullyQualifiedDomainName:UpdateHealthCheck' :: Maybe Text
fullyQualifiedDomainName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:childHealthChecks:UpdateHealthCheck' :: Maybe [Text]
childHealthChecks = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:port:UpdateHealthCheck' :: Maybe Natural
port = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:healthCheckId:UpdateHealthCheck' :: Text
healthCheckId = Text
pHealthCheckId_
    }

-- | The number of consecutive health checks that an endpoint must pass or
-- fail for Amazon Route 53 to change the current status of the endpoint
-- from unhealthy to healthy or vice versa. For more information, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html How Amazon Route 53 Determines Whether an Endpoint Is Healthy>
-- in the /Amazon Route 53 Developer Guide/.
--
-- If you don\'t specify a value for @FailureThreshold@, the default value
-- is three health checks.
updateHealthCheck_failureThreshold :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe Prelude.Natural)
updateHealthCheck_failureThreshold :: (Maybe Natural -> f (Maybe Natural))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_failureThreshold = (UpdateHealthCheck -> Maybe Natural)
-> (UpdateHealthCheck -> Maybe Natural -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe Natural
failureThreshold :: Maybe Natural
$sel:failureThreshold:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
failureThreshold} -> Maybe Natural
failureThreshold) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe Natural
a -> UpdateHealthCheck
s {$sel:failureThreshold:UpdateHealthCheck' :: Maybe Natural
failureThreshold = Maybe Natural
a} :: UpdateHealthCheck)

-- | The IPv4 or IPv6 IP address for the endpoint that you want Amazon Route
-- 53 to perform health checks on. If you don\'t specify a value for
-- @IPAddress@, Route 53 sends a DNS request to resolve the domain name
-- that you specify in @FullyQualifiedDomainName@ at the interval that you
-- specify in @RequestInterval@. Using an IP address that is returned by
-- DNS, Route 53 then checks the health of the endpoint.
--
-- Use one of the following formats for the value of @IPAddress@:
--
-- -   __IPv4 address__: four values between 0 and 255, separated by
--     periods (.), for example, @192.0.2.44@.
--
-- -   __IPv6 address__: eight groups of four hexadecimal values, separated
--     by colons (:), for example,
--     @2001:0db8:85a3:0000:0000:abcd:0001:2345@. You can also shorten IPv6
--     addresses as described in RFC 5952, for example,
--     @2001:db8:85a3::abcd:1:2345@.
--
-- If the endpoint is an EC2 instance, we recommend that you create an
-- Elastic IP address, associate it with your EC2 instance, and specify the
-- Elastic IP address for @IPAddress@. This ensures that the IP address of
-- your instance never changes. For more information, see the applicable
-- documentation:
--
-- -   Linux:
--     <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses (EIP)>
--     in the /Amazon EC2 User Guide for Linux Instances/
--
-- -   Windows:
--     <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-ip-addresses-eip.html Elastic IP Addresses (EIP)>
--     in the /Amazon EC2 User Guide for Windows Instances/
--
-- If a health check already has a value for @IPAddress@, you can change
-- the value. However, you can\'t update an existing health check to add or
-- remove the value of @IPAddress@.
--
-- For more information, see
-- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-FullyQualifiedDomainName FullyQualifiedDomainName>.
--
-- Constraints: Route 53 can\'t check the health of endpoints for which the
-- IP address is in local, private, non-routable, or multicast ranges. For
-- more information about IP addresses for which you can\'t create health
-- checks, see the following documents:
--
-- -   <https://tools.ietf.org/html/rfc5735 RFC 5735, Special Use IPv4 Addresses>
--
-- -   <https://tools.ietf.org/html/rfc6598 RFC 6598, IANA-Reserved IPv4 Prefix for Shared Address Space>
--
-- -   <https://tools.ietf.org/html/rfc5156 RFC 5156, Special-Use IPv6 Addresses>
updateHealthCheck_iPAddress :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe Prelude.Text)
updateHealthCheck_iPAddress :: (Maybe Text -> f (Maybe Text))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_iPAddress = (UpdateHealthCheck -> Maybe Text)
-> (UpdateHealthCheck -> Maybe Text -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe Text
iPAddress :: Maybe Text
$sel:iPAddress:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
iPAddress} -> Maybe Text
iPAddress) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe Text
a -> UpdateHealthCheck
s {$sel:iPAddress:UpdateHealthCheck' :: Maybe Text
iPAddress = Maybe Text
a} :: UpdateHealthCheck)

-- | Specify whether you want Amazon Route 53 to send the value of
-- @FullyQualifiedDomainName@ to the endpoint in the @client_hello@ message
-- during @TLS@ negotiation. This allows the endpoint to respond to @HTTPS@
-- health check requests with the applicable SSL\/TLS certificate.
--
-- Some endpoints require that HTTPS requests include the host name in the
-- @client_hello@ message. If you don\'t enable SNI, the status of the
-- health check will be SSL alert @handshake_failure@. A health check can
-- also have that status for other reasons. If SNI is enabled and you\'re
-- still getting the error, check the SSL\/TLS configuration on your
-- endpoint and confirm that your certificate is valid.
--
-- The SSL\/TLS certificate on your endpoint includes a domain name in the
-- @Common Name@ field and possibly several more in the
-- @Subject Alternative Names@ field. One of the domain names in the
-- certificate should match the value that you specify for
-- @FullyQualifiedDomainName@. If the endpoint responds to the
-- @client_hello@ message with a certificate that does not include the
-- domain name that you specified in @FullyQualifiedDomainName@, a health
-- checker will retry the handshake. In the second attempt, the health
-- checker will omit @FullyQualifiedDomainName@ from the @client_hello@
-- message.
updateHealthCheck_enableSNI :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe Prelude.Bool)
updateHealthCheck_enableSNI :: (Maybe Bool -> f (Maybe Bool))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_enableSNI = (UpdateHealthCheck -> Maybe Bool)
-> (UpdateHealthCheck -> Maybe Bool -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe Bool
enableSNI :: Maybe Bool
$sel:enableSNI:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Bool
enableSNI} -> Maybe Bool
enableSNI) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe Bool
a -> UpdateHealthCheck
s {$sel:enableSNI:UpdateHealthCheck' :: Maybe Bool
enableSNI = Maybe Bool
a} :: UpdateHealthCheck)

-- | Stops Route 53 from performing health checks. When you disable a health
-- check, here\'s what happens:
--
-- -   __Health checks that check the health of endpoints:__ Route 53 stops
--     submitting requests to your application, server, or other resource.
--
-- -   __Calculated health checks:__ Route 53 stops aggregating the status
--     of the referenced health checks.
--
-- -   __Health checks that monitor CloudWatch alarms:__ Route 53 stops
--     monitoring the corresponding CloudWatch metrics.
--
-- After you disable a health check, Route 53 considers the status of the
-- health check to always be healthy. If you configured DNS failover, Route
-- 53 continues to route traffic to the corresponding resources. If you
-- want to stop routing traffic to a resource, change the value of
-- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-Inverted Inverted>.
--
-- Charges for a health check still apply when the health check is
-- disabled. For more information, see
-- <http://aws.amazon.com/route53/pricing/ Amazon Route 53 Pricing>.
updateHealthCheck_disabled :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe Prelude.Bool)
updateHealthCheck_disabled :: (Maybe Bool -> f (Maybe Bool))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_disabled = (UpdateHealthCheck -> Maybe Bool)
-> (UpdateHealthCheck -> Maybe Bool -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe Bool
disabled :: Maybe Bool
$sel:disabled:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Bool
disabled} -> Maybe Bool
disabled) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe Bool
a -> UpdateHealthCheck
s {$sel:disabled:UpdateHealthCheck' :: Maybe Bool
disabled = Maybe Bool
a} :: UpdateHealthCheck)

-- | A complex type that contains one @ResettableElementName@ element for
-- each element that you want to reset to the default value. Valid values
-- for @ResettableElementName@ include the following:
--
-- -   @ChildHealthChecks@: Amazon Route 53 resets
--     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-ChildHealthChecks ChildHealthChecks>
--     to null.
--
-- -   @FullyQualifiedDomainName@: Route 53 resets
--     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-FullyQualifiedDomainName FullyQualifiedDomainName>.
--     to null.
--
-- -   @Regions@: Route 53 resets the
--     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-Regions Regions>
--     list to the default set of regions.
--
-- -   @ResourcePath@: Route 53 resets
--     <https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-ResourcePath ResourcePath>
--     to null.
updateHealthCheck_resetElements :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe [ResettableElementName])
updateHealthCheck_resetElements :: (Maybe [ResettableElementName]
 -> f (Maybe [ResettableElementName]))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_resetElements = (UpdateHealthCheck -> Maybe [ResettableElementName])
-> (UpdateHealthCheck
    -> Maybe [ResettableElementName] -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck
     UpdateHealthCheck
     (Maybe [ResettableElementName])
     (Maybe [ResettableElementName])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe [ResettableElementName]
resetElements :: Maybe [ResettableElementName]
$sel:resetElements:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe [ResettableElementName]
resetElements} -> Maybe [ResettableElementName]
resetElements) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe [ResettableElementName]
a -> UpdateHealthCheck
s {$sel:resetElements:UpdateHealthCheck' :: Maybe [ResettableElementName]
resetElements = Maybe [ResettableElementName]
a} :: UpdateHealthCheck) ((Maybe [ResettableElementName]
  -> f (Maybe [ResettableElementName]))
 -> UpdateHealthCheck -> f UpdateHealthCheck)
-> ((Maybe [ResettableElementName]
     -> f (Maybe [ResettableElementName]))
    -> Maybe [ResettableElementName]
    -> f (Maybe [ResettableElementName]))
-> (Maybe [ResettableElementName]
    -> f (Maybe [ResettableElementName]))
-> UpdateHealthCheck
-> f UpdateHealthCheck
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [ResettableElementName]
  [ResettableElementName]
  [ResettableElementName]
  [ResettableElementName]
-> Iso
     (Maybe [ResettableElementName])
     (Maybe [ResettableElementName])
     (Maybe [ResettableElementName])
     (Maybe [ResettableElementName])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [ResettableElementName]
  [ResettableElementName]
  [ResettableElementName]
  [ResettableElementName]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | If the value of @Type@ is @HTTP_STR_MATCH@ or @HTTPS_STR_MATCH@, the
-- string that you want Amazon Route 53 to search for in the response body
-- from the specified resource. If the string appears in the response body,
-- Route 53 considers the resource healthy. (You can\'t change the value of
-- @Type@ when you update a health check.)
updateHealthCheck_searchString :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe Prelude.Text)
updateHealthCheck_searchString :: (Maybe Text -> f (Maybe Text))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_searchString = (UpdateHealthCheck -> Maybe Text)
-> (UpdateHealthCheck -> Maybe Text -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe Text
searchString :: Maybe Text
$sel:searchString:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
searchString} -> Maybe Text
searchString) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe Text
a -> UpdateHealthCheck
s {$sel:searchString:UpdateHealthCheck' :: Maybe Text
searchString = Maybe Text
a} :: UpdateHealthCheck)

-- | The number of child health checks that are associated with a
-- @CALCULATED@ health that Amazon Route 53 must consider healthy for the
-- @CALCULATED@ health check to be considered healthy. To specify the child
-- health checks that you want to associate with a @CALCULATED@ health
-- check, use the @ChildHealthChecks@ and @ChildHealthCheck@ elements.
--
-- Note the following:
--
-- -   If you specify a number greater than the number of child health
--     checks, Route 53 always considers this health check to be unhealthy.
--
-- -   If you specify @0@, Route 53 always considers this health check to
--     be healthy.
updateHealthCheck_healthThreshold :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe Prelude.Natural)
updateHealthCheck_healthThreshold :: (Maybe Natural -> f (Maybe Natural))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_healthThreshold = (UpdateHealthCheck -> Maybe Natural)
-> (UpdateHealthCheck -> Maybe Natural -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe Natural
healthThreshold :: Maybe Natural
$sel:healthThreshold:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
healthThreshold} -> Maybe Natural
healthThreshold) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe Natural
a -> UpdateHealthCheck
s {$sel:healthThreshold:UpdateHealthCheck' :: Maybe Natural
healthThreshold = Maybe Natural
a} :: UpdateHealthCheck)

-- | A complex type that contains one @Region@ element for each region that
-- you want Amazon Route 53 health checkers to check the specified endpoint
-- from.
updateHealthCheck_regions :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe (Prelude.NonEmpty HealthCheckRegion))
updateHealthCheck_regions :: (Maybe (NonEmpty HealthCheckRegion)
 -> f (Maybe (NonEmpty HealthCheckRegion)))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_regions = (UpdateHealthCheck -> Maybe (NonEmpty HealthCheckRegion))
-> (UpdateHealthCheck
    -> Maybe (NonEmpty HealthCheckRegion) -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck
     UpdateHealthCheck
     (Maybe (NonEmpty HealthCheckRegion))
     (Maybe (NonEmpty HealthCheckRegion))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe (NonEmpty HealthCheckRegion)
regions :: Maybe (NonEmpty HealthCheckRegion)
$sel:regions:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe (NonEmpty HealthCheckRegion)
regions} -> Maybe (NonEmpty HealthCheckRegion)
regions) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe (NonEmpty HealthCheckRegion)
a -> UpdateHealthCheck
s {$sel:regions:UpdateHealthCheck' :: Maybe (NonEmpty HealthCheckRegion)
regions = Maybe (NonEmpty HealthCheckRegion)
a} :: UpdateHealthCheck) ((Maybe (NonEmpty HealthCheckRegion)
  -> f (Maybe (NonEmpty HealthCheckRegion)))
 -> UpdateHealthCheck -> f UpdateHealthCheck)
-> ((Maybe (NonEmpty HealthCheckRegion)
     -> f (Maybe (NonEmpty HealthCheckRegion)))
    -> Maybe (NonEmpty HealthCheckRegion)
    -> f (Maybe (NonEmpty HealthCheckRegion)))
-> (Maybe (NonEmpty HealthCheckRegion)
    -> f (Maybe (NonEmpty HealthCheckRegion)))
-> UpdateHealthCheck
-> f UpdateHealthCheck
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty HealthCheckRegion)
  (NonEmpty HealthCheckRegion)
  (NonEmpty HealthCheckRegion)
  (NonEmpty HealthCheckRegion)
-> Iso
     (Maybe (NonEmpty HealthCheckRegion))
     (Maybe (NonEmpty HealthCheckRegion))
     (Maybe (NonEmpty HealthCheckRegion))
     (Maybe (NonEmpty HealthCheckRegion))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (NonEmpty HealthCheckRegion)
  (NonEmpty HealthCheckRegion)
  (NonEmpty HealthCheckRegion)
  (NonEmpty HealthCheckRegion)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The path that you want Amazon Route 53 to request when performing health
-- checks. The path can be any value for which your endpoint will return an
-- HTTP status code of 2xx or 3xx when the endpoint is healthy, for example
-- the file \/docs\/route53-health-check.html. You can also include query
-- string parameters, for example, @\/welcome.html?language=jp&login=y@.
--
-- Specify this value only if you want to change it.
updateHealthCheck_resourcePath :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe Prelude.Text)
updateHealthCheck_resourcePath :: (Maybe Text -> f (Maybe Text))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_resourcePath = (UpdateHealthCheck -> Maybe Text)
-> (UpdateHealthCheck -> Maybe Text -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe Text
resourcePath :: Maybe Text
$sel:resourcePath:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
resourcePath} -> Maybe Text
resourcePath) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe Text
a -> UpdateHealthCheck
s {$sel:resourcePath:UpdateHealthCheck' :: Maybe Text
resourcePath = Maybe Text
a} :: UpdateHealthCheck)

-- | When CloudWatch has insufficient data about the metric to determine the
-- alarm state, the status that you want Amazon Route 53 to assign to the
-- health check:
--
-- -   @Healthy@: Route 53 considers the health check to be healthy.
--
-- -   @Unhealthy@: Route 53 considers the health check to be unhealthy.
--
-- -   @LastKnownStatus@: Route 53 uses the status of the health check from
--     the last time CloudWatch had sufficient data to determine the alarm
--     state. For new health checks that have no last known status, the
--     default status for the health check is healthy.
updateHealthCheck_insufficientDataHealthStatus :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe InsufficientDataHealthStatus)
updateHealthCheck_insufficientDataHealthStatus :: (Maybe InsufficientDataHealthStatus
 -> f (Maybe InsufficientDataHealthStatus))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_insufficientDataHealthStatus = (UpdateHealthCheck -> Maybe InsufficientDataHealthStatus)
-> (UpdateHealthCheck
    -> Maybe InsufficientDataHealthStatus -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck
     UpdateHealthCheck
     (Maybe InsufficientDataHealthStatus)
     (Maybe InsufficientDataHealthStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe InsufficientDataHealthStatus
insufficientDataHealthStatus :: Maybe InsufficientDataHealthStatus
$sel:insufficientDataHealthStatus:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe InsufficientDataHealthStatus
insufficientDataHealthStatus} -> Maybe InsufficientDataHealthStatus
insufficientDataHealthStatus) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe InsufficientDataHealthStatus
a -> UpdateHealthCheck
s {$sel:insufficientDataHealthStatus:UpdateHealthCheck' :: Maybe InsufficientDataHealthStatus
insufficientDataHealthStatus = Maybe InsufficientDataHealthStatus
a} :: UpdateHealthCheck)

-- | A sequential counter that Amazon Route 53 sets to @1@ when you create a
-- health check and increments by 1 each time you update settings for the
-- health check.
--
-- We recommend that you use @GetHealthCheck@ or @ListHealthChecks@ to get
-- the current value of @HealthCheckVersion@ for the health check that you
-- want to update, and that you include that value in your
-- @UpdateHealthCheck@ request. This prevents Route 53 from overwriting an
-- intervening update:
--
-- -   If the value in the @UpdateHealthCheck@ request matches the value of
--     @HealthCheckVersion@ in the health check, Route 53 updates the
--     health check with the new settings.
--
-- -   If the value of @HealthCheckVersion@ in the health check is greater,
--     the health check was changed after you got the version number. Route
--     53 does not update the health check, and it returns a
--     @HealthCheckVersionMismatch@ error.
updateHealthCheck_healthCheckVersion :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe Prelude.Natural)
updateHealthCheck_healthCheckVersion :: (Maybe Natural -> f (Maybe Natural))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_healthCheckVersion = (UpdateHealthCheck -> Maybe Natural)
-> (UpdateHealthCheck -> Maybe Natural -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe Natural
healthCheckVersion :: Maybe Natural
$sel:healthCheckVersion:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
healthCheckVersion} -> Maybe Natural
healthCheckVersion) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe Natural
a -> UpdateHealthCheck
s {$sel:healthCheckVersion:UpdateHealthCheck' :: Maybe Natural
healthCheckVersion = Maybe Natural
a} :: UpdateHealthCheck)

-- | A complex type that identifies the CloudWatch alarm that you want Amazon
-- Route 53 health checkers to use to determine whether the specified
-- health check is healthy.
updateHealthCheck_alarmIdentifier :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe AlarmIdentifier)
updateHealthCheck_alarmIdentifier :: (Maybe AlarmIdentifier -> f (Maybe AlarmIdentifier))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_alarmIdentifier = (UpdateHealthCheck -> Maybe AlarmIdentifier)
-> (UpdateHealthCheck
    -> Maybe AlarmIdentifier -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck
     UpdateHealthCheck
     (Maybe AlarmIdentifier)
     (Maybe AlarmIdentifier)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe AlarmIdentifier
alarmIdentifier :: Maybe AlarmIdentifier
$sel:alarmIdentifier:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe AlarmIdentifier
alarmIdentifier} -> Maybe AlarmIdentifier
alarmIdentifier) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe AlarmIdentifier
a -> UpdateHealthCheck
s {$sel:alarmIdentifier:UpdateHealthCheck' :: Maybe AlarmIdentifier
alarmIdentifier = Maybe AlarmIdentifier
a} :: UpdateHealthCheck)

-- | Specify whether you want Amazon Route 53 to invert the status of a
-- health check, for example, to consider a health check unhealthy when it
-- otherwise would be considered healthy.
updateHealthCheck_inverted :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe Prelude.Bool)
updateHealthCheck_inverted :: (Maybe Bool -> f (Maybe Bool))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_inverted = (UpdateHealthCheck -> Maybe Bool)
-> (UpdateHealthCheck -> Maybe Bool -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe Bool
inverted :: Maybe Bool
$sel:inverted:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Bool
inverted} -> Maybe Bool
inverted) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe Bool
a -> UpdateHealthCheck
s {$sel:inverted:UpdateHealthCheck' :: Maybe Bool
inverted = Maybe Bool
a} :: UpdateHealthCheck)

-- | Amazon Route 53 behavior depends on whether you specify a value for
-- @IPAddress@.
--
-- If a health check already has a value for @IPAddress@, you can change
-- the value. However, you can\'t update an existing health check to add or
-- remove the value of @IPAddress@.
--
-- __If you specify a value for__ @IPAddress@:
--
-- Route 53 sends health check requests to the specified IPv4 or IPv6
-- address and passes the value of @FullyQualifiedDomainName@ in the @Host@
-- header for all health checks except TCP health checks. This is typically
-- the fully qualified DNS name of the endpoint on which you want Route 53
-- to perform health checks.
--
-- When Route 53 checks the health of an endpoint, here is how it
-- constructs the @Host@ header:
--
-- -   If you specify a value of @80@ for @Port@ and @HTTP@ or
--     @HTTP_STR_MATCH@ for @Type@, Route 53 passes the value of
--     @FullyQualifiedDomainName@ to the endpoint in the @Host@ header.
--
-- -   If you specify a value of @443@ for @Port@ and @HTTPS@ or
--     @HTTPS_STR_MATCH@ for @Type@, Route 53 passes the value of
--     @FullyQualifiedDomainName@ to the endpoint in the @Host@ header.
--
-- -   If you specify another value for @Port@ and any value except @TCP@
--     for @Type@, Route 53 passes /@FullyQualifiedDomainName@:@Port@/ to
--     the endpoint in the @Host@ header.
--
-- If you don\'t specify a value for @FullyQualifiedDomainName@, Route 53
-- substitutes the value of @IPAddress@ in the @Host@ header in each of the
-- above cases.
--
-- __If you don\'t specify a value for__ @IPAddress@:
--
-- If you don\'t specify a value for @IPAddress@, Route 53 sends a DNS
-- request to the domain that you specify in @FullyQualifiedDomainName@ at
-- the interval you specify in @RequestInterval@. Using an IPv4 address
-- that is returned by DNS, Route 53 then checks the health of the
-- endpoint.
--
-- If you don\'t specify a value for @IPAddress@, Route 53 uses only IPv4
-- to send health checks to the endpoint. If there\'s no resource record
-- set with a type of A for the name that you specify for
-- @FullyQualifiedDomainName@, the health check fails with a \"DNS
-- resolution failed\" error.
--
-- If you want to check the health of weighted, latency, or failover
-- resource record sets and you choose to specify the endpoint only by
-- @FullyQualifiedDomainName@, we recommend that you create a separate
-- health check for each endpoint. For example, create a health check for
-- each HTTP server that is serving content for www.example.com. For the
-- value of @FullyQualifiedDomainName@, specify the domain name of the
-- server (such as @us-east-2-www.example.com@), not the name of the
-- resource record sets (www.example.com).
--
-- In this configuration, if the value of @FullyQualifiedDomainName@
-- matches the name of the resource record sets and you then associate the
-- health check with those resource record sets, health check results will
-- be unpredictable.
--
-- In addition, if the value of @Type@ is @HTTP@, @HTTPS@,
-- @HTTP_STR_MATCH@, or @HTTPS_STR_MATCH@, Route 53 passes the value of
-- @FullyQualifiedDomainName@ in the @Host@ header, as it does when you
-- specify a value for @IPAddress@. If the value of @Type@ is @TCP@, Route
-- 53 doesn\'t pass a @Host@ header.
updateHealthCheck_fullyQualifiedDomainName :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe Prelude.Text)
updateHealthCheck_fullyQualifiedDomainName :: (Maybe Text -> f (Maybe Text))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_fullyQualifiedDomainName = (UpdateHealthCheck -> Maybe Text)
-> (UpdateHealthCheck -> Maybe Text -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe Text
fullyQualifiedDomainName :: Maybe Text
$sel:fullyQualifiedDomainName:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
fullyQualifiedDomainName} -> Maybe Text
fullyQualifiedDomainName) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe Text
a -> UpdateHealthCheck
s {$sel:fullyQualifiedDomainName:UpdateHealthCheck' :: Maybe Text
fullyQualifiedDomainName = Maybe Text
a} :: UpdateHealthCheck)

-- | A complex type that contains one @ChildHealthCheck@ element for each
-- health check that you want to associate with a @CALCULATED@ health
-- check.
updateHealthCheck_childHealthChecks :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe [Prelude.Text])
updateHealthCheck_childHealthChecks :: (Maybe [Text] -> f (Maybe [Text]))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_childHealthChecks = (UpdateHealthCheck -> Maybe [Text])
-> (UpdateHealthCheck -> Maybe [Text] -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe [Text]
childHealthChecks :: Maybe [Text]
$sel:childHealthChecks:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe [Text]
childHealthChecks} -> Maybe [Text]
childHealthChecks) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe [Text]
a -> UpdateHealthCheck
s {$sel:childHealthChecks:UpdateHealthCheck' :: Maybe [Text]
childHealthChecks = Maybe [Text]
a} :: UpdateHealthCheck) ((Maybe [Text] -> f (Maybe [Text]))
 -> UpdateHealthCheck -> f UpdateHealthCheck)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> UpdateHealthCheck
-> f UpdateHealthCheck
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The port on the endpoint that you want Amazon Route 53 to perform health
-- checks on.
--
-- Don\'t specify a value for @Port@ when you specify a value for @Type@ of
-- @CLOUDWATCH_METRIC@ or @CALCULATED@.
updateHealthCheck_port :: Lens.Lens' UpdateHealthCheck (Prelude.Maybe Prelude.Natural)
updateHealthCheck_port :: (Maybe Natural -> f (Maybe Natural))
-> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_port = (UpdateHealthCheck -> Maybe Natural)
-> (UpdateHealthCheck -> Maybe Natural -> UpdateHealthCheck)
-> Lens
     UpdateHealthCheck UpdateHealthCheck (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Maybe Natural
port :: Maybe Natural
$sel:port:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
port} -> Maybe Natural
port) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Maybe Natural
a -> UpdateHealthCheck
s {$sel:port:UpdateHealthCheck' :: Maybe Natural
port = Maybe Natural
a} :: UpdateHealthCheck)

-- | The ID for the health check for which you want detailed information.
-- When you created the health check, @CreateHealthCheck@ returned the ID
-- in the response, in the @HealthCheckId@ element.
updateHealthCheck_healthCheckId :: Lens.Lens' UpdateHealthCheck Prelude.Text
updateHealthCheck_healthCheckId :: (Text -> f Text) -> UpdateHealthCheck -> f UpdateHealthCheck
updateHealthCheck_healthCheckId = (UpdateHealthCheck -> Text)
-> (UpdateHealthCheck -> Text -> UpdateHealthCheck)
-> Lens UpdateHealthCheck UpdateHealthCheck Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheck' {Text
healthCheckId :: Text
$sel:healthCheckId:UpdateHealthCheck' :: UpdateHealthCheck -> Text
healthCheckId} -> Text
healthCheckId) (\s :: UpdateHealthCheck
s@UpdateHealthCheck' {} Text
a -> UpdateHealthCheck
s {$sel:healthCheckId:UpdateHealthCheck' :: Text
healthCheckId = Text
a} :: UpdateHealthCheck)

instance Core.AWSRequest UpdateHealthCheck where
  type
    AWSResponse UpdateHealthCheck =
      UpdateHealthCheckResponse
  request :: UpdateHealthCheck -> Request UpdateHealthCheck
request = Service -> UpdateHealthCheck -> Request UpdateHealthCheck
forall a. (ToRequest a, ToElement a) => Service -> a -> Request a
Request.postXML Service
defaultService
  response :: Logger
-> Service
-> Proxy UpdateHealthCheck
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateHealthCheck)))
response =
    (Int
 -> ResponseHeaders
 -> [Node]
 -> Either String (AWSResponse UpdateHealthCheck))
-> Logger
-> Service
-> Proxy UpdateHealthCheck
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateHealthCheck)))
forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Int -> HealthCheck -> UpdateHealthCheckResponse
UpdateHealthCheckResponse'
            (Int -> HealthCheck -> UpdateHealthCheckResponse)
-> Either String Int
-> Either String (HealthCheck -> UpdateHealthCheckResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            Either String (HealthCheck -> UpdateHealthCheckResponse)
-> Either String HealthCheck
-> Either String UpdateHealthCheckResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String HealthCheck
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"HealthCheck")
      )

instance Prelude.Hashable UpdateHealthCheck

instance Prelude.NFData UpdateHealthCheck

instance Core.ToElement UpdateHealthCheck where
  toElement :: UpdateHealthCheck -> Element
toElement =
    Name -> UpdateHealthCheck -> Element
forall a. ToXML a => Name -> a -> Element
Core.mkElement
      Name
"{https://route53.amazonaws.com/doc/2013-04-01/}UpdateHealthCheckRequest"

instance Core.ToHeaders UpdateHealthCheck where
  toHeaders :: UpdateHealthCheck -> ResponseHeaders
toHeaders = ResponseHeaders -> UpdateHealthCheck -> ResponseHeaders
forall a b. a -> b -> a
Prelude.const ResponseHeaders
forall a. Monoid a => a
Prelude.mempty

instance Core.ToPath UpdateHealthCheck where
  toPath :: UpdateHealthCheck -> ByteString
toPath UpdateHealthCheck' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [ResettableElementName]
Maybe (NonEmpty HealthCheckRegion)
Maybe Text
Maybe AlarmIdentifier
Maybe InsufficientDataHealthStatus
Text
healthCheckId :: Text
port :: Maybe Natural
childHealthChecks :: Maybe [Text]
fullyQualifiedDomainName :: Maybe Text
inverted :: Maybe Bool
alarmIdentifier :: Maybe AlarmIdentifier
healthCheckVersion :: Maybe Natural
insufficientDataHealthStatus :: Maybe InsufficientDataHealthStatus
resourcePath :: Maybe Text
regions :: Maybe (NonEmpty HealthCheckRegion)
healthThreshold :: Maybe Natural
searchString :: Maybe Text
resetElements :: Maybe [ResettableElementName]
disabled :: Maybe Bool
enableSNI :: Maybe Bool
iPAddress :: Maybe Text
failureThreshold :: Maybe Natural
$sel:healthCheckId:UpdateHealthCheck' :: UpdateHealthCheck -> Text
$sel:port:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
$sel:childHealthChecks:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe [Text]
$sel:fullyQualifiedDomainName:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
$sel:inverted:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Bool
$sel:alarmIdentifier:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe AlarmIdentifier
$sel:healthCheckVersion:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
$sel:insufficientDataHealthStatus:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe InsufficientDataHealthStatus
$sel:resourcePath:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
$sel:regions:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe (NonEmpty HealthCheckRegion)
$sel:healthThreshold:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
$sel:searchString:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
$sel:resetElements:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe [ResettableElementName]
$sel:disabled:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Bool
$sel:enableSNI:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Bool
$sel:iPAddress:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
$sel:failureThreshold:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
..} =
    [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/2013-04-01/healthcheck/", Text -> ByteString
forall a. ToByteString a => a -> ByteString
Core.toBS Text
healthCheckId]

instance Core.ToQuery UpdateHealthCheck where
  toQuery :: UpdateHealthCheck -> QueryString
toQuery = QueryString -> UpdateHealthCheck -> QueryString
forall a b. a -> b -> a
Prelude.const QueryString
forall a. Monoid a => a
Prelude.mempty

instance Core.ToXML UpdateHealthCheck where
  toXML :: UpdateHealthCheck -> XML
toXML UpdateHealthCheck' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [ResettableElementName]
Maybe (NonEmpty HealthCheckRegion)
Maybe Text
Maybe AlarmIdentifier
Maybe InsufficientDataHealthStatus
Text
healthCheckId :: Text
port :: Maybe Natural
childHealthChecks :: Maybe [Text]
fullyQualifiedDomainName :: Maybe Text
inverted :: Maybe Bool
alarmIdentifier :: Maybe AlarmIdentifier
healthCheckVersion :: Maybe Natural
insufficientDataHealthStatus :: Maybe InsufficientDataHealthStatus
resourcePath :: Maybe Text
regions :: Maybe (NonEmpty HealthCheckRegion)
healthThreshold :: Maybe Natural
searchString :: Maybe Text
resetElements :: Maybe [ResettableElementName]
disabled :: Maybe Bool
enableSNI :: Maybe Bool
iPAddress :: Maybe Text
failureThreshold :: Maybe Natural
$sel:healthCheckId:UpdateHealthCheck' :: UpdateHealthCheck -> Text
$sel:port:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
$sel:childHealthChecks:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe [Text]
$sel:fullyQualifiedDomainName:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
$sel:inverted:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Bool
$sel:alarmIdentifier:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe AlarmIdentifier
$sel:healthCheckVersion:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
$sel:insufficientDataHealthStatus:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe InsufficientDataHealthStatus
$sel:resourcePath:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
$sel:regions:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe (NonEmpty HealthCheckRegion)
$sel:healthThreshold:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
$sel:searchString:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
$sel:resetElements:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe [ResettableElementName]
$sel:disabled:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Bool
$sel:enableSNI:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Bool
$sel:iPAddress:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Text
$sel:failureThreshold:UpdateHealthCheck' :: UpdateHealthCheck -> Maybe Natural
..} =
    [XML] -> XML
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ Name
"FailureThreshold" Name -> Maybe Natural -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe Natural
failureThreshold,
        Name
"IPAddress" Name -> Maybe Text -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe Text
iPAddress,
        Name
"EnableSNI" Name -> Maybe Bool -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe Bool
enableSNI,
        Name
"Disabled" Name -> Maybe Bool -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe Bool
disabled,
        Name
"ResetElements"
          Name -> XML -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe XML -> XML
forall a. ToXML a => a -> XML
Core.toXML
            ( Name -> [ResettableElementName] -> XML
forall a. (IsList a, ToXML (Item a)) => Name -> a -> XML
Core.toXMLList Name
"ResettableElementName"
                ([ResettableElementName] -> XML)
-> Maybe [ResettableElementName] -> Maybe XML
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [ResettableElementName]
resetElements
            ),
        Name
"SearchString" Name -> Maybe Text -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe Text
searchString,
        Name
"HealthThreshold" Name -> Maybe Natural -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe Natural
healthThreshold,
        Name
"Regions"
          Name -> XML -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe XML -> XML
forall a. ToXML a => a -> XML
Core.toXML
            (Name -> NonEmpty HealthCheckRegion -> XML
forall a. (IsList a, ToXML (Item a)) => Name -> a -> XML
Core.toXMLList Name
"Region" (NonEmpty HealthCheckRegion -> XML)
-> Maybe (NonEmpty HealthCheckRegion) -> Maybe XML
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty HealthCheckRegion)
regions),
        Name
"ResourcePath" Name -> Maybe Text -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe Text
resourcePath,
        Name
"InsufficientDataHealthStatus"
          Name -> Maybe InsufficientDataHealthStatus -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe InsufficientDataHealthStatus
insufficientDataHealthStatus,
        Name
"HealthCheckVersion" Name -> Maybe Natural -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe Natural
healthCheckVersion,
        Name
"AlarmIdentifier" Name -> Maybe AlarmIdentifier -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe AlarmIdentifier
alarmIdentifier,
        Name
"Inverted" Name -> Maybe Bool -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe Bool
inverted,
        Name
"FullyQualifiedDomainName"
          Name -> Maybe Text -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe Text
fullyQualifiedDomainName,
        Name
"ChildHealthChecks"
          Name -> XML -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe XML -> XML
forall a. ToXML a => a -> XML
Core.toXML
            ( Name -> [Text] -> XML
forall a. (IsList a, ToXML (Item a)) => Name -> a -> XML
Core.toXMLList Name
"ChildHealthCheck"
                ([Text] -> XML) -> Maybe [Text] -> Maybe XML
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
childHealthChecks
            ),
        Name
"Port" Name -> Maybe Natural -> XML
forall a. ToXML a => Name -> a -> XML
Core.@= Maybe Natural
port
      ]

-- | A complex type that contains the response to the @UpdateHealthCheck@
-- request.
--
-- /See:/ 'newUpdateHealthCheckResponse' smart constructor.
data UpdateHealthCheckResponse = UpdateHealthCheckResponse'
  { -- | The response's http status code.
    UpdateHealthCheckResponse -> Int
httpStatus :: Prelude.Int,
    -- | A complex type that contains the response to an @UpdateHealthCheck@
    -- request.
    UpdateHealthCheckResponse -> HealthCheck
healthCheck :: HealthCheck
  }
  deriving (UpdateHealthCheckResponse -> UpdateHealthCheckResponse -> Bool
(UpdateHealthCheckResponse -> UpdateHealthCheckResponse -> Bool)
-> (UpdateHealthCheckResponse -> UpdateHealthCheckResponse -> Bool)
-> Eq UpdateHealthCheckResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateHealthCheckResponse -> UpdateHealthCheckResponse -> Bool
$c/= :: UpdateHealthCheckResponse -> UpdateHealthCheckResponse -> Bool
== :: UpdateHealthCheckResponse -> UpdateHealthCheckResponse -> Bool
$c== :: UpdateHealthCheckResponse -> UpdateHealthCheckResponse -> Bool
Prelude.Eq, ReadPrec [UpdateHealthCheckResponse]
ReadPrec UpdateHealthCheckResponse
Int -> ReadS UpdateHealthCheckResponse
ReadS [UpdateHealthCheckResponse]
(Int -> ReadS UpdateHealthCheckResponse)
-> ReadS [UpdateHealthCheckResponse]
-> ReadPrec UpdateHealthCheckResponse
-> ReadPrec [UpdateHealthCheckResponse]
-> Read UpdateHealthCheckResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateHealthCheckResponse]
$creadListPrec :: ReadPrec [UpdateHealthCheckResponse]
readPrec :: ReadPrec UpdateHealthCheckResponse
$creadPrec :: ReadPrec UpdateHealthCheckResponse
readList :: ReadS [UpdateHealthCheckResponse]
$creadList :: ReadS [UpdateHealthCheckResponse]
readsPrec :: Int -> ReadS UpdateHealthCheckResponse
$creadsPrec :: Int -> ReadS UpdateHealthCheckResponse
Prelude.Read, Int -> UpdateHealthCheckResponse -> ShowS
[UpdateHealthCheckResponse] -> ShowS
UpdateHealthCheckResponse -> String
(Int -> UpdateHealthCheckResponse -> ShowS)
-> (UpdateHealthCheckResponse -> String)
-> ([UpdateHealthCheckResponse] -> ShowS)
-> Show UpdateHealthCheckResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateHealthCheckResponse] -> ShowS
$cshowList :: [UpdateHealthCheckResponse] -> ShowS
show :: UpdateHealthCheckResponse -> String
$cshow :: UpdateHealthCheckResponse -> String
showsPrec :: Int -> UpdateHealthCheckResponse -> ShowS
$cshowsPrec :: Int -> UpdateHealthCheckResponse -> ShowS
Prelude.Show, (forall x.
 UpdateHealthCheckResponse -> Rep UpdateHealthCheckResponse x)
-> (forall x.
    Rep UpdateHealthCheckResponse x -> UpdateHealthCheckResponse)
-> Generic UpdateHealthCheckResponse
forall x.
Rep UpdateHealthCheckResponse x -> UpdateHealthCheckResponse
forall x.
UpdateHealthCheckResponse -> Rep UpdateHealthCheckResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateHealthCheckResponse x -> UpdateHealthCheckResponse
$cfrom :: forall x.
UpdateHealthCheckResponse -> Rep UpdateHealthCheckResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateHealthCheckResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'httpStatus', 'updateHealthCheckResponse_httpStatus' - The response's http status code.
--
-- 'healthCheck', 'updateHealthCheckResponse_healthCheck' - A complex type that contains the response to an @UpdateHealthCheck@
-- request.
newUpdateHealthCheckResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'healthCheck'
  HealthCheck ->
  UpdateHealthCheckResponse
newUpdateHealthCheckResponse :: Int -> HealthCheck -> UpdateHealthCheckResponse
newUpdateHealthCheckResponse
  Int
pHttpStatus_
  HealthCheck
pHealthCheck_ =
    UpdateHealthCheckResponse' :: Int -> HealthCheck -> UpdateHealthCheckResponse
UpdateHealthCheckResponse'
      { $sel:httpStatus:UpdateHealthCheckResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:healthCheck:UpdateHealthCheckResponse' :: HealthCheck
healthCheck = HealthCheck
pHealthCheck_
      }

-- | The response's http status code.
updateHealthCheckResponse_httpStatus :: Lens.Lens' UpdateHealthCheckResponse Prelude.Int
updateHealthCheckResponse_httpStatus :: (Int -> f Int)
-> UpdateHealthCheckResponse -> f UpdateHealthCheckResponse
updateHealthCheckResponse_httpStatus = (UpdateHealthCheckResponse -> Int)
-> (UpdateHealthCheckResponse -> Int -> UpdateHealthCheckResponse)
-> Lens UpdateHealthCheckResponse UpdateHealthCheckResponse Int Int
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheckResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateHealthCheckResponse' :: UpdateHealthCheckResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: UpdateHealthCheckResponse
s@UpdateHealthCheckResponse' {} Int
a -> UpdateHealthCheckResponse
s {$sel:httpStatus:UpdateHealthCheckResponse' :: Int
httpStatus = Int
a} :: UpdateHealthCheckResponse)

-- | A complex type that contains the response to an @UpdateHealthCheck@
-- request.
updateHealthCheckResponse_healthCheck :: Lens.Lens' UpdateHealthCheckResponse HealthCheck
updateHealthCheckResponse_healthCheck :: (HealthCheck -> f HealthCheck)
-> UpdateHealthCheckResponse -> f UpdateHealthCheckResponse
updateHealthCheckResponse_healthCheck = (UpdateHealthCheckResponse -> HealthCheck)
-> (UpdateHealthCheckResponse
    -> HealthCheck -> UpdateHealthCheckResponse)
-> Lens
     UpdateHealthCheckResponse
     UpdateHealthCheckResponse
     HealthCheck
     HealthCheck
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateHealthCheckResponse' {HealthCheck
healthCheck :: HealthCheck
$sel:healthCheck:UpdateHealthCheckResponse' :: UpdateHealthCheckResponse -> HealthCheck
healthCheck} -> HealthCheck
healthCheck) (\s :: UpdateHealthCheckResponse
s@UpdateHealthCheckResponse' {} HealthCheck
a -> UpdateHealthCheckResponse
s {$sel:healthCheck:UpdateHealthCheckResponse' :: HealthCheck
healthCheck = HealthCheck
a} :: UpdateHealthCheckResponse)

instance Prelude.NFData UpdateHealthCheckResponse