Class: Aws::ServiceDiscovery::Client

Inherits:
Seahorse::Client::Base show all
Includes:
ClientStubs
Defined in:
gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb

Overview

An API client for ServiceDiscovery. To construct a client, you need to configure a :region and :credentials.

client = Aws::ServiceDiscovery::Client.new(
  region: region_name,
  credentials: credentials,
  # ...
)

For details on configuring region and credentials see the developer guide.

See #initialize for a full list of supported configuration options.

Instance Attribute Summary

Attributes inherited from Seahorse::Client::Base

#config, #handlers

API Operations collapse

Instance Method Summary collapse

Methods included from ClientStubs

#api_requests, #stub_data, #stub_responses

Methods inherited from Seahorse::Client::Base

add_plugin, api, clear_plugins, define, new, #operation_names, plugins, remove_plugin, set_api, set_plugins

Methods included from Seahorse::Client::HandlerBuilder

#handle, #handle_request, #handle_response

Constructor Details

#initialize(options) ⇒ Client

Returns a new instance of Client.

Parameters:

  • options (Hash)

Options Hash (options):

  • :credentials (required, Aws::CredentialProvider)

    Your AWS credentials. This can be an instance of any one of the following classes:

    • Aws::Credentials - Used for configuring static, non-refreshing credentials.

    • Aws::SharedCredentials - Used for loading static credentials from a shared file, such as ~/.aws/config.

    • Aws::AssumeRoleCredentials - Used when you need to assume a role.

    • Aws::AssumeRoleWebIdentityCredentials - Used when you need to assume a role after providing credentials via the web.

    • Aws::SSOCredentials - Used for loading credentials from AWS SSO using an access token generated from aws login.

    • Aws::ProcessCredentials - Used for loading credentials from a process that outputs to stdout.

    • Aws::InstanceProfileCredentials - Used for loading credentials from an EC2 IMDS on an EC2 instance.

    • Aws::ECSCredentials - Used for loading credentials from instances running in ECS.

    • Aws::CognitoIdentityCredentials - Used for loading credentials from the Cognito Identity service.

    When :credentials are not configured directly, the following locations will be searched for credentials:

    • Aws.config[:credentials]
    • The :access_key_id, :secret_access_key, and :session_token options.
    • ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
    • ~/.aws/credentials
    • ~/.aws/config
    • EC2/ECS IMDS instance profile - When used by default, the timeouts are very aggressive. Construct and pass an instance of Aws::InstanceProfileCredentails or Aws::ECSCredentials to enable retries and extended timeouts. Instance profile credential fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED'] to true.
  • :region (required, String)

    The AWS region to connect to. The configured :region is used to determine the service :endpoint. When not passed, a default :region is searched for in the following locations:

    • Aws.config[:region]
    • ENV['AWS_REGION']
    • ENV['AMAZON_REGION']
    • ENV['AWS_DEFAULT_REGION']
    • ~/.aws/credentials
    • ~/.aws/config
  • :access_key_id (String)
  • :active_endpoint_cache (Boolean) — default: false

    When set to true, a thread polling for endpoints will be running in the background every 60 secs (default). Defaults to false.

  • :adaptive_retry_wait_to_fill (Boolean) — default: true

    Used only in adaptive retry mode. When true, the request will sleep until there is sufficent client side capacity to retry the request. When false, the request will raise a RetryCapacityNotAvailableError and will not retry instead of sleeping.

  • :client_side_monitoring (Boolean) — default: false

    When true, client-side metrics will be collected for all API requests from this client.

  • :client_side_monitoring_client_id (String) — default: ""

    Allows you to provide an identifier for this client which will be attached to all generated client side metrics. Defaults to an empty string.

  • :client_side_monitoring_host (String) — default: "127.0.0.1"

    Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client side monitoring agent is running on, where client metrics will be published via UDP.

  • :client_side_monitoring_port (Integer) — default: 31000

    Required for publishing client metrics. The port that the client side monitoring agent is running on, where client metrics will be published via UDP.

  • :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher) — default: Aws::ClientSideMonitoring::Publisher

    Allows you to provide a custom client-side monitoring publisher class. By default, will use the Client Side Monitoring Agent Publisher.

  • :convert_params (Boolean) — default: true

    When true, an attempt is made to coerce request parameters into the required types.

  • :correct_clock_skew (Boolean) — default: true

    Used only in standard and adaptive retry modes. Specifies whether to apply a clock skew correction and retry requests with skewed client clocks.

  • :defaults_mode (String) — default: "legacy"

    See DefaultsModeConfiguration for a list of the accepted modes and the configuration defaults that are included.

  • :disable_host_prefix_injection (Boolean) — default: false

    Set to true to disable SDK automatically adding host prefix to default service endpoint when available.

  • :disable_request_compression (Boolean) — default: false

    When set to 'true' the request body will not be compressed for supported operations.

  • :endpoint (String)

    The client endpoint is normally constructed from the :region option. You should only configure an :endpoint when connecting to test or custom endpoints. This should be a valid HTTP(S) URI.

  • :endpoint_cache_max_entries (Integer) — default: 1000

    Used for the maximum size limit of the LRU cache storing endpoints data for endpoint discovery enabled operations. Defaults to 1000.

  • :endpoint_cache_max_threads (Integer) — default: 10

    Used for the maximum threads in use for polling endpoints to be cached, defaults to 10.

  • :endpoint_cache_poll_interval (Integer) — default: 60

    When :endpoint_discovery and :active_endpoint_cache is enabled, Use this option to config the time interval in seconds for making requests fetching endpoints information. Defaults to 60 sec.

  • :endpoint_discovery (Boolean) — default: false

    When set to true, endpoint discovery will be enabled for operations when available.

  • :ignore_configured_endpoint_urls (Boolean)

    Setting to true disables use of endpoint URLs provided via environment variables and the shared configuration file.

  • :log_formatter (Aws::Log::Formatter) — default: Aws::Log::Formatter.default

    The log formatter.

  • :log_level (Symbol) — default: :info

    The log level to send messages to the :logger at.

  • :logger (Logger)

    The Logger instance to send log messages to. If this option is not set, logging will be disabled.

  • :max_attempts (Integer) — default: 3

    An integer representing the maximum number attempts that will be made for a single request, including the initial attempt. For example, setting this value to 5 will result in a request being retried up to 4 times. Used in standard and adaptive retry modes.

  • :profile (String) — default: "default"

    Used when loading credentials from the shared credentials file at HOME/.aws/credentials. When not specified, 'default' is used.

  • :request_min_compression_size_bytes (Integer) — default: 10240

    The minimum size in bytes that triggers compression for request bodies. The value must be non-negative integer value between 0 and 10485780 bytes inclusive.

  • :retry_backoff (Proc)

    A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay. This option is only used in the legacy retry mode.

  • :retry_base_delay (Float) — default: 0.3

    The base delay in seconds used by the default backoff function. This option is only used in the legacy retry mode.

  • :retry_jitter (Symbol) — default: :none

    A delay randomiser function used by the default backoff function. Some predefined functions can be referenced by name - :none, :equal, :full, otherwise a Proc that takes and returns a number. This option is only used in the legacy retry mode.

    @see https://www.awsarchitectureblog.com/2015/03/backoff.html

  • :retry_limit (Integer) — default: 3

    The maximum number of times to retry failed requests. Only ~ 500 level server errors and certain ~ 400 level client errors are retried. Generally, these are throttling errors, data checksum errors, networking errors, timeout errors, auth errors, endpoint discovery, and errors from expired credentials. This option is only used in the legacy retry mode.

  • :retry_max_delay (Integer) — default: 0

    The maximum number of seconds to delay between retries (0 for no limit) used by the default backoff function. This option is only used in the legacy retry mode.

  • :retry_mode (String) — default: "legacy"

    Specifies which retry algorithm to use. Values are:

    • legacy - The pre-existing retry behavior. This is default value if no retry mode is provided.

    • standard - A standardized set of retry rules across the AWS SDKs. This includes support for retry quotas, which limit the number of unsuccessful retries a client can make.

    • adaptive - An experimental retry mode that includes all the functionality of standard mode along with automatic client side throttling. This is a provisional mode that may change behavior in the future.

  • :sdk_ua_app_id (String)

    A unique and opaque application ID that is appended to the User-Agent header as app/. It should have a maximum length of 50.

  • :secret_access_key (String)
  • :session_token (String)
  • :simple_json (Boolean) — default: false

    Disables request parameter conversion, validation, and formatting. Also disable response data type conversions. This option is useful when you want to ensure the highest level of performance by avoiding overhead of walking request parameters and response data structures.

    When :simple_json is enabled, the request parameters hash must be formatted exactly as the DynamoDB API expects.

  • :stub_responses (Boolean) — default: false

    Causes the client to return stubbed responses. By default fake responses are generated and returned. You can specify the response data to return or errors to raise by calling ClientStubs#stub_responses. See ClientStubs for more information.

    Please note When response stubbing is enabled, no HTTP requests are made, and retries are disabled.

  • :token_provider (Aws::TokenProvider)

    A Bearer Token Provider. This can be an instance of any one of the following classes:

    • Aws::StaticTokenProvider - Used for configuring static, non-refreshing tokens.

    • Aws::SSOTokenProvider - Used for loading tokens from AWS SSO using an access token generated from aws login.

    When :token_provider is not configured directly, the Aws::TokenProviderChain will be used to search for tokens configured for your profile in shared configuration files.

  • :use_dualstack_endpoint (Boolean)

    When set to true, dualstack enabled endpoints (with .aws TLD) will be used if available.

  • :use_fips_endpoint (Boolean)

    When set to true, fips compatible endpoints will be used if available. When a fips region is used, the region is normalized and this config is set to true.

  • :validate_params (Boolean) — default: true

    When true, request parameters are validated before sending the request.

  • :endpoint_provider (Aws::ServiceDiscovery::EndpointProvider)

    The endpoint provider used to resolve endpoints. Any object that responds to #resolve_endpoint(parameters) where parameters is a Struct similar to Aws::ServiceDiscovery::EndpointParameters

  • :http_proxy (URI::HTTP, String)

    A proxy to send requests through. Formatted like 'http://proxy.com:123'.

  • :http_open_timeout (Float) — default: 15

    The number of seconds to wait when opening a HTTP session before raising a Timeout::Error.

  • :http_read_timeout (Float) — default: 60

    The default number of seconds to wait for response data. This value can safely be set per-request on the session.

  • :http_idle_timeout (Float) — default: 5

    The number of seconds a connection is allowed to sit idle before it is considered stale. Stale connections are closed and removed from the pool before making a request.

  • :http_continue_timeout (Float) — default: 1

    The number of seconds to wait for a 100-continue response before sending the request body. This option has no effect unless the request has "Expect" header set to "100-continue". Defaults to nil which disables this behaviour. This value can safely be set per request on the session.

  • :ssl_timeout (Float) — default: nil

    Sets the SSL timeout in seconds.

  • :http_wire_trace (Boolean) — default: false

    When true, HTTP debug output will be sent to the :logger.

  • :ssl_verify_peer (Boolean) — default: true

    When true, SSL peer certificates are verified when establishing a connection.

  • :ssl_ca_bundle (String)

    Full path to the SSL certificate authority bundle file that should be used when verifying peer certificates. If you do not pass :ssl_ca_bundle or :ssl_ca_directory the the system default will be used if available.

  • :ssl_ca_directory (String)

    Full path of the directory that contains the unbundled SSL certificate authority files for verifying peer certificates. If you do not pass :ssl_ca_bundle or :ssl_ca_directory the the system default will be used if available.



395
396
397
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 395

def initialize(*args)
  super
end

Instance Method Details

#create_http_namespace(params = {}) ⇒ Types::CreateHttpNamespaceResponse

Creates an HTTP namespace. Service instances registered using an HTTP namespace can be discovered using a DiscoverInstances request but can't be discovered using DNS.

For the current quota on the number of namespaces that you can create using the same Amazon Web Services account, see Cloud Map quotas in the Cloud Map Developer Guide.

Examples:

Example: CreateHttpNamespace example


# This example creates an HTTP namespace.

resp = client.create_http_namespace({
  creator_request_id: "example-creator-request-id-0001", 
  description: "Example.com AWS Cloud Map HTTP Namespace", 
  name: "example-http.com", 
})

resp.to_h outputs the following:
{
  operation_id: "httpvoqozuhfet5kzxoxg-a-response-example", 
}

Request syntax with placeholder values


resp = client.create_http_namespace({
  name: "NamespaceNameHttp", # required
  creator_request_id: "ResourceId",
  description: "ResourceDescription",
  tags: [
    {
      key: "TagKey", # required
      value: "TagValue", # required
    },
  ],
})

Response structure


resp.operation_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :name (required, String)

    The name that you want to assign to this namespace.

  • :creator_request_id (String)

    A unique string that identifies the request and that allows failed CreateHttpNamespace requests to be retried without the risk of running the operation twice. CreatorRequestId can be any unique string (for example, a date/time stamp).

    A suitable default value is auto-generated. You should normally not need to pass this option.**

  • :description (String)

    A description for the namespace.

  • :tags (Array<Types::Tag>)

    The tags to add to the namespace. Each tag consists of a key and an optional value that you define. Tags keys can be up to 128 characters in length, and tag values can be up to 256 characters in length.

Returns:

See Also:



475
476
477
478
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 475

def create_http_namespace(params = {}, options = {})
  req = build_request(:create_http_namespace, params)
  req.send_request(options)
end

#create_private_dns_namespace(params = {}) ⇒ Types::CreatePrivateDnsNamespaceResponse

Creates a private namespace based on DNS, which is visible only inside a specified Amazon VPC. The namespace defines your service naming scheme. For example, if you name your namespace example.com and name your service backend, the resulting DNS name for the service is backend.example.com. Service instances that are registered using a private DNS namespace can be discovered using either a DiscoverInstances request or using DNS. For the current quota on the number of namespaces that you can create using the same Amazon Web Services account, see Cloud Map quotas in the Cloud Map Developer Guide.

Examples:

Example: Example: Create private DNS namespace


# Example: Create private DNS namespace

resp = client.create_private_dns_namespace({
  creator_request_id: "eedd6892-50f3-41b2-8af9-611d6e1d1a8c", 
  name: "example.com", 
  vpc: "vpc-1c56417b", 
})

resp.to_h outputs the following:
{
  operation_id: "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9302yzd", 
}

Request syntax with placeholder values


resp = client.create_private_dns_namespace({
  name: "NamespaceNamePrivate", # required
  creator_request_id: "ResourceId",
  description: "ResourceDescription",
  vpc: "ResourceId", # required
  tags: [
    {
      key: "TagKey", # required
      value: "TagValue", # required
    },
  ],
  properties: {
    dns_properties: { # required
      soa: { # required
        ttl: 1, # required
      },
    },
  },
})

Response structure


resp.operation_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :name (required, String)

    The name that you want to assign to this namespace. When you create a private DNS namespace, Cloud Map automatically creates an Amazon Route 53 private hosted zone that has the same name as the namespace.

  • :creator_request_id (String)

    A unique string that identifies the request and that allows failed CreatePrivateDnsNamespace requests to be retried without the risk of running the operation twice. CreatorRequestId can be any unique string (for example, a date/timestamp).

    A suitable default value is auto-generated. You should normally not need to pass this option.**

  • :description (String)

    A description for the namespace.

  • :vpc (required, String)

    The ID of the Amazon VPC that you want to associate the namespace with.

  • :tags (Array<Types::Tag>)

    The tags to add to the namespace. Each tag consists of a key and an optional value that you define. Tags keys can be up to 128 characters in length, and tag values can be up to 256 characters in length.

  • :properties (Types::PrivateDnsNamespaceProperties)

    Properties for the private DNS namespace.

Returns:

See Also:



574
575
576
577
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 574

def create_private_dns_namespace(params = {}, options = {})
  req = build_request(:create_private_dns_namespace, params)
  req.send_request(options)
end

#create_public_dns_namespace(params = {}) ⇒ Types::CreatePublicDnsNamespaceResponse

Creates a public namespace based on DNS, which is visible on the internet. The namespace defines your service naming scheme. For example, if you name your namespace example.com and name your service backend, the resulting DNS name for the service is backend.example.com. You can discover instances that were registered with a public DNS namespace by using either a DiscoverInstances request or using DNS. For the current quota on the number of namespaces that you can create using the same Amazon Web Services account, see Cloud Map quotas in the Cloud Map Developer Guide.

The CreatePublicDnsNamespace API operation is not supported in the Amazon Web Services GovCloud (US) Regions.

Examples:

Example: CreatePublicDnsNamespace example


# This example creates a public namespace based on DNS.

resp = client.create_public_dns_namespace({
  creator_request_id: "example-creator-request-id-0003", 
  description: "Example.com AWS Cloud Map Public DNS Namespace", 
  name: "example-public-dns.com", 
})

resp.to_h outputs the following:
{
  operation_id: "dns2voqozuhfet5kzxoxg-a-response-example", 
}

Request syntax with placeholder values


resp = client.create_public_dns_namespace({
  name: "NamespaceNamePublic", # required
  creator_request_id: "ResourceId",
  description: "ResourceDescription",
  tags: [
    {
      key: "TagKey", # required
      value: "TagValue", # required
    },
  ],
  properties: {
    dns_properties: { # required
      soa: { # required
        ttl: 1, # required
      },
    },
  },
})

Response structure


resp.operation_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :name (required, String)

    The name that you want to assign to this namespace.

    Do not include sensitive information in the name. The name is publicly available using DNS queries.

  • :creator_request_id (String)

    A unique string that identifies the request and that allows failed CreatePublicDnsNamespace requests to be retried without the risk of running the operation twice. CreatorRequestId can be any unique string (for example, a date/timestamp).

    A suitable default value is auto-generated. You should normally not need to pass this option.**

  • :description (String)

    A description for the namespace.

  • :tags (Array<Types::Tag>)

    The tags to add to the namespace. Each tag consists of a key and an optional value that you define. Tags keys can be up to 128 characters in length, and tag values can be up to 256 characters in length.

  • :properties (Types::PublicDnsNamespaceProperties)

    Properties for the public DNS namespace.

Returns:

See Also:



673
674
675
676
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 673

def create_public_dns_namespace(params = {}, options = {})
  req = build_request(:create_public_dns_namespace, params)
  req.send_request(options)
end

#create_service(params = {}) ⇒ Types::CreateServiceResponse

Creates a service. This action defines the configuration for the following entities:

  • For public and private DNS namespaces, one of the following combinations of DNS records in Amazon Route 53:

    • A

    • AAAA

    • A and AAAA

    • SRV

    • CNAME

  • Optionally, a health check

After you create the service, you can submit a RegisterInstance request, and Cloud Map uses the values in the configuration to create the specified entities.

For the current quota on the number of instances that you can register using the same namespace and using the same service, see Cloud Map quotas in the Cloud Map Developer Guide.

Examples:

Example: Example: Create service


# Example: Create service

resp = client.create_service({
  creator_request_id: "567c1193-6b00-4308-bd57-ad38a8822d25", 
  dns_config: {
    dns_records: [
      {
        ttl: 60, 
        type: "A", 
      }, 
    ], 
    namespace_id: "ns-ylexjili4cdxy3xm", 
    routing_policy: "MULTIVALUE", 
  }, 
  name: "myservice", 
  namespace_id: "ns-ylexjili4cdxy3xm", 
})

resp.to_h outputs the following:
{
  service: {
    arn: "arn:aws:servicediscovery:us-west-2:123456789012:service/srv-p5zdwlg5uvvzjita", 
    create_date: Time.parse(1587081768.334), 
    creator_request_id: "567c1193-6b00-4308-bd57-ad38a8822d25", 
    dns_config: {
      dns_records: [
        {
          ttl: 60, 
          type: "A", 
        }, 
      ], 
      namespace_id: "ns-ylexjili4cdxy3xm", 
      routing_policy: "MULTIVALUE", 
    }, 
    id: "srv-p5zdwlg5uvvzjita", 
    name: "myservice", 
    namespace_id: "ns-ylexjili4cdxy3xm", 
  }, 
}

Request syntax with placeholder values


resp = client.create_service({
  name: "ServiceName", # required
  namespace_id: "ResourceId",
  creator_request_id: "ResourceId",
  description: "ResourceDescription",
  dns_config: {
    namespace_id: "ResourceId",
    routing_policy: "MULTIVALUE", # accepts MULTIVALUE, WEIGHTED
    dns_records: [ # required
      {
        type: "SRV", # required, accepts SRV, A, AAAA, CNAME
        ttl: 1, # required
      },
    ],
  },
  health_check_config: {
    type: "HTTP", # required, accepts HTTP, HTTPS, TCP
    resource_path: "ResourcePath",
    failure_threshold: 1,
  },
  health_check_custom_config: {
    failure_threshold: 1,
  },
  tags: [
    {
      key: "TagKey", # required
      value: "TagValue", # required
    },
  ],
  type: "HTTP", # accepts HTTP
})

Response structure


resp.service.id #=> String
resp.service.arn #=> String
resp.service.name #=> String
resp.service.namespace_id #=> String
resp.service.description #=> String
resp.service.instance_count #=> Integer
resp.service.dns_config.namespace_id #=> String
resp.service.dns_config.routing_policy #=> String, one of "MULTIVALUE", "WEIGHTED"
resp.service.dns_config.dns_records #=> Array
resp.service.dns_config.dns_records[0].type #=> String, one of "SRV", "A", "AAAA", "CNAME"
resp.service.dns_config.dns_records[0].ttl #=> Integer
resp.service.type #=> String, one of "HTTP", "DNS_HTTP", "DNS"
resp.service.health_check_config.type #=> String, one of "HTTP", "HTTPS", "TCP"
resp.service.health_check_config.resource_path #=> String
resp.service.health_check_config.failure_threshold #=> Integer
resp.service.health_check_custom_config.failure_threshold #=> Integer
resp.service.create_date #=> Time
resp.service.creator_request_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :name (required, String)

    The name that you want to assign to the service.

    Do not include sensitive information in the name if the namespace is discoverable by public DNS queries.

    If you want Cloud Map to create an SRV record when you register an instance and you're using a system that requires a specific SRV format, such as HAProxy, specify the following for Name:

    • Start the name with an underscore (_), such as _exampleservice.

    • End the name with ._protocol, such as ._tcp.

    When you register an instance, Cloud Map creates an SRV record and assigns a name to the record by concatenating the service name and the namespace name (for example,

    _exampleservice._tcp.example.com).

    For services that are accessible by DNS queries, you can't create multiple services with names that differ only by case (such as EXAMPLE and example). Otherwise, these services have the same DNS name and can't be distinguished. However, if you use a namespace that's only accessible by API calls, then you can create services that with names that differ only by case.

  • :namespace_id (String)

    The ID of the namespace that you want to use to create the service. The namespace ID must be specified, but it can be specified either here or in the DnsConfig object.

  • :creator_request_id (String)

    A unique string that identifies the request and that allows failed CreateService requests to be retried without the risk of running the operation twice. CreatorRequestId can be any unique string (for example, a date/timestamp).

    A suitable default value is auto-generated. You should normally not need to pass this option.**

  • :description (String)

    A description for the service.

  • :dns_config (Types::DnsConfig)

    A complex type that contains information about the Amazon Route 53 records that you want Cloud Map to create when you register an instance.

  • :health_check_config (Types::HealthCheckConfig)

    Public DNS and HTTP namespaces only. A complex type that contains settings for an optional Route 53 health check. If you specify settings for a health check, Cloud Map associates the health check with all the Route 53 DNS records that you specify in DnsConfig.

    If you specify a health check configuration, you can specify either HealthCheckCustomConfig or HealthCheckConfig but not both.

    For information about the charges for health checks, see Cloud Map Pricing.

  • :health_check_custom_config (Types::HealthCheckCustomConfig)

    A complex type that contains information about an optional custom health check.

    If you specify a health check configuration, you can specify either HealthCheckCustomConfig or HealthCheckConfig but not both.

    You can't add, update, or delete a HealthCheckCustomConfig configuration from an existing service.

  • :tags (Array<Types::Tag>)

    The tags to add to the service. Each tag consists of a key and an optional value that you define. Tags keys can be up to 128 characters in length, and tag values can be up to 256 characters in length.

  • :type (String)

    If present, specifies that the service instances are only discoverable using the DiscoverInstances API operation. No DNS records is registered for the service instances. The only valid value is HTTP.

Returns:

See Also:



908
909
910
911
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 908

def create_service(params = {}, options = {})
  req = build_request(:create_service, params)
  req.send_request(options)
end

#delete_namespace(params = {}) ⇒ Types::DeleteNamespaceResponse

Deletes a namespace from the current account. If the namespace still contains one or more services, the request fails.

Examples:

Example: Example: Delete namespace


# Example: Delete namespace

resp = client.delete_namespace({
  id: "ns-ylexjili4cdxy3xm", 
})

resp.to_h outputs the following:
{
  operation_id: "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k98y6drk", 
}

Request syntax with placeholder values


resp = client.delete_namespace({
  id: "ResourceId", # required
})

Response structure


resp.operation_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :id (required, String)

    The ID of the namespace that you want to delete.

Returns:

See Also:



951
952
953
954
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 951

def delete_namespace(params = {}, options = {})
  req = build_request(:delete_namespace, params)
  req.send_request(options)
end

#delete_service(params = {}) ⇒ Struct

Deletes a specified service. If the service still contains one or more registered instances, the request fails.

Examples:

Example: Example: Delete service


# Example: Delete service

resp = client.delete_service({
  id: "srv-p5zdwlg5uvvzjita", 
})

resp.to_h outputs the following:
{
}

Request syntax with placeholder values


resp = client.delete_service({
  id: "ResourceId", # required
})

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :id (required, String)

    The ID of the service that you want to delete.

Returns:

  • (Struct)

    Returns an empty response.

See Also:



987
988
989
990
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 987

def delete_service(params = {}, options = {})
  req = build_request(:delete_service, params)
  req.send_request(options)
end

#deregister_instance(params = {}) ⇒ Types::DeregisterInstanceResponse

Deletes the Amazon Route 53 DNS records and health check, if any, that Cloud Map created for the specified instance.

Examples:

Example: Example: Deregister a service instance


# Example: Deregister a service instance

resp = client.deregister_instance({
  instance_id: "myservice-53", 
  service_id: "srv-p5zdwlg5uvvzjita", 
})

resp.to_h outputs the following:
{
  operation_id: "4yejorelbukcjzpnr6tlmrghsjwpngf4-k98rnaiq", 
}

Request syntax with placeholder values


resp = client.deregister_instance({
  service_id: "ResourceId", # required
  instance_id: "ResourceId", # required
})

Response structure


resp.operation_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :service_id (required, String)

    The ID of the service that the instance is associated with.

  • :instance_id (required, String)

    The value that you specified for Id in the RegisterInstance request.

Returns:

See Also:



1040
1041
1042
1043
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1040

def deregister_instance(params = {}, options = {})
  req = build_request(:deregister_instance, params)
  req.send_request(options)
end

#discover_instances(params = {}) ⇒ Types::DiscoverInstancesResponse

Discovers registered instances for a specified namespace and service. You can use DiscoverInstances to discover instances for any type of namespace. DiscoverInstances returns a randomized list of instances allowing customers to distribute traffic evenly across instances. For public and private DNS namespaces, you can also use DNS queries to discover instances.

Examples:

Example: Example: Discover registered instances


# Example: Discover registered instances

resp = client.discover_instances({
  health_status: "ALL", 
  max_results: 10, 
  namespace_name: "example.com", 
  service_name: "myservice", 
})

resp.to_h outputs the following:
{
  instances: [
    {
      attributes: {
        "AWS_INSTANCE_IPV4" => "172.2.1.3", 
        "AWS_INSTANCE_PORT" => "808", 
      }, 
      health_status: "UNKNOWN", 
      instance_id: "myservice-53", 
      namespace_name: "example.com", 
      service_name: "myservice", 
    }, 
  ], 
}

Request syntax with placeholder values


resp = client.discover_instances({
  namespace_name: "NamespaceName", # required
  service_name: "ServiceName", # required
  max_results: 1,
  query_parameters: {
    "AttrKey" => "AttrValue",
  },
  optional_parameters: {
    "AttrKey" => "AttrValue",
  },
  health_status: "HEALTHY", # accepts HEALTHY, UNHEALTHY, ALL, HEALTHY_OR_ELSE_ALL
})

Response structure


resp.instances #=> Array
resp.instances[0].instance_id #=> String
resp.instances[0].namespace_name #=> String
resp.instances[0].service_name #=> String
resp.instances[0].health_status #=> String, one of "HEALTHY", "UNHEALTHY", "UNKNOWN"
resp.instances[0].attributes #=> Hash
resp.instances[0].attributes["AttrKey"] #=> String
resp.instances_revision #=> Integer

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :namespace_name (required, String)

    The HttpName name of the namespace. It's found in the HttpProperties member of the Properties member of the namespace.

  • :service_name (required, String)

    The name of the service that you specified when you registered the instance.

  • :max_results (Integer)

    The maximum number of instances that you want Cloud Map to return in the response to a DiscoverInstances request. If you don't specify a value for MaxResults, Cloud Map returns up to 100 instances.

  • :query_parameters (Hash<String,String>)

    Filters to scope the results based on custom attributes for the instance (for example, \{version=v1, az=1a\}). Only instances that match all the specified key-value pairs are returned.

  • :optional_parameters (Hash<String,String>)

    Opportunistic filters to scope the results based on custom attributes. If there are instances that match both the filters specified in both the QueryParameters parameter and this parameter, all of these instances are returned. Otherwise, the filters are ignored, and only instances that match the filters that are specified in the QueryParameters parameter are returned.

  • :health_status (String)

    The health status of the instances that you want to discover. This parameter is ignored for services that don't have a health check configured, and all instances are returned.

    HEALTHY

    Returns healthy instances.

    UNHEALTHY

    Returns unhealthy instances.

    ALL

    Returns all instances.

    HEALTHY_OR_ELSE_ALL

    Returns healthy instances, unless none are reporting a healthy state. In that case, return all instances. This is also called failing open.

Returns:

See Also:



1164
1165
1166
1167
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1164

def discover_instances(params = {}, options = {})
  req = build_request(:discover_instances, params)
  req.send_request(options)
end

#discover_instances_revision(params = {}) ⇒ Types::DiscoverInstancesRevisionResponse

Discovers the increasing revision associated with an instance.

Examples:

Request syntax with placeholder values


resp = client.discover_instances_revision({
  namespace_name: "NamespaceName", # required
  service_name: "ServiceName", # required
})

Response structure


resp.instances_revision #=> Integer

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :namespace_name (required, String)

    The HttpName name of the namespace. It's found in the HttpProperties member of the Properties member of the namespace.

  • :service_name (required, String)

    The name of the service that you specified when you registered the instance.

Returns:

See Also:



1198
1199
1200
1201
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1198

def discover_instances_revision(params = {}, options = {})
  req = build_request(:discover_instances_revision, params)
  req.send_request(options)
end

#get_instance(params = {}) ⇒ Types::GetInstanceResponse

Gets information about a specified instance.

Examples:

Example: GetInstance example


# This example gets information about a specified instance.

resp = client.get_instance({
  instance_id: "i-abcd1234", 
  service_id: "srv-e4anhexample0004", 
})

resp.to_h outputs the following:
{
  instance: {
    attributes: {
      "AWS_INSTANCE_IPV4" => "192.0.2.44", 
      "AWS_INSTANCE_PORT" => "80", 
      "color" => "green", 
      "region" => "us-west-2", 
      "stage" => "beta", 
    }, 
    id: "i-abcd1234", 
  }, 
}

Request syntax with placeholder values


resp = client.get_instance({
  service_id: "ResourceId", # required
  instance_id: "ResourceId", # required
})

Response structure


resp.instance.id #=> String
resp.instance.creator_request_id #=> String
resp.instance.attributes #=> Hash
resp.instance.attributes["AttrKey"] #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :service_id (required, String)

    The ID of the service that the instance is associated with.

  • :instance_id (required, String)

    The ID of the instance that you want to get information about.

Returns:

See Also:



1257
1258
1259
1260
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1257

def get_instance(params = {}, options = {})
  req = build_request(:get_instance, params)
  req.send_request(options)
end

#get_instances_health_status(params = {}) ⇒ Types::GetInstancesHealthStatusResponse

Gets the current health status (Healthy, Unhealthy, or Unknown) of one or more instances that are associated with a specified service.

There's a brief delay between when you register an instance and when the health status for the instance is available.

The returned response is a pageable response and is Enumerable. For details on usage see PageableResponse.

Examples:

Example: GetInstancesHealthStatus example


# This example gets the current health status of one or more instances that are associate with a specified service.

resp = client.get_instances_health_status({
  service_id: "srv-e4anhexample0004", 
})

resp.to_h outputs the following:
{
  status: {
    "i-abcd1234" => "HEALTHY", 
    "i-abcd1235" => "UNHEALTHY", 
  }, 
}

Request syntax with placeholder values


resp = client.get_instances_health_status({
  service_id: "ResourceId", # required
  instances: ["ResourceId"],
  max_results: 1,
  next_token: "NextToken",
})

Response structure


resp.status #=> Hash
resp.status["ResourceId"] #=> String, one of "HEALTHY", "UNHEALTHY", "UNKNOWN"
resp.next_token #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :service_id (required, String)

    The ID of the service that the instance is associated with.

  • :instances (Array<String>)

    An array that contains the IDs of all the instances that you want to get the health status for.

    If you omit Instances, Cloud Map returns the health status for all the instances that are associated with the specified service.

    To get the IDs for the instances that you've registered by using a specified service, submit a ListInstances request.

  • :max_results (Integer)

    The maximum number of instances that you want Cloud Map to return in the response to a GetInstancesHealthStatus request. If you don't specify a value for MaxResults, Cloud Map returns up to 100 instances.

  • :next_token (String)

    For the first GetInstancesHealthStatus request, omit this value.

    If more than MaxResults instances match the specified criteria, you can submit another GetInstancesHealthStatus request to get the next group of results. Specify the value of NextToken from the previous response in the next request.

Returns:

See Also:



1346
1347
1348
1349
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1346

def get_instances_health_status(params = {}, options = {})
  req = build_request(:get_instances_health_status, params)
  req.send_request(options)
end

#get_namespace(params = {}) ⇒ Types::GetNamespaceResponse

Gets information about a namespace.

Examples:

Example: GetNamespace example


# This example gets information about a specified namespace.

resp = client.get_namespace({
  id: "ns-e4anhexample0004", 
})

resp.to_h outputs the following:
{
  namespace: {
    arn: "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-e1tpmexample0001", 
    create_date: Time.parse("20181118T211712Z"), 
    creator_request_id: "example-creator-request-id-0001", 
    description: "Example.com AWS Cloud Map HTTP Namespace", 
    id: "ns-e1tpmexample0001", 
    name: "example-http.com", 
    properties: {
      dns_properties: {
      }, 
      http_properties: {
        http_name: "example-http.com", 
      }, 
    }, 
    type: "HTTP", 
  }, 
}

Request syntax with placeholder values


resp = client.get_namespace({
  id: "ResourceId", # required
})

Response structure


resp.namespace.id #=> String
resp.namespace.arn #=> String
resp.namespace.name #=> String
resp.namespace.type #=> String, one of "DNS_PUBLIC", "DNS_PRIVATE", "HTTP"
resp.namespace.description #=> String
resp.namespace.service_count #=> Integer
resp.namespace.properties.dns_properties.hosted_zone_id #=> String
resp.namespace.properties.dns_properties.soa.ttl #=> Integer
resp.namespace.properties.http_properties.http_name #=> String
resp.namespace.create_date #=> Time
resp.namespace.creator_request_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :id (required, String)

    The ID of the namespace that you want to get information about.

Returns:

See Also:



1413
1414
1415
1416
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1413

def get_namespace(params = {}, options = {})
  req = build_request(:get_namespace, params)
  req.send_request(options)
end

#get_operation(params = {}) ⇒ Types::GetOperationResponse

Gets information about any operation that returns an operation ID in the response, such as a CreateHttpNamespace request.

To get a list of operations that match specified criteria, see ListOperations.

Examples:

Example: Example: Get operation result


# Example: Get operation result

resp = client.get_operation({
  operation_id: "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9302yzd", 
})

resp.to_h outputs the following:
{
  operation: {
    create_date: Time.parse(1587055860.121), 
    id: "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9302yzd", 
    status: "SUCCESS", 
    targets: {
      "NAMESPACE" => "ns-ylexjili4cdxy3xm", 
    }, 
    type: "CREATE_NAMESPACE", 
    update_date: Time.parse(1587055900.469), 
  }, 
}

Request syntax with placeholder values


resp = client.get_operation({
  operation_id: "ResourceId", # required
})

Response structure


resp.operation.id #=> String
resp.operation.type #=> String, one of "CREATE_NAMESPACE", "DELETE_NAMESPACE", "UPDATE_NAMESPACE", "UPDATE_SERVICE", "REGISTER_INSTANCE", "DEREGISTER_INSTANCE"
resp.operation.status #=> String, one of "SUBMITTED", "PENDING", "SUCCESS", "FAIL"
resp.operation.error_message #=> String
resp.operation.error_code #=> String
resp.operation.create_date #=> Time
resp.operation.update_date #=> Time
resp.operation.targets #=> Hash
resp.operation.targets["OperationTargetType"] #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :operation_id (required, String)

    The ID of the operation that you want to get more information about.

Returns:

See Also:



1482
1483
1484
1485
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1482

def get_operation(params = {}, options = {})
  req = build_request(:get_operation, params)
  req.send_request(options)
end

#get_service(params = {}) ⇒ Types::GetServiceResponse

Gets the settings for a specified service.

Examples:

Example: GetService Example


# This example gets the settings for a specified service.

resp = client.get_service({
  id: "srv-e4anhexample0004", 
})

resp.to_h outputs the following:
{
  service: {
    arn: "arn:aws:servicediscovery:us-west-2:123456789012:service/srv-e4anhexample0004", 
    create_date: Time.parse("20181118T211707Z"), 
    creator_request_id: "example-creator-request-id-0004", 
    description: "Example.com AWS Cloud Map HTTP Service", 
    health_check_config: {
      failure_threshold: 3, 
      resource_path: "/", 
      type: "HTTPS", 
    }, 
    id: "srv-e4anhexample0004", 
    name: "example-http-service", 
    namespace_id: "ns-e4anhexample0004", 
  }, 
}

Request syntax with placeholder values


resp = client.get_service({
  id: "ResourceId", # required
})

Response structure


resp.service.id #=> String
resp.service.arn #=> String
resp.service.name #=> String
resp.service.namespace_id #=> String
resp.service.description #=> String
resp.service.instance_count #=> Integer
resp.service.dns_config.namespace_id #=> String
resp.service.dns_config.routing_policy #=> String, one of "MULTIVALUE", "WEIGHTED"
resp.service.dns_config.dns_records #=> Array
resp.service.dns_config.dns_records[0].type #=> String, one of "SRV", "A", "AAAA", "CNAME"
resp.service.dns_config.dns_records[0].ttl #=> Integer
resp.service.type #=> String, one of "HTTP", "DNS_HTTP", "DNS"
resp.service.health_check_config.type #=> String, one of "HTTP", "HTTPS", "TCP"
resp.service.health_check_config.resource_path #=> String
resp.service.health_check_config.failure_threshold #=> Integer
resp.service.health_check_custom_config.failure_threshold #=> Integer
resp.service.create_date #=> Time
resp.service.creator_request_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :id (required, String)

    The ID of the service that you want to get settings for.

Returns:

See Also:



1554
1555
1556
1557
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1554

def get_service(params = {}, options = {})
  req = build_request(:get_service, params)
  req.send_request(options)
end

#list_instances(params = {}) ⇒ Types::ListInstancesResponse

Lists summary information about the instances that you registered by using a specified service.

The returned response is a pageable response and is Enumerable. For details on usage see PageableResponse.

Examples:

Example: Example: List service instances


# Example: List service instances

resp = client.list_instances({
  service_id: "srv-qzpwvt2tfqcegapy", 
})

resp.to_h outputs the following:
{
  instances: [
    {
      attributes: {
        "AWS_INSTANCE_IPV4" => "172.2.1.3", 
        "AWS_INSTANCE_PORT" => "808", 
      }, 
      id: "i-06bdabbae60f65a4e", 
    }, 
  ], 
}

Request syntax with placeholder values


resp = client.list_instances({
  service_id: "ResourceId", # required
  next_token: "NextToken",
  max_results: 1,
})

Response structure


resp.instances #=> Array
resp.instances[0].id #=> String
resp.instances[0].attributes #=> Hash
resp.instances[0].attributes["AttrKey"] #=> String
resp.next_token #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :service_id (required, String)

    The ID of the service that you want to list instances for.

  • :next_token (String)

    For the first ListInstances request, omit this value.

    If more than MaxResults instances match the specified criteria, you can submit another ListInstances request to get the next group of results. Specify the value of NextToken from the previous response in the next request.

  • :max_results (Integer)

    The maximum number of instances that you want Cloud Map to return in the response to a ListInstances request. If you don't specify a value for MaxResults, Cloud Map returns up to 100 instances.

Returns:

See Also:



1627
1628
1629
1630
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1627

def list_instances(params = {}, options = {})
  req = build_request(:list_instances, params)
  req.send_request(options)
end

#list_namespaces(params = {}) ⇒ Types::ListNamespacesResponse

Lists summary information about the namespaces that were created by the current Amazon Web Services account.

The returned response is a pageable response and is Enumerable. For details on usage see PageableResponse.

Examples:

Example: Example: List namespaces


# Example: List namespaces

resp = client.list_namespaces({
})

resp.to_h outputs the following:
{
  namespaces: [
    {
      arn: "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-a3ccy2e7e3a7rile", 
      create_date: Time.parse(1585354387.357), 
      id: "ns-a3ccy2e7e3a7rile", 
      name: "local", 
      properties: {
        dns_properties: {
          hosted_zone_id: "Z06752353VBUDTC32S84S", 
        }, 
        http_properties: {
          http_name: "local", 
        }, 
      }, 
      type: "DNS_PRIVATE", 
    }, 
    {
      arn: "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-pocfyjtrsmwtvcxx", 
      create_date: Time.parse(1586468974.698), 
      description: "My second namespace", 
      id: "ns-pocfyjtrsmwtvcxx", 
      name: "My-second-namespace", 
      properties: {
        dns_properties: {
        }, 
        http_properties: {
          http_name: "My-second-namespace", 
        }, 
      }, 
      type: "HTTP", 
    }, 
    {
      arn: "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-ylexjili4cdxy3xm", 
      create_date: Time.parse(1587055896.798), 
      id: "ns-ylexjili4cdxy3xm", 
      name: "example.com", 
      properties: {
        dns_properties: {
          hosted_zone_id: "Z09983722P0QME1B3KC8I", 
        }, 
        http_properties: {
          http_name: "example.com", 
        }, 
      }, 
      type: "DNS_PRIVATE", 
    }, 
  ], 
}

Request syntax with placeholder values


resp = client.list_namespaces({
  next_token: "NextToken",
  max_results: 1,
  filters: [
    {
      name: "TYPE", # required, accepts TYPE, NAME, HTTP_NAME
      values: ["FilterValue"], # required
      condition: "EQ", # accepts EQ, IN, BETWEEN, BEGINS_WITH
    },
  ],
})

Response structure


resp.namespaces #=> Array
resp.namespaces[0].id #=> String
resp.namespaces[0].arn #=> String
resp.namespaces[0].name #=> String
resp.namespaces[0].type #=> String, one of "DNS_PUBLIC", "DNS_PRIVATE", "HTTP"
resp.namespaces[0].description #=> String
resp.namespaces[0].service_count #=> Integer
resp.namespaces[0].properties.dns_properties.hosted_zone_id #=> String
resp.namespaces[0].properties.dns_properties.soa.ttl #=> Integer
resp.namespaces[0].properties.http_properties.http_name #=> String
resp.namespaces[0].create_date #=> Time
resp.next_token #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :next_token (String)

    For the first ListNamespaces request, omit this value.

    If the response contains NextToken, submit another ListNamespaces request to get the next group of results. Specify the value of NextToken from the previous response in the next request.

    Cloud Map gets MaxResults namespaces and then filters them based on the specified criteria. It's possible that no namespaces in the first MaxResults namespaces matched the specified criteria but that subsequent groups of MaxResults namespaces do contain namespaces that match the criteria.

  • :max_results (Integer)

    The maximum number of namespaces that you want Cloud Map to return in the response to a ListNamespaces request. If you don't specify a value for MaxResults, Cloud Map returns up to 100 namespaces.

  • :filters (Array<Types::NamespaceFilter>)

    A complex type that contains specifications for the namespaces that you want to list.

    If you specify more than one filter, a namespace must match all filters to be returned by ListNamespaces.

Returns:

See Also:



1761
1762
1763
1764
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1761

def list_namespaces(params = {}, options = {})
  req = build_request(:list_namespaces, params)
  req.send_request(options)
end

#list_operations(params = {}) ⇒ Types::ListOperationsResponse

Lists operations that match the criteria that you specify.

The returned response is a pageable response and is Enumerable. For details on usage see PageableResponse.

Examples:

Example: ListOperations Example


# This example gets the operations that have a STATUS of either PENDING or SUCCESS.

resp = client.list_operations({
  filters: [
    {
      condition: "IN", 
      name: "STATUS", 
      values: [
        "PENDING", 
        "SUCCESS", 
      ], 
    }, 
  ], 
})

resp.to_h outputs the following:
{
  operations: [
    {
      id: "76yy8ovhpdz0plmjzbsnqgnrqvpv2qdt-kexample", 
      status: "SUCCESS", 
    }, 
    {
      id: "prysnyzpji3u2ciy45nke83x2zanl7yk-dexample", 
      status: "SUCCESS", 
    }, 
    {
      id: "ko4ekftir7kzlbechsh7xvcdgcpk66gh-7example", 
      status: "PENDING", 
    }, 
  ], 
}

Request syntax with placeholder values


resp = client.list_operations({
  next_token: "NextToken",
  max_results: 1,
  filters: [
    {
      name: "NAMESPACE_ID", # required, accepts NAMESPACE_ID, SERVICE_ID, STATUS, TYPE, UPDATE_DATE
      values: ["FilterValue"], # required
      condition: "EQ", # accepts EQ, IN, BETWEEN, BEGINS_WITH
    },
  ],
})

Response structure


resp.operations #=> Array
resp.operations[0].id #=> String
resp.operations[0].status #=> String, one of "SUBMITTED", "PENDING", "SUCCESS", "FAIL"
resp.next_token #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :next_token (String)

    For the first ListOperations request, omit this value.

    If the response contains NextToken, submit another ListOperations request to get the next group of results. Specify the value of NextToken from the previous response in the next request.

    Cloud Map gets MaxResults operations and then filters them based on the specified criteria. It's possible that no operations in the first MaxResults operations matched the specified criteria but that subsequent groups of MaxResults operations do contain operations that match the criteria.

  • :max_results (Integer)

    The maximum number of items that you want Cloud Map to return in the response to a ListOperations request. If you don't specify a value for MaxResults, Cloud Map returns up to 100 operations.

  • :filters (Array<Types::OperationFilter>)

    A complex type that contains specifications for the operations that you want to list, for example, operations that you started between a specified start date and end date.

    If you specify more than one filter, an operation must match all filters to be returned by ListOperations.

Returns:

See Also:



1864
1865
1866
1867
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1864

def list_operations(params = {}, options = {})
  req = build_request(:list_operations, params)
  req.send_request(options)
end

#list_services(params = {}) ⇒ Types::ListServicesResponse

Lists summary information for all the services that are associated with one or more specified namespaces.

The returned response is a pageable response and is Enumerable. For details on usage see PageableResponse.

Examples:

Example: Example: List services


# Example: List services

resp = client.list_services({
})

resp.to_h outputs the following:
{
  services: [
    {
      arn: "arn:aws:servicediscovery:us-west-2:123456789012:service/srv-p5zdwlg5uvvzjita", 
      create_date: Time.parse(1587081768.334), 
      dns_config: {
        dns_records: [
          {
            ttl: 60, 
            type: "A", 
          }, 
        ], 
        routing_policy: "MULTIVALUE", 
      }, 
      id: "srv-p5zdwlg5uvvzjita", 
      name: "myservice", 
    }, 
  ], 
}

Request syntax with placeholder values


resp = client.list_services({
  next_token: "NextToken",
  max_results: 1,
  filters: [
    {
      name: "NAMESPACE_ID", # required, accepts NAMESPACE_ID
      values: ["FilterValue"], # required
      condition: "EQ", # accepts EQ, IN, BETWEEN, BEGINS_WITH
    },
  ],
})

Response structure


resp.services #=> Array
resp.services[0].id #=> String
resp.services[0].arn #=> String
resp.services[0].name #=> String
resp.services[0].type #=> String, one of "HTTP", "DNS_HTTP", "DNS"
resp.services[0].description #=> String
resp.services[0].instance_count #=> Integer
resp.services[0].dns_config.namespace_id #=> String
resp.services[0].dns_config.routing_policy #=> String, one of "MULTIVALUE", "WEIGHTED"
resp.services[0].dns_config.dns_records #=> Array
resp.services[0].dns_config.dns_records[0].type #=> String, one of "SRV", "A", "AAAA", "CNAME"
resp.services[0].dns_config.dns_records[0].ttl #=> Integer
resp.services[0].health_check_config.type #=> String, one of "HTTP", "HTTPS", "TCP"
resp.services[0].health_check_config.resource_path #=> String
resp.services[0].health_check_config.failure_threshold #=> Integer
resp.services[0].health_check_custom_config.failure_threshold #=> Integer
resp.services[0].create_date #=> Time
resp.next_token #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :next_token (String)

    For the first ListServices request, omit this value.

    If the response contains NextToken, submit another ListServices request to get the next group of results. Specify the value of NextToken from the previous response in the next request.

    Cloud Map gets MaxResults services and then filters them based on the specified criteria. It's possible that no services in the first MaxResults services matched the specified criteria but that subsequent groups of MaxResults services do contain services that match the criteria.

  • :max_results (Integer)

    The maximum number of services that you want Cloud Map to return in the response to a ListServices request. If you don't specify a value for MaxResults, Cloud Map returns up to 100 services.

  • :filters (Array<Types::ServiceFilter>)

    A complex type that contains specifications for the namespaces that you want to list services for.

    If you specify more than one filter, an operation must match all filters to be returned by ListServices.

Returns:

See Also:



1974
1975
1976
1977
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 1974

def list_services(params = {}, options = {})
  req = build_request(:list_services, params)
  req.send_request(options)
end

#list_tags_for_resource(params = {}) ⇒ Types::ListTagsForResourceResponse

Lists tags for the specified resource.

Examples:

Example: ListTagsForResource example


# This example lists the tags of a resource.

resp = client.list_tags_for_resource({
  resource_arn: "arn:aws:servicediscovery:us-east-1:123456789012:namespace/ns-ylexjili4cdxy3xm", 
})

resp.to_h outputs the following:
{
  tags: [
    {
      key: "Project", 
      value: "Zeta", 
    }, 
    {
      key: "Department", 
      value: "Engineering", 
    }, 
  ], 
}

Request syntax with placeholder values


resp = client.list_tags_for_resource({
  resource_arn: "AmazonResourceName", # required
})

Response structure


resp.tags #=> Array
resp.tags[0].key #=> String
resp.tags[0].value #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :resource_arn (required, String)

    The Amazon Resource Name (ARN) of the resource that you want to retrieve tags for.

Returns:

See Also:



2028
2029
2030
2031
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 2028

def list_tags_for_resource(params = {}, options = {})
  req = build_request(:list_tags_for_resource, params)
  req.send_request(options)
end

#register_instance(params = {}) ⇒ Types::RegisterInstanceResponse

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 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 Cloud Map quotas in the Cloud Map Developer Guide.

Examples:

Example: Example: Register Instance


# Example: Register Instance

resp = client.register_instance({
  attributes: {
    "AWS_INSTANCE_IPV4" => "172.2.1.3", 
    "AWS_INSTANCE_PORT" => "808", 
  }, 
  creator_request_id: "7a48a98a-72e6-4849-bfa7-1a458e030d7b", 
  instance_id: "myservice-53", 
  service_id: "srv-p5zdwlg5uvvzjita", 
})

resp.to_h outputs the following:
{
  operation_id: "4yejorelbukcjzpnr6tlmrghsjwpngf4-k95yg2u7", 
}

Request syntax with placeholder values


resp = client.register_instance({
  service_id: "ResourceId", # required
  instance_id: "InstanceId", # required
  creator_request_id: "ResourceId",
  attributes: { # required
    "AttrKey" => "AttrValue",
  },
})

Response structure


resp.operation_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :service_id (required, String)

    The ID of the service that you want to use for settings for the instance.

  • :instance_id (required, String)

    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 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.

    Do not include sensitive information in InstanceId if the namespace is discoverable by public DNS queries and any Type member of DnsRecord for the service contains SRV because the InstanceId is discoverable by public DNS queries.

  • :creator_request_id (String)

    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).

    A suitable default value is auto-generated. You should normally not need to pass this option.**

  • :attributes (required, Hash<String,String>)

    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.

    Do not include sensitive information in the attributes if the namespace is discoverable by public DNS queries.

    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 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.

    • Cloud Map 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.

Returns:

See Also:



2282
2283
2284
2285
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 2282

def register_instance(params = {}, options = {})
  req = build_request(:register_instance, params)
  req.send_request(options)
end

#tag_resource(params = {}) ⇒ Struct

Adds one or more tags to the specified resource.

Examples:

Example: TagResource example


# This example adds "Department" and "Project" tags to a resource.

resp = client.tag_resource({
  resource_arn: "arn:aws:servicediscovery:us-east-1:123456789012:namespace/ns-ylexjili4cdxy3xm", 
  tags: [
    {
      key: "Department", 
      value: "Engineering", 
    }, 
    {
      key: "Project", 
      value: "Zeta", 
    }, 
  ], 
})

resp.to_h outputs the following:
{
}

Request syntax with placeholder values


resp = client.tag_resource({
  resource_arn: "AmazonResourceName", # required
  tags: [ # required
    {
      key: "TagKey", # required
      value: "TagValue", # required
    },
  ],
})

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :resource_arn (required, String)

    The Amazon Resource Name (ARN) of the resource that you want to retrieve tags for.

  • :tags (required, Array<Types::Tag>)

    The tags to add to the specified resource. Specifying the tag key is required. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.

Returns:

  • (Struct)

    Returns an empty response.

See Also:



2339
2340
2341
2342
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 2339

def tag_resource(params = {}, options = {})
  req = build_request(:tag_resource, params)
  req.send_request(options)
end

#untag_resource(params = {}) ⇒ Struct

Removes one or more tags from the specified resource.

Examples:

Example: UntagResource example


# This example removes the "Department" and "Project" tags from a resource.

resp = client.untag_resource({
  resource_arn: "arn:aws:servicediscovery:us-east-1:123456789012:namespace/ns-ylexjili4cdxy3xm", 
  tag_keys: [
    "Project", 
    "Department", 
  ], 
})

resp.to_h outputs the following:
{
}

Request syntax with placeholder values


resp = client.untag_resource({
  resource_arn: "AmazonResourceName", # required
  tag_keys: ["TagKey"], # required
})

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :resource_arn (required, String)

    The Amazon Resource Name (ARN) of the resource that you want to retrieve tags for.

  • :tag_keys (required, Array<String>)

    The tag keys to remove from the specified resource.

Returns:

  • (Struct)

    Returns an empty response.

See Also:



2383
2384
2385
2386
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 2383

def untag_resource(params = {}, options = {})
  req = build_request(:untag_resource, params)
  req.send_request(options)
end

#update_http_namespace(params = {}) ⇒ Types::UpdateHttpNamespaceResponse

Updates an HTTP namespace.

Examples:

Request syntax with placeholder values


resp = client.update_http_namespace({
  id: "ResourceId", # required
  updater_request_id: "ResourceId",
  namespace: { # required
    description: "ResourceDescription", # required
  },
})

Response structure


resp.operation_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :id (required, String)

    The ID of the namespace that you want to update.

  • :updater_request_id (String)

    A unique string that identifies the request and that allows failed UpdateHttpNamespace requests to be retried without the risk of running the operation twice. UpdaterRequestId can be any unique string (for example, a date/timestamp).

    A suitable default value is auto-generated. You should normally not need to pass this option.**

  • :namespace (required, Types::HttpNamespaceChange)

    Updated properties for the the HTTP namespace.

Returns:

See Also:



2427
2428
2429
2430
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 2427

def update_http_namespace(params = {}, options = {})
  req = build_request(:update_http_namespace, params)
  req.send_request(options)
end

#update_instance_custom_health_status(params = {}) ⇒ Struct

Submits a request to change the health status of a custom health check to healthy or unhealthy.

You can use UpdateInstanceCustomHealthStatus to change the status only for custom health checks, which you define using HealthCheckCustomConfig when you create a service. You can't use it to change the status for Route 53 health checks, which you define using HealthCheckConfig.

For more information, see HealthCheckCustomConfig.

Examples:

Example: UpdateInstanceCustomHealthStatus Example


# This example submits a request to change the health status of an instance associated with a service with a custom health
# check to HEALTHY.

resp = client.update_instance_custom_health_status({
  instance_id: "i-abcd1234", 
  service_id: "srv-e4anhexample0004", 
  status: "HEALTHY", 
})

Request syntax with placeholder values


resp = client.update_instance_custom_health_status({
  service_id: "ResourceId", # required
  instance_id: "ResourceId", # required
  status: "HEALTHY", # required, accepts HEALTHY, UNHEALTHY
})

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :service_id (required, String)

    The ID of the service that includes the configuration for the custom health check that you want to change the status for.

  • :instance_id (required, String)

    The ID of the instance that you want to change the health status for.

  • :status (required, String)

    The new status of the instance, HEALTHY or UNHEALTHY.

Returns:

  • (Struct)

    Returns an empty response.

See Also:



2483
2484
2485
2486
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 2483

def update_instance_custom_health_status(params = {}, options = {})
  req = build_request(:update_instance_custom_health_status, params)
  req.send_request(options)
end

#update_private_dns_namespace(params = {}) ⇒ Types::UpdatePrivateDnsNamespaceResponse

Updates a private DNS namespace.

Examples:

Request syntax with placeholder values


resp = client.update_private_dns_namespace({
  id: "ResourceId", # required
  updater_request_id: "ResourceId",
  namespace: { # required
    description: "ResourceDescription",
    properties: {
      dns_properties: { # required
        soa: { # required
          ttl: 1, # required
        },
      },
    },
  },
})

Response structure


resp.operation_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :id (required, String)

    The ID of the namespace that you want to update.

  • :updater_request_id (String)

    A unique string that identifies the request and that allows failed UpdatePrivateDnsNamespace requests to be retried without the risk of running the operation twice. UpdaterRequestId can be any unique string (for example, a date/timestamp).

    A suitable default value is auto-generated. You should normally not need to pass this option.**

  • :namespace (required, Types::PrivateDnsNamespaceChange)

    Updated properties for the private DNS namespace.

Returns:

See Also:



2534
2535
2536
2537
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 2534

def update_private_dns_namespace(params = {}, options = {})
  req = build_request(:update_private_dns_namespace, params)
  req.send_request(options)
end

#update_public_dns_namespace(params = {}) ⇒ Types::UpdatePublicDnsNamespaceResponse

Updates a public DNS namespace.

Examples:

Request syntax with placeholder values


resp = client.update_public_dns_namespace({
  id: "ResourceId", # required
  updater_request_id: "ResourceId",
  namespace: { # required
    description: "ResourceDescription",
    properties: {
      dns_properties: { # required
        soa: { # required
          ttl: 1, # required
        },
      },
    },
  },
})

Response structure


resp.operation_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :id (required, String)

    The ID of the namespace being updated.

  • :updater_request_id (String)

    A unique string that identifies the request and that allows failed UpdatePublicDnsNamespace requests to be retried without the risk of running the operation twice. UpdaterRequestId can be any unique string (for example, a date/timestamp).

    A suitable default value is auto-generated. You should normally not need to pass this option.**

  • :namespace (required, Types::PublicDnsNamespaceChange)

    Updated properties for the public DNS namespace.

Returns:

See Also:



2585
2586
2587
2588
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 2585

def update_public_dns_namespace(params = {}, options = {})
  req = build_request(:update_public_dns_namespace, params)
  req.send_request(options)
end

#update_service(params = {}) ⇒ Types::UpdateServiceResponse

Submits a request to perform the following operations:

  • Update the TTL setting for existing DnsRecords configurations

  • Add, update, or delete HealthCheckConfig for a specified service

    You can't add, update, or delete a HealthCheckCustomConfig configuration.

For public and private DNS namespaces, note the following:

  • If you omit any existing DnsRecords or HealthCheckConfig configurations from an UpdateService request, the configurations are deleted from the service.

  • If you omit an existing HealthCheckCustomConfig configuration from an UpdateService request, the configuration isn't deleted from the service.

When you update settings for a service, Cloud Map also updates the corresponding settings in all the records and health checks that were created by using the specified service.

Examples:

Example: UpdateService Example


# This example submits a request to replace the DnsConfig and HealthCheckConfig settings of a specified service.

resp = client.update_service({
  id: "srv-e4anhexample0004", 
  service: {
    dns_config: {
      dns_records: [
        {
          ttl: 60, 
          type: "A", 
        }, 
      ], 
    }, 
    health_check_config: {
      failure_threshold: 2, 
      resource_path: "/", 
      type: "HTTP", 
    }, 
  }, 
})

resp.to_h outputs the following:
{
  operation_id: "m35hsdrkxwjffm3xef4bxyy6vc3ewakx-jdn3y5g5", 
}

Request syntax with placeholder values


resp = client.update_service({
  id: "ResourceId", # required
  service: { # required
    description: "ResourceDescription",
    dns_config: {
      dns_records: [ # required
        {
          type: "SRV", # required, accepts SRV, A, AAAA, CNAME
          ttl: 1, # required
        },
      ],
    },
    health_check_config: {
      type: "HTTP", # required, accepts HTTP, HTTPS, TCP
      resource_path: "ResourcePath",
      failure_threshold: 1,
    },
  },
})

Response structure


resp.operation_id #=> String

Parameters:

  • params (Hash) (defaults to: {})

    ({})

Options Hash (params):

  • :id (required, String)

    The ID of the service that you want to update.

  • :service (required, Types::ServiceChange)

    A complex type that contains the new settings for the service.

Returns:

See Also:



2684
2685
2686
2687
# File 'gems/aws-sdk-servicediscovery/lib/aws-sdk-servicediscovery/client.rb', line 2684

def update_service(params = {}, options = {})
  req = build_request(:update_service, params)
  req.send_request(options)
end