/* * 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. *

*
*
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: *

* *
*
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 AWS * API Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class HealthCheckConfig implements Serializable, Cloneable, StructuredPojo { /** *

* 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: *

* *

* 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. *

*/ private String 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: *

* *

* 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: *

* *

* 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: *

* *

* 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: *

* *

* 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: *

* *

* 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: *

* *

* 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: *

* *

* 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: *

* *

* 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. *

* * @param 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. */ 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. *

* * @return 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. */ 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. *

* * @param 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. * @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); } }