/** * 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, AWS 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 AWS 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, AWS Cloud Map creates a health check that uses the * IPv4 address to check the health of the resource. If the endpoint that is * 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 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, so * you'll sometimes see several requests per second 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, AWS 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 AWS 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 AWS * endpoint. For information about pricing for health checks, see Amazon Route 53 * Pricing.

See Also:

AWS * API Reference

*/ class AWS_SERVICEDISCOVERY_API HealthCheckConfig { public: HealthCheckConfig(); HealthCheckConfig(Aws::Utils::Json::JsonView jsonValue); HealthCheckConfig& operator=(Aws::Utils::Json::JsonView jsonValue); 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 for which your endpoint will return an HTTP status code of * 2xx or 3xx when the endpoint is healthy, such as the file * /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 for which your endpoint will return an HTTP status code of * 2xx or 3xx when the endpoint is healthy, such as the file * /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 for which your endpoint will return an HTTP status code of * 2xx or 3xx when the endpoint is healthy, such as the file * /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 for which your endpoint will return an HTTP status code of * 2xx or 3xx when the endpoint is healthy, such as the file * /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 for which your endpoint will return an HTTP status code of * 2xx or 3xx when the endpoint is healthy, such as the file * /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 for which your endpoint will return an HTTP status code of * 2xx or 3xx when the endpoint is healthy, such as the file * /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 for which your endpoint will return an HTTP status code of * 2xx or 3xx when the endpoint is healthy, such as the file * /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 for which your endpoint will return an HTTP status code of * 2xx or 3xx when the endpoint is healthy, such as the file * /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 vice versa. 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 vice versa. 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 vice versa. 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 vice versa. 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; Aws::String m_resourcePath; bool m_resourcePathHasBeenSet; int m_failureThreshold; bool m_failureThresholdHasBeenSet; }; } // namespace Model } // namespace ServiceDiscovery } // namespace Aws