amazonka-route53-2.0: gen/Amazonka/Route53/Types/AliasTarget.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# 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.Types.AliasTarget
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Route53.Types.AliasTarget where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.Route53.Internal
-- | /Alias resource record sets only:/ Information about the Amazon Web
-- Services resource, such as a CloudFront distribution or an Amazon S3
-- bucket, that you want to route traffic to.
--
-- When creating resource record sets for a private hosted zone, note the
-- following:
--
-- - For information about creating failover resource record sets in a
-- private hosted zone, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html Configuring Failover in a Private Hosted Zone>.
--
-- /See:/ 'newAliasTarget' smart constructor.
data AliasTarget = AliasTarget'
{ -- | /Alias resource records sets only/: The value used depends on where you
-- want to route traffic:
--
-- [Amazon API Gateway custom regional APIs and edge-optimized APIs]
-- Specify the hosted zone ID for your API. You can get the applicable
-- value using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-domain-names.html get-domain-names>:
--
-- - For regional APIs, specify the value of @regionalHostedZoneId@.
--
-- - For edge-optimized APIs, specify the value of
-- @distributionHostedZoneId@.
--
-- [Amazon Virtual Private Cloud interface VPC endpoint]
-- Specify the hosted zone ID for your interface endpoint. You can get
-- the value of @HostedZoneId@ using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html describe-vpc-endpoints>.
--
-- [CloudFront distribution]
-- Specify @Z2FDTNDATAQYW2@.
--
-- Alias resource record sets for CloudFront can\'t be created in a
-- private zone.
--
-- [Elastic Beanstalk environment]
-- Specify the hosted zone ID for the region that you created the
-- environment in. The environment must have a regionalized subdomain.
-- For a list of regions and the corresponding hosted zone IDs, see
-- <https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html Elastic Beanstalk endpoints and quotas>
-- in the the /Amazon Web Services General Reference/.
--
-- [ELB load balancer]
-- Specify the value of the hosted zone ID for the load balancer. Use
-- the following methods to get the hosted zone ID:
--
-- - <https://docs.aws.amazon.com/general/latest/gr/elb.html Elastic Load Balancing endpoints and quotas>
-- topic in the /Amazon Web Services General Reference/: Use the
-- value that corresponds with the region that you created your
-- load balancer in. Note that there are separate columns for
-- Application and Classic Load Balancers and for Network Load
-- Balancers.
--
-- - __Amazon Web Services Management Console__: Go to the Amazon EC2
-- page, choose __Load Balancers__ in the navigation pane, select
-- the load balancer, and get the value of the __Hosted zone__
-- field on the __Description__ tab.
--
-- - __Elastic Load Balancing API__: Use @DescribeLoadBalancers@ to
-- get the applicable value. For more information, see the
-- applicable guide:
--
-- - Classic Load Balancers: Use
-- <https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
-- to get the value of @CanonicalHostedZoneNameId@.
--
-- - Application and Network Load Balancers: Use
-- <https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
-- to get the value of @CanonicalHostedZoneId@.
--
-- - __CLI__: Use @describe-load-balancers@ to get the applicable
-- value. For more information, see the applicable guide:
--
-- - Classic Load Balancers: Use
-- <http://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html describe-load-balancers>
-- to get the value of @CanonicalHostedZoneNameId@.
--
-- - Application and Network Load Balancers: Use
-- <http://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-load-balancers.html describe-load-balancers>
-- to get the value of @CanonicalHostedZoneId@.
--
-- [Global Accelerator accelerator]
-- Specify @Z2BJ6XQ5FK7U4H@.
--
-- [An Amazon S3 bucket configured as a static website]
-- Specify the hosted zone ID for the region that you created the
-- bucket in. For more information about valid values, see the table
-- <https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_website_region_endpoints Amazon S3 Website Endpoints>
-- in the /Amazon Web Services General Reference/.
--
-- [Another Route 53 resource record set in your hosted zone]
-- Specify the hosted zone ID of your hosted zone. (An alias resource
-- record set can\'t reference a resource record set in a different
-- hosted zone.)
hostedZoneId :: ResourceId,
-- | /Alias resource record sets only:/ The value that you specify depends on
-- where you want to route queries:
--
-- [Amazon API Gateway custom regional APIs and edge-optimized APIs]
-- Specify the applicable domain name for your API. You can get the
-- applicable value using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-domain-names.html get-domain-names>:
--
-- - For regional APIs, specify the value of @regionalDomainName@.
--
-- - For edge-optimized APIs, specify the value of
-- @distributionDomainName@. This is the name of the associated
-- CloudFront distribution, such as @da1b2c3d4e5.cloudfront.net@.
--
-- The name of the record that you\'re creating must match a custom
-- domain name for your API, such as @api.example.com@.
--
-- [Amazon Virtual Private Cloud interface VPC endpoint]
-- Enter the API endpoint for the interface endpoint, such as
-- @vpce-123456789abcdef01-example-us-east-1a.elasticloadbalancing.us-east-1.vpce.amazonaws.com@.
-- For edge-optimized APIs, this is the domain name for the
-- corresponding CloudFront distribution. You can get the value of
-- @DnsName@ using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html describe-vpc-endpoints>.
--
-- [CloudFront distribution]
-- Specify the domain name that CloudFront assigned when you created
-- your distribution.
--
-- Your CloudFront distribution must include an alternate domain name
-- that matches the name of the resource record set. For example, if
-- the name of the resource record set is /acme.example.com/, your
-- CloudFront distribution must include /acme.example.com/ as one of
-- the alternate domain names. For more information, see
-- <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html Using Alternate Domain Names (CNAMEs)>
-- in the /Amazon CloudFront Developer Guide/.
--
-- You can\'t create a resource record set in a private hosted zone to
-- route traffic to a CloudFront distribution.
--
-- For failover alias records, you can\'t specify a CloudFront
-- distribution for both the primary and secondary records. A
-- distribution must include an alternate domain name that matches the
-- name of the record. However, the primary and secondary records have
-- the same name, and you can\'t include the same alternate domain name
-- in more than one distribution.
--
-- [Elastic Beanstalk environment]
-- If the domain name for your Elastic Beanstalk environment includes
-- the region that you deployed the environment in, you can create an
-- alias record that routes traffic to the environment. For example,
-- the domain name
-- @my-environment.@/@us-west-2@/@.elasticbeanstalk.com@ is a
-- regionalized domain name.
--
-- For environments that were created before early 2016, the domain
-- name doesn\'t include the region. To route traffic to these
-- environments, you must create a CNAME record instead of an alias
-- record. Note that you can\'t create a CNAME record for the root
-- domain name. For example, if your domain name is example.com, you
-- can create a record that routes traffic for acme.example.com to your
-- Elastic Beanstalk environment, but you can\'t create a record that
-- routes traffic for example.com to your Elastic Beanstalk
-- environment.
--
-- For Elastic Beanstalk environments that have regionalized
-- subdomains, specify the @CNAME@ attribute for the environment. You
-- can use the following methods to get the value of the CNAME
-- attribute:
--
-- - /Amazon Web Services Management Console/: For information about
-- how to get the value by using the console, see
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customdomains.html Using Custom Domains with Elastic Beanstalk>
-- in the /Elastic Beanstalk Developer Guide/.
--
-- - /Elastic Beanstalk API/: Use the @DescribeEnvironments@ action
-- to get the value of the @CNAME@ attribute. For more information,
-- see
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html DescribeEnvironments>
-- in the /Elastic Beanstalk API Reference/.
--
-- - /CLI/: Use the @describe-environments@ command to get the value
-- of the @CNAME@ attribute. For more information, see
-- <https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-environments.html describe-environments>
-- in the /CLI Command Reference/.
--
-- [ELB load balancer]
-- Specify the DNS name that is associated with the load balancer. Get
-- the DNS name by using the Amazon Web Services Management Console,
-- the ELB API, or the CLI.
--
-- - __Amazon Web Services Management Console__: Go to the EC2 page,
-- choose __Load Balancers__ in the navigation pane, choose the
-- load balancer, choose the __Description__ tab, and get the value
-- of the __DNS name__ field.
--
-- If you\'re routing traffic to a Classic Load Balancer, get the
-- value that begins with __dualstack__. If you\'re routing traffic
-- to another type of load balancer, get the value that applies to
-- the record type, A or AAAA.
--
-- - __Elastic Load Balancing API__: Use @DescribeLoadBalancers@ to
-- get the value of @DNSName@. For more information, see the
-- applicable guide:
--
-- - Classic Load Balancers:
-- <https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
--
-- - Application and Network Load Balancers:
-- <https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
--
-- - __CLI__: Use @describe-load-balancers@ to get the value of
-- @DNSName@. For more information, see the applicable guide:
--
-- - Classic Load Balancers:
-- <http://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html describe-load-balancers>
--
-- - Application and Network Load Balancers:
-- <http://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-load-balancers.html describe-load-balancers>
--
-- [Global Accelerator accelerator]
-- Specify the DNS name for your accelerator:
--
-- - __Global Accelerator API:__ To get the DNS name, use
-- <https://docs.aws.amazon.com/global-accelerator/latest/api/API_DescribeAccelerator.html DescribeAccelerator>.
--
-- - __CLI:__ To get the DNS name, use
-- <https://docs.aws.amazon.com/cli/latest/reference/globalaccelerator/describe-accelerator.html describe-accelerator>.
--
-- [Amazon S3 bucket that is configured as a static website]
-- Specify the domain name of the Amazon S3 website endpoint that you
-- created the bucket in, for example,
-- @s3-website.us-east-2.amazonaws.com@. For more information about
-- valid values, see the table
-- <https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_website_region_endpoints Amazon S3 Website Endpoints>
-- in the /Amazon Web Services General Reference/. For more information
-- about using S3 buckets for websites, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started.html Getting Started with Amazon Route 53>
-- in the /Amazon Route 53 Developer Guide./
--
-- [Another Route 53 resource record set]
-- Specify the value of the @Name@ element for a resource record set in
-- the current hosted zone.
--
-- If you\'re creating an alias record that has the same name as the
-- hosted zone (known as the zone apex), you can\'t specify the domain
-- name for a record for which the value of @Type@ is @CNAME@. This is
-- because the alias record must have the same type as the record that
-- you\'re routing traffic to, and creating a CNAME record for the zone
-- apex isn\'t supported even for an alias record.
dNSName :: Prelude.Text,
-- | /Applies only to alias, failover alias, geolocation alias, latency
-- alias, and weighted alias resource record sets:/ When
-- @EvaluateTargetHealth@ is @true@, an alias resource record set inherits
-- the health of the referenced Amazon Web Services resource, such as an
-- ELB load balancer or another resource record set in the hosted zone.
--
-- Note the following:
--
-- [CloudFront distributions]
-- You can\'t set @EvaluateTargetHealth@ to @true@ when the alias
-- target is a CloudFront distribution.
--
-- [Elastic Beanstalk environments that have regionalized subdomains]
-- If you specify an Elastic Beanstalk environment in @DNSName@ and the
-- environment contains an ELB load balancer, Elastic Load Balancing
-- routes queries only to the healthy Amazon EC2 instances that are
-- registered with the load balancer. (An environment automatically
-- contains an ELB load balancer if it includes more than one Amazon
-- EC2 instance.) If you set @EvaluateTargetHealth@ to @true@ and
-- either no Amazon EC2 instances are healthy or the load balancer
-- itself is unhealthy, Route 53 routes queries to other available
-- resources that are healthy, if any.
--
-- If the environment contains a single Amazon EC2 instance, there are
-- no special requirements.
--
-- [ELB load balancers]
-- Health checking behavior depends on the type of load balancer:
--
-- - __Classic Load Balancers__: If you specify an ELB Classic Load
-- Balancer in @DNSName@, Elastic Load Balancing routes queries
-- only to the healthy Amazon EC2 instances that are registered
-- with the load balancer. If you set @EvaluateTargetHealth@ to
-- @true@ and either no EC2 instances are healthy or the load
-- balancer itself is unhealthy, Route 53 routes queries to other
-- resources.
--
-- - __Application and Network Load Balancers__: If you specify an
-- ELB Application or Network Load Balancer and you set
-- @EvaluateTargetHealth@ to @true@, Route 53 routes queries to the
-- load balancer based on the health of the target groups that are
-- associated with the load balancer:
--
-- - For an Application or Network Load Balancer to be considered
-- healthy, every target group that contains targets must
-- contain at least one healthy target. If any target group
-- contains only unhealthy targets, the load balancer is
-- considered unhealthy, and Route 53 routes queries to other
-- resources.
--
-- - A target group that has no registered targets is considered
-- unhealthy.
--
-- When you create a load balancer, you configure settings for Elastic
-- Load Balancing health checks; they\'re not Route 53 health checks,
-- but they perform a similar function. Do not create Route 53 health
-- checks for the EC2 instances that you register with an ELB load
-- balancer.
--
-- [S3 buckets]
-- There are no special requirements for setting @EvaluateTargetHealth@
-- to @true@ when the alias target is an S3 bucket.
--
-- [Other records in the same hosted zone]
-- If the Amazon Web Services resource that you specify in @DNSName@ is
-- a record or a group of records (for example, a group of weighted
-- records) but is not another alias record, we recommend that you
-- associate a health check with all of the records in the alias
-- target. For more information, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-complex-configs.html#dns-failover-complex-configs-hc-omitting What Happens When You Omit Health Checks?>
-- in the /Amazon Route 53 Developer Guide/.
--
-- For more information and examples, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html Amazon Route 53 Health Checks and DNS Failover>
-- in the /Amazon Route 53 Developer Guide/.
evaluateTargetHealth :: Prelude.Bool
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'AliasTarget' 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:
--
-- 'hostedZoneId', 'aliasTarget_hostedZoneId' - /Alias resource records sets only/: The value used depends on where you
-- want to route traffic:
--
-- [Amazon API Gateway custom regional APIs and edge-optimized APIs]
-- Specify the hosted zone ID for your API. You can get the applicable
-- value using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-domain-names.html get-domain-names>:
--
-- - For regional APIs, specify the value of @regionalHostedZoneId@.
--
-- - For edge-optimized APIs, specify the value of
-- @distributionHostedZoneId@.
--
-- [Amazon Virtual Private Cloud interface VPC endpoint]
-- Specify the hosted zone ID for your interface endpoint. You can get
-- the value of @HostedZoneId@ using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html describe-vpc-endpoints>.
--
-- [CloudFront distribution]
-- Specify @Z2FDTNDATAQYW2@.
--
-- Alias resource record sets for CloudFront can\'t be created in a
-- private zone.
--
-- [Elastic Beanstalk environment]
-- Specify the hosted zone ID for the region that you created the
-- environment in. The environment must have a regionalized subdomain.
-- For a list of regions and the corresponding hosted zone IDs, see
-- <https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html Elastic Beanstalk endpoints and quotas>
-- in the the /Amazon Web Services General Reference/.
--
-- [ELB load balancer]
-- Specify the value of the hosted zone ID for the load balancer. Use
-- the following methods to get the hosted zone ID:
--
-- - <https://docs.aws.amazon.com/general/latest/gr/elb.html Elastic Load Balancing endpoints and quotas>
-- topic in the /Amazon Web Services General Reference/: Use the
-- value that corresponds with the region that you created your
-- load balancer in. Note that there are separate columns for
-- Application and Classic Load Balancers and for Network Load
-- Balancers.
--
-- - __Amazon Web Services Management Console__: Go to the Amazon EC2
-- page, choose __Load Balancers__ in the navigation pane, select
-- the load balancer, and get the value of the __Hosted zone__
-- field on the __Description__ tab.
--
-- - __Elastic Load Balancing API__: Use @DescribeLoadBalancers@ to
-- get the applicable value. For more information, see the
-- applicable guide:
--
-- - Classic Load Balancers: Use
-- <https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
-- to get the value of @CanonicalHostedZoneNameId@.
--
-- - Application and Network Load Balancers: Use
-- <https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
-- to get the value of @CanonicalHostedZoneId@.
--
-- - __CLI__: Use @describe-load-balancers@ to get the applicable
-- value. For more information, see the applicable guide:
--
-- - Classic Load Balancers: Use
-- <http://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html describe-load-balancers>
-- to get the value of @CanonicalHostedZoneNameId@.
--
-- - Application and Network Load Balancers: Use
-- <http://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-load-balancers.html describe-load-balancers>
-- to get the value of @CanonicalHostedZoneId@.
--
-- [Global Accelerator accelerator]
-- Specify @Z2BJ6XQ5FK7U4H@.
--
-- [An Amazon S3 bucket configured as a static website]
-- Specify the hosted zone ID for the region that you created the
-- bucket in. For more information about valid values, see the table
-- <https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_website_region_endpoints Amazon S3 Website Endpoints>
-- in the /Amazon Web Services General Reference/.
--
-- [Another Route 53 resource record set in your hosted zone]
-- Specify the hosted zone ID of your hosted zone. (An alias resource
-- record set can\'t reference a resource record set in a different
-- hosted zone.)
--
-- 'dNSName', 'aliasTarget_dNSName' - /Alias resource record sets only:/ The value that you specify depends on
-- where you want to route queries:
--
-- [Amazon API Gateway custom regional APIs and edge-optimized APIs]
-- Specify the applicable domain name for your API. You can get the
-- applicable value using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-domain-names.html get-domain-names>:
--
-- - For regional APIs, specify the value of @regionalDomainName@.
--
-- - For edge-optimized APIs, specify the value of
-- @distributionDomainName@. This is the name of the associated
-- CloudFront distribution, such as @da1b2c3d4e5.cloudfront.net@.
--
-- The name of the record that you\'re creating must match a custom
-- domain name for your API, such as @api.example.com@.
--
-- [Amazon Virtual Private Cloud interface VPC endpoint]
-- Enter the API endpoint for the interface endpoint, such as
-- @vpce-123456789abcdef01-example-us-east-1a.elasticloadbalancing.us-east-1.vpce.amazonaws.com@.
-- For edge-optimized APIs, this is the domain name for the
-- corresponding CloudFront distribution. You can get the value of
-- @DnsName@ using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html describe-vpc-endpoints>.
--
-- [CloudFront distribution]
-- Specify the domain name that CloudFront assigned when you created
-- your distribution.
--
-- Your CloudFront distribution must include an alternate domain name
-- that matches the name of the resource record set. For example, if
-- the name of the resource record set is /acme.example.com/, your
-- CloudFront distribution must include /acme.example.com/ as one of
-- the alternate domain names. For more information, see
-- <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html Using Alternate Domain Names (CNAMEs)>
-- in the /Amazon CloudFront Developer Guide/.
--
-- You can\'t create a resource record set in a private hosted zone to
-- route traffic to a CloudFront distribution.
--
-- For failover alias records, you can\'t specify a CloudFront
-- distribution for both the primary and secondary records. A
-- distribution must include an alternate domain name that matches the
-- name of the record. However, the primary and secondary records have
-- the same name, and you can\'t include the same alternate domain name
-- in more than one distribution.
--
-- [Elastic Beanstalk environment]
-- If the domain name for your Elastic Beanstalk environment includes
-- the region that you deployed the environment in, you can create an
-- alias record that routes traffic to the environment. For example,
-- the domain name
-- @my-environment.@/@us-west-2@/@.elasticbeanstalk.com@ is a
-- regionalized domain name.
--
-- For environments that were created before early 2016, the domain
-- name doesn\'t include the region. To route traffic to these
-- environments, you must create a CNAME record instead of an alias
-- record. Note that you can\'t create a CNAME record for the root
-- domain name. For example, if your domain name is example.com, you
-- can create a record that routes traffic for acme.example.com to your
-- Elastic Beanstalk environment, but you can\'t create a record that
-- routes traffic for example.com to your Elastic Beanstalk
-- environment.
--
-- For Elastic Beanstalk environments that have regionalized
-- subdomains, specify the @CNAME@ attribute for the environment. You
-- can use the following methods to get the value of the CNAME
-- attribute:
--
-- - /Amazon Web Services Management Console/: For information about
-- how to get the value by using the console, see
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customdomains.html Using Custom Domains with Elastic Beanstalk>
-- in the /Elastic Beanstalk Developer Guide/.
--
-- - /Elastic Beanstalk API/: Use the @DescribeEnvironments@ action
-- to get the value of the @CNAME@ attribute. For more information,
-- see
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html DescribeEnvironments>
-- in the /Elastic Beanstalk API Reference/.
--
-- - /CLI/: Use the @describe-environments@ command to get the value
-- of the @CNAME@ attribute. For more information, see
-- <https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-environments.html describe-environments>
-- in the /CLI Command Reference/.
--
-- [ELB load balancer]
-- Specify the DNS name that is associated with the load balancer. Get
-- the DNS name by using the Amazon Web Services Management Console,
-- the ELB API, or the CLI.
--
-- - __Amazon Web Services Management Console__: Go to the EC2 page,
-- choose __Load Balancers__ in the navigation pane, choose the
-- load balancer, choose the __Description__ tab, and get the value
-- of the __DNS name__ field.
--
-- If you\'re routing traffic to a Classic Load Balancer, get the
-- value that begins with __dualstack__. If you\'re routing traffic
-- to another type of load balancer, get the value that applies to
-- the record type, A or AAAA.
--
-- - __Elastic Load Balancing API__: Use @DescribeLoadBalancers@ to
-- get the value of @DNSName@. For more information, see the
-- applicable guide:
--
-- - Classic Load Balancers:
-- <https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
--
-- - Application and Network Load Balancers:
-- <https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
--
-- - __CLI__: Use @describe-load-balancers@ to get the value of
-- @DNSName@. For more information, see the applicable guide:
--
-- - Classic Load Balancers:
-- <http://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html describe-load-balancers>
--
-- - Application and Network Load Balancers:
-- <http://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-load-balancers.html describe-load-balancers>
--
-- [Global Accelerator accelerator]
-- Specify the DNS name for your accelerator:
--
-- - __Global Accelerator API:__ To get the DNS name, use
-- <https://docs.aws.amazon.com/global-accelerator/latest/api/API_DescribeAccelerator.html DescribeAccelerator>.
--
-- - __CLI:__ To get the DNS name, use
-- <https://docs.aws.amazon.com/cli/latest/reference/globalaccelerator/describe-accelerator.html describe-accelerator>.
--
-- [Amazon S3 bucket that is configured as a static website]
-- Specify the domain name of the Amazon S3 website endpoint that you
-- created the bucket in, for example,
-- @s3-website.us-east-2.amazonaws.com@. For more information about
-- valid values, see the table
-- <https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_website_region_endpoints Amazon S3 Website Endpoints>
-- in the /Amazon Web Services General Reference/. For more information
-- about using S3 buckets for websites, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started.html Getting Started with Amazon Route 53>
-- in the /Amazon Route 53 Developer Guide./
--
-- [Another Route 53 resource record set]
-- Specify the value of the @Name@ element for a resource record set in
-- the current hosted zone.
--
-- If you\'re creating an alias record that has the same name as the
-- hosted zone (known as the zone apex), you can\'t specify the domain
-- name for a record for which the value of @Type@ is @CNAME@. This is
-- because the alias record must have the same type as the record that
-- you\'re routing traffic to, and creating a CNAME record for the zone
-- apex isn\'t supported even for an alias record.
--
-- 'evaluateTargetHealth', 'aliasTarget_evaluateTargetHealth' - /Applies only to alias, failover alias, geolocation alias, latency
-- alias, and weighted alias resource record sets:/ When
-- @EvaluateTargetHealth@ is @true@, an alias resource record set inherits
-- the health of the referenced Amazon Web Services resource, such as an
-- ELB load balancer or another resource record set in the hosted zone.
--
-- Note the following:
--
-- [CloudFront distributions]
-- You can\'t set @EvaluateTargetHealth@ to @true@ when the alias
-- target is a CloudFront distribution.
--
-- [Elastic Beanstalk environments that have regionalized subdomains]
-- If you specify an Elastic Beanstalk environment in @DNSName@ and the
-- environment contains an ELB load balancer, Elastic Load Balancing
-- routes queries only to the healthy Amazon EC2 instances that are
-- registered with the load balancer. (An environment automatically
-- contains an ELB load balancer if it includes more than one Amazon
-- EC2 instance.) If you set @EvaluateTargetHealth@ to @true@ and
-- either no Amazon EC2 instances are healthy or the load balancer
-- itself is unhealthy, Route 53 routes queries to other available
-- resources that are healthy, if any.
--
-- If the environment contains a single Amazon EC2 instance, there are
-- no special requirements.
--
-- [ELB load balancers]
-- Health checking behavior depends on the type of load balancer:
--
-- - __Classic Load Balancers__: If you specify an ELB Classic Load
-- Balancer in @DNSName@, Elastic Load Balancing routes queries
-- only to the healthy Amazon EC2 instances that are registered
-- with the load balancer. If you set @EvaluateTargetHealth@ to
-- @true@ and either no EC2 instances are healthy or the load
-- balancer itself is unhealthy, Route 53 routes queries to other
-- resources.
--
-- - __Application and Network Load Balancers__: If you specify an
-- ELB Application or Network Load Balancer and you set
-- @EvaluateTargetHealth@ to @true@, Route 53 routes queries to the
-- load balancer based on the health of the target groups that are
-- associated with the load balancer:
--
-- - For an Application or Network Load Balancer to be considered
-- healthy, every target group that contains targets must
-- contain at least one healthy target. If any target group
-- contains only unhealthy targets, the load balancer is
-- considered unhealthy, and Route 53 routes queries to other
-- resources.
--
-- - A target group that has no registered targets is considered
-- unhealthy.
--
-- When you create a load balancer, you configure settings for Elastic
-- Load Balancing health checks; they\'re not Route 53 health checks,
-- but they perform a similar function. Do not create Route 53 health
-- checks for the EC2 instances that you register with an ELB load
-- balancer.
--
-- [S3 buckets]
-- There are no special requirements for setting @EvaluateTargetHealth@
-- to @true@ when the alias target is an S3 bucket.
--
-- [Other records in the same hosted zone]
-- If the Amazon Web Services resource that you specify in @DNSName@ is
-- a record or a group of records (for example, a group of weighted
-- records) but is not another alias record, we recommend that you
-- associate a health check with all of the records in the alias
-- target. For more information, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-complex-configs.html#dns-failover-complex-configs-hc-omitting What Happens When You Omit Health Checks?>
-- in the /Amazon Route 53 Developer Guide/.
--
-- For more information and examples, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html Amazon Route 53 Health Checks and DNS Failover>
-- in the /Amazon Route 53 Developer Guide/.
newAliasTarget ::
-- | 'hostedZoneId'
ResourceId ->
-- | 'dNSName'
Prelude.Text ->
-- | 'evaluateTargetHealth'
Prelude.Bool ->
AliasTarget
newAliasTarget
pHostedZoneId_
pDNSName_
pEvaluateTargetHealth_ =
AliasTarget'
{ hostedZoneId = pHostedZoneId_,
dNSName = pDNSName_,
evaluateTargetHealth = pEvaluateTargetHealth_
}
-- | /Alias resource records sets only/: The value used depends on where you
-- want to route traffic:
--
-- [Amazon API Gateway custom regional APIs and edge-optimized APIs]
-- Specify the hosted zone ID for your API. You can get the applicable
-- value using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-domain-names.html get-domain-names>:
--
-- - For regional APIs, specify the value of @regionalHostedZoneId@.
--
-- - For edge-optimized APIs, specify the value of
-- @distributionHostedZoneId@.
--
-- [Amazon Virtual Private Cloud interface VPC endpoint]
-- Specify the hosted zone ID for your interface endpoint. You can get
-- the value of @HostedZoneId@ using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html describe-vpc-endpoints>.
--
-- [CloudFront distribution]
-- Specify @Z2FDTNDATAQYW2@.
--
-- Alias resource record sets for CloudFront can\'t be created in a
-- private zone.
--
-- [Elastic Beanstalk environment]
-- Specify the hosted zone ID for the region that you created the
-- environment in. The environment must have a regionalized subdomain.
-- For a list of regions and the corresponding hosted zone IDs, see
-- <https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html Elastic Beanstalk endpoints and quotas>
-- in the the /Amazon Web Services General Reference/.
--
-- [ELB load balancer]
-- Specify the value of the hosted zone ID for the load balancer. Use
-- the following methods to get the hosted zone ID:
--
-- - <https://docs.aws.amazon.com/general/latest/gr/elb.html Elastic Load Balancing endpoints and quotas>
-- topic in the /Amazon Web Services General Reference/: Use the
-- value that corresponds with the region that you created your
-- load balancer in. Note that there are separate columns for
-- Application and Classic Load Balancers and for Network Load
-- Balancers.
--
-- - __Amazon Web Services Management Console__: Go to the Amazon EC2
-- page, choose __Load Balancers__ in the navigation pane, select
-- the load balancer, and get the value of the __Hosted zone__
-- field on the __Description__ tab.
--
-- - __Elastic Load Balancing API__: Use @DescribeLoadBalancers@ to
-- get the applicable value. For more information, see the
-- applicable guide:
--
-- - Classic Load Balancers: Use
-- <https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
-- to get the value of @CanonicalHostedZoneNameId@.
--
-- - Application and Network Load Balancers: Use
-- <https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
-- to get the value of @CanonicalHostedZoneId@.
--
-- - __CLI__: Use @describe-load-balancers@ to get the applicable
-- value. For more information, see the applicable guide:
--
-- - Classic Load Balancers: Use
-- <http://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html describe-load-balancers>
-- to get the value of @CanonicalHostedZoneNameId@.
--
-- - Application and Network Load Balancers: Use
-- <http://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-load-balancers.html describe-load-balancers>
-- to get the value of @CanonicalHostedZoneId@.
--
-- [Global Accelerator accelerator]
-- Specify @Z2BJ6XQ5FK7U4H@.
--
-- [An Amazon S3 bucket configured as a static website]
-- Specify the hosted zone ID for the region that you created the
-- bucket in. For more information about valid values, see the table
-- <https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_website_region_endpoints Amazon S3 Website Endpoints>
-- in the /Amazon Web Services General Reference/.
--
-- [Another Route 53 resource record set in your hosted zone]
-- Specify the hosted zone ID of your hosted zone. (An alias resource
-- record set can\'t reference a resource record set in a different
-- hosted zone.)
aliasTarget_hostedZoneId :: Lens.Lens' AliasTarget ResourceId
aliasTarget_hostedZoneId = Lens.lens (\AliasTarget' {hostedZoneId} -> hostedZoneId) (\s@AliasTarget' {} a -> s {hostedZoneId = a} :: AliasTarget)
-- | /Alias resource record sets only:/ The value that you specify depends on
-- where you want to route queries:
--
-- [Amazon API Gateway custom regional APIs and edge-optimized APIs]
-- Specify the applicable domain name for your API. You can get the
-- applicable value using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-domain-names.html get-domain-names>:
--
-- - For regional APIs, specify the value of @regionalDomainName@.
--
-- - For edge-optimized APIs, specify the value of
-- @distributionDomainName@. This is the name of the associated
-- CloudFront distribution, such as @da1b2c3d4e5.cloudfront.net@.
--
-- The name of the record that you\'re creating must match a custom
-- domain name for your API, such as @api.example.com@.
--
-- [Amazon Virtual Private Cloud interface VPC endpoint]
-- Enter the API endpoint for the interface endpoint, such as
-- @vpce-123456789abcdef01-example-us-east-1a.elasticloadbalancing.us-east-1.vpce.amazonaws.com@.
-- For edge-optimized APIs, this is the domain name for the
-- corresponding CloudFront distribution. You can get the value of
-- @DnsName@ using the CLI command
-- <https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html describe-vpc-endpoints>.
--
-- [CloudFront distribution]
-- Specify the domain name that CloudFront assigned when you created
-- your distribution.
--
-- Your CloudFront distribution must include an alternate domain name
-- that matches the name of the resource record set. For example, if
-- the name of the resource record set is /acme.example.com/, your
-- CloudFront distribution must include /acme.example.com/ as one of
-- the alternate domain names. For more information, see
-- <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html Using Alternate Domain Names (CNAMEs)>
-- in the /Amazon CloudFront Developer Guide/.
--
-- You can\'t create a resource record set in a private hosted zone to
-- route traffic to a CloudFront distribution.
--
-- For failover alias records, you can\'t specify a CloudFront
-- distribution for both the primary and secondary records. A
-- distribution must include an alternate domain name that matches the
-- name of the record. However, the primary and secondary records have
-- the same name, and you can\'t include the same alternate domain name
-- in more than one distribution.
--
-- [Elastic Beanstalk environment]
-- If the domain name for your Elastic Beanstalk environment includes
-- the region that you deployed the environment in, you can create an
-- alias record that routes traffic to the environment. For example,
-- the domain name
-- @my-environment.@/@us-west-2@/@.elasticbeanstalk.com@ is a
-- regionalized domain name.
--
-- For environments that were created before early 2016, the domain
-- name doesn\'t include the region. To route traffic to these
-- environments, you must create a CNAME record instead of an alias
-- record. Note that you can\'t create a CNAME record for the root
-- domain name. For example, if your domain name is example.com, you
-- can create a record that routes traffic for acme.example.com to your
-- Elastic Beanstalk environment, but you can\'t create a record that
-- routes traffic for example.com to your Elastic Beanstalk
-- environment.
--
-- For Elastic Beanstalk environments that have regionalized
-- subdomains, specify the @CNAME@ attribute for the environment. You
-- can use the following methods to get the value of the CNAME
-- attribute:
--
-- - /Amazon Web Services Management Console/: For information about
-- how to get the value by using the console, see
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customdomains.html Using Custom Domains with Elastic Beanstalk>
-- in the /Elastic Beanstalk Developer Guide/.
--
-- - /Elastic Beanstalk API/: Use the @DescribeEnvironments@ action
-- to get the value of the @CNAME@ attribute. For more information,
-- see
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html DescribeEnvironments>
-- in the /Elastic Beanstalk API Reference/.
--
-- - /CLI/: Use the @describe-environments@ command to get the value
-- of the @CNAME@ attribute. For more information, see
-- <https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-environments.html describe-environments>
-- in the /CLI Command Reference/.
--
-- [ELB load balancer]
-- Specify the DNS name that is associated with the load balancer. Get
-- the DNS name by using the Amazon Web Services Management Console,
-- the ELB API, or the CLI.
--
-- - __Amazon Web Services Management Console__: Go to the EC2 page,
-- choose __Load Balancers__ in the navigation pane, choose the
-- load balancer, choose the __Description__ tab, and get the value
-- of the __DNS name__ field.
--
-- If you\'re routing traffic to a Classic Load Balancer, get the
-- value that begins with __dualstack__. If you\'re routing traffic
-- to another type of load balancer, get the value that applies to
-- the record type, A or AAAA.
--
-- - __Elastic Load Balancing API__: Use @DescribeLoadBalancers@ to
-- get the value of @DNSName@. For more information, see the
-- applicable guide:
--
-- - Classic Load Balancers:
-- <https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
--
-- - Application and Network Load Balancers:
-- <https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html DescribeLoadBalancers>
--
-- - __CLI__: Use @describe-load-balancers@ to get the value of
-- @DNSName@. For more information, see the applicable guide:
--
-- - Classic Load Balancers:
-- <http://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html describe-load-balancers>
--
-- - Application and Network Load Balancers:
-- <http://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-load-balancers.html describe-load-balancers>
--
-- [Global Accelerator accelerator]
-- Specify the DNS name for your accelerator:
--
-- - __Global Accelerator API:__ To get the DNS name, use
-- <https://docs.aws.amazon.com/global-accelerator/latest/api/API_DescribeAccelerator.html DescribeAccelerator>.
--
-- - __CLI:__ To get the DNS name, use
-- <https://docs.aws.amazon.com/cli/latest/reference/globalaccelerator/describe-accelerator.html describe-accelerator>.
--
-- [Amazon S3 bucket that is configured as a static website]
-- Specify the domain name of the Amazon S3 website endpoint that you
-- created the bucket in, for example,
-- @s3-website.us-east-2.amazonaws.com@. For more information about
-- valid values, see the table
-- <https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_website_region_endpoints Amazon S3 Website Endpoints>
-- in the /Amazon Web Services General Reference/. For more information
-- about using S3 buckets for websites, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started.html Getting Started with Amazon Route 53>
-- in the /Amazon Route 53 Developer Guide./
--
-- [Another Route 53 resource record set]
-- Specify the value of the @Name@ element for a resource record set in
-- the current hosted zone.
--
-- If you\'re creating an alias record that has the same name as the
-- hosted zone (known as the zone apex), you can\'t specify the domain
-- name for a record for which the value of @Type@ is @CNAME@. This is
-- because the alias record must have the same type as the record that
-- you\'re routing traffic to, and creating a CNAME record for the zone
-- apex isn\'t supported even for an alias record.
aliasTarget_dNSName :: Lens.Lens' AliasTarget Prelude.Text
aliasTarget_dNSName = Lens.lens (\AliasTarget' {dNSName} -> dNSName) (\s@AliasTarget' {} a -> s {dNSName = a} :: AliasTarget)
-- | /Applies only to alias, failover alias, geolocation alias, latency
-- alias, and weighted alias resource record sets:/ When
-- @EvaluateTargetHealth@ is @true@, an alias resource record set inherits
-- the health of the referenced Amazon Web Services resource, such as an
-- ELB load balancer or another resource record set in the hosted zone.
--
-- Note the following:
--
-- [CloudFront distributions]
-- You can\'t set @EvaluateTargetHealth@ to @true@ when the alias
-- target is a CloudFront distribution.
--
-- [Elastic Beanstalk environments that have regionalized subdomains]
-- If you specify an Elastic Beanstalk environment in @DNSName@ and the
-- environment contains an ELB load balancer, Elastic Load Balancing
-- routes queries only to the healthy Amazon EC2 instances that are
-- registered with the load balancer. (An environment automatically
-- contains an ELB load balancer if it includes more than one Amazon
-- EC2 instance.) If you set @EvaluateTargetHealth@ to @true@ and
-- either no Amazon EC2 instances are healthy or the load balancer
-- itself is unhealthy, Route 53 routes queries to other available
-- resources that are healthy, if any.
--
-- If the environment contains a single Amazon EC2 instance, there are
-- no special requirements.
--
-- [ELB load balancers]
-- Health checking behavior depends on the type of load balancer:
--
-- - __Classic Load Balancers__: If you specify an ELB Classic Load
-- Balancer in @DNSName@, Elastic Load Balancing routes queries
-- only to the healthy Amazon EC2 instances that are registered
-- with the load balancer. If you set @EvaluateTargetHealth@ to
-- @true@ and either no EC2 instances are healthy or the load
-- balancer itself is unhealthy, Route 53 routes queries to other
-- resources.
--
-- - __Application and Network Load Balancers__: If you specify an
-- ELB Application or Network Load Balancer and you set
-- @EvaluateTargetHealth@ to @true@, Route 53 routes queries to the
-- load balancer based on the health of the target groups that are
-- associated with the load balancer:
--
-- - For an Application or Network Load Balancer to be considered
-- healthy, every target group that contains targets must
-- contain at least one healthy target. If any target group
-- contains only unhealthy targets, the load balancer is
-- considered unhealthy, and Route 53 routes queries to other
-- resources.
--
-- - A target group that has no registered targets is considered
-- unhealthy.
--
-- When you create a load balancer, you configure settings for Elastic
-- Load Balancing health checks; they\'re not Route 53 health checks,
-- but they perform a similar function. Do not create Route 53 health
-- checks for the EC2 instances that you register with an ELB load
-- balancer.
--
-- [S3 buckets]
-- There are no special requirements for setting @EvaluateTargetHealth@
-- to @true@ when the alias target is an S3 bucket.
--
-- [Other records in the same hosted zone]
-- If the Amazon Web Services resource that you specify in @DNSName@ is
-- a record or a group of records (for example, a group of weighted
-- records) but is not another alias record, we recommend that you
-- associate a health check with all of the records in the alias
-- target. For more information, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-complex-configs.html#dns-failover-complex-configs-hc-omitting What Happens When You Omit Health Checks?>
-- in the /Amazon Route 53 Developer Guide/.
--
-- For more information and examples, see
-- <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html Amazon Route 53 Health Checks and DNS Failover>
-- in the /Amazon Route 53 Developer Guide/.
aliasTarget_evaluateTargetHealth :: Lens.Lens' AliasTarget Prelude.Bool
aliasTarget_evaluateTargetHealth = Lens.lens (\AliasTarget' {evaluateTargetHealth} -> evaluateTargetHealth) (\s@AliasTarget' {} a -> s {evaluateTargetHealth = a} :: AliasTarget)
instance Data.FromXML AliasTarget where
parseXML x =
AliasTarget'
Prelude.<$> (x Data..@ "HostedZoneId")
Prelude.<*> (x Data..@ "DNSName")
Prelude.<*> (x Data..@ "EvaluateTargetHealth")
instance Prelude.Hashable AliasTarget where
hashWithSalt _salt AliasTarget' {..} =
_salt
`Prelude.hashWithSalt` hostedZoneId
`Prelude.hashWithSalt` dNSName
`Prelude.hashWithSalt` evaluateTargetHealth
instance Prelude.NFData AliasTarget where
rnf AliasTarget' {..} =
Prelude.rnf hostedZoneId
`Prelude.seq` Prelude.rnf dNSName
`Prelude.seq` Prelude.rnf evaluateTargetHealth
instance Data.ToXML AliasTarget where
toXML AliasTarget' {..} =
Prelude.mconcat
[ "HostedZoneId" Data.@= hostedZoneId,
"DNSName" Data.@= dNSName,
"EvaluateTargetHealth" Data.@= evaluateTargetHealth
]