/*
* Copyright 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.
*/
/*
* Do not modify this file. This file is generated from the route53-2013-04-01.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.Route53.Model
{
///
/// A complex type that contains information about the health check.
///
public partial class HealthCheckConfig
{
private string _ipAddress;
private int? _port;
private HealthCheckType _type;
private string _resourcePath;
private string _fullyQualifiedDomainName;
private string _searchString;
private int? _requestInterval;
private int? _failureThreshold;
private bool? _measureLatency;
private bool? _inverted;
private bool? _disabled;
private int? _healthThreshold;
private List _childHealthChecks = new List();
private bool? _enableSNI;
private List _regions = new List();
private AlarmIdentifier _alarmIdentifier;
private InsufficientDataHealthStatus _insufficientDataHealthStatus;
private string _routingControlArn;
///
/// Gets and sets the property IPAddress.
///
/// The IPv4 or IPv6 IP address of the endpoint that you want Amazon Route 53 to perform
/// health checks on. If you don't specify a value for IPAddress
, Route 53
/// sends a DNS request to resolve the domain name that you specify in FullyQualifiedDomainName
/// at the interval that you specify in RequestInterval
. Using an IP address
/// returned by DNS, Route 53 then checks the health of the endpoint.
///
///
///
/// Use one of the following formats for the value of IPAddress
:
///
/// -
///
/// IPv4 address: four values between 0 and 255, separated by periods (.), for
/// example,
192.0.2.44
.
///
/// -
///
/// IPv6 address: eight groups of four hexadecimal values, separated by colons
/// (:), for example,
2001:0db8:85a3:0000:0000:abcd:0001:2345
. You can also
/// shorten IPv6 addresses as described in RFC 5952, for example, 2001:db8:85a3::abcd:1:2345
.
///
///
///
/// If the endpoint is an EC2 instance, we recommend that you create an Elastic IP address,
/// associate it with your EC2 instance, and specify the Elastic IP address for IPAddress
.
/// This ensures that the IP address of your instance will never change.
///
///
///
/// For more information, see FullyQualifiedDomainName.
///
///
///
///
/// Constraints: Route 53 can't check the health of endpoints for which the IP address
/// is in local, private, non-routable, or multicast ranges. For more information about
/// IP addresses for which you can't create health checks, see the following documents:
///
///
///
/// When the value of Type
is CALCULATED
or CLOUDWATCH_METRIC
,
/// omit IPAddress
.
///
///
[AWSProperty(Max=45)]
public string IPAddress
{
get { return this._ipAddress; }
set { this._ipAddress = value; }
}
// Check to see if IPAddress property is set
internal bool IsSetIPAddress()
{
return this._ipAddress != null;
}
///
/// Gets and sets the property Port.
///
/// The port on the endpoint that you want Amazon Route 53 to perform health checks on.
///
///
///
/// Don't specify a value for Port
when you specify a value for Type
/// of CLOUDWATCH_METRIC
or CALCULATED
.
///
///
///
[AWSProperty(Min=1, Max=65535)]
public int Port
{
get { return this._port.GetValueOrDefault(); }
set { this._port = value; }
}
// Check to see if Port property is set
internal bool IsSetPort()
{
return this._port.HasValue;
}
///
/// Gets and sets the property Type.
///
/// The type of health check that you want to create, which indicates how Amazon 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.
///
/// -
///
/// HTTP_STR_MATCH: Route 53 tries to establish a TCP connection. If successful,
/// Route 53 submits an HTTP request and searches the first 5,120 bytes of the response
/// body for the string that you specify in
SearchString
.
///
/// -
///
/// HTTPS_STR_MATCH: Route 53 tries to establish a TCP connection. If successful,
/// Route 53 submits an
HTTPS
request and searches the first 5,120 bytes
/// of the response body for the string that you specify in SearchString
.
///
/// -
///
/// TCP: Route 53 tries to establish a TCP connection.
///
///
-
///
/// CLOUDWATCH_METRIC: The health check is associated with a CloudWatch alarm.
/// If the state of the alarm is
OK
, the health check is considered healthy.
/// If the state is ALARM
, the health check is considered unhealthy. If CloudWatch
/// doesn't have sufficient data to determine whether the state is OK
or
/// ALARM
, the health check status depends on the setting for InsufficientDataHealthStatus
:
/// Healthy
, Unhealthy
, or LastKnownStatus
.
///
/// -
///
/// CALCULATED: For health checks that monitor the status of other health checks,
/// Route 53 adds up the number of health checks that Route 53 health checkers consider
/// to be healthy and compares that number with the value of
HealthThreshold
.
///
///
/// -
///
/// RECOVERY_CONTROL: The health check is assocated with a Route53 Application
/// Recovery Controller routing control. If the routing control state is
ON
,
/// the health check is considered healthy. If the state is OFF
, the health
/// check is considered unhealthy.
///
///
///
/// For more information, see How
/// Route 53 Determines Whether an Endpoint Is Healthy in the Amazon Route 53 Developer
/// Guide.
///
///
[AWSProperty(Required=true)]
public HealthCheckType Type
{
get { return this._type; }
set { this._type = value; }
}
// Check to see if Type property is set
internal bool IsSetType()
{
return this._type != null;
}
///
/// Gets and sets the property ResourcePath.
///
/// The path, if any, that you want Amazon 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, for example, the file /docs/route53-health-check.html.
/// You can also include query string parameters, for example, /welcome.html?language=jp&login=y
.
///
///
///
[AWSProperty(Max=255)]
public string ResourcePath
{
get { return this._resourcePath; }
set { this._resourcePath = value; }
}
// Check to see if ResourcePath property is set
internal bool IsSetResourcePath()
{
return this._resourcePath != null;
}
///
/// Gets and sets the property FullyQualifiedDomainName.
///
/// Amazon Route 53 behavior depends on whether you specify a value for IPAddress
.
///
///
///
/// If you specify a value for IPAddress
:
///
///
///
/// Amazon Route 53 sends health check requests to the specified IPv4 or IPv6 address
/// and passes the value of FullyQualifiedDomainName
in the Host
/// header for all health checks except TCP health checks. This is typically the fully
/// qualified DNS name of the endpoint on which you want Route 53 to perform health checks.
///
///
///
/// When Route 53 checks the health of an endpoint, here is how it constructs the Host
/// header:
///
/// -
///
/// If you specify a value of
80
for Port
and HTTP
/// or HTTP_STR_MATCH
for Type
, Route 53 passes the value of
/// FullyQualifiedDomainName
to the endpoint in the Host header.
///
/// -
///
/// If you specify a value of
443
for Port
and HTTPS
/// or HTTPS_STR_MATCH
for Type
, Route 53 passes the value of
/// FullyQualifiedDomainName
to the endpoint in the Host
header.
///
/// -
///
/// If you specify another value for
Port
and any value except TCP
/// for Type
, Route 53 passes FullyQualifiedDomainName:Port
/// to the endpoint in the Host
header.
///
///
///
/// If you don't specify a value for FullyQualifiedDomainName
, Route 53 substitutes
/// the value of IPAddress
in the Host
header in each of the
/// preceding cases.
///
///
///
/// If you don't specify a value for IPAddress
:
///
///
///
/// Route 53 sends a DNS request to the domain that you specify for FullyQualifiedDomainName
/// at the interval that you specify for RequestInterval
. Using an IPv4 address
/// that DNS returns, Route 53 then checks the health of the endpoint.
///
///
///
/// If you don't specify a value for IPAddress
, Route 53 uses only IPv4 to
/// send health checks to the endpoint. If there's no resource record set with a type
/// of A for the name that you specify for FullyQualifiedDomainName
, the
/// health check fails with a "DNS resolution failed" error.
///
///
///
/// If you want to check the health of weighted, latency, or failover resource record
/// sets and you choose to specify the endpoint only by FullyQualifiedDomainName
,
/// we recommend that you create a separate health check for each endpoint. For example,
/// create a health check for each HTTP server that is serving content for www.example.com.
/// For the value of FullyQualifiedDomainName
, specify the domain name of
/// the server (such as us-east-2-www.example.com), not the name of the resource record
/// sets (www.example.com).
///
///
///
/// In this configuration, if you create a health check for which the value of FullyQualifiedDomainName
/// matches the name of the resource record sets and you then associate the health check
/// with those resource record sets, health check results will be unpredictable.
///
///
///
/// In addition, if the value that you specify for Type
is HTTP
,
/// HTTPS
, HTTP_STR_MATCH
, or HTTPS_STR_MATCH
,
/// Route 53 passes the value of FullyQualifiedDomainName
in the Host
/// header, as it does when you specify a value for IPAddress
. If the value
/// of Type
is TCP
, Route 53 doesn't pass a Host
/// header.
///
///
[AWSProperty(Max=255)]
public string FullyQualifiedDomainName
{
get { return this._fullyQualifiedDomainName; }
set { this._fullyQualifiedDomainName = value; }
}
// Check to see if FullyQualifiedDomainName property is set
internal bool IsSetFullyQualifiedDomainName()
{
return this._fullyQualifiedDomainName != null;
}
///
/// Gets and sets the property SearchString.
///
/// If the value of Type is HTTP_STR_MATCH
or HTTPS_STR_MATCH
,
/// the string that you want Amazon Route 53 to search for in the response body from the
/// specified resource. If the string appears in the response body, Route 53 considers
/// the resource healthy.
///
///
///
/// Route 53 considers case when searching for SearchString
in the response
/// body.
///
///
[AWSProperty(Max=255)]
public string SearchString
{
get { return this._searchString; }
set { this._searchString = value; }
}
// Check to see if SearchString property is set
internal bool IsSetSearchString()
{
return this._searchString != null;
}
///
/// Gets and sets the property RequestInterval.
///
/// The number of seconds between the time that Amazon Route 53 gets a response from your
/// endpoint and the time that it sends the next health check request. Each Route 53 health
/// checker makes requests at this interval.
///
///
///
/// You can't change the value of RequestInterval
after you create a health
/// check.
///
///
///
/// If you don't specify a value for RequestInterval
, the default value is
/// 30
seconds.
///
///
[AWSProperty(Min=10, Max=30)]
public int RequestInterval
{
get { return this._requestInterval.GetValueOrDefault(); }
set { this._requestInterval = value; }
}
// Check to see if RequestInterval property is set
internal bool IsSetRequestInterval()
{
return this._requestInterval.HasValue;
}
///
/// Gets and sets the property FailureThreshold.
///
/// The number of consecutive health checks that an endpoint must pass or fail for Amazon
/// Route 53 to change the current status of the endpoint from unhealthy to healthy or
/// vice versa. For more information, see How
/// Amazon Route 53 Determines Whether an Endpoint Is Healthy in the Amazon Route
/// 53 Developer Guide.
///
///
///
/// If you don't specify a value for FailureThreshold
, the default value
/// is three health checks.
///
///
[AWSProperty(Min=1, Max=10)]
public int FailureThreshold
{
get { return this._failureThreshold.GetValueOrDefault(); }
set { this._failureThreshold = value; }
}
// Check to see if FailureThreshold property is set
internal bool IsSetFailureThreshold()
{
return this._failureThreshold.HasValue;
}
///
/// Gets and sets the property MeasureLatency.
///
/// Specify whether you want Amazon Route 53 to measure the latency between health checkers
/// in multiple Amazon Web Services regions and your endpoint, and to display CloudWatch
/// latency graphs on the Health Checks page in the Route 53 console.
///
///
///
/// You can't change the value of MeasureLatency
after you create a health
/// check.
///
///
///
public bool MeasureLatency
{
get { return this._measureLatency.GetValueOrDefault(); }
set { this._measureLatency = value; }
}
// Check to see if MeasureLatency property is set
internal bool IsSetMeasureLatency()
{
return this._measureLatency.HasValue;
}
///
/// Gets and sets the property Inverted.
///
/// Specify whether you want Amazon Route 53 to invert the status of a health check, for
/// example, to consider a health check unhealthy when it otherwise would be considered
/// healthy.
///
///
public bool Inverted
{
get { return this._inverted.GetValueOrDefault(); }
set { this._inverted = value; }
}
// Check to see if Inverted property is set
internal bool IsSetInverted()
{
return this._inverted.HasValue;
}
///
/// Gets and sets the property Disabled.
///
/// Stops Route 53 from performing health checks. When you disable a health check, here's
/// what happens:
///
/// -
///
/// Health checks that check the health of endpoints: Route 53 stops submitting
/// requests to your application, server, or other resource.
///
///
-
///
/// Calculated health checks: Route 53 stops aggregating the status of the referenced
/// health checks.
///
///
-
///
/// Health checks that monitor CloudWatch alarms: Route 53 stops monitoring the
/// corresponding CloudWatch metrics.
///
///
///
/// After you disable a health check, Route 53 considers the status of the health check
/// to always be healthy. If you configured DNS failover, Route 53 continues to route
/// traffic to the corresponding resources. If you want to stop routing traffic to a resource,
/// change the value of Inverted.
///
///
///
///
/// Charges for a health check still apply when the health check is disabled. For more
/// information, see Amazon Route 53
/// Pricing.
///
///
public bool Disabled
{
get { return this._disabled.GetValueOrDefault(); }
set { this._disabled = value; }
}
// Check to see if Disabled property is set
internal bool IsSetDisabled()
{
return this._disabled.HasValue;
}
///
/// Gets and sets the property HealthThreshold.
///
/// The number of child health checks that are associated with a CALCULATED
/// health check that Amazon Route 53 must consider healthy for the CALCULATED
/// health check to be considered healthy. To specify the child health checks that you
/// want to associate with a CALCULATED
health check, use the ChildHealthChecks
/// element.
///
///
///
/// Note the following:
///
/// -
///
/// If you specify a number greater than the number of child health checks, Route 53 always
/// considers this health check to be unhealthy.
///
///
-
///
/// If you specify
0
, Route 53 always considers this health check to be healthy.
///
///
///
[AWSProperty(Min=0, Max=256)]
public int HealthThreshold
{
get { return this._healthThreshold.GetValueOrDefault(); }
set { this._healthThreshold = value; }
}
// Check to see if HealthThreshold property is set
internal bool IsSetHealthThreshold()
{
return this._healthThreshold.HasValue;
}
///
/// Gets and sets the property ChildHealthChecks.
///
/// (CALCULATED Health Checks Only) A complex type that contains one ChildHealthCheck
/// element for each health check that you want to associate with a CALCULATED
/// health check.
///
///
[AWSProperty(Max=256)]
public List ChildHealthChecks
{
get { return this._childHealthChecks; }
set { this._childHealthChecks = value; }
}
// Check to see if ChildHealthChecks property is set
internal bool IsSetChildHealthChecks()
{
return this._childHealthChecks != null && this._childHealthChecks.Count > 0;
}
///
/// Gets and sets the property EnableSNI.
///
/// Specify whether you want Amazon Route 53 to send the value of FullyQualifiedDomainName
/// to the endpoint in the client_hello
message during TLS negotiation. This
/// allows the endpoint to respond to HTTPS
health check requests with the
/// applicable SSL/TLS certificate.
///
///
///
/// Some endpoints require that HTTPS
requests include the host name in the
/// client_hello
message. If you don't enable SNI, the status of the health
/// check will be SSL alert handshake_failure
. A health check can also have
/// that status for other reasons. If SNI is enabled and you're still getting the error,
/// check the SSL/TLS configuration on your endpoint and confirm that your certificate
/// is valid.
///
///
///
/// The SSL/TLS certificate on your endpoint includes a domain name in the Common
/// Name
field and possibly several more in the Subject Alternative Names
/// field. One of the domain names in the certificate should match the value that you
/// specify for FullyQualifiedDomainName
. If the endpoint responds to the
/// client_hello
message with a certificate that does not include the domain
/// name that you specified in FullyQualifiedDomainName
, a health checker
/// will retry the handshake. In the second attempt, the health checker will omit FullyQualifiedDomainName
/// from the client_hello
message.
///
///
public bool EnableSNI
{
get { return this._enableSNI.GetValueOrDefault(); }
set { this._enableSNI = value; }
}
// Check to see if EnableSNI property is set
internal bool IsSetEnableSNI()
{
return this._enableSNI.HasValue;
}
///
/// Gets and sets the property Regions.
///
/// A complex type that contains one Region
element for each region from
/// which you want Amazon Route 53 health checkers to check the specified endpoint.
///
///
///
/// If you don't specify any regions, Route 53 health checkers automatically performs
/// checks from all of the regions that are listed under Valid Values.
///
///
///
/// If you update a health check to remove a region that has been performing health checks,
/// Route 53 will briefly continue to perform checks from that region to ensure that some
/// health checkers are always checking the endpoint (for example, if you replace three
/// regions with four different regions).
///
///
[AWSProperty(Min=3, Max=64)]
public List Regions
{
get { return this._regions; }
set { this._regions = value; }
}
// Check to see if Regions property is set
internal bool IsSetRegions()
{
return this._regions != null && this._regions.Count > 0;
}
///
/// Gets and sets the property AlarmIdentifier.
///
/// A complex type that identifies the CloudWatch alarm that you want Amazon Route 53
/// health checkers to use to determine whether the specified health check is healthy.
///
///
public AlarmIdentifier AlarmIdentifier
{
get { return this._alarmIdentifier; }
set { this._alarmIdentifier = value; }
}
// Check to see if AlarmIdentifier property is set
internal bool IsSetAlarmIdentifier()
{
return this._alarmIdentifier != null;
}
///
/// Gets and sets the property InsufficientDataHealthStatus.
///
/// When CloudWatch has insufficient data about the metric to determine the alarm state,
/// the status that you want Amazon Route 53 to assign to the health check:
///
/// -
///
///
Healthy
: Route 53 considers the health check to be healthy.
///
/// -
///
///
Unhealthy
: Route 53 considers the health check to be unhealthy.
///
/// -
///
///
LastKnownStatus
: Route 53 uses the status of the health check from the
/// last time that CloudWatch had sufficient data to determine the alarm state. For new
/// health checks that have no last known status, the default status for the health check
/// is healthy.
///
///
///
public InsufficientDataHealthStatus InsufficientDataHealthStatus
{
get { return this._insufficientDataHealthStatus; }
set { this._insufficientDataHealthStatus = value; }
}
// Check to see if InsufficientDataHealthStatus property is set
internal bool IsSetInsufficientDataHealthStatus()
{
return this._insufficientDataHealthStatus != null;
}
///
/// Gets and sets the property RoutingControlArn.
///
/// The Amazon Resource Name (ARN) for the Route 53 Application Recovery Controller routing
/// control.
///
///
///
/// For more information about Route 53 Application Recovery Controller, see Route
/// 53 Application Recovery Controller Developer Guide..
///
///
[AWSProperty(Min=1, Max=255)]
public string RoutingControlArn
{
get { return this._routingControlArn; }
set { this._routingControlArn = value; }
}
// Check to see if RoutingControlArn property is set
internal bool IsSetRoutingControlArn()
{
return this._routingControlArn != null;
}
}
}