/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the servicediscovery-2017-03-14.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.ServiceDiscovery.Model
{
///
/// Container for the parameters to the RegisterInstance operation.
/// 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.
///
///
public partial class RegisterInstanceRequest : AmazonServiceDiscoveryRequest
{
private Dictionary _attributes = new Dictionary();
private string _creatorRequestId;
private string _instanceId;
private string _serviceId;
///
/// Gets and sets the property Attributes.
///
/// A string map that contains the following information for the service that you specify
/// in ServiceId:
///
/// -
///
/// The attributes that apply to the records that are defined in the service.
///
///
-
///
/// For each attribute, the applicable value.
///
///
///
/// 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.
///
/// -
///
/// Auto naming currently doesn't support creating alias records that route traffic to
/// Amazon Web Services resources other than Elastic Load Balancing load balancers.
///
///
-
///
/// If you specify a value for
AWS_ALIAS_DNS_NAME, don't specify values for
/// any of the AWS_INSTANCE attributes.
///
///
- AWS_EC2_INSTANCE_ID
-
///
/// HTTP namespaces only. The Amazon EC2 instance ID for the instance. If the
///
AWS_EC2_INSTANCE_ID attribute is specified, then the only other attribute
/// that can be specified is AWS_INIT_HEALTH_STATUS. When the AWS_EC2_INSTANCE_ID
/// attribute is specified, then the AWS_INSTANCE_IPV4 attribute will be
/// filled out with the primary private IPv4 address.
///
/// - AWS_INIT_HEALTH_STATUS
-
///
/// If the service configuration includes
HealthCheckCustomConfig, you can
/// optionally use AWS_INIT_HEALTH_STATUS to specify the initial status of
/// the custom health check, HEALTHY or UNHEALTHY. If you don't
/// specify a value for AWS_INIT_HEALTH_STATUS, the initial status is HEALTHY.
///
/// - AWS_INSTANCE_CNAME
-
///
/// If the service configuration includes a
CNAME record, the domain name
/// that you want Route 53 to return in response to DNS queries (for example, example.com).
///
///
///
/// This value is required if the service specified by ServiceId includes
/// settings for an CNAME record.
///
/// - AWS_INSTANCE_IPV4
-
///
/// If the service configuration includes an
A record, the IPv4 address that
/// you want Route 53 to return in response to DNS queries (for example, 192.0.2.44).
///
///
///
/// This value is required if the service specified by ServiceId includes
/// settings for an A record. If the service includes settings for an SRV
/// record, you must specify a value for AWS_INSTANCE_IPV4, AWS_INSTANCE_IPV6,
/// or both.
///
/// - AWS_INSTANCE_IPV6
-
///
/// If the service configuration includes an
AAAA record, the IPv6 address
/// that you want Route 53 to return in response to DNS queries (for example, 2001:0db8:85a3:0000:0000:abcd:0001:2345).
///
///
///
/// This value is required if the service specified by ServiceId includes
/// settings for an AAAA record. If the service includes settings for an
/// SRV record, you must specify a value for AWS_INSTANCE_IPV4,
/// AWS_INSTANCE_IPV6, or both.
///
/// - AWS_INSTANCE_PORT
-
///
/// If the service includes an
SRV record, the value that you want Route 53
/// to return for the port.
///
///
///
/// If the service includes HealthCheckConfig, the port on the endpoint that
/// you want Route 53 to send requests to.
///
///
///
/// This value is required if you specified settings for an SRV record or
/// a Route 53 health check when you created the service.
///
/// - Custom attributes
-
///
/// You can add up to 30 custom attributes. For each key-value pair, the maximum length
/// of the attribute name is 255 characters, and the maximum length of the attribute value
/// is 1,024 characters. The total size of all provided attributes (sum of all keys and
/// values) must not exceed 5,000 characters.
///
///
///
[AWSProperty(Required=true)]
public Dictionary Attributes
{
get { return this._attributes; }
set { this._attributes = value; }
}
// Check to see if Attributes property is set
internal bool IsSetAttributes()
{
return this._attributes != null && this._attributes.Count > 0;
}
///
/// Gets and sets the property CreatorRequestId.
///
/// A unique string that identifies the request and that allows failed RegisterInstance
/// requests to be retried without the risk of executing the operation twice. You must
/// use a unique CreatorRequestId string every time you submit a RegisterInstance
/// request if you're registering additional instances for the same namespace and service.
/// CreatorRequestId can be any unique string (for example, a date/time stamp).
///
///
[AWSProperty(Max=64)]
public string CreatorRequestId
{
get { return this._creatorRequestId; }
set { this._creatorRequestId = value; }
}
// Check to see if CreatorRequestId property is set
internal bool IsSetCreatorRequestId()
{
return this._creatorRequestId != null;
}
///
/// Gets and sets the property InstanceId.
///
/// An identifier that you want to associate with the instance. Note the following:
///
/// -
///
/// If the service that's specified by
ServiceId includes settings for an
/// SRV record, the value of InstanceId is automatically included
/// as part of the value for the SRV record. For more information, see 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.
///
///
///
[AWSProperty(Required=true, Max=64)]
public string InstanceId
{
get { return this._instanceId; }
set { this._instanceId = value; }
}
// Check to see if InstanceId property is set
internal bool IsSetInstanceId()
{
return this._instanceId != null;
}
///
/// Gets and sets the property ServiceId.
///
/// The ID of the service that you want to use for settings for the instance.
///
///
[AWSProperty(Required=true, Max=64)]
public string ServiceId
{
get { return this._serviceId; }
set { this._serviceId = value; }
}
// Check to see if ServiceId property is set
internal bool IsSetServiceId()
{
return this._serviceId != null;
}
}
}