DiscoverInstances - AWS Cloud Map

DiscoverInstances

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.

Request Syntax

{ "HealthStatus": "string", "MaxResults": number, "NamespaceName": "string", "OptionalParameters": { "string" : "string" }, "QueryParameters": { "string" : "string" }, "ServiceName": "string" }

Request Parameters

For information about the parameters that are common to all actions, see Common Parameters.

The request accepts the following data in JSON format.

HealthStatus

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.

Type: String

Valid Values: HEALTHY | UNHEALTHY | ALL | HEALTHY_OR_ELSE_ALL

Required: No

MaxResults

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

Type: Integer

Valid Range: Minimum value of 1. Maximum value of 1000.

Required: No

NamespaceName

The HttpName name of the namespace. It's found in the HttpProperties member of the Properties member of the namespace. In most cases, Name and HttpName match. However, if you reuse Name for namespace creation, a generated hash is added to HttpName to distinguish the two.

Type: String

Length Constraints: Maximum length of 1024.

Required: Yes

OptionalParameters

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.

Type: String to string map

Key Length Constraints: Maximum length of 255.

Key Pattern: ^[a-zA-Z0-9!-~]+$

Value Length Constraints: Maximum length of 1024.

Value Pattern: ^([a-zA-Z0-9!-~][ \ta-zA-Z0-9!-~]*){0,1}[a-zA-Z0-9!-~]{0,1}$

Required: No

QueryParameters

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.

Type: String to string map

Key Length Constraints: Maximum length of 255.

Key Pattern: ^[a-zA-Z0-9!-~]+$

Value Length Constraints: Maximum length of 1024.

Value Pattern: ^([a-zA-Z0-9!-~][ \ta-zA-Z0-9!-~]*){0,1}[a-zA-Z0-9!-~]{0,1}$

Required: No

ServiceName

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

Type: String

Pattern: ((?=^.{1,127}$)^([a-zA-Z0-9_][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9_]|[a-zA-Z0-9])(\.([a-zA-Z0-9_][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9_]|[a-zA-Z0-9]))*$)|(^\.$)

Required: Yes

Response Syntax

{ "Instances": [ { "Attributes": { "string" : "string" }, "HealthStatus": "string", "InstanceId": "string", "NamespaceName": "string", "ServiceName": "string" } ], "InstancesRevision": number }

Response Elements

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

Instances

A complex type that contains one HttpInstanceSummary for each registered instance.

Type: Array of HttpInstanceSummary objects

InstancesRevision

The increasing revision associated to the response Instances list. If a new instance is registered or deregistered, the InstancesRevision updates. The health status updates don't update InstancesRevision.

Type: Long

Errors

For information about the errors that are common to all actions, see Common Errors.

InvalidInput

One or more specified values aren't valid. For example, a required value might be missing, a numeric value might be outside the allowed range, or a string value might exceed length constraints.

HTTP Status Code: 400

NamespaceNotFound

No namespace exists with the specified ID.

HTTP Status Code: 400

RequestLimitExceeded

The operation can't be completed because you've reached the quota for the number of requests. For more information, see AWS Cloud Map API request throttling quota in the AWS Cloud Map Developer Guide.

HTTP Status Code: 400

ServiceNotFound

No service exists with the specified ID.

HTTP Status Code: 400

Examples

DiscoverInstances Example

This example illustrates one usage of DiscoverInstances.

Sample Request

POST / HTTP/1.1 host:data-servicediscovery.us-west-2.amazonaws.com x-amz-date:20181118T211819Z authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20181118/us-west-2/servicediscovery/aws4_request, SignedHeaders=content-length;content-type;host;user-agent;x-amz-date;x-amz-target, Signature=[calculated-signature] x-amz-target:Route53AutoNaming_v20170314.DiscoverInstances content-type:application/x-amz-json-1.1 content-length:[number of characters in the JSON string] { "NamespaceName": "example-public-dns.com", "ServiceName": "example-dns-pub-service" }

Sample Response

HTTP/1.1 200 Content-Length: [number of characters in the JSON string] Content-Type: application/x-amz-json-1.1 { "Instances": [ { "Attributes": { "AWS_INSTANCE_IPV4": "192.0.2.44", "AWS_INSTANCE_PORT": "80", "color": "green", "region": "us-west-2", "stage": "beta" }, "HealthStatus": "HEALTHY", "InstanceId": "i-abcd1234", "NamespaceName": "example-public-dns.com", "ServiceName": "example-dns-pub-service" } ], "InstancesRevision": 2 }

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: