Struct aws_sdk_servicediscovery::Client

source ·
pub struct Client { /* private fields */ }
Expand description

Client for AWS Cloud Map

Client for invoking operations on AWS Cloud Map. Each operation on AWS Cloud Map is a method on this this struct. .send() MUST be invoked on the generated operations to dispatch the request to the service.

§Constructing a Client

A Config is required to construct a client. For most use cases, the aws-config crate should be used to automatically resolve this config using aws_config::load_from_env(), since this will resolve an SdkConfig which can be shared across multiple different AWS SDK clients. This config resolution process can be customized by calling aws_config::from_env() instead, which returns a ConfigLoader that uses the builder pattern to customize the default config.

In the simplest case, creating a client looks as follows:

let config = aws_config::load_from_env().await;
let client = aws_sdk_servicediscovery::Client::new(&config);

Occasionally, SDKs may have additional service-specific values that can be set on the Config that is absent from SdkConfig, or slightly different settings for a specific client may be desired. The Config struct implements From<&SdkConfig>, so setting these specific settings can be done as follows:

let sdk_config = ::aws_config::load_from_env().await;
let config = aws_sdk_servicediscovery::config::Builder::from(&sdk_config)
    .some_service_specific_setting("value")
    .build();

See the aws-config docs and Config for more information on customizing configuration.

Note: Client construction is expensive due to connection thread pool initialization, and should be done once at application start-up.

§Using the Client

A client has a function for every operation that can be performed by the service. For example, the CreateHttpNamespace operation has a Client::create_http_namespace, function which returns a builder for that operation. The fluent builder ultimately has a send() function that returns an async future that returns a result, as illustrated below:

let result = client.create_http_namespace()
    .name("example")
    .send()
    .await;

The underlying HTTP requests that get made by this can be modified with the customize_operation function on the fluent builder. See the customize module for more information.

Implementations§

source§

impl Client

source

pub fn create_http_namespace(&self) -> CreateHttpNamespaceFluentBuilder

Constructs a fluent builder for the CreateHttpNamespace operation.

source§

impl Client

source

pub fn create_private_dns_namespace( &self ) -> CreatePrivateDnsNamespaceFluentBuilder

Constructs a fluent builder for the CreatePrivateDnsNamespace operation.

source§

impl Client

source

pub fn create_public_dns_namespace( &self ) -> CreatePublicDnsNamespaceFluentBuilder

Constructs a fluent builder for the CreatePublicDnsNamespace operation.

source§

impl Client

source

pub fn create_service(&self) -> CreateServiceFluentBuilder

Constructs a fluent builder for the CreateService operation.

  • The fluent builder is configurable:
    • name(impl Into<String>) / set_name(Option<String>):
      required: true

      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(impl Into<String>) / set_namespace_id(Option<String>):
      required: false

      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(impl Into<String>) / set_creator_request_id(Option<String>):
      required: false

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


    • description(impl Into<String>) / set_description(Option<String>):
      required: false

      A description for the service.


    • dns_config(DnsConfig) / set_dns_config(Option<DnsConfig>):
      required: false

      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(HealthCheckConfig) / set_health_check_config(Option<HealthCheckConfig>):
      required: false

      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(HealthCheckCustomConfig) / set_health_check_custom_config(Option<HealthCheckCustomConfig>):
      required: false

      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(Tag) / set_tags(Option<Vec::<Tag>>):
      required: false

      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.


    • r#type(ServiceTypeOption) / set_type(Option<ServiceTypeOption>):
      required: false

      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.


  • On success, responds with CreateServiceOutput with field(s):
  • On failure, responds with SdkError<CreateServiceError>
source§

impl Client

source

pub fn delete_namespace(&self) -> DeleteNamespaceFluentBuilder

Constructs a fluent builder for the DeleteNamespace operation.

source§

impl Client

source

pub fn delete_service(&self) -> DeleteServiceFluentBuilder

Constructs a fluent builder for the DeleteService operation.

source§

impl Client

source

pub fn deregister_instance(&self) -> DeregisterInstanceFluentBuilder

Constructs a fluent builder for the DeregisterInstance operation.

source§

impl Client

source

pub fn discover_instances(&self) -> DiscoverInstancesFluentBuilder

Constructs a fluent builder for the DiscoverInstances operation.

source§

impl Client

source

pub fn discover_instances_revision( &self ) -> DiscoverInstancesRevisionFluentBuilder

Constructs a fluent builder for the DiscoverInstancesRevision operation.

source§

impl Client

source

pub fn get_instance(&self) -> GetInstanceFluentBuilder

Constructs a fluent builder for the GetInstance operation.

source§

impl Client

source

pub fn get_instances_health_status( &self ) -> GetInstancesHealthStatusFluentBuilder

Constructs a fluent builder for the GetInstancesHealthStatus operation. This operation supports pagination; See into_paginator().

source§

impl Client

source

pub fn get_namespace(&self) -> GetNamespaceFluentBuilder

Constructs a fluent builder for the GetNamespace operation.

source§

impl Client

source

pub fn get_operation(&self) -> GetOperationFluentBuilder

Constructs a fluent builder for the GetOperation operation.

source§

impl Client

source

pub fn get_service(&self) -> GetServiceFluentBuilder

Constructs a fluent builder for the GetService operation.

source§

impl Client

source

pub fn list_instances(&self) -> ListInstancesFluentBuilder

Constructs a fluent builder for the ListInstances operation. This operation supports pagination; See into_paginator().

source§

impl Client

source

pub fn list_namespaces(&self) -> ListNamespacesFluentBuilder

Constructs a fluent builder for the ListNamespaces operation. This operation supports pagination; See into_paginator().

  • The fluent builder is configurable:
    • next_token(impl Into<String>) / set_next_token(Option<String>):
      required: false

      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(i32) / set_max_results(Option<i32>):
      required: false

      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(NamespaceFilter) / set_filters(Option<Vec::<NamespaceFilter>>):
      required: false

      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.


  • On success, responds with ListNamespacesOutput with field(s):
    • namespaces(Option<Vec::<NamespaceSummary>>):

      An array that contains one NamespaceSummary object for each namespace that matches the specified filter criteria.

    • next_token(Option<String>):

      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.

  • On failure, responds with SdkError<ListNamespacesError>
source§

impl Client

source

pub fn list_operations(&self) -> ListOperationsFluentBuilder

Constructs a fluent builder for the ListOperations operation. This operation supports pagination; See into_paginator().

  • The fluent builder is configurable:
    • next_token(impl Into<String>) / set_next_token(Option<String>):
      required: false

      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(i32) / set_max_results(Option<i32>):
      required: false

      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(OperationFilter) / set_filters(Option<Vec::<OperationFilter>>):
      required: false

      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.


  • On success, responds with ListOperationsOutput with field(s):
    • operations(Option<Vec::<OperationSummary>>):

      Summary information about the operations that match the specified criteria.

    • next_token(Option<String>):

      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.

  • On failure, responds with SdkError<ListOperationsError>
source§

impl Client

source

pub fn list_services(&self) -> ListServicesFluentBuilder

Constructs a fluent builder for the ListServices operation. This operation supports pagination; See into_paginator().

  • The fluent builder is configurable:
    • next_token(impl Into<String>) / set_next_token(Option<String>):
      required: false

      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(i32) / set_max_results(Option<i32>):
      required: false

      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(ServiceFilter) / set_filters(Option<Vec::<ServiceFilter>>):
      required: false

      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.


  • On success, responds with ListServicesOutput with field(s):
    • services(Option<Vec::<ServiceSummary>>):

      An array that contains one ServiceSummary object for each service that matches the specified filter criteria.

    • next_token(Option<String>):

      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.

  • On failure, responds with SdkError<ListServicesError>
source§

impl Client

source

pub fn list_tags_for_resource(&self) -> ListTagsForResourceFluentBuilder

Constructs a fluent builder for the ListTagsForResource operation.

source§

impl Client

source

pub fn register_instance(&self) -> RegisterInstanceFluentBuilder

Constructs a fluent builder for the RegisterInstance operation.

  • The fluent builder is configurable:
    • service_id(impl Into<String>) / set_service_id(Option<String>):
      required: true

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


    • instance_id(impl Into<String>) / set_instance_id(Option<String>):
      required: true

      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(impl Into<String>) / set_creator_request_id(Option<String>):
      required: false

      A unique string that identifies the request and that allows failed RegisterInstance requests to be retried without the risk of executing the operation twice. You must use a unique CreatorRequestId string every time you submit a RegisterInstance request if you’re registering additional instances for the same namespace and service. CreatorRequestId can be any unique string (for example, a date/time stamp).


    • attributes(impl Into<String>, impl Into<String>) / set_attributes(Option<HashMap::<String, String>>):
      required: true

      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.

      The following are the supported attribute keys.

      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.

      • The AWS_ALIAS_DNS_NAME is not supported in the GovCloud (US) Regions.

      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.


  • On success, responds with RegisterInstanceOutput with field(s):
  • On failure, responds with SdkError<RegisterInstanceError>
source§

impl Client

source

pub fn tag_resource(&self) -> TagResourceFluentBuilder

Constructs a fluent builder for the TagResource operation.

source§

impl Client

source

pub fn untag_resource(&self) -> UntagResourceFluentBuilder

Constructs a fluent builder for the UntagResource operation.

source§

impl Client

source

pub fn update_http_namespace(&self) -> UpdateHttpNamespaceFluentBuilder

Constructs a fluent builder for the UpdateHttpNamespace operation.

source§

impl Client

source

pub fn update_instance_custom_health_status( &self ) -> UpdateInstanceCustomHealthStatusFluentBuilder

Constructs a fluent builder for the UpdateInstanceCustomHealthStatus operation.

source§

impl Client

source

pub fn update_private_dns_namespace( &self ) -> UpdatePrivateDnsNamespaceFluentBuilder

Constructs a fluent builder for the UpdatePrivateDnsNamespace operation.

source§

impl Client

source

pub fn update_public_dns_namespace( &self ) -> UpdatePublicDnsNamespaceFluentBuilder

Constructs a fluent builder for the UpdatePublicDnsNamespace operation.

source§

impl Client

source

pub fn update_service(&self) -> UpdateServiceFluentBuilder

Constructs a fluent builder for the UpdateService operation.

source§

impl Client

source

pub fn from_conf(conf: Config) -> Self

Creates a new client from the service Config.

§Panics

This method will panic in the following cases:

  • Retries or timeouts are enabled without a sleep_impl configured.
  • Identity caching is enabled without a sleep_impl and time_source configured.
  • No behavior_version is provided.

The panic message for each of these will have instructions on how to resolve them.

source

pub fn config(&self) -> &Config

Returns the client’s configuration.

source§

impl Client

source

pub fn new(sdk_config: &SdkConfig) -> Self

Creates a new client from an SDK Config.

§Panics
  • This method will panic if the sdk_config is missing an async sleep implementation. If you experience this panic, set the sleep_impl on the Config passed into this function to fix it.
  • This method will panic if the sdk_config is missing an HTTP connector. If you experience this panic, set the http_connector on the Config passed into this function to fix it.
  • This method will panic if no BehaviorVersion is provided. If you experience this panic, set behavior_version on the Config or enable the behavior-version-latest Cargo feature.

Trait Implementations§

source§

impl Clone for Client

source§

fn clone(&self) -> Client

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Client

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Client

§

impl !RefUnwindSafe for Client

§

impl Send for Client

§

impl Sync for Client

§

impl Unpin for Client

§

impl !UnwindSafe for Client

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more