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

Public DNS and HTTP namespaces only. A complex type that contains * settings for an optional health check. If you specify settings for a health * check, Cloud Map associates the health check with the records that you specify * in DnsConfig.

If you specify a health check * configuration, you can specify either HealthCheckCustomConfig or * HealthCheckConfig but not both.

Health checks * are basic Route 53 health checks that monitor an Amazon Web Services endpoint. * For information about pricing for health checks, see Amazon Route 53 Pricing.

*

Note the following about configuring health checks.

A and AAAA * records

If DnsConfig includes configurations for both * A and AAAA records, Cloud Map creates a health check * that uses the IPv4 address to check the health of the resource. If the endpoint * tthat's specified by the IPv4 address is unhealthy, Route 53 considers both the * A and AAAA records to be unhealthy.

*
CNAME records

You can't specify settings for * HealthCheckConfig when the DNSConfig includes * CNAME for the value of Type. If you do, the * CreateService request will fail with an InvalidInput * error.

Request interval

A Route 53 health checker in * each health-checking Amazon Web Services Region sends a health check request to * an endpoint every 30 seconds. On average, your endpoint receives a health check * request about every two seconds. However, health checkers don't coordinate with * one another. Therefore, you might sometimes see several requests in one second * that's followed by a few seconds with no health checks at all.

*
Health checking regions

Health checkers perform checks from all * Route 53 health-checking Regions. For a list of the current Regions, see Regions.

*
Alias records

When you register an instance, if you * include the AWS_ALIAS_DNS_NAME attribute, Cloud Map creates a * Route 53 alias record. Note the following:

  • Route 53 * automatically sets EvaluateTargetHealth to true for alias records. * When EvaluateTargetHealth is true, the alias record inherits the * health of the referenced Amazon Web Services resource. such as an ELB load * balancer. For more information, see EvaluateTargetHealth.

    *
  • If you include HealthCheckConfig and then use the * service to register an instance that creates an alias record, Route 53 doesn't * create the health check.

Charges for health * checks

Health checks are basic Route 53 health checks that monitor * an Amazon Web Services endpoint. For information about pricing for health * checks, see Amazon Route 53 * Pricing.

See Also:

AWS * API Reference

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

The type of health check that you want to create, which indicates how * Route 53 determines whether an endpoint is healthy.

You can't * change the value of Type after you create a health check.

*

You can create the following types of health checks:

    *
  • HTTP: Route 53 tries to establish a TCP connection. If * successful, Route 53 submits an HTTP request and waits for an HTTP status code * of 200 or greater and less than 400.

  • HTTPS: Route 53 * tries to establish a TCP connection. If successful, Route 53 submits an HTTPS * request and waits for an HTTP status code of 200 or greater and less than * 400.

    If you specify HTTPS for the value of Type, * the endpoint must support TLS v1.0 or later.

  • * TCP: Route 53 tries to establish a TCP connection.

    If you specify * TCP for Type, don't specify a value for * ResourcePath.

For more information, see How * Route 53 Determines Whether an Endpoint Is Healthy in the Route 53 * Developer Guide.

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

The type of health check that you want to create, which indicates how * Route 53 determines whether an endpoint is healthy.

You can't * change the value of Type after you create a health check.

*

You can create the following types of health checks:

    *
  • HTTP: Route 53 tries to establish a TCP connection. If * successful, Route 53 submits an HTTP request and waits for an HTTP status code * of 200 or greater and less than 400.

  • HTTPS: Route 53 * tries to establish a TCP connection. If successful, Route 53 submits an HTTPS * request and waits for an HTTP status code of 200 or greater and less than * 400.

    If you specify HTTPS for the value of Type, * the endpoint must support TLS v1.0 or later.

  • * TCP: Route 53 tries to establish a TCP connection.

    If you specify * TCP for Type, don't specify a value for * ResourcePath.

For more information, see How * Route 53 Determines Whether an Endpoint Is Healthy in the Route 53 * Developer Guide.

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

The type of health check that you want to create, which indicates how * Route 53 determines whether an endpoint is healthy.

You can't * change the value of Type after you create a health check.

*

You can create the following types of health checks:

    *
  • HTTP: Route 53 tries to establish a TCP connection. If * successful, Route 53 submits an HTTP request and waits for an HTTP status code * of 200 or greater and less than 400.

  • HTTPS: Route 53 * tries to establish a TCP connection. If successful, Route 53 submits an HTTPS * request and waits for an HTTP status code of 200 or greater and less than * 400.

    If you specify HTTPS for the value of Type, * the endpoint must support TLS v1.0 or later.

  • * TCP: Route 53 tries to establish a TCP connection.

    If you specify * TCP for Type, don't specify a value for * ResourcePath.

For more information, see How * Route 53 Determines Whether an Endpoint Is Healthy in the Route 53 * Developer Guide.

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

The type of health check that you want to create, which indicates how * Route 53 determines whether an endpoint is healthy.

You can't * change the value of Type after you create a health check.

*

You can create the following types of health checks:

    *
  • HTTP: Route 53 tries to establish a TCP connection. If * successful, Route 53 submits an HTTP request and waits for an HTTP status code * of 200 or greater and less than 400.

  • HTTPS: Route 53 * tries to establish a TCP connection. If successful, Route 53 submits an HTTPS * request and waits for an HTTP status code of 200 or greater and less than * 400.

    If you specify HTTPS for the value of Type, * the endpoint must support TLS v1.0 or later.

  • * TCP: Route 53 tries to establish a TCP connection.

    If you specify * TCP for Type, don't specify a value for * ResourcePath.

For more information, see How * Route 53 Determines Whether an Endpoint Is Healthy in the Route 53 * Developer Guide.

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

The type of health check that you want to create, which indicates how * Route 53 determines whether an endpoint is healthy.

You can't * change the value of Type after you create a health check.

*

You can create the following types of health checks:

    *
  • HTTP: Route 53 tries to establish a TCP connection. If * successful, Route 53 submits an HTTP request and waits for an HTTP status code * of 200 or greater and less than 400.

  • HTTPS: Route 53 * tries to establish a TCP connection. If successful, Route 53 submits an HTTPS * request and waits for an HTTP status code of 200 or greater and less than * 400.

    If you specify HTTPS for the value of Type, * the endpoint must support TLS v1.0 or later.

  • * TCP: Route 53 tries to establish a TCP connection.

    If you specify * TCP for Type, don't specify a value for * ResourcePath.

For more information, see How * Route 53 Determines Whether an Endpoint Is Healthy in the Route 53 * Developer Guide.

*/ inline HealthCheckConfig& WithType(const HealthCheckType& value) { SetType(value); return *this;} /** *

The type of health check that you want to create, which indicates how * Route 53 determines whether an endpoint is healthy.

You can't * change the value of Type after you create a health check.

*

You can create the following types of health checks:

    *
  • HTTP: Route 53 tries to establish a TCP connection. If * successful, Route 53 submits an HTTP request and waits for an HTTP status code * of 200 or greater and less than 400.

  • HTTPS: Route 53 * tries to establish a TCP connection. If successful, Route 53 submits an HTTPS * request and waits for an HTTP status code of 200 or greater and less than * 400.

    If you specify HTTPS for the value of Type, * the endpoint must support TLS v1.0 or later.

  • * TCP: Route 53 tries to establish a TCP connection.

    If you specify * TCP for Type, don't specify a value for * ResourcePath.

For more information, see How * Route 53 Determines Whether an Endpoint Is Healthy in the Route 53 * Developer Guide.

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

The path that you want Route 53 to request when performing health checks. The * path can be any value that your endpoint returns an HTTP status code of a 2xx or * 3xx format for when the endpoint is healthy. An example file is * /docs/route53-health-check.html. Route 53 automatically adds the * DNS name for the service. If you don't specify a value for * ResourcePath, the default value is /.

If you * specify TCP for Type, you must not specify a * value for ResourcePath.

*/ inline const Aws::String& GetResourcePath() const{ return m_resourcePath; } /** *

The path that you want Route 53 to request when performing health checks. The * path can be any value that your endpoint returns an HTTP status code of a 2xx or * 3xx format for when the endpoint is healthy. An example file is * /docs/route53-health-check.html. Route 53 automatically adds the * DNS name for the service. If you don't specify a value for * ResourcePath, the default value is /.

If you * specify TCP for Type, you must not specify a * value for ResourcePath.

*/ inline bool ResourcePathHasBeenSet() const { return m_resourcePathHasBeenSet; } /** *

The path that you want Route 53 to request when performing health checks. The * path can be any value that your endpoint returns an HTTP status code of a 2xx or * 3xx format for when the endpoint is healthy. An example file is * /docs/route53-health-check.html. Route 53 automatically adds the * DNS name for the service. If you don't specify a value for * ResourcePath, the default value is /.

If you * specify TCP for Type, you must not specify a * value for ResourcePath.

*/ inline void SetResourcePath(const Aws::String& value) { m_resourcePathHasBeenSet = true; m_resourcePath = value; } /** *

The path that you want Route 53 to request when performing health checks. The * path can be any value that your endpoint returns an HTTP status code of a 2xx or * 3xx format for when the endpoint is healthy. An example file is * /docs/route53-health-check.html. Route 53 automatically adds the * DNS name for the service. If you don't specify a value for * ResourcePath, the default value is /.

If you * specify TCP for Type, you must not specify a * value for ResourcePath.

*/ inline void SetResourcePath(Aws::String&& value) { m_resourcePathHasBeenSet = true; m_resourcePath = std::move(value); } /** *

The path that you want Route 53 to request when performing health checks. The * path can be any value that your endpoint returns an HTTP status code of a 2xx or * 3xx format for when the endpoint is healthy. An example file is * /docs/route53-health-check.html. Route 53 automatically adds the * DNS name for the service. If you don't specify a value for * ResourcePath, the default value is /.

If you * specify TCP for Type, you must not specify a * value for ResourcePath.

*/ inline void SetResourcePath(const char* value) { m_resourcePathHasBeenSet = true; m_resourcePath.assign(value); } /** *

The path that you want Route 53 to request when performing health checks. The * path can be any value that your endpoint returns an HTTP status code of a 2xx or * 3xx format for when the endpoint is healthy. An example file is * /docs/route53-health-check.html. Route 53 automatically adds the * DNS name for the service. If you don't specify a value for * ResourcePath, the default value is /.

If you * specify TCP for Type, you must not specify a * value for ResourcePath.

*/ inline HealthCheckConfig& WithResourcePath(const Aws::String& value) { SetResourcePath(value); return *this;} /** *

The path that you want Route 53 to request when performing health checks. The * path can be any value that your endpoint returns an HTTP status code of a 2xx or * 3xx format for when the endpoint is healthy. An example file is * /docs/route53-health-check.html. Route 53 automatically adds the * DNS name for the service. If you don't specify a value for * ResourcePath, the default value is /.

If you * specify TCP for Type, you must not specify a * value for ResourcePath.

*/ inline HealthCheckConfig& WithResourcePath(Aws::String&& value) { SetResourcePath(std::move(value)); return *this;} /** *

The path that you want Route 53 to request when performing health checks. The * path can be any value that your endpoint returns an HTTP status code of a 2xx or * 3xx format for when the endpoint is healthy. An example file is * /docs/route53-health-check.html. Route 53 automatically adds the * DNS name for the service. If you don't specify a value for * ResourcePath, the default value is /.

If you * specify TCP for Type, you must not specify a * value for ResourcePath.

*/ inline HealthCheckConfig& WithResourcePath(const char* value) { SetResourcePath(value); return *this;} /** *

The number of consecutive health checks that an endpoint must pass or fail * for Route 53 to change the current status of the endpoint from unhealthy to * healthy or the other way around. For more information, see How * Route 53 Determines Whether an Endpoint Is Healthy in the Route 53 * Developer Guide.

*/ inline int GetFailureThreshold() const{ return m_failureThreshold; } /** *

The number of consecutive health checks that an endpoint must pass or fail * for Route 53 to change the current status of the endpoint from unhealthy to * healthy or the other way around. For more information, see How * Route 53 Determines Whether an Endpoint Is Healthy in the Route 53 * Developer Guide.

*/ inline bool FailureThresholdHasBeenSet() const { return m_failureThresholdHasBeenSet; } /** *

The number of consecutive health checks that an endpoint must pass or fail * for Route 53 to change the current status of the endpoint from unhealthy to * healthy or the other way around. For more information, see How * Route 53 Determines Whether an Endpoint Is Healthy in the Route 53 * Developer Guide.

*/ inline void SetFailureThreshold(int value) { m_failureThresholdHasBeenSet = true; m_failureThreshold = value; } /** *

The number of consecutive health checks that an endpoint must pass or fail * for Route 53 to change the current status of the endpoint from unhealthy to * healthy or the other way around. For more information, see How * Route 53 Determines Whether an Endpoint Is Healthy in the Route 53 * Developer Guide.

*/ inline HealthCheckConfig& WithFailureThreshold(int value) { SetFailureThreshold(value); return *this;} private: HealthCheckType m_type; bool m_typeHasBeenSet = false; Aws::String m_resourcePath; bool m_resourcePathHasBeenSet = false; int m_failureThreshold; bool m_failureThresholdHasBeenSet = false; }; } // namespace Model } // namespace ServiceDiscovery } // namespace Aws