/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace ServiceDiscovery { namespace Model { /** *

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

See * Also:

AWS * API Reference

*/ class DnsRecord { public: AWS_SERVICEDISCOVERY_API DnsRecord(); AWS_SERVICEDISCOVERY_API DnsRecord(Aws::Utils::Json::JsonView jsonValue); AWS_SERVICEDISCOVERY_API DnsRecord& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_SERVICEDISCOVERY_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The type of the resource, which indicates the type of value that Route 53 * returns in response to DNS queries. You can specify values for Type * in the following combinations:

  • A

    *
  • AAAA

  • A * and AAAA

  • SRV *

  • CNAME

If you * want Cloud Map to create a Route 53 alias record when you register an instance, * specify A or AAAA for Type.

You * specify other settings, such as the IP address for A and * AAAA records, when you register an instance. For more information, * see RegisterInstance.

*

The following values are supported:

A

Route 53 * returns the IP address of the resource in IPv4 format, such as 192.0.2.44.

*
AAAA

Route 53 returns the IP address of the resource in * IPv6 format, such as 2001:0db8:85a3:0000:0000:abcd:0001:2345.

*
CNAME

Route 53 returns the domain name of the resource, such as * www.example.com. Note the following:

  • You specify the domain * name that you want to route traffic to when you register an instance. For more * information, see Attributes * in the topic RegisterInstance.

    *
  • You must specify WEIGHTED for the value of * RoutingPolicy.

  • You can't specify both * CNAME for Type and settings for * HealthCheckConfig. If you do, the request will fail with an * InvalidInput error.

SRV
*

Route 53 returns the value for an SRV record. The value for an * SRV record uses the following values:

priority weight * port service-hostname

Note the following about the values:

*
  • The values of priority and weight are * both set to 1 and can't be changed.

  • The value of * port comes from the value that you specify for the * AWS_INSTANCE_PORT attribute when you submit a RegisterInstance * request.

  • The value of service-hostname is a * concatenation of the following values:

    • The value that you * specify for InstanceId when you register an instance.

    • *
    • The name of the service.

    • The name of the namespace. *

    For example, if the value of InstanceId is * test, the name of the service is backend, and the name * of the namespace is example.com, the value of * service-hostname is the following:

    * test.backend.example.com

If you specify * settings for an SRV record, note the following:

  • If * you specify values for AWS_INSTANCE_IPV4, * AWS_INSTANCE_IPV6, or both in the RegisterInstance * request, Cloud Map automatically creates A and/or AAAA * records that have the same name as the value of service-hostname in * the SRV record. You can ignore these records.

  • If * you're using a system that requires a specific SRV format, such as * HAProxy, see the Name * element in the documentation about CreateService for information * about how to specify the correct name format.

*/ inline const RecordType& GetType() const{ return m_type; } /** *

The type of the resource, which indicates the type of value that Route 53 * returns in response to DNS queries. You can specify values for Type * in the following combinations:

  • A

    *
  • AAAA

  • A * and AAAA

  • SRV *

  • CNAME

If you * want Cloud Map to create a Route 53 alias record when you register an instance, * specify A or AAAA for Type.

You * specify other settings, such as the IP address for A and * AAAA records, when you register an instance. For more information, * see RegisterInstance.

*

The following values are supported:

A

Route 53 * returns the IP address of the resource in IPv4 format, such as 192.0.2.44.

*
AAAA

Route 53 returns the IP address of the resource in * IPv6 format, such as 2001:0db8:85a3:0000:0000:abcd:0001:2345.

*
CNAME

Route 53 returns the domain name of the resource, such as * www.example.com. Note the following:

  • You specify the domain * name that you want to route traffic to when you register an instance. For more * information, see Attributes * in the topic RegisterInstance.

    *
  • You must specify WEIGHTED for the value of * RoutingPolicy.

  • You can't specify both * CNAME for Type and settings for * HealthCheckConfig. If you do, the request will fail with an * InvalidInput error.

SRV
*

Route 53 returns the value for an SRV record. The value for an * SRV record uses the following values:

priority weight * port service-hostname

Note the following about the values:

*
  • The values of priority and weight are * both set to 1 and can't be changed.

  • The value of * port comes from the value that you specify for the * AWS_INSTANCE_PORT attribute when you submit a RegisterInstance * request.

  • The value of service-hostname is a * concatenation of the following values:

    • The value that you * specify for InstanceId when you register an instance.

    • *
    • The name of the service.

    • The name of the namespace. *

    For example, if the value of InstanceId is * test, the name of the service is backend, and the name * of the namespace is example.com, the value of * service-hostname is the following:

    * test.backend.example.com

If you specify * settings for an SRV record, note the following:

  • If * you specify values for AWS_INSTANCE_IPV4, * AWS_INSTANCE_IPV6, or both in the RegisterInstance * request, Cloud Map automatically creates A and/or AAAA * records that have the same name as the value of service-hostname in * the SRV record. You can ignore these records.

  • If * you're using a system that requires a specific SRV format, such as * HAProxy, see the Name * element in the documentation about CreateService for information * about how to specify the correct name format.

*/ inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; } /** *

The type of the resource, which indicates the type of value that Route 53 * returns in response to DNS queries. You can specify values for Type * in the following combinations:

  • A

    *
  • AAAA

  • A * and AAAA

  • SRV *

  • CNAME

If you * want Cloud Map to create a Route 53 alias record when you register an instance, * specify A or AAAA for Type.

You * specify other settings, such as the IP address for A and * AAAA records, when you register an instance. For more information, * see RegisterInstance.

*

The following values are supported:

A

Route 53 * returns the IP address of the resource in IPv4 format, such as 192.0.2.44.

*
AAAA

Route 53 returns the IP address of the resource in * IPv6 format, such as 2001:0db8:85a3:0000:0000:abcd:0001:2345.

*
CNAME

Route 53 returns the domain name of the resource, such as * www.example.com. Note the following:

  • You specify the domain * name that you want to route traffic to when you register an instance. For more * information, see Attributes * in the topic RegisterInstance.

    *
  • You must specify WEIGHTED for the value of * RoutingPolicy.

  • You can't specify both * CNAME for Type and settings for * HealthCheckConfig. If you do, the request will fail with an * InvalidInput error.

SRV
*

Route 53 returns the value for an SRV record. The value for an * SRV record uses the following values:

priority weight * port service-hostname

Note the following about the values:

*
  • The values of priority and weight are * both set to 1 and can't be changed.

  • The value of * port comes from the value that you specify for the * AWS_INSTANCE_PORT attribute when you submit a RegisterInstance * request.

  • The value of service-hostname is a * concatenation of the following values:

    • The value that you * specify for InstanceId when you register an instance.

    • *
    • The name of the service.

    • The name of the namespace. *

    For example, if the value of InstanceId is * test, the name of the service is backend, and the name * of the namespace is example.com, the value of * service-hostname is the following:

    * test.backend.example.com

If you specify * settings for an SRV record, note the following:

  • If * you specify values for AWS_INSTANCE_IPV4, * AWS_INSTANCE_IPV6, or both in the RegisterInstance * request, Cloud Map automatically creates A and/or AAAA * records that have the same name as the value of service-hostname in * the SRV record. You can ignore these records.

  • If * you're using a system that requires a specific SRV format, such as * HAProxy, see the Name * element in the documentation about CreateService for information * about how to specify the correct name format.

*/ inline void SetType(const RecordType& value) { m_typeHasBeenSet = true; m_type = value; } /** *

The type of the resource, which indicates the type of value that Route 53 * returns in response to DNS queries. You can specify values for Type * in the following combinations:

  • A

    *
  • AAAA

  • A * and AAAA

  • SRV *

  • CNAME

If you * want Cloud Map to create a Route 53 alias record when you register an instance, * specify A or AAAA for Type.

You * specify other settings, such as the IP address for A and * AAAA records, when you register an instance. For more information, * see RegisterInstance.

*

The following values are supported:

A

Route 53 * returns the IP address of the resource in IPv4 format, such as 192.0.2.44.

*
AAAA

Route 53 returns the IP address of the resource in * IPv6 format, such as 2001:0db8:85a3:0000:0000:abcd:0001:2345.

*
CNAME

Route 53 returns the domain name of the resource, such as * www.example.com. Note the following:

  • You specify the domain * name that you want to route traffic to when you register an instance. For more * information, see Attributes * in the topic RegisterInstance.

    *
  • You must specify WEIGHTED for the value of * RoutingPolicy.

  • You can't specify both * CNAME for Type and settings for * HealthCheckConfig. If you do, the request will fail with an * InvalidInput error.

SRV
*

Route 53 returns the value for an SRV record. The value for an * SRV record uses the following values:

priority weight * port service-hostname

Note the following about the values:

*
  • The values of priority and weight are * both set to 1 and can't be changed.

  • The value of * port comes from the value that you specify for the * AWS_INSTANCE_PORT attribute when you submit a RegisterInstance * request.

  • The value of service-hostname is a * concatenation of the following values:

    • The value that you * specify for InstanceId when you register an instance.

    • *
    • The name of the service.

    • The name of the namespace. *

    For example, if the value of InstanceId is * test, the name of the service is backend, and the name * of the namespace is example.com, the value of * service-hostname is the following:

    * test.backend.example.com

If you specify * settings for an SRV record, note the following:

  • If * you specify values for AWS_INSTANCE_IPV4, * AWS_INSTANCE_IPV6, or both in the RegisterInstance * request, Cloud Map automatically creates A and/or AAAA * records that have the same name as the value of service-hostname in * the SRV record. You can ignore these records.

  • If * you're using a system that requires a specific SRV format, such as * HAProxy, see the Name * element in the documentation about CreateService for information * about how to specify the correct name format.

*/ inline void SetType(RecordType&& value) { m_typeHasBeenSet = true; m_type = std::move(value); } /** *

The type of the resource, which indicates the type of value that Route 53 * returns in response to DNS queries. You can specify values for Type * in the following combinations:

  • A

    *
  • AAAA

  • A * and AAAA

  • SRV *

  • CNAME

If you * want Cloud Map to create a Route 53 alias record when you register an instance, * specify A or AAAA for Type.

You * specify other settings, such as the IP address for A and * AAAA records, when you register an instance. For more information, * see RegisterInstance.

*

The following values are supported:

A

Route 53 * returns the IP address of the resource in IPv4 format, such as 192.0.2.44.

*
AAAA

Route 53 returns the IP address of the resource in * IPv6 format, such as 2001:0db8:85a3:0000:0000:abcd:0001:2345.

*
CNAME

Route 53 returns the domain name of the resource, such as * www.example.com. Note the following:

  • You specify the domain * name that you want to route traffic to when you register an instance. For more * information, see Attributes * in the topic RegisterInstance.

    *
  • You must specify WEIGHTED for the value of * RoutingPolicy.

  • You can't specify both * CNAME for Type and settings for * HealthCheckConfig. If you do, the request will fail with an * InvalidInput error.

SRV
*

Route 53 returns the value for an SRV record. The value for an * SRV record uses the following values:

priority weight * port service-hostname

Note the following about the values:

*
  • The values of priority and weight are * both set to 1 and can't be changed.

  • The value of * port comes from the value that you specify for the * AWS_INSTANCE_PORT attribute when you submit a RegisterInstance * request.

  • The value of service-hostname is a * concatenation of the following values:

    • The value that you * specify for InstanceId when you register an instance.

    • *
    • The name of the service.

    • The name of the namespace. *

    For example, if the value of InstanceId is * test, the name of the service is backend, and the name * of the namespace is example.com, the value of * service-hostname is the following:

    * test.backend.example.com

If you specify * settings for an SRV record, note the following:

  • If * you specify values for AWS_INSTANCE_IPV4, * AWS_INSTANCE_IPV6, or both in the RegisterInstance * request, Cloud Map automatically creates A and/or AAAA * records that have the same name as the value of service-hostname in * the SRV record. You can ignore these records.

  • If * you're using a system that requires a specific SRV format, such as * HAProxy, see the Name * element in the documentation about CreateService for information * about how to specify the correct name format.

*/ inline DnsRecord& WithType(const RecordType& value) { SetType(value); return *this;} /** *

The type of the resource, which indicates the type of value that Route 53 * returns in response to DNS queries. You can specify values for Type * in the following combinations:

  • A

    *
  • AAAA

  • A * and AAAA

  • SRV *

  • CNAME

If you * want Cloud Map to create a Route 53 alias record when you register an instance, * specify A or AAAA for Type.

You * specify other settings, such as the IP address for A and * AAAA records, when you register an instance. For more information, * see RegisterInstance.

*

The following values are supported:

A

Route 53 * returns the IP address of the resource in IPv4 format, such as 192.0.2.44.

*
AAAA

Route 53 returns the IP address of the resource in * IPv6 format, such as 2001:0db8:85a3:0000:0000:abcd:0001:2345.

*
CNAME

Route 53 returns the domain name of the resource, such as * www.example.com. Note the following:

  • You specify the domain * name that you want to route traffic to when you register an instance. For more * information, see Attributes * in the topic RegisterInstance.

    *
  • You must specify WEIGHTED for the value of * RoutingPolicy.

  • You can't specify both * CNAME for Type and settings for * HealthCheckConfig. If you do, the request will fail with an * InvalidInput error.

SRV
*

Route 53 returns the value for an SRV record. The value for an * SRV record uses the following values:

priority weight * port service-hostname

Note the following about the values:

*
  • The values of priority and weight are * both set to 1 and can't be changed.

  • The value of * port comes from the value that you specify for the * AWS_INSTANCE_PORT attribute when you submit a RegisterInstance * request.

  • The value of service-hostname is a * concatenation of the following values:

    • The value that you * specify for InstanceId when you register an instance.

    • *
    • The name of the service.

    • The name of the namespace. *

    For example, if the value of InstanceId is * test, the name of the service is backend, and the name * of the namespace is example.com, the value of * service-hostname is the following:

    * test.backend.example.com

If you specify * settings for an SRV record, note the following:

  • If * you specify values for AWS_INSTANCE_IPV4, * AWS_INSTANCE_IPV6, or both in the RegisterInstance * request, Cloud Map automatically creates A and/or AAAA * records that have the same name as the value of service-hostname in * the SRV record. You can ignore these records.

  • If * you're using a system that requires a specific SRV format, such as * HAProxy, see the Name * element in the documentation about CreateService for information * about how to specify the correct name format.

*/ inline DnsRecord& WithType(RecordType&& value) { SetType(std::move(value)); return *this;} /** *

The amount of time, in seconds, that you want DNS resolvers to cache the * settings for this record.

Alias records don't include a TTL * because Route 53 uses the TTL for the Amazon Web Services resource that an alias * record routes traffic to. If you include the AWS_ALIAS_DNS_NAME * attribute when you submit a RegisterInstance * request, the TTL value is ignored. Always specify a TTL for the * service; you can use a service to register instances that create either alias or * non-alias records.

*/ inline long long GetTTL() const{ return m_tTL; } /** *

The amount of time, in seconds, that you want DNS resolvers to cache the * settings for this record.

Alias records don't include a TTL * because Route 53 uses the TTL for the Amazon Web Services resource that an alias * record routes traffic to. If you include the AWS_ALIAS_DNS_NAME * attribute when you submit a RegisterInstance * request, the TTL value is ignored. Always specify a TTL for the * service; you can use a service to register instances that create either alias or * non-alias records.

*/ inline bool TTLHasBeenSet() const { return m_tTLHasBeenSet; } /** *

The amount of time, in seconds, that you want DNS resolvers to cache the * settings for this record.

Alias records don't include a TTL * because Route 53 uses the TTL for the Amazon Web Services resource that an alias * record routes traffic to. If you include the AWS_ALIAS_DNS_NAME * attribute when you submit a RegisterInstance * request, the TTL value is ignored. Always specify a TTL for the * service; you can use a service to register instances that create either alias or * non-alias records.

*/ inline void SetTTL(long long value) { m_tTLHasBeenSet = true; m_tTL = value; } /** *

The amount of time, in seconds, that you want DNS resolvers to cache the * settings for this record.

Alias records don't include a TTL * because Route 53 uses the TTL for the Amazon Web Services resource that an alias * record routes traffic to. If you include the AWS_ALIAS_DNS_NAME * attribute when you submit a RegisterInstance * request, the TTL value is ignored. Always specify a TTL for the * service; you can use a service to register instances that create either alias or * non-alias records.

*/ inline DnsRecord& WithTTL(long long value) { SetTTL(value); return *this;} private: RecordType m_type; bool m_typeHasBeenSet = false; long long m_tTL; bool m_tTLHasBeenSet = false; }; } // namespace Model } // namespace ServiceDiscovery } // namespace Aws