/* * Copyright 2018-2023 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. */ package com.amazonaws.services.servicediscovery.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.protocol.StructuredPojo; import com.amazonaws.protocol.ProtocolMarshaller; /** *
* 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. *
*
* 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.
*
* 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.
*
* 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 checkers perform checks from all Route 53 health-checking Regions. For a list of the current Regions, see Regions. *
*
* 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.
*
* 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. *
** 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. *
*/ private String type; /** *
* 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
.
*
* 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. *
*/ private Integer failureThreshold; /** ** 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. *
* * @param 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. * @see HealthCheckType */ public void setType(String type) { this.type = 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. *
* * @return 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. * @see HealthCheckType */ public String getType() { return this.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. *
* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. * @see HealthCheckType */ public HealthCheckConfig withType(String type) { setType(type); 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. *
* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. * @see HealthCheckType */ public HealthCheckConfig withType(HealthCheckType type) { this.type = type.toString(); 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
.
*
/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
.
*/
public void setResourcePath(String resourcePath) {
this.resourcePath = 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
.
*
/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
.
*/
public String getResourcePath() {
return this.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
.
*
/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
.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public HealthCheckConfig withResourcePath(String resourcePath) {
setResourcePath(resourcePath);
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. *
* * @param 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. */ public void setFailureThreshold(Integer failureThreshold) { this.failureThreshold = 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. *
* * @return 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. */ public Integer getFailureThreshold() { return this.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. *
* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. */ public HealthCheckConfig withFailureThreshold(Integer failureThreshold) { setFailureThreshold(failureThreshold); return this; } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getType() != null) sb.append("Type: ").append(getType()).append(","); if (getResourcePath() != null) sb.append("ResourcePath: ").append(getResourcePath()).append(","); if (getFailureThreshold() != null) sb.append("FailureThreshold: ").append(getFailureThreshold()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof HealthCheckConfig == false) return false; HealthCheckConfig other = (HealthCheckConfig) obj; if (other.getType() == null ^ this.getType() == null) return false; if (other.getType() != null && other.getType().equals(this.getType()) == false) return false; if (other.getResourcePath() == null ^ this.getResourcePath() == null) return false; if (other.getResourcePath() != null && other.getResourcePath().equals(this.getResourcePath()) == false) return false; if (other.getFailureThreshold() == null ^ this.getFailureThreshold() == null) return false; if (other.getFailureThreshold() != null && other.getFailureThreshold().equals(this.getFailureThreshold()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getType() == null) ? 0 : getType().hashCode()); hashCode = prime * hashCode + ((getResourcePath() == null) ? 0 : getResourcePath().hashCode()); hashCode = prime * hashCode + ((getFailureThreshold() == null) ? 0 : getFailureThreshold().hashCode()); return hashCode; } @Override public HealthCheckConfig clone() { try { return (HealthCheckConfig) super.clone(); } catch (CloneNotSupportedException e) { throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e); } } @com.amazonaws.annotation.SdkInternalApi @Override public void marshall(ProtocolMarshaller protocolMarshaller) { com.amazonaws.services.servicediscovery.model.transform.HealthCheckConfigMarshaller.getInstance().marshall(this, protocolMarshaller); } }