/* * 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; } } }