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 forMaxResults
, 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 theHttpProperties
member of theProperties
member of the namespace. In most cases,Name
andHttpName
match. However, if you reuseName
for namespace creation, a generated hash is added toHttpName
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 theQueryParameters
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 updateInstancesRevision
.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: