{-# 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.Route53AutoNaming.Types.Instance -- 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) module Amazonka.Route53AutoNaming.Types.Instance where import qualified Amazonka.Core as Core import qualified Amazonka.Lens as Lens import qualified Amazonka.Prelude as Prelude -- | A complex type that contains information about an instance that Cloud -- Map creates when you submit a @RegisterInstance@ request. -- -- /See:/ 'newInstance' smart constructor. data Instance = Instance' { -- | A unique string that identifies the request and that allows failed -- @RegisterInstance@ requests to be retried without the risk of executing -- the operation twice. You must use a unique @CreatorRequestId@ string -- every time you submit a @RegisterInstance@ request if you\'re -- registering additional instances for the same namespace and service. -- @CreatorRequestId@ can be any unique string (for example, a date\/time -- stamp). Instance -> Maybe Text creatorRequestId :: Prelude.Maybe Prelude.Text, -- | A string map that contains the following information for the service -- that you specify in @ServiceId@: -- -- - The attributes that apply to the records that are defined in the -- service. -- -- - For each attribute, the applicable value. -- -- Supported attribute keys include the following: -- -- [AWS_ALIAS_DNS_NAME] -- If you want Cloud Map to create a Route 53 alias record that routes -- traffic to an Elastic Load Balancing load balancer, specify the DNS -- name that\'s associated with the load balancer. For information -- about how to get the DNS name, see -- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_AliasTarget.html#Route53-Type-AliasTarget-DNSName AliasTarget->DNSName> -- in the /Route 53 API Reference/. -- -- Note the following: -- -- - The configuration for the service that\'s specified by -- @ServiceId@ must include settings for an @A@ record, an @AAAA@ -- record, or both. -- -- - In the service that\'s specified by @ServiceId@, the value of -- @RoutingPolicy@ must be @WEIGHTED@. -- -- - If the service that\'s specified by @ServiceId@ includes -- @HealthCheckConfig@ settings, Cloud Map creates the health -- check, but it won\'t associate the health check with the alias -- record. -- -- - Auto naming currently doesn\'t support creating alias records -- that route traffic to Amazon Web Services resources other than -- ELB load balancers. -- -- - If you specify a value for @AWS_ALIAS_DNS_NAME@, don\'t specify -- values for any of the @AWS_INSTANCE@ attributes. -- -- [AWS_EC2_INSTANCE_ID] -- /HTTP namespaces only./ The Amazon EC2 instance ID for the instance. -- The @AWS_INSTANCE_IPV4@ attribute contains the primary private IPv4 -- address. -- -- [AWS_INIT_HEALTH_STATUS] -- If the service configuration includes @HealthCheckCustomConfig@, you -- can optionally use @AWS_INIT_HEALTH_STATUS@ to specify the initial -- status of the custom health check, @HEALTHY@ or @UNHEALTHY@. If you -- don\'t specify a value for @AWS_INIT_HEALTH_STATUS@, the initial -- status is @HEALTHY@. -- -- [AWS_INSTANCE_CNAME] -- If the service configuration includes a @CNAME@ record, the domain -- name that you want Route 53 to return in response to DNS queries -- (for example, @example.com@). -- -- This value is required if the service specified by @ServiceId@ -- includes settings for an @CNAME@ record. -- -- [AWS_INSTANCE_IPV4] -- If the service configuration includes an @A@ record, the IPv4 -- address that you want Route 53 to return in response to DNS queries -- (for example, @192.0.2.44@). -- -- This value is required if the service specified by @ServiceId@ -- includes settings for an @A@ record. If the service includes -- settings for an @SRV@ record, you must specify a value for -- @AWS_INSTANCE_IPV4@, @AWS_INSTANCE_IPV6@, or both. -- -- [AWS_INSTANCE_IPV6] -- If the service configuration includes an @AAAA@ record, the IPv6 -- address that you want Route 53 to return in response to DNS queries -- (for example, @2001:0db8:85a3:0000:0000:abcd:0001:2345@). -- -- This value is required if the service specified by @ServiceId@ -- includes settings for an @AAAA@ record. If the service includes -- settings for an @SRV@ record, you must specify a value for -- @AWS_INSTANCE_IPV4@, @AWS_INSTANCE_IPV6@, or both. -- -- [AWS_INSTANCE_PORT] -- If the service includes an @SRV@ record, the value that you want -- Route 53 to return for the port. -- -- If the service includes @HealthCheckConfig@, the port on the -- endpoint that you want Route 53 to send requests to. -- -- This value is required if you specified settings for an @SRV@ record -- or a Route 53 health check when you created the service. Instance -> Maybe (HashMap Text Text) attributes :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text), -- | An identifier that you want to associate with the instance. Note the -- following: -- -- - If the service that\'s specified by @ServiceId@ includes settings -- for an @SRV@ record, the value of @InstanceId@ is automatically -- included as part of the value for the @SRV@ record. For more -- information, see -- <https://docs.aws.amazon.com/cloud-map/latest/api/API_DnsRecord.html#cloudmap-Type-DnsRecord-Type DnsRecord > Type>. -- -- - You can use this value to update an existing instance. -- -- - To register a new instance, you must specify a value that\'s unique -- among instances that you register by using the same service. -- -- - If you specify an existing @InstanceId@ and @ServiceId@, Cloud Map -- updates the existing DNS records. If there\'s also an existing -- health check, Cloud Map deletes the old health check and creates a -- new one. -- -- The health check isn\'t deleted immediately, so it will still appear -- for a while if you submit a @ListHealthChecks@ request, for example. Instance -> Text id :: Prelude.Text } deriving (Instance -> Instance -> Bool (Instance -> Instance -> Bool) -> (Instance -> Instance -> Bool) -> Eq Instance forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Instance -> Instance -> Bool $c/= :: Instance -> Instance -> Bool == :: Instance -> Instance -> Bool $c== :: Instance -> Instance -> Bool Prelude.Eq, ReadPrec [Instance] ReadPrec Instance Int -> ReadS Instance ReadS [Instance] (Int -> ReadS Instance) -> ReadS [Instance] -> ReadPrec Instance -> ReadPrec [Instance] -> Read Instance forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [Instance] $creadListPrec :: ReadPrec [Instance] readPrec :: ReadPrec Instance $creadPrec :: ReadPrec Instance readList :: ReadS [Instance] $creadList :: ReadS [Instance] readsPrec :: Int -> ReadS Instance $creadsPrec :: Int -> ReadS Instance Prelude.Read, Int -> Instance -> ShowS [Instance] -> ShowS Instance -> String (Int -> Instance -> ShowS) -> (Instance -> String) -> ([Instance] -> ShowS) -> Show Instance forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Instance] -> ShowS $cshowList :: [Instance] -> ShowS show :: Instance -> String $cshow :: Instance -> String showsPrec :: Int -> Instance -> ShowS $cshowsPrec :: Int -> Instance -> ShowS Prelude.Show, (forall x. Instance -> Rep Instance x) -> (forall x. Rep Instance x -> Instance) -> Generic Instance forall x. Rep Instance x -> Instance forall x. Instance -> Rep Instance x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep Instance x -> Instance $cfrom :: forall x. Instance -> Rep Instance x Prelude.Generic) -- | -- Create a value of 'Instance' 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: -- -- 'creatorRequestId', 'instance_creatorRequestId' - A unique string that identifies the request and that allows failed -- @RegisterInstance@ requests to be retried without the risk of executing -- the operation twice. You must use a unique @CreatorRequestId@ string -- every time you submit a @RegisterInstance@ request if you\'re -- registering additional instances for the same namespace and service. -- @CreatorRequestId@ can be any unique string (for example, a date\/time -- stamp). -- -- 'attributes', 'instance_attributes' - A string map that contains the following information for the service -- that you specify in @ServiceId@: -- -- - The attributes that apply to the records that are defined in the -- service. -- -- - For each attribute, the applicable value. -- -- Supported attribute keys include the following: -- -- [AWS_ALIAS_DNS_NAME] -- If you want Cloud Map to create a Route 53 alias record that routes -- traffic to an Elastic Load Balancing load balancer, specify the DNS -- name that\'s associated with the load balancer. For information -- about how to get the DNS name, see -- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_AliasTarget.html#Route53-Type-AliasTarget-DNSName AliasTarget->DNSName> -- in the /Route 53 API Reference/. -- -- Note the following: -- -- - The configuration for the service that\'s specified by -- @ServiceId@ must include settings for an @A@ record, an @AAAA@ -- record, or both. -- -- - In the service that\'s specified by @ServiceId@, the value of -- @RoutingPolicy@ must be @WEIGHTED@. -- -- - If the service that\'s specified by @ServiceId@ includes -- @HealthCheckConfig@ settings, Cloud Map creates the health -- check, but it won\'t associate the health check with the alias -- record. -- -- - Auto naming currently doesn\'t support creating alias records -- that route traffic to Amazon Web Services resources other than -- ELB load balancers. -- -- - If you specify a value for @AWS_ALIAS_DNS_NAME@, don\'t specify -- values for any of the @AWS_INSTANCE@ attributes. -- -- [AWS_EC2_INSTANCE_ID] -- /HTTP namespaces only./ The Amazon EC2 instance ID for the instance. -- The @AWS_INSTANCE_IPV4@ attribute contains the primary private IPv4 -- address. -- -- [AWS_INIT_HEALTH_STATUS] -- If the service configuration includes @HealthCheckCustomConfig@, you -- can optionally use @AWS_INIT_HEALTH_STATUS@ to specify the initial -- status of the custom health check, @HEALTHY@ or @UNHEALTHY@. If you -- don\'t specify a value for @AWS_INIT_HEALTH_STATUS@, the initial -- status is @HEALTHY@. -- -- [AWS_INSTANCE_CNAME] -- If the service configuration includes a @CNAME@ record, the domain -- name that you want Route 53 to return in response to DNS queries -- (for example, @example.com@). -- -- This value is required if the service specified by @ServiceId@ -- includes settings for an @CNAME@ record. -- -- [AWS_INSTANCE_IPV4] -- If the service configuration includes an @A@ record, the IPv4 -- address that you want Route 53 to return in response to DNS queries -- (for example, @192.0.2.44@). -- -- This value is required if the service specified by @ServiceId@ -- includes settings for an @A@ record. If the service includes -- settings for an @SRV@ record, you must specify a value for -- @AWS_INSTANCE_IPV4@, @AWS_INSTANCE_IPV6@, or both. -- -- [AWS_INSTANCE_IPV6] -- If the service configuration includes an @AAAA@ record, the IPv6 -- address that you want Route 53 to return in response to DNS queries -- (for example, @2001:0db8:85a3:0000:0000:abcd:0001:2345@). -- -- This value is required if the service specified by @ServiceId@ -- includes settings for an @AAAA@ record. If the service includes -- settings for an @SRV@ record, you must specify a value for -- @AWS_INSTANCE_IPV4@, @AWS_INSTANCE_IPV6@, or both. -- -- [AWS_INSTANCE_PORT] -- If the service includes an @SRV@ record, the value that you want -- Route 53 to return for the port. -- -- If the service includes @HealthCheckConfig@, the port on the -- endpoint that you want Route 53 to send requests to. -- -- This value is required if you specified settings for an @SRV@ record -- or a Route 53 health check when you created the service. -- -- 'id', 'instance_id' - An identifier that you want to associate with the instance. Note the -- following: -- -- - If the service that\'s specified by @ServiceId@ includes settings -- for an @SRV@ record, the value of @InstanceId@ is automatically -- included as part of the value for the @SRV@ record. For more -- information, see -- <https://docs.aws.amazon.com/cloud-map/latest/api/API_DnsRecord.html#cloudmap-Type-DnsRecord-Type DnsRecord > Type>. -- -- - You can use this value to update an existing instance. -- -- - To register a new instance, you must specify a value that\'s unique -- among instances that you register by using the same service. -- -- - If you specify an existing @InstanceId@ and @ServiceId@, Cloud Map -- updates the existing DNS records. If there\'s also an existing -- health check, Cloud Map deletes the old health check and creates a -- new one. -- -- The health check isn\'t deleted immediately, so it will still appear -- for a while if you submit a @ListHealthChecks@ request, for example. newInstance :: -- | 'id' Prelude.Text -> Instance newInstance :: Text -> Instance newInstance Text pId_ = Instance' :: Maybe Text -> Maybe (HashMap Text Text) -> Text -> Instance Instance' { $sel:creatorRequestId:Instance' :: Maybe Text creatorRequestId = Maybe Text forall a. Maybe a Prelude.Nothing, $sel:attributes:Instance' :: Maybe (HashMap Text Text) attributes = Maybe (HashMap Text Text) forall a. Maybe a Prelude.Nothing, $sel:id:Instance' :: Text id = Text pId_ } -- | A unique string that identifies the request and that allows failed -- @RegisterInstance@ requests to be retried without the risk of executing -- the operation twice. You must use a unique @CreatorRequestId@ string -- every time you submit a @RegisterInstance@ request if you\'re -- registering additional instances for the same namespace and service. -- @CreatorRequestId@ can be any unique string (for example, a date\/time -- stamp). instance_creatorRequestId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text) instance_creatorRequestId :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance instance_creatorRequestId = (Instance -> Maybe Text) -> (Instance -> Maybe Text -> Instance) -> Lens Instance Instance (Maybe Text) (Maybe Text) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\Instance' {Maybe Text creatorRequestId :: Maybe Text $sel:creatorRequestId:Instance' :: Instance -> Maybe Text creatorRequestId} -> Maybe Text creatorRequestId) (\s :: Instance s@Instance' {} Maybe Text a -> Instance s {$sel:creatorRequestId:Instance' :: Maybe Text creatorRequestId = Maybe Text a} :: Instance) -- | A string map that contains the following information for the service -- that you specify in @ServiceId@: -- -- - The attributes that apply to the records that are defined in the -- service. -- -- - For each attribute, the applicable value. -- -- Supported attribute keys include the following: -- -- [AWS_ALIAS_DNS_NAME] -- If you want Cloud Map to create a Route 53 alias record that routes -- traffic to an Elastic Load Balancing load balancer, specify the DNS -- name that\'s associated with the load balancer. For information -- about how to get the DNS name, see -- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_AliasTarget.html#Route53-Type-AliasTarget-DNSName AliasTarget->DNSName> -- in the /Route 53 API Reference/. -- -- Note the following: -- -- - The configuration for the service that\'s specified by -- @ServiceId@ must include settings for an @A@ record, an @AAAA@ -- record, or both. -- -- - In the service that\'s specified by @ServiceId@, the value of -- @RoutingPolicy@ must be @WEIGHTED@. -- -- - If the service that\'s specified by @ServiceId@ includes -- @HealthCheckConfig@ settings, Cloud Map creates the health -- check, but it won\'t associate the health check with the alias -- record. -- -- - Auto naming currently doesn\'t support creating alias records -- that route traffic to Amazon Web Services resources other than -- ELB load balancers. -- -- - If you specify a value for @AWS_ALIAS_DNS_NAME@, don\'t specify -- values for any of the @AWS_INSTANCE@ attributes. -- -- [AWS_EC2_INSTANCE_ID] -- /HTTP namespaces only./ The Amazon EC2 instance ID for the instance. -- The @AWS_INSTANCE_IPV4@ attribute contains the primary private IPv4 -- address. -- -- [AWS_INIT_HEALTH_STATUS] -- If the service configuration includes @HealthCheckCustomConfig@, you -- can optionally use @AWS_INIT_HEALTH_STATUS@ to specify the initial -- status of the custom health check, @HEALTHY@ or @UNHEALTHY@. If you -- don\'t specify a value for @AWS_INIT_HEALTH_STATUS@, the initial -- status is @HEALTHY@. -- -- [AWS_INSTANCE_CNAME] -- If the service configuration includes a @CNAME@ record, the domain -- name that you want Route 53 to return in response to DNS queries -- (for example, @example.com@). -- -- This value is required if the service specified by @ServiceId@ -- includes settings for an @CNAME@ record. -- -- [AWS_INSTANCE_IPV4] -- If the service configuration includes an @A@ record, the IPv4 -- address that you want Route 53 to return in response to DNS queries -- (for example, @192.0.2.44@). -- -- This value is required if the service specified by @ServiceId@ -- includes settings for an @A@ record. If the service includes -- settings for an @SRV@ record, you must specify a value for -- @AWS_INSTANCE_IPV4@, @AWS_INSTANCE_IPV6@, or both. -- -- [AWS_INSTANCE_IPV6] -- If the service configuration includes an @AAAA@ record, the IPv6 -- address that you want Route 53 to return in response to DNS queries -- (for example, @2001:0db8:85a3:0000:0000:abcd:0001:2345@). -- -- This value is required if the service specified by @ServiceId@ -- includes settings for an @AAAA@ record. If the service includes -- settings for an @SRV@ record, you must specify a value for -- @AWS_INSTANCE_IPV4@, @AWS_INSTANCE_IPV6@, or both. -- -- [AWS_INSTANCE_PORT] -- If the service includes an @SRV@ record, the value that you want -- Route 53 to return for the port. -- -- If the service includes @HealthCheckConfig@, the port on the -- endpoint that you want Route 53 to send requests to. -- -- This value is required if you specified settings for an @SRV@ record -- or a Route 53 health check when you created the service. instance_attributes :: Lens.Lens' Instance (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)) instance_attributes :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text))) -> Instance -> f Instance instance_attributes = (Instance -> Maybe (HashMap Text Text)) -> (Instance -> Maybe (HashMap Text Text) -> Instance) -> Lens Instance Instance (Maybe (HashMap Text Text)) (Maybe (HashMap Text Text)) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\Instance' {Maybe (HashMap Text Text) attributes :: Maybe (HashMap Text Text) $sel:attributes:Instance' :: Instance -> Maybe (HashMap Text Text) attributes} -> Maybe (HashMap Text Text) attributes) (\s :: Instance s@Instance' {} Maybe (HashMap Text Text) a -> Instance s {$sel:attributes:Instance' :: Maybe (HashMap Text Text) attributes = Maybe (HashMap Text Text) a} :: Instance) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text))) -> Instance -> f Instance) -> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text))) -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text))) -> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text))) -> Instance -> f Instance forall b c a. (b -> c) -> (a -> b) -> a -> c Prelude.. AnIso (HashMap Text Text) (HashMap Text Text) (HashMap Text Text) (HashMap Text Text) -> Iso (Maybe (HashMap Text Text)) (Maybe (HashMap Text Text)) (Maybe (HashMap Text Text)) (Maybe (HashMap Text 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 (HashMap Text Text) (HashMap Text Text) (HashMap Text Text) (HashMap Text Text) forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b Lens.coerced -- | An identifier that you want to associate with the instance. Note the -- following: -- -- - If the service that\'s specified by @ServiceId@ includes settings -- for an @SRV@ record, the value of @InstanceId@ is automatically -- included as part of the value for the @SRV@ record. For more -- information, see -- <https://docs.aws.amazon.com/cloud-map/latest/api/API_DnsRecord.html#cloudmap-Type-DnsRecord-Type DnsRecord > Type>. -- -- - You can use this value to update an existing instance. -- -- - To register a new instance, you must specify a value that\'s unique -- among instances that you register by using the same service. -- -- - If you specify an existing @InstanceId@ and @ServiceId@, Cloud Map -- updates the existing DNS records. If there\'s also an existing -- health check, Cloud Map deletes the old health check and creates a -- new one. -- -- The health check isn\'t deleted immediately, so it will still appear -- for a while if you submit a @ListHealthChecks@ request, for example. instance_id :: Lens.Lens' Instance Prelude.Text instance_id :: (Text -> f Text) -> Instance -> f Instance instance_id = (Instance -> Text) -> (Instance -> Text -> Instance) -> Lens Instance Instance Text Text forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\Instance' {Text id :: Text $sel:id:Instance' :: Instance -> Text id} -> Text id) (\s :: Instance s@Instance' {} Text a -> Instance s {$sel:id:Instance' :: Text id = Text a} :: Instance) instance Core.FromJSON Instance where parseJSON :: Value -> Parser Instance parseJSON = String -> (Object -> Parser Instance) -> Value -> Parser Instance forall a. String -> (Object -> Parser a) -> Value -> Parser a Core.withObject String "Instance" ( \Object x -> Maybe Text -> Maybe (HashMap Text Text) -> Text -> Instance Instance' (Maybe Text -> Maybe (HashMap Text Text) -> Text -> Instance) -> Parser (Maybe Text) -> Parser (Maybe (HashMap Text Text) -> Text -> Instance) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> (Object x Object -> Text -> Parser (Maybe Text) forall a. FromJSON a => Object -> Text -> Parser (Maybe a) Core..:? Text "CreatorRequestId") Parser (Maybe (HashMap Text Text) -> Text -> Instance) -> Parser (Maybe (HashMap Text Text)) -> Parser (Text -> Instance) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b Prelude.<*> (Object x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text))) forall a. FromJSON a => Object -> Text -> Parser (Maybe a) Core..:? Text "Attributes" Parser (Maybe (Maybe (HashMap Text Text))) -> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text)) forall a. Parser (Maybe a) -> a -> Parser a Core..!= Maybe (HashMap Text Text) forall a. Monoid a => a Prelude.mempty) Parser (Text -> Instance) -> Parser Text -> Parser Instance forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b Prelude.<*> (Object x Object -> Text -> Parser Text forall a. FromJSON a => Object -> Text -> Parser a Core..: Text "Id") ) instance Prelude.Hashable Instance instance Prelude.NFData Instance