{-# 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.Route53AutoNaming.RegisterInstance -- 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) -- -- Creates or updates one or more records and, optionally, creates a health -- check based on the settings in a specified service. When you submit a -- @RegisterInstance@ request, the following occurs: -- -- - For each DNS record that you define in the service that\'s specified -- by @ServiceId@, a record is created or updated in the hosted zone -- that\'s associated with the corresponding namespace. -- -- - If the service includes @HealthCheckConfig@, a health check is -- created based on the settings in the health check configuration. -- -- - The health check, if any, is associated with each of the new or -- updated records. -- -- One @RegisterInstance@ request must complete before you can submit -- another request and specify the same service ID and instance ID. -- -- For more information, see -- <https://docs.aws.amazon.com/cloud-map/latest/api/API_CreateService.html CreateService>. -- -- When Cloud Map receives a DNS query for the specified DNS name, it -- returns the applicable value: -- -- - __If the health check is healthy__: returns all the records -- -- - __If the health check is unhealthy__: returns the applicable value -- for the last healthy instance -- -- - __If you didn\'t specify a health check configuration__: returns all -- the records -- -- For the current quota on the number of instances that you can register -- using the same namespace and using the same service, see -- <https://docs.aws.amazon.com/cloud-map/latest/dg/cloud-map-limits.html Cloud Map quotas> -- in the /Cloud Map Developer Guide/. module Amazonka.Route53AutoNaming.RegisterInstance ( -- * Creating a Request RegisterInstance (..), newRegisterInstance, -- * Request Lenses registerInstance_creatorRequestId, registerInstance_serviceId, registerInstance_instanceId, registerInstance_attributes, -- * Destructuring the Response RegisterInstanceResponse (..), newRegisterInstanceResponse, -- * Response Lenses registerInstanceResponse_operationId, registerInstanceResponse_httpStatus, ) 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.Route53AutoNaming.Types -- | /See:/ 'newRegisterInstance' smart constructor. data RegisterInstance = RegisterInstance' { -- | 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). RegisterInstance -> Maybe Text creatorRequestId :: Prelude.Maybe Prelude.Text, -- | The ID of the service that you want to use for settings for the -- instance. RegisterInstance -> Text serviceId :: 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 any. 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. RegisterInstance -> Text instanceId :: 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 an Amazon 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 \"DNSName\" in the -- topic -- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_AliasTarget.html AliasTarget> -- 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 will create the Route 53 -- health check, but it doesn\'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 -- Elastic Load Balancing 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. -- If the @AWS_EC2_INSTANCE_ID@ attribute is specified, then the only -- other attribute that can be specified is @AWS_INIT_HEALTH_STATUS@. -- When the @AWS_EC2_INSTANCE_ID@ attribute is specified, then the -- @AWS_INSTANCE_IPV4@ attribute will be filled out with 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. -- -- [Custom attributes] -- You can add up to 30 custom attributes. For each key-value pair, the -- maximum length of the attribute name is 255 characters, and the -- maximum length of the attribute value is 1,024 characters. The total -- size of all provided attributes (sum of all keys and values) must -- not exceed 5,000 characters. RegisterInstance -> HashMap Text Text attributes :: Prelude.HashMap Prelude.Text Prelude.Text } deriving (RegisterInstance -> RegisterInstance -> Bool (RegisterInstance -> RegisterInstance -> Bool) -> (RegisterInstance -> RegisterInstance -> Bool) -> Eq RegisterInstance forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: RegisterInstance -> RegisterInstance -> Bool $c/= :: RegisterInstance -> RegisterInstance -> Bool == :: RegisterInstance -> RegisterInstance -> Bool $c== :: RegisterInstance -> RegisterInstance -> Bool Prelude.Eq, ReadPrec [RegisterInstance] ReadPrec RegisterInstance Int -> ReadS RegisterInstance ReadS [RegisterInstance] (Int -> ReadS RegisterInstance) -> ReadS [RegisterInstance] -> ReadPrec RegisterInstance -> ReadPrec [RegisterInstance] -> Read RegisterInstance forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [RegisterInstance] $creadListPrec :: ReadPrec [RegisterInstance] readPrec :: ReadPrec RegisterInstance $creadPrec :: ReadPrec RegisterInstance readList :: ReadS [RegisterInstance] $creadList :: ReadS [RegisterInstance] readsPrec :: Int -> ReadS RegisterInstance $creadsPrec :: Int -> ReadS RegisterInstance Prelude.Read, Int -> RegisterInstance -> ShowS [RegisterInstance] -> ShowS RegisterInstance -> String (Int -> RegisterInstance -> ShowS) -> (RegisterInstance -> String) -> ([RegisterInstance] -> ShowS) -> Show RegisterInstance forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [RegisterInstance] -> ShowS $cshowList :: [RegisterInstance] -> ShowS show :: RegisterInstance -> String $cshow :: RegisterInstance -> String showsPrec :: Int -> RegisterInstance -> ShowS $cshowsPrec :: Int -> RegisterInstance -> ShowS Prelude.Show, (forall x. RegisterInstance -> Rep RegisterInstance x) -> (forall x. Rep RegisterInstance x -> RegisterInstance) -> Generic RegisterInstance forall x. Rep RegisterInstance x -> RegisterInstance forall x. RegisterInstance -> Rep RegisterInstance x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep RegisterInstance x -> RegisterInstance $cfrom :: forall x. RegisterInstance -> Rep RegisterInstance x Prelude.Generic) -- | -- Create a value of 'RegisterInstance' 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', 'registerInstance_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). -- -- 'serviceId', 'registerInstance_serviceId' - The ID of the service that you want to use for settings for the -- instance. -- -- 'instanceId', 'registerInstance_instanceId' - 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 any. 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. -- -- 'attributes', 'registerInstance_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 an Amazon 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 \"DNSName\" in the -- topic -- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_AliasTarget.html AliasTarget> -- 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 will create the Route 53 -- health check, but it doesn\'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 -- Elastic Load Balancing 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. -- If the @AWS_EC2_INSTANCE_ID@ attribute is specified, then the only -- other attribute that can be specified is @AWS_INIT_HEALTH_STATUS@. -- When the @AWS_EC2_INSTANCE_ID@ attribute is specified, then the -- @AWS_INSTANCE_IPV4@ attribute will be filled out with 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. -- -- [Custom attributes] -- You can add up to 30 custom attributes. For each key-value pair, the -- maximum length of the attribute name is 255 characters, and the -- maximum length of the attribute value is 1,024 characters. The total -- size of all provided attributes (sum of all keys and values) must -- not exceed 5,000 characters. newRegisterInstance :: -- | 'serviceId' Prelude.Text -> -- | 'instanceId' Prelude.Text -> RegisterInstance newRegisterInstance :: Text -> Text -> RegisterInstance newRegisterInstance Text pServiceId_ Text pInstanceId_ = RegisterInstance' :: Maybe Text -> Text -> Text -> HashMap Text Text -> RegisterInstance RegisterInstance' { $sel:creatorRequestId:RegisterInstance' :: Maybe Text creatorRequestId = Maybe Text forall a. Maybe a Prelude.Nothing, $sel:serviceId:RegisterInstance' :: Text serviceId = Text pServiceId_, $sel:instanceId:RegisterInstance' :: Text instanceId = Text pInstanceId_, $sel:attributes:RegisterInstance' :: HashMap Text Text attributes = HashMap Text Text forall a. Monoid a => a Prelude.mempty } -- | 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). registerInstance_creatorRequestId :: Lens.Lens' RegisterInstance (Prelude.Maybe Prelude.Text) registerInstance_creatorRequestId :: (Maybe Text -> f (Maybe Text)) -> RegisterInstance -> f RegisterInstance registerInstance_creatorRequestId = (RegisterInstance -> Maybe Text) -> (RegisterInstance -> Maybe Text -> RegisterInstance) -> Lens RegisterInstance RegisterInstance (Maybe Text) (Maybe Text) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\RegisterInstance' {Maybe Text creatorRequestId :: Maybe Text $sel:creatorRequestId:RegisterInstance' :: RegisterInstance -> Maybe Text creatorRequestId} -> Maybe Text creatorRequestId) (\s :: RegisterInstance s@RegisterInstance' {} Maybe Text a -> RegisterInstance s {$sel:creatorRequestId:RegisterInstance' :: Maybe Text creatorRequestId = Maybe Text a} :: RegisterInstance) -- | The ID of the service that you want to use for settings for the -- instance. registerInstance_serviceId :: Lens.Lens' RegisterInstance Prelude.Text registerInstance_serviceId :: (Text -> f Text) -> RegisterInstance -> f RegisterInstance registerInstance_serviceId = (RegisterInstance -> Text) -> (RegisterInstance -> Text -> RegisterInstance) -> Lens RegisterInstance RegisterInstance Text Text forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\RegisterInstance' {Text serviceId :: Text $sel:serviceId:RegisterInstance' :: RegisterInstance -> Text serviceId} -> Text serviceId) (\s :: RegisterInstance s@RegisterInstance' {} Text a -> RegisterInstance s {$sel:serviceId:RegisterInstance' :: Text serviceId = Text a} :: RegisterInstance) -- | 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 any. 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. registerInstance_instanceId :: Lens.Lens' RegisterInstance Prelude.Text registerInstance_instanceId :: (Text -> f Text) -> RegisterInstance -> f RegisterInstance registerInstance_instanceId = (RegisterInstance -> Text) -> (RegisterInstance -> Text -> RegisterInstance) -> Lens RegisterInstance RegisterInstance Text Text forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\RegisterInstance' {Text instanceId :: Text $sel:instanceId:RegisterInstance' :: RegisterInstance -> Text instanceId} -> Text instanceId) (\s :: RegisterInstance s@RegisterInstance' {} Text a -> RegisterInstance s {$sel:instanceId:RegisterInstance' :: Text instanceId = Text a} :: RegisterInstance) -- | 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 an Amazon 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 \"DNSName\" in the -- topic -- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_AliasTarget.html AliasTarget> -- 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 will create the Route 53 -- health check, but it doesn\'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 -- Elastic Load Balancing 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. -- If the @AWS_EC2_INSTANCE_ID@ attribute is specified, then the only -- other attribute that can be specified is @AWS_INIT_HEALTH_STATUS@. -- When the @AWS_EC2_INSTANCE_ID@ attribute is specified, then the -- @AWS_INSTANCE_IPV4@ attribute will be filled out with 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. -- -- [Custom attributes] -- You can add up to 30 custom attributes. For each key-value pair, the -- maximum length of the attribute name is 255 characters, and the -- maximum length of the attribute value is 1,024 characters. The total -- size of all provided attributes (sum of all keys and values) must -- not exceed 5,000 characters. registerInstance_attributes :: Lens.Lens' RegisterInstance (Prelude.HashMap Prelude.Text Prelude.Text) registerInstance_attributes :: (HashMap Text Text -> f (HashMap Text Text)) -> RegisterInstance -> f RegisterInstance registerInstance_attributes = (RegisterInstance -> HashMap Text Text) -> (RegisterInstance -> HashMap Text Text -> RegisterInstance) -> Lens RegisterInstance RegisterInstance (HashMap Text Text) (HashMap Text Text) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\RegisterInstance' {HashMap Text Text attributes :: HashMap Text Text $sel:attributes:RegisterInstance' :: RegisterInstance -> HashMap Text Text attributes} -> HashMap Text Text attributes) (\s :: RegisterInstance s@RegisterInstance' {} HashMap Text Text a -> RegisterInstance s {$sel:attributes:RegisterInstance' :: HashMap Text Text attributes = HashMap Text Text a} :: RegisterInstance) ((HashMap Text Text -> f (HashMap Text Text)) -> RegisterInstance -> f RegisterInstance) -> ((HashMap Text Text -> f (HashMap Text Text)) -> HashMap Text Text -> f (HashMap Text Text)) -> (HashMap Text Text -> f (HashMap Text Text)) -> RegisterInstance -> f RegisterInstance forall b c a. (b -> c) -> (a -> b) -> a -> c Prelude.. (HashMap Text Text -> f (HashMap Text Text)) -> HashMap Text Text -> f (HashMap Text Text) forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b Lens.coerced instance Core.AWSRequest RegisterInstance where type AWSResponse RegisterInstance = RegisterInstanceResponse request :: RegisterInstance -> Request RegisterInstance request = Service -> RegisterInstance -> Request RegisterInstance forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a Request.postJSON Service defaultService response :: Logger -> Service -> Proxy RegisterInstance -> ClientResponse ClientBody -> m (Either Error (ClientResponse (AWSResponse RegisterInstance))) response = (Int -> ResponseHeaders -> Object -> Either String (AWSResponse RegisterInstance)) -> Logger -> Service -> Proxy RegisterInstance -> ClientResponse ClientBody -> m (Either Error (ClientResponse (AWSResponse RegisterInstance))) forall (m :: * -> *) a. MonadResource m => (Int -> ResponseHeaders -> Object -> Either String (AWSResponse a)) -> Logger -> Service -> Proxy a -> ClientResponse ClientBody -> m (Either Error (ClientResponse (AWSResponse a))) Response.receiveJSON ( \Int s ResponseHeaders h Object x -> Maybe Text -> Int -> RegisterInstanceResponse RegisterInstanceResponse' (Maybe Text -> Int -> RegisterInstanceResponse) -> Either String (Maybe Text) -> Either String (Int -> RegisterInstanceResponse) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> (Object x Object -> Text -> Either String (Maybe Text) forall a. FromJSON a => Object -> Text -> Either String (Maybe a) Core..?> Text "OperationId") Either String (Int -> RegisterInstanceResponse) -> Either String Int -> Either String RegisterInstanceResponse forall (f :: * -> *) a b. Applicative f => 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)) ) instance Prelude.Hashable RegisterInstance instance Prelude.NFData RegisterInstance instance Core.ToHeaders RegisterInstance where toHeaders :: RegisterInstance -> ResponseHeaders toHeaders = ResponseHeaders -> RegisterInstance -> ResponseHeaders forall a b. a -> b -> a Prelude.const ( [ResponseHeaders] -> ResponseHeaders forall a. Monoid a => [a] -> a Prelude.mconcat [ HeaderName "X-Amz-Target" HeaderName -> ByteString -> ResponseHeaders forall a. ToHeader a => HeaderName -> a -> ResponseHeaders Core.=# ( ByteString "Route53AutoNaming_v20170314.RegisterInstance" :: Prelude.ByteString ), HeaderName "Content-Type" HeaderName -> ByteString -> ResponseHeaders forall a. ToHeader a => HeaderName -> a -> ResponseHeaders Core.=# ( ByteString "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Core.ToJSON RegisterInstance where toJSON :: RegisterInstance -> Value toJSON RegisterInstance' {Maybe Text Text HashMap Text Text attributes :: HashMap Text Text instanceId :: Text serviceId :: Text creatorRequestId :: Maybe Text $sel:attributes:RegisterInstance' :: RegisterInstance -> HashMap Text Text $sel:instanceId:RegisterInstance' :: RegisterInstance -> Text $sel:serviceId:RegisterInstance' :: RegisterInstance -> Text $sel:creatorRequestId:RegisterInstance' :: RegisterInstance -> Maybe Text ..} = [Pair] -> Value Core.object ( [Maybe Pair] -> [Pair] forall a. [Maybe a] -> [a] Prelude.catMaybes [ (Text "CreatorRequestId" Text -> Text -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> Maybe Text creatorRequestId, Pair -> Maybe Pair forall a. a -> Maybe a Prelude.Just (Text "ServiceId" Text -> Text -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..= Text serviceId), Pair -> Maybe Pair forall a. a -> Maybe a Prelude.Just (Text "InstanceId" Text -> Text -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..= Text instanceId), Pair -> Maybe Pair forall a. a -> Maybe a Prelude.Just (Text "Attributes" Text -> HashMap Text Text -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..= HashMap Text Text attributes) ] ) instance Core.ToPath RegisterInstance where toPath :: RegisterInstance -> ByteString toPath = ByteString -> RegisterInstance -> ByteString forall a b. a -> b -> a Prelude.const ByteString "/" instance Core.ToQuery RegisterInstance where toQuery :: RegisterInstance -> QueryString toQuery = QueryString -> RegisterInstance -> QueryString forall a b. a -> b -> a Prelude.const QueryString forall a. Monoid a => a Prelude.mempty -- | /See:/ 'newRegisterInstanceResponse' smart constructor. data RegisterInstanceResponse = RegisterInstanceResponse' { -- | A value that you can use to determine whether the request completed -- successfully. To get the status of the operation, see -- <https://docs.aws.amazon.com/cloud-map/latest/api/API_GetOperation.html GetOperation>. RegisterInstanceResponse -> Maybe Text operationId :: Prelude.Maybe Prelude.Text, -- | The response's http status code. RegisterInstanceResponse -> Int httpStatus :: Prelude.Int } deriving (RegisterInstanceResponse -> RegisterInstanceResponse -> Bool (RegisterInstanceResponse -> RegisterInstanceResponse -> Bool) -> (RegisterInstanceResponse -> RegisterInstanceResponse -> Bool) -> Eq RegisterInstanceResponse forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: RegisterInstanceResponse -> RegisterInstanceResponse -> Bool $c/= :: RegisterInstanceResponse -> RegisterInstanceResponse -> Bool == :: RegisterInstanceResponse -> RegisterInstanceResponse -> Bool $c== :: RegisterInstanceResponse -> RegisterInstanceResponse -> Bool Prelude.Eq, ReadPrec [RegisterInstanceResponse] ReadPrec RegisterInstanceResponse Int -> ReadS RegisterInstanceResponse ReadS [RegisterInstanceResponse] (Int -> ReadS RegisterInstanceResponse) -> ReadS [RegisterInstanceResponse] -> ReadPrec RegisterInstanceResponse -> ReadPrec [RegisterInstanceResponse] -> Read RegisterInstanceResponse forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [RegisterInstanceResponse] $creadListPrec :: ReadPrec [RegisterInstanceResponse] readPrec :: ReadPrec RegisterInstanceResponse $creadPrec :: ReadPrec RegisterInstanceResponse readList :: ReadS [RegisterInstanceResponse] $creadList :: ReadS [RegisterInstanceResponse] readsPrec :: Int -> ReadS RegisterInstanceResponse $creadsPrec :: Int -> ReadS RegisterInstanceResponse Prelude.Read, Int -> RegisterInstanceResponse -> ShowS [RegisterInstanceResponse] -> ShowS RegisterInstanceResponse -> String (Int -> RegisterInstanceResponse -> ShowS) -> (RegisterInstanceResponse -> String) -> ([RegisterInstanceResponse] -> ShowS) -> Show RegisterInstanceResponse forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [RegisterInstanceResponse] -> ShowS $cshowList :: [RegisterInstanceResponse] -> ShowS show :: RegisterInstanceResponse -> String $cshow :: RegisterInstanceResponse -> String showsPrec :: Int -> RegisterInstanceResponse -> ShowS $cshowsPrec :: Int -> RegisterInstanceResponse -> ShowS Prelude.Show, (forall x. RegisterInstanceResponse -> Rep RegisterInstanceResponse x) -> (forall x. Rep RegisterInstanceResponse x -> RegisterInstanceResponse) -> Generic RegisterInstanceResponse forall x. Rep RegisterInstanceResponse x -> RegisterInstanceResponse forall x. RegisterInstanceResponse -> Rep RegisterInstanceResponse x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep RegisterInstanceResponse x -> RegisterInstanceResponse $cfrom :: forall x. RegisterInstanceResponse -> Rep RegisterInstanceResponse x Prelude.Generic) -- | -- Create a value of 'RegisterInstanceResponse' 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: -- -- 'operationId', 'registerInstanceResponse_operationId' - A value that you can use to determine whether the request completed -- successfully. To get the status of the operation, see -- <https://docs.aws.amazon.com/cloud-map/latest/api/API_GetOperation.html GetOperation>. -- -- 'httpStatus', 'registerInstanceResponse_httpStatus' - The response's http status code. newRegisterInstanceResponse :: -- | 'httpStatus' Prelude.Int -> RegisterInstanceResponse newRegisterInstanceResponse :: Int -> RegisterInstanceResponse newRegisterInstanceResponse Int pHttpStatus_ = RegisterInstanceResponse' :: Maybe Text -> Int -> RegisterInstanceResponse RegisterInstanceResponse' { $sel:operationId:RegisterInstanceResponse' :: Maybe Text operationId = Maybe Text forall a. Maybe a Prelude.Nothing, $sel:httpStatus:RegisterInstanceResponse' :: Int httpStatus = Int pHttpStatus_ } -- | A value that you can use to determine whether the request completed -- successfully. To get the status of the operation, see -- <https://docs.aws.amazon.com/cloud-map/latest/api/API_GetOperation.html GetOperation>. registerInstanceResponse_operationId :: Lens.Lens' RegisterInstanceResponse (Prelude.Maybe Prelude.Text) registerInstanceResponse_operationId :: (Maybe Text -> f (Maybe Text)) -> RegisterInstanceResponse -> f RegisterInstanceResponse registerInstanceResponse_operationId = (RegisterInstanceResponse -> Maybe Text) -> (RegisterInstanceResponse -> Maybe Text -> RegisterInstanceResponse) -> Lens RegisterInstanceResponse RegisterInstanceResponse (Maybe Text) (Maybe Text) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\RegisterInstanceResponse' {Maybe Text operationId :: Maybe Text $sel:operationId:RegisterInstanceResponse' :: RegisterInstanceResponse -> Maybe Text operationId} -> Maybe Text operationId) (\s :: RegisterInstanceResponse s@RegisterInstanceResponse' {} Maybe Text a -> RegisterInstanceResponse s {$sel:operationId:RegisterInstanceResponse' :: Maybe Text operationId = Maybe Text a} :: RegisterInstanceResponse) -- | The response's http status code. registerInstanceResponse_httpStatus :: Lens.Lens' RegisterInstanceResponse Prelude.Int registerInstanceResponse_httpStatus :: (Int -> f Int) -> RegisterInstanceResponse -> f RegisterInstanceResponse registerInstanceResponse_httpStatus = (RegisterInstanceResponse -> Int) -> (RegisterInstanceResponse -> Int -> RegisterInstanceResponse) -> Lens RegisterInstanceResponse RegisterInstanceResponse Int Int forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\RegisterInstanceResponse' {Int httpStatus :: Int $sel:httpStatus:RegisterInstanceResponse' :: RegisterInstanceResponse -> Int httpStatus} -> Int httpStatus) (\s :: RegisterInstanceResponse s@RegisterInstanceResponse' {} Int a -> RegisterInstanceResponse s {$sel:httpStatus:RegisterInstanceResponse' :: Int httpStatus = Int a} :: RegisterInstanceResponse) instance Prelude.NFData RegisterInstanceResponse