stratosphere-0.1.0: library-gen/Stratosphere/ResourceProperties/AliasTarget.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
-- | AliasTarget is a property of the AWS::Route53::RecordSet resource. For
-- more information about alias resource record sets, see Creating Alias
-- Resource Record Sets in the Amazon Route 53 Developer Guide.
module Stratosphere.ResourceProperties.AliasTarget where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
-- | Full data type definition for AliasTarget. See 'aliasTarget' for a more
-- convenient constructor.
data AliasTarget =
AliasTarget
{ _aliasTargetDNSName :: Val Text
, _aliasTargetEvaluateTargetHealth :: Maybe (Val Bool')
, _aliasTargetHostedZoneId :: Val Text
} deriving (Show, Generic)
instance ToJSON AliasTarget where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 12, omitNothingFields = True }
instance FromJSON AliasTarget where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 12, omitNothingFields = True }
-- | Constructor for 'AliasTarget' containing required fields as arguments.
aliasTarget
:: Val Text -- ^ 'atDNSName'
-> Val Text -- ^ 'atHostedZoneId'
-> AliasTarget
aliasTarget dNSNamearg hostedZoneIdarg =
AliasTarget
{ _aliasTargetDNSName = dNSNamearg
, _aliasTargetEvaluateTargetHealth = Nothing
, _aliasTargetHostedZoneId = hostedZoneIdarg
}
-- | The DNS name of the load balancer, the domain name of the CloudFront
-- distribution, the website endpoint of the Amazon S3 bucket, or another
-- record set in the same hosted zone that is the target of the alias. Type:
-- String
atDNSName :: Lens' AliasTarget (Val Text)
atDNSName = lens _aliasTargetDNSName (\s a -> s { _aliasTargetDNSName = a })
-- | Whether Amazon Route 53 checks the health of the resource record sets in
-- the alias target when responding to DNS queries. For more information about
-- using this property, see EvaluateTargetHealth in the Amazon Route 53 API
-- Reference. Type: Boolean
atEvaluateTargetHealth :: Lens' AliasTarget (Maybe (Val Bool'))
atEvaluateTargetHealth = lens _aliasTargetEvaluateTargetHealth (\s a -> s { _aliasTargetEvaluateTargetHealth = a })
-- | The hosted zone ID. For load balancers, use the canonical hosted zone ID
-- of the load balancer. For Amazon S3, use the hosted zone ID for your
-- bucket's website endpoint. For CloudFront, use Z2FDTNDATAQYW2. For
-- examples, see Example: Creating Alias Resource Record Sets in the Amazon
-- Route 53 API Reference. Type: String
atHostedZoneId :: Lens' AliasTarget (Val Text)
atHostedZoneId = lens _aliasTargetHostedZoneId (\s a -> s { _aliasTargetHostedZoneId = a })