com.amazonaws.services.route53.model.ResourceRecordSet.java Source code

Java tutorial

Introduction

Here is the source code for com.amazonaws.services.route53.model.ResourceRecordSet.java

Source

/*
 * Copyright 2014-2019 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.route53.model;

import java.io.Serializable;
import javax.annotation.Generated;

/**
 * <p>
 * Information about the resource record set to create or delete.
 * </p>
 * 
 * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/ResourceRecordSet" target="_top">AWS API
 *      Documentation</a>
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class ResourceRecordSet implements Serializable, Cloneable {

    /**
     * <p>
     * For <code>ChangeResourceRecordSets</code> requests, the name of the record that you want to create, update, or
     * delete. For <code>ListResourceRecordSets</code> responses, the name of a record in the specified hosted zone.
     * </p>
     * <p>
     * <b>ChangeResourceRecordSets Only</b>
     * </p>
     * <p>
     * Enter a fully qualified domain name, for example, <code>www.example.com</code>. You can optionally include a
     * trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is
     * fully qualified. This means that Route 53 treats <code>www.example.com</code> (without a trailing dot) and
     * <code>www.example.com.</code> (with a trailing dot) as identical.
     * </p>
     * <p>
     * For information about how to specify characters other than <code>a-z</code>, <code>0-9</code>, and <code>-</code>
     * (hyphen) and how to specify internationalized domain names, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name Format</a>
     * in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * <p>
     * You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example,
     * <code>*.example.com</code>. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * The * must replace the entire label. For example, you can't specify <code>*prod.example.com</code> or
     * <code>prod*.example.com</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * The * can't replace any of the middle labels, for example, marketing.*.example.com.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you include * in any position other than the leftmost label in a domain name, DNS treats it as an * character
     * (ASCII 42), not as a wildcard.
     * </p>
     * <important>
     * <p>
     * You can't use the * wildcard for resource records sets that have a type of NS.
     * </p>
     * </important></li>
     * </ul>
     * <p>
     * You can use the * wildcard as the leftmost label in a domain name, for example, <code>*.example.com</code>. You
     * can't use an * for one of the middle labels, for example, <code>marketing.*.example.com</code>. In addition, the
     * * must replace the entire label; for example, you can't specify <code>prod*.example.com</code>.
     * </p>
     */
    private String name;
    /**
     * <p>
     * The DNS record type. For information about different record types and how data is encoded for them, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS Resource
     * Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * <p>
     * Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     * <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code>
     * | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <p>
     * Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> | <code>AAAA</code>
     * | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> |
     * <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of weighted, latency, geolocation,
     * or failover resource record sets, specify the same value for all of the resource record sets in the group.
     * </p>
     * <p>
     * Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> | <code>MX</code> |
     * <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <note>
     * <p>
     * SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer
     * recommend that you create resource record sets for which the value of <code>Type</code> is <code>SPF</code>. RFC
     * 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</i>, has been updated
     * to say,
     * "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     * In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS Record
     * Type</a>.
     * </p>
     * </note>
     * <p>
     * Values for alias resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>CloudFront distributions:</b> <code>A</code>
     * </p>
     * <p>
     * If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution,
     * one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon S3 buckets:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that you're
     * creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     * </p>
     * <note>
     * <p>
     * If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't
     * route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is because the
     * alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the
     * zone apex isn't supported even for an alias record.
     * </p>
     * </note></li>
     * </ul>
     */
    private String type;
    /**
     * <p>
     * <i>Resource record sets that have a routing policy other than simple:</i> An identifier that differentiates among
     * multiple resource record sets that have the same combination of name and type, such as multiple weighted resource
     * record sets named acme.example.com that have a type of A. In a group of resource record sets that have the same
     * name and type, the value of <code>SetIdentifier</code> must be unique for each resource record set.
     * </p>
     * <p>
     * For information about routing policies, see <a
     * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html">Choosing a Routing
     * Policy</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     */
    private String setIdentifier;
    /**
     * <p>
     * <i>Weighted resource record sets only:</i> Among resource record sets that have the same combination of DNS name
     * and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the
     * current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have
     * the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's
     * weight to the total. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You must specify a value for the <code>Weight</code> element for every weighted resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can only specify one <code>ResourceRecord</code> per weighted resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can't create latency, failover, or geolocation resource record sets that have the same values for the
     * <code>Name</code> and <code>Type</code> elements as weighted resource record sets.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can create a maximum of 100 weighted resource record sets that have the same values for the <code>Name</code>
     * and <code>Type</code> elements.
     * </p>
     * </li>
     * <li>
     * <p>
     * For weighted (but not weighted alias) resource record sets, if you set <code>Weight</code> to <code>0</code> for
     * a resource record set, Route 53 never responds to queries with the applicable value for that resource record set.
     * However, if you set <code>Weight</code> to <code>0</code> for all resource record sets that have the same
     * combination of DNS name and type, traffic is routed to all resources with equal probability.
     * </p>
     * <p>
     * The effect of setting <code>Weight</code> to <code>0</code> is different when you associate health checks with
     * weighted resource record sets. For more information, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring-options.html">Options for
     * Configuring Route 53 Active-Active and Active-Passive Failover</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * </li>
     * </ul>
     */
    private Long weight;
    /**
     * <p>
     * <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that this
     * resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or an ELB load
     * balancer, and is referred to by an IP address or a DNS domain name, depending on the record type.
     * </p>
     * <note>
     * <p>
     * Creating latency and latency alias resource record sets in private hosted zones is not supported.
     * </p>
     * </note>
     * <p>
     * When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency resource
     * record sets, Route 53 selects the latency resource record set that has the lowest latency between the end user
     * and the associated Amazon EC2 Region. Route 53 then returns the value that is associated with the selected
     * resource record set.
     * </p>
     * <p>
     * Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You can only specify one <code>ResourceRecord</code> per latency resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can only create one latency resource record set for each Amazon EC2 Region.
     * </p>
     * </li>
     * <li>
     * <p>
     * You aren't required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will choose the
     * region with the best latency from among the regions that you create latency resource record sets for.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can't create non-latency resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as latency resource record sets.
     * </p>
     * </li>
     * </ul>
     */
    private String region;
    /**
     * <p>
     * <i>Geolocation resource record sets only:</i> A complex type that lets you control how Amazon Route 53 responds
     * to DNS queries based on the geographic origin of the query. For example, if you want all queries from Africa to
     * be routed to a web server with an IP address of <code>192.0.2.111</code>, create a resource record set with a
     * <code>Type</code> of <code>A</code> and a <code>ContinentCode</code> of <code>AF</code>.
     * </p>
     * <note>
     * <p>
     * Creating geolocation and geolocation alias resource record sets in private hosted zones is not supported.
     * </p>
     * </note>
     * <p>
     * If you create separate resource record sets for overlapping geographic regions (for example, one resource record
     * set for a continent and one for a country on the same continent), priority goes to the smallest geographic
     * region. This allows you to route most queries for a continent to one resource and to route queries for a country
     * on that continent to a different resource.
     * </p>
     * <p>
     * You can't create two geolocation resource record sets that specify the same geographic location.
     * </p>
     * <p>
     * The value <code>*</code> in the <code>CountryCode</code> element matches all geographic locations that aren't
     * specified in other geolocation resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements.
     * </p>
     * <important>
     * <p>
     * Geolocation works by mapping IP addresses to locations. However, some IP addresses aren't mapped to geographic
     * locations, so even if you create geolocation resource record sets that cover all seven continents, Route 53 will
     * receive some DNS queries from locations that it can't identify. We recommend that you create a resource record
     * set for which the value of <code>CountryCode</code> is <code>*</code>, which handles both queries that come from
     * locations for which you haven't created geolocation resource record sets and queries from IP addresses that
     * aren't mapped to a location. If you don't create a <code>*</code> resource record set, Route 53 returns a
     * "no answer" response for queries from those locations.
     * </p>
     * </important>
     * <p>
     * You can't create non-geolocation resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as geolocation resource record sets.
     * </p>
     */
    private GeoLocation geoLocation;
    /**
     * <p>
     * <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code> element to
     * two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the value for
     * <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>. In addition, you
     * include the <code>HealthCheckId</code> element and specify the health check that you want Amazon Route 53 to
     * perform for each resource record set.
     * </p>
     * <p>
     * Except where noted, the following failover behaviors assume that you have included the <code>HealthCheckId</code>
     * element in both resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable value from
     * the primary resource record set regardless of the health of the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route 53
     * responds to DNS queries with the applicable value from the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable value
     * from the primary resource record set regardless of the health of the primary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the primary
     * resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable value from the
     * secondary resource record set. This is true regardless of the health of the associated endpoint.
     * </p>
     * </li>
     * </ul>
     * <p>
     * You can't create non-failover resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as failover resource record sets.
     * </p>
     * <p>
     * For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code> element and
     * set the value to true.
     * </p>
     * <p>
     * For more information about configuring failover for Route 53, see the following topics in the <i>Amazon Route 53
     * Developer Guide</i>:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and
     * DNS Failover</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     * Configuring Failover in a Private Hosted Zone</a>
     * </p>
     * </li>
     * </ul>
     */
    private String failover;
    /**
     * <p>
     * <i>Multivalue answer resource record sets only</i>: To route traffic approximately randomly to multiple
     * resources, such as web servers, create one multivalue answer record for each resource and specify
     * <code>true</code> for <code>MultiValueAnswer</code>. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * If you associate a health check with a multivalue answer resource record set, Amazon Route 53 responds to DNS
     * queries with the corresponding IP address only when the health check is healthy.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you don't associate a health check with a multivalue answer record, Route 53 always considers the record to be
     * healthy.
     * </p>
     * </li>
     * <li>
     * <p>
     * Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy records,
     * Route 53 responds to all DNS queries with all the healthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different
     * combinations of healthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * If a resource becomes unavailable after a resolver caches a response, client software typically tries another of
     * the IP addresses in the response.
     * </p>
     * </li>
     * </ul>
     * <p>
     * You can't create multivalue answer alias records.
     * </p>
     */
    private Boolean multiValueAnswer;
    /**
     * <p>
     * The resource record cache time to live (TTL), in seconds. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * If you're creating or updating an alias resource record set, omit <code>TTL</code>. Amazon Route 53 uses the
     * value of <code>TTL</code> for the alias target.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you're associating this resource record set with a health check (if you're adding a <code>HealthCheckId</code>
     * element), we recommend that you specify a <code>TTL</code> of 60 seconds or less so clients respond quickly to
     * changes in health status.
     * </p>
     * </li>
     * <li>
     * <p>
     * All of the resource record sets in a group of weighted resource record sets must have the same value for
     * <code>TTL</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * If a group of weighted resource record sets includes one or more weighted alias resource record sets for which
     * the alias target is an ELB load balancer, we recommend that you specify a <code>TTL</code> of 60 seconds for all
     * of the non-alias weighted resource record sets that have the same name and type. Values other than 60 seconds
     * (the TTL for load balancers) will change the effect of the values that you specify for <code>Weight</code>.
     * </p>
     * </li>
     * </ul>
     */
    private Long tTL;
    /**
     * <p>
     * Information about the resource records to act upon.
     * </p>
     * <note>
     * <p>
     * If you're creating an alias resource record set, omit <code>ResourceRecords</code>.
     * </p>
     * </note>
     */
    private com.amazonaws.internal.SdkInternalList<ResourceRecord> resourceRecords;
    /**
     * <p>
     * <i>Alias resource record sets only:</i> Information about the AWS resource, such as a CloudFront distribution or
     * an Amazon S3 bucket, that you want to route traffic to.
     * </p>
     * <p>
     * If you're creating resource records sets for a private hosted zone, note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You can't create an alias resource record set in a private hosted zone to route traffic to a CloudFront
     * distribution.
     * </p>
     * </li>
     * <li>
     * <p>
     * Creating geolocation alias resource record sets or latency alias resource record sets in a private hosted zone is
     * unsupported.
     * </p>
     * </li>
     * <li>
     * <p>
     * For information about creating failover resource record sets in a private hosted zone, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html"
     * >Configuring Failover in a Private Hosted Zone</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * </li>
     * </ul>
     */
    private AliasTarget aliasTarget;
    /**
     * <p>
     * If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of
     * a health check is healthy, include the <code>HealthCheckId</code> element and specify the ID of the applicable
     * health check.
     * </p>
     * <p>
     * Route 53 determines whether a resource record set is healthy based on one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * By periodically sending a request to the endpoint that is specified in the health check
     * </p>
     * </li>
     * <li>
     * <p>
     * By aggregating the status of a specified group of health checks (calculated health checks)
     * </p>
     * </li>
     * <li>
     * <p>
     * By determining the current state of a CloudWatch alarm (CloudWatch metric health checks)
     * </p>
     * </li>
     * </ul>
     * <important>
     * <p>
     * Route 53 doesn't check the health of the endpoint that is specified in the resource record set, for example, the
     * endpoint specified by the IP address in the <code>Value</code> element. When you add a <code>HealthCheckId</code>
     * element to a resource record set, Route 53 checks the health of the endpoint that you specified in the health
     * check.
     * </p>
     * </important>
     * <p>
     * For more information, see the following topics in the <i>Amazon Route 53 Developer Guide</i>:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <a href=
     * "https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html">How
     * Amazon Route 53 Determines Whether an Endpoint Is Healthy</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and
     * DNS Failover</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     * Configuring Failover in a Private Hosted Zone</a>
     * </p>
     * </li>
     * </ul>
     * <p>
     * <b>When to Specify HealthCheckId</b>
     * </p>
     * <p>
     * Specifying a value for <code>HealthCheckId</code> is useful only when Route 53 is choosing between two or more
     * resource record sets to respond to a DNS query, and you want Route 53 to base the choice in part on the status of
     * a health check. Configuring health checks makes sense only in the following configurations:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <b>Non-alias resource record sets</b>: You're checking the health of a group of non-alias resource record sets
     * that have the same routing policy, name, and type (such as multiple weighted records named www.example.com with a
     * type of A) and you specify health check IDs for all the resource record sets.
     * </p>
     * <p>
     * If the health check status for a resource record set is healthy, Route 53 includes the record among the records
     * that it responds to DNS queries with.
     * </p>
     * <p>
     * If the health check status for a resource record set is unhealthy, Route 53 stops responding to DNS queries using
     * the value for that resource record set.
     * </p>
     * <p>
     * If the health check status for all resource record sets in the group is unhealthy, Route 53 considers all
     * resource record sets in the group healthy and responds to DNS queries accordingly.
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Alias resource record sets</b>: You specify the following settings:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You set <code>EvaluateTargetHealth</code> to true for an alias resource record set in a group of resource record
     * sets that have the same routing policy, name, and type (such as multiple weighted records named www.example.com
     * with a type of A).
     * </p>
     * </li>
     * <li>
     * <p>
     * You configure the alias resource record set to route traffic to a non-alias resource record set in the same
     * hosted zone.
     * </p>
     * </li>
     * <li>
     * <p>
     * You specify a health check ID for the non-alias resource record set.
     * </p>
     * </li>
     * </ul>
     * <p>
     * If the health check status is healthy, Route 53 considers the alias resource record set to be healthy and
     * includes the alias record among the records that it responds to DNS queries with.
     * </p>
     * <p>
     * If the health check status is unhealthy, Route 53 stops responding to DNS queries using the alias resource record
     * set.
     * </p>
     * <note>
     * <p>
     * The alias resource record set can also route traffic to a <i>group</i> of non-alias resource record sets that
     * have the same routing policy, name, and type. In that configuration, associate health checks with all of the
     * resource record sets in the group of non-alias resource record sets.
     * </p>
     * </note></li>
     * </ul>
     * <p>
     * <b>Geolocation Routing</b>
     * </p>
     * <p>
     * For geolocation resource record sets, if an endpoint is unhealthy, Route 53 looks for a resource record set for
     * the larger, associated geographic region. For example, suppose you have resource record sets for a state in the
     * United States, for the entire United States, for North America, and a resource record set that has <code>*</code>
     * for <code>CountryCode</code> is <code>*</code>, which applies to all locations. If the endpoint for the state
     * resource record set is unhealthy, Route 53 checks for healthy resource record sets in the following order until
     * it finds a resource record set for which the endpoint is healthy:
     * </p>
     * <ul>
     * <li>
     * <p>
     * The United States
     * </p>
     * </li>
     * <li>
     * <p>
     * North America
     * </p>
     * </li>
     * <li>
     * <p>
     * The default resource record set
     * </p>
     * </li>
     * </ul>
     * <p>
     * <b>Specifying the Health Check Endpoint by Domain Name</b>
     * </p>
     * <p>
     * If your health checks specify the endpoint only by domain name, we recommend that you create a separate health
     * check for each endpoint. For example, create a health check for each <code>HTTP</code> server that is serving
     * content for <code>www.example.com</code>. For the value of <code>FullyQualifiedDomainName</code>, specify the
     * domain name of the server (such as <code>us-east-2-www.example.com</code>), not the name of the resource record
     * sets (<code>www.example.com</code>).
     * </p>
     * <important>
     * <p>
     * Health check results will be unpredictable if you do the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * Create a health check that has the same value for <code>FullyQualifiedDomainName</code> as the name of a resource
     * record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * Associate that health check with the resource record set.
     * </p>
     * </li>
     * </ul>
     * </important>
     */
    private String healthCheckId;
    /**
     * <p>
     * When you create a traffic policy instance, Amazon Route 53 automatically creates a resource record set.
     * <code>TrafficPolicyInstanceId</code> is the ID of the traffic policy instance that Route 53 created this resource
     * record set for.
     * </p>
     * <important>
     * <p>
     * To delete the resource record set that is associated with a traffic policy instance, use
     * <code>DeleteTrafficPolicyInstance</code>. Route 53 will delete the resource record set automatically. If you
     * delete the resource record set by using <code>ChangeResourceRecordSets</code>, Route 53 doesn't automatically
     * delete the traffic policy instance, and you'll continue to be charged for it even though it's no longer in use.
     * </p>
     * </important>
     */
    private String trafficPolicyInstanceId;

    /**
     * Default constructor for ResourceRecordSet object. Callers should use the setter or fluent setter (with...)
     * methods to initialize the object after creating it.
     */
    public ResourceRecordSet() {
    }

    /**
     * Constructs a new ResourceRecordSet object. Callers should use the setter or fluent setter (with...) methods to
     * initialize any additional object members.
     * 
     * @param name
     *        For <code>ChangeResourceRecordSets</code> requests, the name of the record that you want to create,
     *        update, or delete. For <code>ListResourceRecordSets</code> responses, the name of a record in the
     *        specified hosted zone.</p>
     *        <p>
     *        <b>ChangeResourceRecordSets Only</b>
     *        </p>
     *        <p>
     *        Enter a fully qualified domain name, for example, <code>www.example.com</code>. You can optionally include
     *        a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you
     *        specify is fully qualified. This means that Route 53 treats <code>www.example.com</code> (without a
     *        trailing dot) and <code>www.example.com.</code> (with a trailing dot) as identical.
     *        </p>
     *        <p>
     *        For information about how to specify characters other than <code>a-z</code>, <code>0-9</code>, and
     *        <code>-</code> (hyphen) and how to specify internationalized domain names, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name
     *        Format</a> in the <i>Amazon Route 53 Developer Guide</i>.
     *        </p>
     *        <p>
     *        You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example,
     *        <code>*.example.com</code>. Note the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        The * must replace the entire label. For example, you can't specify <code>*prod.example.com</code> or
     *        <code>prod*.example.com</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        The * can't replace any of the middle labels, for example, marketing.*.example.com.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you include * in any position other than the leftmost label in a domain name, DNS treats it as an *
     *        character (ASCII 42), not as a wildcard.
     *        </p>
     *        <important>
     *        <p>
     *        You can't use the * wildcard for resource records sets that have a type of NS.
     *        </p>
     *        </important></li>
     *        </ul>
     *        <p>
     *        You can use the * wildcard as the leftmost label in a domain name, for example, <code>*.example.com</code>
     *        . You can't use an * for one of the middle labels, for example, <code>marketing.*.example.com</code>. In
     *        addition, the * must replace the entire label; for example, you can't specify
     *        <code>prod*.example.com</code>.
     * @param type
     *        The DNS record type. For information about different record types and how data is encoded for them, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS
     *        Resource Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.
     *        </p>
     *        <p>
     *        Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     *        <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> |
     *        <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     *        </p>
     *        <p>
     *        Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> |
     *        <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> |
     *        <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of
     *        weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the
     *        resource record sets in the group.
     *        </p>
     *        <p>
     *        Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> |
     *        <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> |
     *        <code>TXT</code>
     *        </p>
     *        <note>
     *        <p>
     *        SPF records were formerly used to verify the identity of the sender of email messages. However, we no
     *        longer recommend that you create resource record sets for which the value of <code>Type</code> is
     *        <code>SPF</code>. RFC 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email,
     *        Version 1</i>, has been updated to say,
     *        "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     *        In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS
     *        Record Type</a>.
     *        </p>
     *        </note>
     *        <p>
     *        Values for alias resource record sets:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>CloudFront distributions:</b> <code>A</code>
     *        </p>
     *        <p>
     *        If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your
     *        distribution, one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon S3 buckets:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that
     *        you're creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     *        </p>
     *        <note>
     *        <p>
     *        If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you
     *        can't route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is
     *        because the alias record must have the same type as the record you're routing traffic to, and creating a
     *        CNAME record for the zone apex isn't supported even for an alias record.
     *        </p>
     *        </note></li>
     */
    public ResourceRecordSet(String name, String type) {
        setName(name);
        setType(type);
    }

    /**
     * Constructs a new ResourceRecordSet object. Callers should use the setter or fluent setter (with...) methods to
     * initialize any additional object members.
     * 
     * @param name
     *        For <code>ChangeResourceRecordSets</code> requests, the name of the record that you want to create,
     *        update, or delete. For <code>ListResourceRecordSets</code> responses, the name of a record in the
     *        specified hosted zone.</p>
     *        <p>
     *        <b>ChangeResourceRecordSets Only</b>
     *        </p>
     *        <p>
     *        Enter a fully qualified domain name, for example, <code>www.example.com</code>. You can optionally include
     *        a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you
     *        specify is fully qualified. This means that Route 53 treats <code>www.example.com</code> (without a
     *        trailing dot) and <code>www.example.com.</code> (with a trailing dot) as identical.
     *        </p>
     *        <p>
     *        For information about how to specify characters other than <code>a-z</code>, <code>0-9</code>, and
     *        <code>-</code> (hyphen) and how to specify internationalized domain names, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name
     *        Format</a> in the <i>Amazon Route 53 Developer Guide</i>.
     *        </p>
     *        <p>
     *        You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example,
     *        <code>*.example.com</code>. Note the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        The * must replace the entire label. For example, you can't specify <code>*prod.example.com</code> or
     *        <code>prod*.example.com</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        The * can't replace any of the middle labels, for example, marketing.*.example.com.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you include * in any position other than the leftmost label in a domain name, DNS treats it as an *
     *        character (ASCII 42), not as a wildcard.
     *        </p>
     *        <important>
     *        <p>
     *        You can't use the * wildcard for resource records sets that have a type of NS.
     *        </p>
     *        </important></li>
     *        </ul>
     *        <p>
     *        You can use the * wildcard as the leftmost label in a domain name, for example, <code>*.example.com</code>
     *        . You can't use an * for one of the middle labels, for example, <code>marketing.*.example.com</code>. In
     *        addition, the * must replace the entire label; for example, you can't specify
     *        <code>prod*.example.com</code>.
     * @param type
     *        The DNS record type. For information about different record types and how data is encoded for them, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS
     *        Resource Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.
     *        </p>
     *        <p>
     *        Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     *        <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> |
     *        <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     *        </p>
     *        <p>
     *        Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> |
     *        <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> |
     *        <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of
     *        weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the
     *        resource record sets in the group.
     *        </p>
     *        <p>
     *        Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> |
     *        <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> |
     *        <code>TXT</code>
     *        </p>
     *        <note>
     *        <p>
     *        SPF records were formerly used to verify the identity of the sender of email messages. However, we no
     *        longer recommend that you create resource record sets for which the value of <code>Type</code> is
     *        <code>SPF</code>. RFC 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email,
     *        Version 1</i>, has been updated to say,
     *        "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     *        In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS
     *        Record Type</a>.
     *        </p>
     *        </note>
     *        <p>
     *        Values for alias resource record sets:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>CloudFront distributions:</b> <code>A</code>
     *        </p>
     *        <p>
     *        If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your
     *        distribution, one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon S3 buckets:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that
     *        you're creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     *        </p>
     *        <note>
     *        <p>
     *        If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you
     *        can't route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is
     *        because the alias record must have the same type as the record you're routing traffic to, and creating a
     *        CNAME record for the zone apex isn't supported even for an alias record.
     *        </p>
     *        </note></li>
     */
    public ResourceRecordSet(String name, RRType type) {
        setName(name);
        setType(type.toString());
    }

    /**
     * <p>
     * For <code>ChangeResourceRecordSets</code> requests, the name of the record that you want to create, update, or
     * delete. For <code>ListResourceRecordSets</code> responses, the name of a record in the specified hosted zone.
     * </p>
     * <p>
     * <b>ChangeResourceRecordSets Only</b>
     * </p>
     * <p>
     * Enter a fully qualified domain name, for example, <code>www.example.com</code>. You can optionally include a
     * trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is
     * fully qualified. This means that Route 53 treats <code>www.example.com</code> (without a trailing dot) and
     * <code>www.example.com.</code> (with a trailing dot) as identical.
     * </p>
     * <p>
     * For information about how to specify characters other than <code>a-z</code>, <code>0-9</code>, and <code>-</code>
     * (hyphen) and how to specify internationalized domain names, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name Format</a>
     * in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * <p>
     * You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example,
     * <code>*.example.com</code>. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * The * must replace the entire label. For example, you can't specify <code>*prod.example.com</code> or
     * <code>prod*.example.com</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * The * can't replace any of the middle labels, for example, marketing.*.example.com.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you include * in any position other than the leftmost label in a domain name, DNS treats it as an * character
     * (ASCII 42), not as a wildcard.
     * </p>
     * <important>
     * <p>
     * You can't use the * wildcard for resource records sets that have a type of NS.
     * </p>
     * </important></li>
     * </ul>
     * <p>
     * You can use the * wildcard as the leftmost label in a domain name, for example, <code>*.example.com</code>. You
     * can't use an * for one of the middle labels, for example, <code>marketing.*.example.com</code>. In addition, the
     * * must replace the entire label; for example, you can't specify <code>prod*.example.com</code>.
     * </p>
     * 
     * @param name
     *        For <code>ChangeResourceRecordSets</code> requests, the name of the record that you want to create,
     *        update, or delete. For <code>ListResourceRecordSets</code> responses, the name of a record in the
     *        specified hosted zone.</p>
     *        <p>
     *        <b>ChangeResourceRecordSets Only</b>
     *        </p>
     *        <p>
     *        Enter a fully qualified domain name, for example, <code>www.example.com</code>. You can optionally include
     *        a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you
     *        specify is fully qualified. This means that Route 53 treats <code>www.example.com</code> (without a
     *        trailing dot) and <code>www.example.com.</code> (with a trailing dot) as identical.
     *        </p>
     *        <p>
     *        For information about how to specify characters other than <code>a-z</code>, <code>0-9</code>, and
     *        <code>-</code> (hyphen) and how to specify internationalized domain names, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name
     *        Format</a> in the <i>Amazon Route 53 Developer Guide</i>.
     *        </p>
     *        <p>
     *        You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example,
     *        <code>*.example.com</code>. Note the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        The * must replace the entire label. For example, you can't specify <code>*prod.example.com</code> or
     *        <code>prod*.example.com</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        The * can't replace any of the middle labels, for example, marketing.*.example.com.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you include * in any position other than the leftmost label in a domain name, DNS treats it as an *
     *        character (ASCII 42), not as a wildcard.
     *        </p>
     *        <important>
     *        <p>
     *        You can't use the * wildcard for resource records sets that have a type of NS.
     *        </p>
     *        </important></li>
     *        </ul>
     *        <p>
     *        You can use the * wildcard as the leftmost label in a domain name, for example, <code>*.example.com</code>
     *        . You can't use an * for one of the middle labels, for example, <code>marketing.*.example.com</code>. In
     *        addition, the * must replace the entire label; for example, you can't specify
     *        <code>prod*.example.com</code>.
     */

    public void setName(String name) {
        this.name = name;
    }

    /**
     * <p>
     * For <code>ChangeResourceRecordSets</code> requests, the name of the record that you want to create, update, or
     * delete. For <code>ListResourceRecordSets</code> responses, the name of a record in the specified hosted zone.
     * </p>
     * <p>
     * <b>ChangeResourceRecordSets Only</b>
     * </p>
     * <p>
     * Enter a fully qualified domain name, for example, <code>www.example.com</code>. You can optionally include a
     * trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is
     * fully qualified. This means that Route 53 treats <code>www.example.com</code> (without a trailing dot) and
     * <code>www.example.com.</code> (with a trailing dot) as identical.
     * </p>
     * <p>
     * For information about how to specify characters other than <code>a-z</code>, <code>0-9</code>, and <code>-</code>
     * (hyphen) and how to specify internationalized domain names, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name Format</a>
     * in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * <p>
     * You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example,
     * <code>*.example.com</code>. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * The * must replace the entire label. For example, you can't specify <code>*prod.example.com</code> or
     * <code>prod*.example.com</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * The * can't replace any of the middle labels, for example, marketing.*.example.com.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you include * in any position other than the leftmost label in a domain name, DNS treats it as an * character
     * (ASCII 42), not as a wildcard.
     * </p>
     * <important>
     * <p>
     * You can't use the * wildcard for resource records sets that have a type of NS.
     * </p>
     * </important></li>
     * </ul>
     * <p>
     * You can use the * wildcard as the leftmost label in a domain name, for example, <code>*.example.com</code>. You
     * can't use an * for one of the middle labels, for example, <code>marketing.*.example.com</code>. In addition, the
     * * must replace the entire label; for example, you can't specify <code>prod*.example.com</code>.
     * </p>
     * 
     * @return For <code>ChangeResourceRecordSets</code> requests, the name of the record that you want to create,
     *         update, or delete. For <code>ListResourceRecordSets</code> responses, the name of a record in the
     *         specified hosted zone.</p>
     *         <p>
     *         <b>ChangeResourceRecordSets Only</b>
     *         </p>
     *         <p>
     *         Enter a fully qualified domain name, for example, <code>www.example.com</code>. You can optionally
     *         include a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that
     *         you specify is fully qualified. This means that Route 53 treats <code>www.example.com</code> (without a
     *         trailing dot) and <code>www.example.com.</code> (with a trailing dot) as identical.
     *         </p>
     *         <p>
     *         For information about how to specify characters other than <code>a-z</code>, <code>0-9</code>, and
     *         <code>-</code> (hyphen) and how to specify internationalized domain names, see <a
     *         href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name
     *         Format</a> in the <i>Amazon Route 53 Developer Guide</i>.
     *         </p>
     *         <p>
     *         You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example,
     *         <code>*.example.com</code>. Note the following:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         The * must replace the entire label. For example, you can't specify <code>*prod.example.com</code> or
     *         <code>prod*.example.com</code>.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         The * can't replace any of the middle labels, for example, marketing.*.example.com.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         If you include * in any position other than the leftmost label in a domain name, DNS treats it as an *
     *         character (ASCII 42), not as a wildcard.
     *         </p>
     *         <important>
     *         <p>
     *         You can't use the * wildcard for resource records sets that have a type of NS.
     *         </p>
     *         </important></li>
     *         </ul>
     *         <p>
     *         You can use the * wildcard as the leftmost label in a domain name, for example,
     *         <code>*.example.com</code>. You can't use an * for one of the middle labels, for example,
     *         <code>marketing.*.example.com</code>. In addition, the * must replace the entire label; for example, you
     *         can't specify <code>prod*.example.com</code>.
     */

    public String getName() {
        return this.name;
    }

    /**
     * <p>
     * For <code>ChangeResourceRecordSets</code> requests, the name of the record that you want to create, update, or
     * delete. For <code>ListResourceRecordSets</code> responses, the name of a record in the specified hosted zone.
     * </p>
     * <p>
     * <b>ChangeResourceRecordSets Only</b>
     * </p>
     * <p>
     * Enter a fully qualified domain name, for example, <code>www.example.com</code>. You can optionally include a
     * trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is
     * fully qualified. This means that Route 53 treats <code>www.example.com</code> (without a trailing dot) and
     * <code>www.example.com.</code> (with a trailing dot) as identical.
     * </p>
     * <p>
     * For information about how to specify characters other than <code>a-z</code>, <code>0-9</code>, and <code>-</code>
     * (hyphen) and how to specify internationalized domain names, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name Format</a>
     * in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * <p>
     * You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example,
     * <code>*.example.com</code>. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * The * must replace the entire label. For example, you can't specify <code>*prod.example.com</code> or
     * <code>prod*.example.com</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * The * can't replace any of the middle labels, for example, marketing.*.example.com.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you include * in any position other than the leftmost label in a domain name, DNS treats it as an * character
     * (ASCII 42), not as a wildcard.
     * </p>
     * <important>
     * <p>
     * You can't use the * wildcard for resource records sets that have a type of NS.
     * </p>
     * </important></li>
     * </ul>
     * <p>
     * You can use the * wildcard as the leftmost label in a domain name, for example, <code>*.example.com</code>. You
     * can't use an * for one of the middle labels, for example, <code>marketing.*.example.com</code>. In addition, the
     * * must replace the entire label; for example, you can't specify <code>prod*.example.com</code>.
     * </p>
     * 
     * @param name
     *        For <code>ChangeResourceRecordSets</code> requests, the name of the record that you want to create,
     *        update, or delete. For <code>ListResourceRecordSets</code> responses, the name of a record in the
     *        specified hosted zone.</p>
     *        <p>
     *        <b>ChangeResourceRecordSets Only</b>
     *        </p>
     *        <p>
     *        Enter a fully qualified domain name, for example, <code>www.example.com</code>. You can optionally include
     *        a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you
     *        specify is fully qualified. This means that Route 53 treats <code>www.example.com</code> (without a
     *        trailing dot) and <code>www.example.com.</code> (with a trailing dot) as identical.
     *        </p>
     *        <p>
     *        For information about how to specify characters other than <code>a-z</code>, <code>0-9</code>, and
     *        <code>-</code> (hyphen) and how to specify internationalized domain names, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name
     *        Format</a> in the <i>Amazon Route 53 Developer Guide</i>.
     *        </p>
     *        <p>
     *        You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example,
     *        <code>*.example.com</code>. Note the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        The * must replace the entire label. For example, you can't specify <code>*prod.example.com</code> or
     *        <code>prod*.example.com</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        The * can't replace any of the middle labels, for example, marketing.*.example.com.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you include * in any position other than the leftmost label in a domain name, DNS treats it as an *
     *        character (ASCII 42), not as a wildcard.
     *        </p>
     *        <important>
     *        <p>
     *        You can't use the * wildcard for resource records sets that have a type of NS.
     *        </p>
     *        </important></li>
     *        </ul>
     *        <p>
     *        You can use the * wildcard as the leftmost label in a domain name, for example, <code>*.example.com</code>
     *        . You can't use an * for one of the middle labels, for example, <code>marketing.*.example.com</code>. In
     *        addition, the * must replace the entire label; for example, you can't specify
     *        <code>prod*.example.com</code>.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public ResourceRecordSet withName(String name) {
        setName(name);
        return this;
    }

    /**
     * <p>
     * The DNS record type. For information about different record types and how data is encoded for them, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS Resource
     * Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * <p>
     * Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     * <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code>
     * | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <p>
     * Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> | <code>AAAA</code>
     * | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> |
     * <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of weighted, latency, geolocation,
     * or failover resource record sets, specify the same value for all of the resource record sets in the group.
     * </p>
     * <p>
     * Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> | <code>MX</code> |
     * <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <note>
     * <p>
     * SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer
     * recommend that you create resource record sets for which the value of <code>Type</code> is <code>SPF</code>. RFC
     * 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</i>, has been updated
     * to say,
     * "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     * In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS Record
     * Type</a>.
     * </p>
     * </note>
     * <p>
     * Values for alias resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>CloudFront distributions:</b> <code>A</code>
     * </p>
     * <p>
     * If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution,
     * one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon S3 buckets:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that you're
     * creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     * </p>
     * <note>
     * <p>
     * If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't
     * route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is because the
     * alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the
     * zone apex isn't supported even for an alias record.
     * </p>
     * </note></li>
     * </ul>
     * 
     * @param type
     *        The DNS record type. For information about different record types and how data is encoded for them, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS
     *        Resource Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
     *        <p>
     *        Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     *        <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> |
     *        <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     *        </p>
     *        <p>
     *        Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> |
     *        <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> |
     *        <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of
     *        weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the
     *        resource record sets in the group.
     *        </p>
     *        <p>
     *        Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> |
     *        <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> |
     *        <code>TXT</code>
     *        </p>
     *        <note>
     *        <p>
     *        SPF records were formerly used to verify the identity of the sender of email messages. However, we no
     *        longer recommend that you create resource record sets for which the value of <code>Type</code> is
     *        <code>SPF</code>. RFC 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email,
     *        Version 1</i>, has been updated to say,
     *        "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     *        In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS
     *        Record Type</a>.
     *        </p>
     *        </note>
     *        <p>
     *        Values for alias resource record sets:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>CloudFront distributions:</b> <code>A</code>
     *        </p>
     *        <p>
     *        If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your
     *        distribution, one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon S3 buckets:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that
     *        you're creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     *        </p>
     *        <note>
     *        <p>
     *        If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you
     *        can't route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is
     *        because the alias record must have the same type as the record you're routing traffic to, and creating a
     *        CNAME record for the zone apex isn't supported even for an alias record.
     *        </p>
     *        </note></li>
     * @see RRType
     */

    public void setType(String type) {
        this.type = type;
    }

    /**
     * <p>
     * The DNS record type. For information about different record types and how data is encoded for them, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS Resource
     * Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * <p>
     * Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     * <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code>
     * | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <p>
     * Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> | <code>AAAA</code>
     * | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> |
     * <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of weighted, latency, geolocation,
     * or failover resource record sets, specify the same value for all of the resource record sets in the group.
     * </p>
     * <p>
     * Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> | <code>MX</code> |
     * <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <note>
     * <p>
     * SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer
     * recommend that you create resource record sets for which the value of <code>Type</code> is <code>SPF</code>. RFC
     * 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</i>, has been updated
     * to say,
     * "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     * In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS Record
     * Type</a>.
     * </p>
     * </note>
     * <p>
     * Values for alias resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>CloudFront distributions:</b> <code>A</code>
     * </p>
     * <p>
     * If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution,
     * one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon S3 buckets:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that you're
     * creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     * </p>
     * <note>
     * <p>
     * If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't
     * route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is because the
     * alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the
     * zone apex isn't supported even for an alias record.
     * </p>
     * </note></li>
     * </ul>
     * 
     * @return The DNS record type. For information about different record types and how data is encoded for them, see
     *         <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS
     *         Resource Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
     *         <p>
     *         Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     *         <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> |
     *         <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     *         </p>
     *         <p>
     *         Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> |
     *         <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> |
     *         <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of
     *         weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the
     *         resource record sets in the group.
     *         </p>
     *         <p>
     *         Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> |
     *         <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> |
     *         <code>TXT</code>
     *         </p>
     *         <note>
     *         <p>
     *         SPF records were formerly used to verify the identity of the sender of email messages. However, we no
     *         longer recommend that you create resource record sets for which the value of <code>Type</code> is
     *         <code>SPF</code>. RFC 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email,
     *         Version 1</i>, has been updated to say,
     *         "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     *         In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS
     *         Record Type</a>.
     *         </p>
     *         </note>
     *         <p>
     *         Values for alias resource record sets:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <b>CloudFront distributions:</b> <code>A</code>
     *         </p>
     *         <p>
     *         If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your
     *         distribution, one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <b>Amazon S3 buckets:</b> <code>A</code>
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that
     *         you're creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     *         </p>
     *         <note>
     *         <p>
     *         If you're creating an alias record that has the same name as the hosted zone (known as the zone apex),
     *         you can't route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This
     *         is because the alias record must have the same type as the record you're routing traffic to, and creating
     *         a CNAME record for the zone apex isn't supported even for an alias record.
     *         </p>
     *         </note></li>
     * @see RRType
     */

    public String getType() {
        return this.type;
    }

    /**
     * <p>
     * The DNS record type. For information about different record types and how data is encoded for them, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS Resource
     * Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * <p>
     * Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     * <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code>
     * | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <p>
     * Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> | <code>AAAA</code>
     * | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> |
     * <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of weighted, latency, geolocation,
     * or failover resource record sets, specify the same value for all of the resource record sets in the group.
     * </p>
     * <p>
     * Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> | <code>MX</code> |
     * <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <note>
     * <p>
     * SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer
     * recommend that you create resource record sets for which the value of <code>Type</code> is <code>SPF</code>. RFC
     * 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</i>, has been updated
     * to say,
     * "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     * In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS Record
     * Type</a>.
     * </p>
     * </note>
     * <p>
     * Values for alias resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>CloudFront distributions:</b> <code>A</code>
     * </p>
     * <p>
     * If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution,
     * one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon S3 buckets:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that you're
     * creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     * </p>
     * <note>
     * <p>
     * If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't
     * route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is because the
     * alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the
     * zone apex isn't supported even for an alias record.
     * </p>
     * </note></li>
     * </ul>
     * 
     * @param type
     *        The DNS record type. For information about different record types and how data is encoded for them, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS
     *        Resource Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
     *        <p>
     *        Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     *        <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> |
     *        <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     *        </p>
     *        <p>
     *        Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> |
     *        <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> |
     *        <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of
     *        weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the
     *        resource record sets in the group.
     *        </p>
     *        <p>
     *        Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> |
     *        <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> |
     *        <code>TXT</code>
     *        </p>
     *        <note>
     *        <p>
     *        SPF records were formerly used to verify the identity of the sender of email messages. However, we no
     *        longer recommend that you create resource record sets for which the value of <code>Type</code> is
     *        <code>SPF</code>. RFC 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email,
     *        Version 1</i>, has been updated to say,
     *        "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     *        In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS
     *        Record Type</a>.
     *        </p>
     *        </note>
     *        <p>
     *        Values for alias resource record sets:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>CloudFront distributions:</b> <code>A</code>
     *        </p>
     *        <p>
     *        If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your
     *        distribution, one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon S3 buckets:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that
     *        you're creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     *        </p>
     *        <note>
     *        <p>
     *        If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you
     *        can't route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is
     *        because the alias record must have the same type as the record you're routing traffic to, and creating a
     *        CNAME record for the zone apex isn't supported even for an alias record.
     *        </p>
     *        </note></li>
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see RRType
     */

    public ResourceRecordSet withType(String type) {
        setType(type);
        return this;
    }

    /**
     * <p>
     * The DNS record type. For information about different record types and how data is encoded for them, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS Resource
     * Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * <p>
     * Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     * <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code>
     * | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <p>
     * Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> | <code>AAAA</code>
     * | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> |
     * <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of weighted, latency, geolocation,
     * or failover resource record sets, specify the same value for all of the resource record sets in the group.
     * </p>
     * <p>
     * Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> | <code>MX</code> |
     * <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <note>
     * <p>
     * SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer
     * recommend that you create resource record sets for which the value of <code>Type</code> is <code>SPF</code>. RFC
     * 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</i>, has been updated
     * to say,
     * "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     * In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS Record
     * Type</a>.
     * </p>
     * </note>
     * <p>
     * Values for alias resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>CloudFront distributions:</b> <code>A</code>
     * </p>
     * <p>
     * If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution,
     * one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon S3 buckets:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that you're
     * creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     * </p>
     * <note>
     * <p>
     * If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't
     * route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is because the
     * alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the
     * zone apex isn't supported even for an alias record.
     * </p>
     * </note></li>
     * </ul>
     * 
     * @param type
     *        The DNS record type. For information about different record types and how data is encoded for them, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS
     *        Resource Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
     *        <p>
     *        Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     *        <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> |
     *        <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     *        </p>
     *        <p>
     *        Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> |
     *        <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> |
     *        <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of
     *        weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the
     *        resource record sets in the group.
     *        </p>
     *        <p>
     *        Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> |
     *        <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> |
     *        <code>TXT</code>
     *        </p>
     *        <note>
     *        <p>
     *        SPF records were formerly used to verify the identity of the sender of email messages. However, we no
     *        longer recommend that you create resource record sets for which the value of <code>Type</code> is
     *        <code>SPF</code>. RFC 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email,
     *        Version 1</i>, has been updated to say,
     *        "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     *        In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS
     *        Record Type</a>.
     *        </p>
     *        </note>
     *        <p>
     *        Values for alias resource record sets:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>CloudFront distributions:</b> <code>A</code>
     *        </p>
     *        <p>
     *        If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your
     *        distribution, one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon S3 buckets:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that
     *        you're creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     *        </p>
     *        <note>
     *        <p>
     *        If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you
     *        can't route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is
     *        because the alias record must have the same type as the record you're routing traffic to, and creating a
     *        CNAME record for the zone apex isn't supported even for an alias record.
     *        </p>
     *        </note></li>
     * @see RRType
     */

    public void setType(RRType type) {
        withType(type);
    }

    /**
     * <p>
     * The DNS record type. For information about different record types and how data is encoded for them, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS Resource
     * Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * <p>
     * Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     * <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code>
     * | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <p>
     * Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> | <code>AAAA</code>
     * | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> |
     * <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of weighted, latency, geolocation,
     * or failover resource record sets, specify the same value for all of the resource record sets in the group.
     * </p>
     * <p>
     * Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> | <code>MX</code> |
     * <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     * </p>
     * <note>
     * <p>
     * SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer
     * recommend that you create resource record sets for which the value of <code>Type</code> is <code>SPF</code>. RFC
     * 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</i>, has been updated
     * to say,
     * "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     * In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS Record
     * Type</a>.
     * </p>
     * </note>
     * <p>
     * Values for alias resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>CloudFront distributions:</b> <code>A</code>
     * </p>
     * <p>
     * If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution,
     * one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon S3 buckets:</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that you're
     * creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     * </p>
     * <note>
     * <p>
     * If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't
     * route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is because the
     * alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the
     * zone apex isn't supported even for an alias record.
     * </p>
     * </note></li>
     * </ul>
     * 
     * @param type
     *        The DNS record type. For information about different record types and how data is encoded for them, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS
     *        Resource Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
     *        <p>
     *        Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> |
     *        <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> |
     *        <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>
     *        </p>
     *        <p>
     *        Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> |
     *        <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> |
     *        <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of
     *        weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the
     *        resource record sets in the group.
     *        </p>
     *        <p>
     *        Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> |
     *        <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> |
     *        <code>TXT</code>
     *        </p>
     *        <note>
     *        <p>
     *        SPF records were formerly used to verify the identity of the sender of email messages. However, we no
     *        longer recommend that you create resource record sets for which the value of <code>Type</code> is
     *        <code>SPF</code>. RFC 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email,
     *        Version 1</i>, has been updated to say,
     *        "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it."
     *        In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS
     *        Record Type</a>.
     *        </p>
     *        </note>
     *        <p>
     *        Values for alias resource record sets:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>CloudFront distributions:</b> <code>A</code>
     *        </p>
     *        <p>
     *        If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your
     *        distribution, one with a value of <code>A</code> and one with a value of <code>AAAA</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon S3 buckets:</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that
     *        you're creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.
     *        </p>
     *        <note>
     *        <p>
     *        If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you
     *        can't route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is
     *        because the alias record must have the same type as the record you're routing traffic to, and creating a
     *        CNAME record for the zone apex isn't supported even for an alias record.
     *        </p>
     *        </note></li>
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see RRType
     */

    public ResourceRecordSet withType(RRType type) {
        this.type = type.toString();
        return this;
    }

    /**
     * <p>
     * <i>Resource record sets that have a routing policy other than simple:</i> An identifier that differentiates among
     * multiple resource record sets that have the same combination of name and type, such as multiple weighted resource
     * record sets named acme.example.com that have a type of A. In a group of resource record sets that have the same
     * name and type, the value of <code>SetIdentifier</code> must be unique for each resource record set.
     * </p>
     * <p>
     * For information about routing policies, see <a
     * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html">Choosing a Routing
     * Policy</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * 
     * @param setIdentifier
     *        <i>Resource record sets that have a routing policy other than simple:</i> An identifier that
     *        differentiates among multiple resource record sets that have the same combination of name and type, such
     *        as multiple weighted resource record sets named acme.example.com that have a type of A. In a group of
     *        resource record sets that have the same name and type, the value of <code>SetIdentifier</code> must be
     *        unique for each resource record set. </p>
     *        <p>
     *        For information about routing policies, see <a
     *        href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html">Choosing a Routing
     *        Policy</a> in the <i>Amazon Route 53 Developer Guide</i>.
     */

    public void setSetIdentifier(String setIdentifier) {
        this.setIdentifier = setIdentifier;
    }

    /**
     * <p>
     * <i>Resource record sets that have a routing policy other than simple:</i> An identifier that differentiates among
     * multiple resource record sets that have the same combination of name and type, such as multiple weighted resource
     * record sets named acme.example.com that have a type of A. In a group of resource record sets that have the same
     * name and type, the value of <code>SetIdentifier</code> must be unique for each resource record set.
     * </p>
     * <p>
     * For information about routing policies, see <a
     * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html">Choosing a Routing
     * Policy</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * 
     * @return <i>Resource record sets that have a routing policy other than simple:</i> An identifier that
     *         differentiates among multiple resource record sets that have the same combination of name and type, such
     *         as multiple weighted resource record sets named acme.example.com that have a type of A. In a group of
     *         resource record sets that have the same name and type, the value of <code>SetIdentifier</code> must be
     *         unique for each resource record set. </p>
     *         <p>
     *         For information about routing policies, see <a
     *         href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html">Choosing a Routing
     *         Policy</a> in the <i>Amazon Route 53 Developer Guide</i>.
     */

    public String getSetIdentifier() {
        return this.setIdentifier;
    }

    /**
     * <p>
     * <i>Resource record sets that have a routing policy other than simple:</i> An identifier that differentiates among
     * multiple resource record sets that have the same combination of name and type, such as multiple weighted resource
     * record sets named acme.example.com that have a type of A. In a group of resource record sets that have the same
     * name and type, the value of <code>SetIdentifier</code> must be unique for each resource record set.
     * </p>
     * <p>
     * For information about routing policies, see <a
     * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html">Choosing a Routing
     * Policy</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * 
     * @param setIdentifier
     *        <i>Resource record sets that have a routing policy other than simple:</i> An identifier that
     *        differentiates among multiple resource record sets that have the same combination of name and type, such
     *        as multiple weighted resource record sets named acme.example.com that have a type of A. In a group of
     *        resource record sets that have the same name and type, the value of <code>SetIdentifier</code> must be
     *        unique for each resource record set. </p>
     *        <p>
     *        For information about routing policies, see <a
     *        href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html">Choosing a Routing
     *        Policy</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public ResourceRecordSet withSetIdentifier(String setIdentifier) {
        setSetIdentifier(setIdentifier);
        return this;
    }

    /**
     * <p>
     * <i>Weighted resource record sets only:</i> Among resource record sets that have the same combination of DNS name
     * and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the
     * current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have
     * the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's
     * weight to the total. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You must specify a value for the <code>Weight</code> element for every weighted resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can only specify one <code>ResourceRecord</code> per weighted resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can't create latency, failover, or geolocation resource record sets that have the same values for the
     * <code>Name</code> and <code>Type</code> elements as weighted resource record sets.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can create a maximum of 100 weighted resource record sets that have the same values for the <code>Name</code>
     * and <code>Type</code> elements.
     * </p>
     * </li>
     * <li>
     * <p>
     * For weighted (but not weighted alias) resource record sets, if you set <code>Weight</code> to <code>0</code> for
     * a resource record set, Route 53 never responds to queries with the applicable value for that resource record set.
     * However, if you set <code>Weight</code> to <code>0</code> for all resource record sets that have the same
     * combination of DNS name and type, traffic is routed to all resources with equal probability.
     * </p>
     * <p>
     * The effect of setting <code>Weight</code> to <code>0</code> is different when you associate health checks with
     * weighted resource record sets. For more information, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring-options.html">Options for
     * Configuring Route 53 Active-Active and Active-Passive Failover</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * </li>
     * </ul>
     * 
     * @param weight
     *        <i>Weighted resource record sets only:</i> Among resource record sets that have the same combination of
     *        DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to
     *        using the current resource record set. Route 53 calculates the sum of the weights for the resource record
     *        sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the
     *        ratio of a resource's weight to the total. Note the following:</p>
     *        <ul>
     *        <li>
     *        <p>
     *        You must specify a value for the <code>Weight</code> element for every weighted resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can only specify one <code>ResourceRecord</code> per weighted resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can't create latency, failover, or geolocation resource record sets that have the same values for the
     *        <code>Name</code> and <code>Type</code> elements as weighted resource record sets.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can create a maximum of 100 weighted resource record sets that have the same values for the
     *        <code>Name</code> and <code>Type</code> elements.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        For weighted (but not weighted alias) resource record sets, if you set <code>Weight</code> to
     *        <code>0</code> for a resource record set, Route 53 never responds to queries with the applicable value for
     *        that resource record set. However, if you set <code>Weight</code> to <code>0</code> for all resource
     *        record sets that have the same combination of DNS name and type, traffic is routed to all resources with
     *        equal probability.
     *        </p>
     *        <p>
     *        The effect of setting <code>Weight</code> to <code>0</code> is different when you associate health checks
     *        with weighted resource record sets. For more information, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring-options.html"
     *        >Options for Configuring Route 53 Active-Active and Active-Passive Failover</a> in the <i>Amazon Route 53
     *        Developer Guide</i>.
     *        </p>
     *        </li>
     */

    public void setWeight(Long weight) {
        this.weight = weight;
    }

    /**
     * <p>
     * <i>Weighted resource record sets only:</i> Among resource record sets that have the same combination of DNS name
     * and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the
     * current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have
     * the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's
     * weight to the total. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You must specify a value for the <code>Weight</code> element for every weighted resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can only specify one <code>ResourceRecord</code> per weighted resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can't create latency, failover, or geolocation resource record sets that have the same values for the
     * <code>Name</code> and <code>Type</code> elements as weighted resource record sets.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can create a maximum of 100 weighted resource record sets that have the same values for the <code>Name</code>
     * and <code>Type</code> elements.
     * </p>
     * </li>
     * <li>
     * <p>
     * For weighted (but not weighted alias) resource record sets, if you set <code>Weight</code> to <code>0</code> for
     * a resource record set, Route 53 never responds to queries with the applicable value for that resource record set.
     * However, if you set <code>Weight</code> to <code>0</code> for all resource record sets that have the same
     * combination of DNS name and type, traffic is routed to all resources with equal probability.
     * </p>
     * <p>
     * The effect of setting <code>Weight</code> to <code>0</code> is different when you associate health checks with
     * weighted resource record sets. For more information, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring-options.html">Options for
     * Configuring Route 53 Active-Active and Active-Passive Failover</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * </li>
     * </ul>
     * 
     * @return <i>Weighted resource record sets only:</i> Among resource record sets that have the same combination of
     *         DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to
     *         using the current resource record set. Route 53 calculates the sum of the weights for the resource record
     *         sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the
     *         ratio of a resource's weight to the total. Note the following:</p>
     *         <ul>
     *         <li>
     *         <p>
     *         You must specify a value for the <code>Weight</code> element for every weighted resource record set.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         You can only specify one <code>ResourceRecord</code> per weighted resource record set.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         You can't create latency, failover, or geolocation resource record sets that have the same values for the
     *         <code>Name</code> and <code>Type</code> elements as weighted resource record sets.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         You can create a maximum of 100 weighted resource record sets that have the same values for the
     *         <code>Name</code> and <code>Type</code> elements.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         For weighted (but not weighted alias) resource record sets, if you set <code>Weight</code> to
     *         <code>0</code> for a resource record set, Route 53 never responds to queries with the applicable value
     *         for that resource record set. However, if you set <code>Weight</code> to <code>0</code> for all resource
     *         record sets that have the same combination of DNS name and type, traffic is routed to all resources with
     *         equal probability.
     *         </p>
     *         <p>
     *         The effect of setting <code>Weight</code> to <code>0</code> is different when you associate health checks
     *         with weighted resource record sets. For more information, see <a
     *         href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring-options.html"
     *         >Options for Configuring Route 53 Active-Active and Active-Passive Failover</a> in the <i>Amazon Route 53
     *         Developer Guide</i>.
     *         </p>
     *         </li>
     */

    public Long getWeight() {
        return this.weight;
    }

    /**
     * <p>
     * <i>Weighted resource record sets only:</i> Among resource record sets that have the same combination of DNS name
     * and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the
     * current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have
     * the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource's
     * weight to the total. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You must specify a value for the <code>Weight</code> element for every weighted resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can only specify one <code>ResourceRecord</code> per weighted resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can't create latency, failover, or geolocation resource record sets that have the same values for the
     * <code>Name</code> and <code>Type</code> elements as weighted resource record sets.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can create a maximum of 100 weighted resource record sets that have the same values for the <code>Name</code>
     * and <code>Type</code> elements.
     * </p>
     * </li>
     * <li>
     * <p>
     * For weighted (but not weighted alias) resource record sets, if you set <code>Weight</code> to <code>0</code> for
     * a resource record set, Route 53 never responds to queries with the applicable value for that resource record set.
     * However, if you set <code>Weight</code> to <code>0</code> for all resource record sets that have the same
     * combination of DNS name and type, traffic is routed to all resources with equal probability.
     * </p>
     * <p>
     * The effect of setting <code>Weight</code> to <code>0</code> is different when you associate health checks with
     * weighted resource record sets. For more information, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring-options.html">Options for
     * Configuring Route 53 Active-Active and Active-Passive Failover</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * </li>
     * </ul>
     * 
     * @param weight
     *        <i>Weighted resource record sets only:</i> Among resource record sets that have the same combination of
     *        DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to
     *        using the current resource record set. Route 53 calculates the sum of the weights for the resource record
     *        sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the
     *        ratio of a resource's weight to the total. Note the following:</p>
     *        <ul>
     *        <li>
     *        <p>
     *        You must specify a value for the <code>Weight</code> element for every weighted resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can only specify one <code>ResourceRecord</code> per weighted resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can't create latency, failover, or geolocation resource record sets that have the same values for the
     *        <code>Name</code> and <code>Type</code> elements as weighted resource record sets.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can create a maximum of 100 weighted resource record sets that have the same values for the
     *        <code>Name</code> and <code>Type</code> elements.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        For weighted (but not weighted alias) resource record sets, if you set <code>Weight</code> to
     *        <code>0</code> for a resource record set, Route 53 never responds to queries with the applicable value for
     *        that resource record set. However, if you set <code>Weight</code> to <code>0</code> for all resource
     *        record sets that have the same combination of DNS name and type, traffic is routed to all resources with
     *        equal probability.
     *        </p>
     *        <p>
     *        The effect of setting <code>Weight</code> to <code>0</code> is different when you associate health checks
     *        with weighted resource record sets. For more information, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring-options.html"
     *        >Options for Configuring Route 53 Active-Active and Active-Passive Failover</a> in the <i>Amazon Route 53
     *        Developer Guide</i>.
     *        </p>
     *        </li>
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public ResourceRecordSet withWeight(Long weight) {
        setWeight(weight);
        return this;
    }

    /**
     * <p>
     * <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that this
     * resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or an ELB load
     * balancer, and is referred to by an IP address or a DNS domain name, depending on the record type.
     * </p>
     * <note>
     * <p>
     * Creating latency and latency alias resource record sets in private hosted zones is not supported.
     * </p>
     * </note>
     * <p>
     * When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency resource
     * record sets, Route 53 selects the latency resource record set that has the lowest latency between the end user
     * and the associated Amazon EC2 Region. Route 53 then returns the value that is associated with the selected
     * resource record set.
     * </p>
     * <p>
     * Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You can only specify one <code>ResourceRecord</code> per latency resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can only create one latency resource record set for each Amazon EC2 Region.
     * </p>
     * </li>
     * <li>
     * <p>
     * You aren't required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will choose the
     * region with the best latency from among the regions that you create latency resource record sets for.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can't create non-latency resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as latency resource record sets.
     * </p>
     * </li>
     * </ul>
     * 
     * @param region
     *        <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that
     *        this resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or
     *        an ELB load balancer, and is referred to by an IP address or a DNS domain name, depending on the record
     *        type.</p> <note>
     *        <p>
     *        Creating latency and latency alias resource record sets in private hosted zones is not supported.
     *        </p>
     *        </note>
     *        <p>
     *        When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency
     *        resource record sets, Route 53 selects the latency resource record set that has the lowest latency between
     *        the end user and the associated Amazon EC2 Region. Route 53 then returns the value that is associated with
     *        the selected resource record set.
     *        </p>
     *        <p>
     *        Note the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        You can only specify one <code>ResourceRecord</code> per latency resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can only create one latency resource record set for each Amazon EC2 Region.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You aren't required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will
     *        choose the region with the best latency from among the regions that you create latency resource record
     *        sets for.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can't create non-latency resource record sets that have the same values for the <code>Name</code> and
     *        <code>Type</code> elements as latency resource record sets.
     *        </p>
     *        </li>
     * @see ResourceRecordSetRegion
     */

    public void setRegion(String region) {
        this.region = region;
    }

    /**
     * <p>
     * <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that this
     * resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or an ELB load
     * balancer, and is referred to by an IP address or a DNS domain name, depending on the record type.
     * </p>
     * <note>
     * <p>
     * Creating latency and latency alias resource record sets in private hosted zones is not supported.
     * </p>
     * </note>
     * <p>
     * When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency resource
     * record sets, Route 53 selects the latency resource record set that has the lowest latency between the end user
     * and the associated Amazon EC2 Region. Route 53 then returns the value that is associated with the selected
     * resource record set.
     * </p>
     * <p>
     * Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You can only specify one <code>ResourceRecord</code> per latency resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can only create one latency resource record set for each Amazon EC2 Region.
     * </p>
     * </li>
     * <li>
     * <p>
     * You aren't required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will choose the
     * region with the best latency from among the regions that you create latency resource record sets for.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can't create non-latency resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as latency resource record sets.
     * </p>
     * </li>
     * </ul>
     * 
     * @return <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that
     *         this resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or
     *         an ELB load balancer, and is referred to by an IP address or a DNS domain name, depending on the record
     *         type.</p> <note>
     *         <p>
     *         Creating latency and latency alias resource record sets in private hosted zones is not supported.
     *         </p>
     *         </note>
     *         <p>
     *         When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency
     *         resource record sets, Route 53 selects the latency resource record set that has the lowest latency
     *         between the end user and the associated Amazon EC2 Region. Route 53 then returns the value that is
     *         associated with the selected resource record set.
     *         </p>
     *         <p>
     *         Note the following:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         You can only specify one <code>ResourceRecord</code> per latency resource record set.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         You can only create one latency resource record set for each Amazon EC2 Region.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         You aren't required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will
     *         choose the region with the best latency from among the regions that you create latency resource record
     *         sets for.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         You can't create non-latency resource record sets that have the same values for the <code>Name</code> and
     *         <code>Type</code> elements as latency resource record sets.
     *         </p>
     *         </li>
     * @see ResourceRecordSetRegion
     */

    public String getRegion() {
        return this.region;
    }

    /**
     * <p>
     * <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that this
     * resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or an ELB load
     * balancer, and is referred to by an IP address or a DNS domain name, depending on the record type.
     * </p>
     * <note>
     * <p>
     * Creating latency and latency alias resource record sets in private hosted zones is not supported.
     * </p>
     * </note>
     * <p>
     * When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency resource
     * record sets, Route 53 selects the latency resource record set that has the lowest latency between the end user
     * and the associated Amazon EC2 Region. Route 53 then returns the value that is associated with the selected
     * resource record set.
     * </p>
     * <p>
     * Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You can only specify one <code>ResourceRecord</code> per latency resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can only create one latency resource record set for each Amazon EC2 Region.
     * </p>
     * </li>
     * <li>
     * <p>
     * You aren't required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will choose the
     * region with the best latency from among the regions that you create latency resource record sets for.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can't create non-latency resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as latency resource record sets.
     * </p>
     * </li>
     * </ul>
     * 
     * @param region
     *        <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that
     *        this resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or
     *        an ELB load balancer, and is referred to by an IP address or a DNS domain name, depending on the record
     *        type.</p> <note>
     *        <p>
     *        Creating latency and latency alias resource record sets in private hosted zones is not supported.
     *        </p>
     *        </note>
     *        <p>
     *        When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency
     *        resource record sets, Route 53 selects the latency resource record set that has the lowest latency between
     *        the end user and the associated Amazon EC2 Region. Route 53 then returns the value that is associated with
     *        the selected resource record set.
     *        </p>
     *        <p>
     *        Note the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        You can only specify one <code>ResourceRecord</code> per latency resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can only create one latency resource record set for each Amazon EC2 Region.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You aren't required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will
     *        choose the region with the best latency from among the regions that you create latency resource record
     *        sets for.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can't create non-latency resource record sets that have the same values for the <code>Name</code> and
     *        <code>Type</code> elements as latency resource record sets.
     *        </p>
     *        </li>
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see ResourceRecordSetRegion
     */

    public ResourceRecordSet withRegion(String region) {
        setRegion(region);
        return this;
    }

    /**
     * <p>
     * <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that this
     * resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or an ELB load
     * balancer, and is referred to by an IP address or a DNS domain name, depending on the record type.
     * </p>
     * <note>
     * <p>
     * Creating latency and latency alias resource record sets in private hosted zones is not supported.
     * </p>
     * </note>
     * <p>
     * When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency resource
     * record sets, Route 53 selects the latency resource record set that has the lowest latency between the end user
     * and the associated Amazon EC2 Region. Route 53 then returns the value that is associated with the selected
     * resource record set.
     * </p>
     * <p>
     * Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You can only specify one <code>ResourceRecord</code> per latency resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can only create one latency resource record set for each Amazon EC2 Region.
     * </p>
     * </li>
     * <li>
     * <p>
     * You aren't required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will choose the
     * region with the best latency from among the regions that you create latency resource record sets for.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can't create non-latency resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as latency resource record sets.
     * </p>
     * </li>
     * </ul>
     * 
     * @param region
     *        <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that
     *        this resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or
     *        an ELB load balancer, and is referred to by an IP address or a DNS domain name, depending on the record
     *        type.</p> <note>
     *        <p>
     *        Creating latency and latency alias resource record sets in private hosted zones is not supported.
     *        </p>
     *        </note>
     *        <p>
     *        When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency
     *        resource record sets, Route 53 selects the latency resource record set that has the lowest latency between
     *        the end user and the associated Amazon EC2 Region. Route 53 then returns the value that is associated with
     *        the selected resource record set.
     *        </p>
     *        <p>
     *        Note the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        You can only specify one <code>ResourceRecord</code> per latency resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can only create one latency resource record set for each Amazon EC2 Region.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You aren't required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will
     *        choose the region with the best latency from among the regions that you create latency resource record
     *        sets for.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can't create non-latency resource record sets that have the same values for the <code>Name</code> and
     *        <code>Type</code> elements as latency resource record sets.
     *        </p>
     *        </li>
     * @see ResourceRecordSetRegion
     */

    public void setRegion(ResourceRecordSetRegion region) {
        withRegion(region);
    }

    /**
     * <p>
     * <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that this
     * resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or an ELB load
     * balancer, and is referred to by an IP address or a DNS domain name, depending on the record type.
     * </p>
     * <note>
     * <p>
     * Creating latency and latency alias resource record sets in private hosted zones is not supported.
     * </p>
     * </note>
     * <p>
     * When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency resource
     * record sets, Route 53 selects the latency resource record set that has the lowest latency between the end user
     * and the associated Amazon EC2 Region. Route 53 then returns the value that is associated with the selected
     * resource record set.
     * </p>
     * <p>
     * Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You can only specify one <code>ResourceRecord</code> per latency resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can only create one latency resource record set for each Amazon EC2 Region.
     * </p>
     * </li>
     * <li>
     * <p>
     * You aren't required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will choose the
     * region with the best latency from among the regions that you create latency resource record sets for.
     * </p>
     * </li>
     * <li>
     * <p>
     * You can't create non-latency resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as latency resource record sets.
     * </p>
     * </li>
     * </ul>
     * 
     * @param region
     *        <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that
     *        this resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or
     *        an ELB load balancer, and is referred to by an IP address or a DNS domain name, depending on the record
     *        type.</p> <note>
     *        <p>
     *        Creating latency and latency alias resource record sets in private hosted zones is not supported.
     *        </p>
     *        </note>
     *        <p>
     *        When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency
     *        resource record sets, Route 53 selects the latency resource record set that has the lowest latency between
     *        the end user and the associated Amazon EC2 Region. Route 53 then returns the value that is associated with
     *        the selected resource record set.
     *        </p>
     *        <p>
     *        Note the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        You can only specify one <code>ResourceRecord</code> per latency resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can only create one latency resource record set for each Amazon EC2 Region.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You aren't required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will
     *        choose the region with the best latency from among the regions that you create latency resource record
     *        sets for.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You can't create non-latency resource record sets that have the same values for the <code>Name</code> and
     *        <code>Type</code> elements as latency resource record sets.
     *        </p>
     *        </li>
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see ResourceRecordSetRegion
     */

    public ResourceRecordSet withRegion(ResourceRecordSetRegion region) {
        this.region = region.toString();
        return this;
    }

    /**
     * <p>
     * <i>Geolocation resource record sets only:</i> A complex type that lets you control how Amazon Route 53 responds
     * to DNS queries based on the geographic origin of the query. For example, if you want all queries from Africa to
     * be routed to a web server with an IP address of <code>192.0.2.111</code>, create a resource record set with a
     * <code>Type</code> of <code>A</code> and a <code>ContinentCode</code> of <code>AF</code>.
     * </p>
     * <note>
     * <p>
     * Creating geolocation and geolocation alias resource record sets in private hosted zones is not supported.
     * </p>
     * </note>
     * <p>
     * If you create separate resource record sets for overlapping geographic regions (for example, one resource record
     * set for a continent and one for a country on the same continent), priority goes to the smallest geographic
     * region. This allows you to route most queries for a continent to one resource and to route queries for a country
     * on that continent to a different resource.
     * </p>
     * <p>
     * You can't create two geolocation resource record sets that specify the same geographic location.
     * </p>
     * <p>
     * The value <code>*</code> in the <code>CountryCode</code> element matches all geographic locations that aren't
     * specified in other geolocation resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements.
     * </p>
     * <important>
     * <p>
     * Geolocation works by mapping IP addresses to locations. However, some IP addresses aren't mapped to geographic
     * locations, so even if you create geolocation resource record sets that cover all seven continents, Route 53 will
     * receive some DNS queries from locations that it can't identify. We recommend that you create a resource record
     * set for which the value of <code>CountryCode</code> is <code>*</code>, which handles both queries that come from
     * locations for which you haven't created geolocation resource record sets and queries from IP addresses that
     * aren't mapped to a location. If you don't create a <code>*</code> resource record set, Route 53 returns a
     * "no answer" response for queries from those locations.
     * </p>
     * </important>
     * <p>
     * You can't create non-geolocation resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as geolocation resource record sets.
     * </p>
     * 
     * @param geoLocation
     *        <i>Geolocation resource record sets only:</i> A complex type that lets you control how Amazon Route 53
     *        responds to DNS queries based on the geographic origin of the query. For example, if you want all queries
     *        from Africa to be routed to a web server with an IP address of <code>192.0.2.111</code>, create a resource
     *        record set with a <code>Type</code> of <code>A</code> and a <code>ContinentCode</code> of <code>AF</code>
     *        .</p> <note>
     *        <p>
     *        Creating geolocation and geolocation alias resource record sets in private hosted zones is not supported.
     *        </p>
     *        </note>
     *        <p>
     *        If you create separate resource record sets for overlapping geographic regions (for example, one resource
     *        record set for a continent and one for a country on the same continent), priority goes to the smallest
     *        geographic region. This allows you to route most queries for a continent to one resource and to route
     *        queries for a country on that continent to a different resource.
     *        </p>
     *        <p>
     *        You can't create two geolocation resource record sets that specify the same geographic location.
     *        </p>
     *        <p>
     *        The value <code>*</code> in the <code>CountryCode</code> element matches all geographic locations that
     *        aren't specified in other geolocation resource record sets that have the same values for the
     *        <code>Name</code> and <code>Type</code> elements.
     *        </p>
     *        <important>
     *        <p>
     *        Geolocation works by mapping IP addresses to locations. However, some IP addresses aren't mapped to
     *        geographic locations, so even if you create geolocation resource record sets that cover all seven
     *        continents, Route 53 will receive some DNS queries from locations that it can't identify. We recommend
     *        that you create a resource record set for which the value of <code>CountryCode</code> is <code>*</code>,
     *        which handles both queries that come from locations for which you haven't created geolocation resource
     *        record sets and queries from IP addresses that aren't mapped to a location. If you don't create a
     *        <code>*</code> resource record set, Route 53 returns a "no answer" response for queries from those
     *        locations.
     *        </p>
     *        </important>
     *        <p>
     *        You can't create non-geolocation resource record sets that have the same values for the <code>Name</code>
     *        and <code>Type</code> elements as geolocation resource record sets.
     */

    public void setGeoLocation(GeoLocation geoLocation) {
        this.geoLocation = geoLocation;
    }

    /**
     * <p>
     * <i>Geolocation resource record sets only:</i> A complex type that lets you control how Amazon Route 53 responds
     * to DNS queries based on the geographic origin of the query. For example, if you want all queries from Africa to
     * be routed to a web server with an IP address of <code>192.0.2.111</code>, create a resource record set with a
     * <code>Type</code> of <code>A</code> and a <code>ContinentCode</code> of <code>AF</code>.
     * </p>
     * <note>
     * <p>
     * Creating geolocation and geolocation alias resource record sets in private hosted zones is not supported.
     * </p>
     * </note>
     * <p>
     * If you create separate resource record sets for overlapping geographic regions (for example, one resource record
     * set for a continent and one for a country on the same continent), priority goes to the smallest geographic
     * region. This allows you to route most queries for a continent to one resource and to route queries for a country
     * on that continent to a different resource.
     * </p>
     * <p>
     * You can't create two geolocation resource record sets that specify the same geographic location.
     * </p>
     * <p>
     * The value <code>*</code> in the <code>CountryCode</code> element matches all geographic locations that aren't
     * specified in other geolocation resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements.
     * </p>
     * <important>
     * <p>
     * Geolocation works by mapping IP addresses to locations. However, some IP addresses aren't mapped to geographic
     * locations, so even if you create geolocation resource record sets that cover all seven continents, Route 53 will
     * receive some DNS queries from locations that it can't identify. We recommend that you create a resource record
     * set for which the value of <code>CountryCode</code> is <code>*</code>, which handles both queries that come from
     * locations for which you haven't created geolocation resource record sets and queries from IP addresses that
     * aren't mapped to a location. If you don't create a <code>*</code> resource record set, Route 53 returns a
     * "no answer" response for queries from those locations.
     * </p>
     * </important>
     * <p>
     * You can't create non-geolocation resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as geolocation resource record sets.
     * </p>
     * 
     * @return <i>Geolocation resource record sets only:</i> A complex type that lets you control how Amazon Route 53
     *         responds to DNS queries based on the geographic origin of the query. For example, if you want all queries
     *         from Africa to be routed to a web server with an IP address of <code>192.0.2.111</code>, create a
     *         resource record set with a <code>Type</code> of <code>A</code> and a <code>ContinentCode</code> of
     *         <code>AF</code>.</p> <note>
     *         <p>
     *         Creating geolocation and geolocation alias resource record sets in private hosted zones is not supported.
     *         </p>
     *         </note>
     *         <p>
     *         If you create separate resource record sets for overlapping geographic regions (for example, one resource
     *         record set for a continent and one for a country on the same continent), priority goes to the smallest
     *         geographic region. This allows you to route most queries for a continent to one resource and to route
     *         queries for a country on that continent to a different resource.
     *         </p>
     *         <p>
     *         You can't create two geolocation resource record sets that specify the same geographic location.
     *         </p>
     *         <p>
     *         The value <code>*</code> in the <code>CountryCode</code> element matches all geographic locations that
     *         aren't specified in other geolocation resource record sets that have the same values for the
     *         <code>Name</code> and <code>Type</code> elements.
     *         </p>
     *         <important>
     *         <p>
     *         Geolocation works by mapping IP addresses to locations. However, some IP addresses aren't mapped to
     *         geographic locations, so even if you create geolocation resource record sets that cover all seven
     *         continents, Route 53 will receive some DNS queries from locations that it can't identify. We recommend
     *         that you create a resource record set for which the value of <code>CountryCode</code> is <code>*</code>,
     *         which handles both queries that come from locations for which you haven't created geolocation resource
     *         record sets and queries from IP addresses that aren't mapped to a location. If you don't create a
     *         <code>*</code> resource record set, Route 53 returns a "no answer" response for queries from those
     *         locations.
     *         </p>
     *         </important>
     *         <p>
     *         You can't create non-geolocation resource record sets that have the same values for the <code>Name</code>
     *         and <code>Type</code> elements as geolocation resource record sets.
     */

    public GeoLocation getGeoLocation() {
        return this.geoLocation;
    }

    /**
     * <p>
     * <i>Geolocation resource record sets only:</i> A complex type that lets you control how Amazon Route 53 responds
     * to DNS queries based on the geographic origin of the query. For example, if you want all queries from Africa to
     * be routed to a web server with an IP address of <code>192.0.2.111</code>, create a resource record set with a
     * <code>Type</code> of <code>A</code> and a <code>ContinentCode</code> of <code>AF</code>.
     * </p>
     * <note>
     * <p>
     * Creating geolocation and geolocation alias resource record sets in private hosted zones is not supported.
     * </p>
     * </note>
     * <p>
     * If you create separate resource record sets for overlapping geographic regions (for example, one resource record
     * set for a continent and one for a country on the same continent), priority goes to the smallest geographic
     * region. This allows you to route most queries for a continent to one resource and to route queries for a country
     * on that continent to a different resource.
     * </p>
     * <p>
     * You can't create two geolocation resource record sets that specify the same geographic location.
     * </p>
     * <p>
     * The value <code>*</code> in the <code>CountryCode</code> element matches all geographic locations that aren't
     * specified in other geolocation resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements.
     * </p>
     * <important>
     * <p>
     * Geolocation works by mapping IP addresses to locations. However, some IP addresses aren't mapped to geographic
     * locations, so even if you create geolocation resource record sets that cover all seven continents, Route 53 will
     * receive some DNS queries from locations that it can't identify. We recommend that you create a resource record
     * set for which the value of <code>CountryCode</code> is <code>*</code>, which handles both queries that come from
     * locations for which you haven't created geolocation resource record sets and queries from IP addresses that
     * aren't mapped to a location. If you don't create a <code>*</code> resource record set, Route 53 returns a
     * "no answer" response for queries from those locations.
     * </p>
     * </important>
     * <p>
     * You can't create non-geolocation resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as geolocation resource record sets.
     * </p>
     * 
     * @param geoLocation
     *        <i>Geolocation resource record sets only:</i> A complex type that lets you control how Amazon Route 53
     *        responds to DNS queries based on the geographic origin of the query. For example, if you want all queries
     *        from Africa to be routed to a web server with an IP address of <code>192.0.2.111</code>, create a resource
     *        record set with a <code>Type</code> of <code>A</code> and a <code>ContinentCode</code> of <code>AF</code>
     *        .</p> <note>
     *        <p>
     *        Creating geolocation and geolocation alias resource record sets in private hosted zones is not supported.
     *        </p>
     *        </note>
     *        <p>
     *        If you create separate resource record sets for overlapping geographic regions (for example, one resource
     *        record set for a continent and one for a country on the same continent), priority goes to the smallest
     *        geographic region. This allows you to route most queries for a continent to one resource and to route
     *        queries for a country on that continent to a different resource.
     *        </p>
     *        <p>
     *        You can't create two geolocation resource record sets that specify the same geographic location.
     *        </p>
     *        <p>
     *        The value <code>*</code> in the <code>CountryCode</code> element matches all geographic locations that
     *        aren't specified in other geolocation resource record sets that have the same values for the
     *        <code>Name</code> and <code>Type</code> elements.
     *        </p>
     *        <important>
     *        <p>
     *        Geolocation works by mapping IP addresses to locations. However, some IP addresses aren't mapped to
     *        geographic locations, so even if you create geolocation resource record sets that cover all seven
     *        continents, Route 53 will receive some DNS queries from locations that it can't identify. We recommend
     *        that you create a resource record set for which the value of <code>CountryCode</code> is <code>*</code>,
     *        which handles both queries that come from locations for which you haven't created geolocation resource
     *        record sets and queries from IP addresses that aren't mapped to a location. If you don't create a
     *        <code>*</code> resource record set, Route 53 returns a "no answer" response for queries from those
     *        locations.
     *        </p>
     *        </important>
     *        <p>
     *        You can't create non-geolocation resource record sets that have the same values for the <code>Name</code>
     *        and <code>Type</code> elements as geolocation resource record sets.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public ResourceRecordSet withGeoLocation(GeoLocation geoLocation) {
        setGeoLocation(geoLocation);
        return this;
    }

    /**
     * <p>
     * <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code> element to
     * two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the value for
     * <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>. In addition, you
     * include the <code>HealthCheckId</code> element and specify the health check that you want Amazon Route 53 to
     * perform for each resource record set.
     * </p>
     * <p>
     * Except where noted, the following failover behaviors assume that you have included the <code>HealthCheckId</code>
     * element in both resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable value from
     * the primary resource record set regardless of the health of the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route 53
     * responds to DNS queries with the applicable value from the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable value
     * from the primary resource record set regardless of the health of the primary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the primary
     * resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable value from the
     * secondary resource record set. This is true regardless of the health of the associated endpoint.
     * </p>
     * </li>
     * </ul>
     * <p>
     * You can't create non-failover resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as failover resource record sets.
     * </p>
     * <p>
     * For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code> element and
     * set the value to true.
     * </p>
     * <p>
     * For more information about configuring failover for Route 53, see the following topics in the <i>Amazon Route 53
     * Developer Guide</i>:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and
     * DNS Failover</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     * Configuring Failover in a Private Hosted Zone</a>
     * </p>
     * </li>
     * </ul>
     * 
     * @param failover
     *        <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code>
     *        element to two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the
     *        value for <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>. In
     *        addition, you include the <code>HealthCheckId</code> element and specify the health check that you want
     *        Amazon Route 53 to perform for each resource record set.</p>
     *        <p>
     *        Except where noted, the following failover behaviors assume that you have included the
     *        <code>HealthCheckId</code> element in both resource record sets:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable
     *        value from the primary resource record set regardless of the health of the secondary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route
     *        53 responds to DNS queries with the applicable value from the secondary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable
     *        value from the primary resource record set regardless of the health of the primary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the
     *        primary resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable
     *        value from the secondary resource record set. This is true regardless of the health of the associated
     *        endpoint.
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        You can't create non-failover resource record sets that have the same values for the <code>Name</code> and
     *        <code>Type</code> elements as failover resource record sets.
     *        </p>
     *        <p>
     *        For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code>
     *        element and set the value to true.
     *        </p>
     *        <p>
     *        For more information about configuring failover for Route 53, see the following topics in the <i>Amazon
     *        Route 53 Developer Guide</i>:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health
     *        Checks and DNS Failover</a>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     *        Configuring Failover in a Private Hosted Zone</a>
     *        </p>
     *        </li>
     * @see ResourceRecordSetFailover
     */

    public void setFailover(String failover) {
        this.failover = failover;
    }

    /**
     * <p>
     * <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code> element to
     * two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the value for
     * <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>. In addition, you
     * include the <code>HealthCheckId</code> element and specify the health check that you want Amazon Route 53 to
     * perform for each resource record set.
     * </p>
     * <p>
     * Except where noted, the following failover behaviors assume that you have included the <code>HealthCheckId</code>
     * element in both resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable value from
     * the primary resource record set regardless of the health of the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route 53
     * responds to DNS queries with the applicable value from the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable value
     * from the primary resource record set regardless of the health of the primary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the primary
     * resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable value from the
     * secondary resource record set. This is true regardless of the health of the associated endpoint.
     * </p>
     * </li>
     * </ul>
     * <p>
     * You can't create non-failover resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as failover resource record sets.
     * </p>
     * <p>
     * For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code> element and
     * set the value to true.
     * </p>
     * <p>
     * For more information about configuring failover for Route 53, see the following topics in the <i>Amazon Route 53
     * Developer Guide</i>:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and
     * DNS Failover</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     * Configuring Failover in a Private Hosted Zone</a>
     * </p>
     * </li>
     * </ul>
     * 
     * @return <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code>
     *         element to two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the
     *         value for <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>.
     *         In addition, you include the <code>HealthCheckId</code> element and specify the health check that you
     *         want Amazon Route 53 to perform for each resource record set.</p>
     *         <p>
     *         Except where noted, the following failover behaviors assume that you have included the
     *         <code>HealthCheckId</code> element in both resource record sets:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable
     *         value from the primary resource record set regardless of the health of the secondary resource record set.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route
     *         53 responds to DNS queries with the applicable value from the secondary resource record set.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable
     *         value from the primary resource record set regardless of the health of the primary resource record set.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the
     *         primary resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable
     *         value from the secondary resource record set. This is true regardless of the health of the associated
     *         endpoint.
     *         </p>
     *         </li>
     *         </ul>
     *         <p>
     *         You can't create non-failover resource record sets that have the same values for the <code>Name</code>
     *         and <code>Type</code> elements as failover resource record sets.
     *         </p>
     *         <p>
     *         For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code>
     *         element and set the value to true.
     *         </p>
     *         <p>
     *         For more information about configuring failover for Route 53, see the following topics in the <i>Amazon
     *         Route 53 Developer Guide</i>:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health
     *         Checks and DNS Failover</a>
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <a
     *         href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     *         Configuring Failover in a Private Hosted Zone</a>
     *         </p>
     *         </li>
     * @see ResourceRecordSetFailover
     */

    public String getFailover() {
        return this.failover;
    }

    /**
     * <p>
     * <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code> element to
     * two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the value for
     * <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>. In addition, you
     * include the <code>HealthCheckId</code> element and specify the health check that you want Amazon Route 53 to
     * perform for each resource record set.
     * </p>
     * <p>
     * Except where noted, the following failover behaviors assume that you have included the <code>HealthCheckId</code>
     * element in both resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable value from
     * the primary resource record set regardless of the health of the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route 53
     * responds to DNS queries with the applicable value from the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable value
     * from the primary resource record set regardless of the health of the primary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the primary
     * resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable value from the
     * secondary resource record set. This is true regardless of the health of the associated endpoint.
     * </p>
     * </li>
     * </ul>
     * <p>
     * You can't create non-failover resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as failover resource record sets.
     * </p>
     * <p>
     * For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code> element and
     * set the value to true.
     * </p>
     * <p>
     * For more information about configuring failover for Route 53, see the following topics in the <i>Amazon Route 53
     * Developer Guide</i>:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and
     * DNS Failover</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     * Configuring Failover in a Private Hosted Zone</a>
     * </p>
     * </li>
     * </ul>
     * 
     * @param failover
     *        <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code>
     *        element to two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the
     *        value for <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>. In
     *        addition, you include the <code>HealthCheckId</code> element and specify the health check that you want
     *        Amazon Route 53 to perform for each resource record set.</p>
     *        <p>
     *        Except where noted, the following failover behaviors assume that you have included the
     *        <code>HealthCheckId</code> element in both resource record sets:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable
     *        value from the primary resource record set regardless of the health of the secondary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route
     *        53 responds to DNS queries with the applicable value from the secondary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable
     *        value from the primary resource record set regardless of the health of the primary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the
     *        primary resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable
     *        value from the secondary resource record set. This is true regardless of the health of the associated
     *        endpoint.
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        You can't create non-failover resource record sets that have the same values for the <code>Name</code> and
     *        <code>Type</code> elements as failover resource record sets.
     *        </p>
     *        <p>
     *        For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code>
     *        element and set the value to true.
     *        </p>
     *        <p>
     *        For more information about configuring failover for Route 53, see the following topics in the <i>Amazon
     *        Route 53 Developer Guide</i>:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health
     *        Checks and DNS Failover</a>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     *        Configuring Failover in a Private Hosted Zone</a>
     *        </p>
     *        </li>
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see ResourceRecordSetFailover
     */

    public ResourceRecordSet withFailover(String failover) {
        setFailover(failover);
        return this;
    }

    /**
     * <p>
     * <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code> element to
     * two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the value for
     * <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>. In addition, you
     * include the <code>HealthCheckId</code> element and specify the health check that you want Amazon Route 53 to
     * perform for each resource record set.
     * </p>
     * <p>
     * Except where noted, the following failover behaviors assume that you have included the <code>HealthCheckId</code>
     * element in both resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable value from
     * the primary resource record set regardless of the health of the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route 53
     * responds to DNS queries with the applicable value from the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable value
     * from the primary resource record set regardless of the health of the primary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the primary
     * resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable value from the
     * secondary resource record set. This is true regardless of the health of the associated endpoint.
     * </p>
     * </li>
     * </ul>
     * <p>
     * You can't create non-failover resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as failover resource record sets.
     * </p>
     * <p>
     * For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code> element and
     * set the value to true.
     * </p>
     * <p>
     * For more information about configuring failover for Route 53, see the following topics in the <i>Amazon Route 53
     * Developer Guide</i>:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and
     * DNS Failover</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     * Configuring Failover in a Private Hosted Zone</a>
     * </p>
     * </li>
     * </ul>
     * 
     * @param failover
     *        <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code>
     *        element to two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the
     *        value for <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>. In
     *        addition, you include the <code>HealthCheckId</code> element and specify the health check that you want
     *        Amazon Route 53 to perform for each resource record set.</p>
     *        <p>
     *        Except where noted, the following failover behaviors assume that you have included the
     *        <code>HealthCheckId</code> element in both resource record sets:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable
     *        value from the primary resource record set regardless of the health of the secondary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route
     *        53 responds to DNS queries with the applicable value from the secondary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable
     *        value from the primary resource record set regardless of the health of the primary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the
     *        primary resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable
     *        value from the secondary resource record set. This is true regardless of the health of the associated
     *        endpoint.
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        You can't create non-failover resource record sets that have the same values for the <code>Name</code> and
     *        <code>Type</code> elements as failover resource record sets.
     *        </p>
     *        <p>
     *        For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code>
     *        element and set the value to true.
     *        </p>
     *        <p>
     *        For more information about configuring failover for Route 53, see the following topics in the <i>Amazon
     *        Route 53 Developer Guide</i>:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health
     *        Checks and DNS Failover</a>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     *        Configuring Failover in a Private Hosted Zone</a>
     *        </p>
     *        </li>
     * @see ResourceRecordSetFailover
     */

    public void setFailover(ResourceRecordSetFailover failover) {
        withFailover(failover);
    }

    /**
     * <p>
     * <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code> element to
     * two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the value for
     * <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>. In addition, you
     * include the <code>HealthCheckId</code> element and specify the health check that you want Amazon Route 53 to
     * perform for each resource record set.
     * </p>
     * <p>
     * Except where noted, the following failover behaviors assume that you have included the <code>HealthCheckId</code>
     * element in both resource record sets:
     * </p>
     * <ul>
     * <li>
     * <p>
     * When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable value from
     * the primary resource record set regardless of the health of the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route 53
     * responds to DNS queries with the applicable value from the secondary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable value
     * from the primary resource record set regardless of the health of the primary resource record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the primary
     * resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable value from the
     * secondary resource record set. This is true regardless of the health of the associated endpoint.
     * </p>
     * </li>
     * </ul>
     * <p>
     * You can't create non-failover resource record sets that have the same values for the <code>Name</code> and
     * <code>Type</code> elements as failover resource record sets.
     * </p>
     * <p>
     * For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code> element and
     * set the value to true.
     * </p>
     * <p>
     * For more information about configuring failover for Route 53, see the following topics in the <i>Amazon Route 53
     * Developer Guide</i>:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and
     * DNS Failover</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     * Configuring Failover in a Private Hosted Zone</a>
     * </p>
     * </li>
     * </ul>
     * 
     * @param failover
     *        <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code>
     *        element to two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the
     *        value for <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>. In
     *        addition, you include the <code>HealthCheckId</code> element and specify the health check that you want
     *        Amazon Route 53 to perform for each resource record set.</p>
     *        <p>
     *        Except where noted, the following failover behaviors assume that you have included the
     *        <code>HealthCheckId</code> element in both resource record sets:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable
     *        value from the primary resource record set regardless of the health of the secondary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route
     *        53 responds to DNS queries with the applicable value from the secondary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable
     *        value from the primary resource record set regardless of the health of the primary resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the
     *        primary resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable
     *        value from the secondary resource record set. This is true regardless of the health of the associated
     *        endpoint.
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        You can't create non-failover resource record sets that have the same values for the <code>Name</code> and
     *        <code>Type</code> elements as failover resource record sets.
     *        </p>
     *        <p>
     *        For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code>
     *        element and set the value to true.
     *        </p>
     *        <p>
     *        For more information about configuring failover for Route 53, see the following topics in the <i>Amazon
     *        Route 53 Developer Guide</i>:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health
     *        Checks and DNS Failover</a>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     *        Configuring Failover in a Private Hosted Zone</a>
     *        </p>
     *        </li>
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see ResourceRecordSetFailover
     */

    public ResourceRecordSet withFailover(ResourceRecordSetFailover failover) {
        this.failover = failover.toString();
        return this;
    }

    /**
     * <p>
     * <i>Multivalue answer resource record sets only</i>: To route traffic approximately randomly to multiple
     * resources, such as web servers, create one multivalue answer record for each resource and specify
     * <code>true</code> for <code>MultiValueAnswer</code>. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * If you associate a health check with a multivalue answer resource record set, Amazon Route 53 responds to DNS
     * queries with the corresponding IP address only when the health check is healthy.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you don't associate a health check with a multivalue answer record, Route 53 always considers the record to be
     * healthy.
     * </p>
     * </li>
     * <li>
     * <p>
     * Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy records,
     * Route 53 responds to all DNS queries with all the healthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different
     * combinations of healthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * If a resource becomes unavailable after a resolver caches a response, client software typically tries another of
     * the IP addresses in the response.
     * </p>
     * </li>
     * </ul>
     * <p>
     * You can't create multivalue answer alias records.
     * </p>
     * 
     * @param multiValueAnswer
     *        <i>Multivalue answer resource record sets only</i>: To route traffic approximately randomly to multiple
     *        resources, such as web servers, create one multivalue answer record for each resource and specify
     *        <code>true</code> for <code>MultiValueAnswer</code>. Note the following:</p>
     *        <ul>
     *        <li>
     *        <p>
     *        If you associate a health check with a multivalue answer resource record set, Amazon Route 53 responds to
     *        DNS queries with the corresponding IP address only when the health check is healthy.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you don't associate a health check with a multivalue answer record, Route 53 always considers the
     *        record to be healthy.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy
     *        records, Route 53 responds to all DNS queries with all the healthy records.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different
     *        combinations of healthy records.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If a resource becomes unavailable after a resolver caches a response, client software typically tries
     *        another of the IP addresses in the response.
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        You can't create multivalue answer alias records.
     */

    public void setMultiValueAnswer(Boolean multiValueAnswer) {
        this.multiValueAnswer = multiValueAnswer;
    }

    /**
     * <p>
     * <i>Multivalue answer resource record sets only</i>: To route traffic approximately randomly to multiple
     * resources, such as web servers, create one multivalue answer record for each resource and specify
     * <code>true</code> for <code>MultiValueAnswer</code>. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * If you associate a health check with a multivalue answer resource record set, Amazon Route 53 responds to DNS
     * queries with the corresponding IP address only when the health check is healthy.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you don't associate a health check with a multivalue answer record, Route 53 always considers the record to be
     * healthy.
     * </p>
     * </li>
     * <li>
     * <p>
     * Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy records,
     * Route 53 responds to all DNS queries with all the healthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different
     * combinations of healthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * If a resource becomes unavailable after a resolver caches a response, client software typically tries another of
     * the IP addresses in the response.
     * </p>
     * </li>
     * </ul>
     * <p>
     * You can't create multivalue answer alias records.
     * </p>
     * 
     * @return <i>Multivalue answer resource record sets only</i>: To route traffic approximately randomly to multiple
     *         resources, such as web servers, create one multivalue answer record for each resource and specify
     *         <code>true</code> for <code>MultiValueAnswer</code>. Note the following:</p>
     *         <ul>
     *         <li>
     *         <p>
     *         If you associate a health check with a multivalue answer resource record set, Amazon Route 53 responds to
     *         DNS queries with the corresponding IP address only when the health check is healthy.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         If you don't associate a health check with a multivalue answer record, Route 53 always considers the
     *         record to be healthy.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy
     *         records, Route 53 responds to all DNS queries with all the healthy records.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different
     *         combinations of healthy records.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         If a resource becomes unavailable after a resolver caches a response, client software typically tries
     *         another of the IP addresses in the response.
     *         </p>
     *         </li>
     *         </ul>
     *         <p>
     *         You can't create multivalue answer alias records.
     */

    public Boolean getMultiValueAnswer() {
        return this.multiValueAnswer;
    }

    /**
     * <p>
     * <i>Multivalue answer resource record sets only</i>: To route traffic approximately randomly to multiple
     * resources, such as web servers, create one multivalue answer record for each resource and specify
     * <code>true</code> for <code>MultiValueAnswer</code>. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * If you associate a health check with a multivalue answer resource record set, Amazon Route 53 responds to DNS
     * queries with the corresponding IP address only when the health check is healthy.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you don't associate a health check with a multivalue answer record, Route 53 always considers the record to be
     * healthy.
     * </p>
     * </li>
     * <li>
     * <p>
     * Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy records,
     * Route 53 responds to all DNS queries with all the healthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different
     * combinations of healthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * If a resource becomes unavailable after a resolver caches a response, client software typically tries another of
     * the IP addresses in the response.
     * </p>
     * </li>
     * </ul>
     * <p>
     * You can't create multivalue answer alias records.
     * </p>
     * 
     * @param multiValueAnswer
     *        <i>Multivalue answer resource record sets only</i>: To route traffic approximately randomly to multiple
     *        resources, such as web servers, create one multivalue answer record for each resource and specify
     *        <code>true</code> for <code>MultiValueAnswer</code>. Note the following:</p>
     *        <ul>
     *        <li>
     *        <p>
     *        If you associate a health check with a multivalue answer resource record set, Amazon Route 53 responds to
     *        DNS queries with the corresponding IP address only when the health check is healthy.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you don't associate a health check with a multivalue answer record, Route 53 always considers the
     *        record to be healthy.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy
     *        records, Route 53 responds to all DNS queries with all the healthy records.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different
     *        combinations of healthy records.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If a resource becomes unavailable after a resolver caches a response, client software typically tries
     *        another of the IP addresses in the response.
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        You can't create multivalue answer alias records.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public ResourceRecordSet withMultiValueAnswer(Boolean multiValueAnswer) {
        setMultiValueAnswer(multiValueAnswer);
        return this;
    }

    /**
     * <p>
     * <i>Multivalue answer resource record sets only</i>: To route traffic approximately randomly to multiple
     * resources, such as web servers, create one multivalue answer record for each resource and specify
     * <code>true</code> for <code>MultiValueAnswer</code>. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * If you associate a health check with a multivalue answer resource record set, Amazon Route 53 responds to DNS
     * queries with the corresponding IP address only when the health check is healthy.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you don't associate a health check with a multivalue answer record, Route 53 always considers the record to be
     * healthy.
     * </p>
     * </li>
     * <li>
     * <p>
     * Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy records,
     * Route 53 responds to all DNS queries with all the healthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different
     * combinations of healthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records.
     * </p>
     * </li>
     * <li>
     * <p>
     * If a resource becomes unavailable after a resolver caches a response, client software typically tries another of
     * the IP addresses in the response.
     * </p>
     * </li>
     * </ul>
     * <p>
     * You can't create multivalue answer alias records.
     * </p>
     * 
     * @return <i>Multivalue answer resource record sets only</i>: To route traffic approximately randomly to multiple
     *         resources, such as web servers, create one multivalue answer record for each resource and specify
     *         <code>true</code> for <code>MultiValueAnswer</code>. Note the following:</p>
     *         <ul>
     *         <li>
     *         <p>
     *         If you associate a health check with a multivalue answer resource record set, Amazon Route 53 responds to
     *         DNS queries with the corresponding IP address only when the health check is healthy.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         If you don't associate a health check with a multivalue answer record, Route 53 always considers the
     *         record to be healthy.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy
     *         records, Route 53 responds to all DNS queries with all the healthy records.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different
     *         combinations of healthy records.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         If a resource becomes unavailable after a resolver caches a response, client software typically tries
     *         another of the IP addresses in the response.
     *         </p>
     *         </li>
     *         </ul>
     *         <p>
     *         You can't create multivalue answer alias records.
     */

    public Boolean isMultiValueAnswer() {
        return this.multiValueAnswer;
    }

    /**
     * <p>
     * The resource record cache time to live (TTL), in seconds. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * If you're creating or updating an alias resource record set, omit <code>TTL</code>. Amazon Route 53 uses the
     * value of <code>TTL</code> for the alias target.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you're associating this resource record set with a health check (if you're adding a <code>HealthCheckId</code>
     * element), we recommend that you specify a <code>TTL</code> of 60 seconds or less so clients respond quickly to
     * changes in health status.
     * </p>
     * </li>
     * <li>
     * <p>
     * All of the resource record sets in a group of weighted resource record sets must have the same value for
     * <code>TTL</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * If a group of weighted resource record sets includes one or more weighted alias resource record sets for which
     * the alias target is an ELB load balancer, we recommend that you specify a <code>TTL</code> of 60 seconds for all
     * of the non-alias weighted resource record sets that have the same name and type. Values other than 60 seconds
     * (the TTL for load balancers) will change the effect of the values that you specify for <code>Weight</code>.
     * </p>
     * </li>
     * </ul>
     * 
     * @param tTL
     *        The resource record cache time to live (TTL), in seconds. Note the following:</p>
     *        <ul>
     *        <li>
     *        <p>
     *        If you're creating or updating an alias resource record set, omit <code>TTL</code>. Amazon Route 53 uses
     *        the value of <code>TTL</code> for the alias target.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you're associating this resource record set with a health check (if you're adding a
     *        <code>HealthCheckId</code> element), we recommend that you specify a <code>TTL</code> of 60 seconds or
     *        less so clients respond quickly to changes in health status.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        All of the resource record sets in a group of weighted resource record sets must have the same value for
     *        <code>TTL</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If a group of weighted resource record sets includes one or more weighted alias resource record sets for
     *        which the alias target is an ELB load balancer, we recommend that you specify a <code>TTL</code> of 60
     *        seconds for all of the non-alias weighted resource record sets that have the same name and type. Values
     *        other than 60 seconds (the TTL for load balancers) will change the effect of the values that you specify
     *        for <code>Weight</code>.
     *        </p>
     *        </li>
     */

    public void setTTL(Long tTL) {
        this.tTL = tTL;
    }

    /**
     * <p>
     * The resource record cache time to live (TTL), in seconds. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * If you're creating or updating an alias resource record set, omit <code>TTL</code>. Amazon Route 53 uses the
     * value of <code>TTL</code> for the alias target.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you're associating this resource record set with a health check (if you're adding a <code>HealthCheckId</code>
     * element), we recommend that you specify a <code>TTL</code> of 60 seconds or less so clients respond quickly to
     * changes in health status.
     * </p>
     * </li>
     * <li>
     * <p>
     * All of the resource record sets in a group of weighted resource record sets must have the same value for
     * <code>TTL</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * If a group of weighted resource record sets includes one or more weighted alias resource record sets for which
     * the alias target is an ELB load balancer, we recommend that you specify a <code>TTL</code> of 60 seconds for all
     * of the non-alias weighted resource record sets that have the same name and type. Values other than 60 seconds
     * (the TTL for load balancers) will change the effect of the values that you specify for <code>Weight</code>.
     * </p>
     * </li>
     * </ul>
     * 
     * @return The resource record cache time to live (TTL), in seconds. Note the following:</p>
     *         <ul>
     *         <li>
     *         <p>
     *         If you're creating or updating an alias resource record set, omit <code>TTL</code>. Amazon Route 53 uses
     *         the value of <code>TTL</code> for the alias target.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         If you're associating this resource record set with a health check (if you're adding a
     *         <code>HealthCheckId</code> element), we recommend that you specify a <code>TTL</code> of 60 seconds or
     *         less so clients respond quickly to changes in health status.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         All of the resource record sets in a group of weighted resource record sets must have the same value for
     *         <code>TTL</code>.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         If a group of weighted resource record sets includes one or more weighted alias resource record sets for
     *         which the alias target is an ELB load balancer, we recommend that you specify a <code>TTL</code> of 60
     *         seconds for all of the non-alias weighted resource record sets that have the same name and type. Values
     *         other than 60 seconds (the TTL for load balancers) will change the effect of the values that you specify
     *         for <code>Weight</code>.
     *         </p>
     *         </li>
     */

    public Long getTTL() {
        return this.tTL;
    }

    /**
     * <p>
     * The resource record cache time to live (TTL), in seconds. Note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * If you're creating or updating an alias resource record set, omit <code>TTL</code>. Amazon Route 53 uses the
     * value of <code>TTL</code> for the alias target.
     * </p>
     * </li>
     * <li>
     * <p>
     * If you're associating this resource record set with a health check (if you're adding a <code>HealthCheckId</code>
     * element), we recommend that you specify a <code>TTL</code> of 60 seconds or less so clients respond quickly to
     * changes in health status.
     * </p>
     * </li>
     * <li>
     * <p>
     * All of the resource record sets in a group of weighted resource record sets must have the same value for
     * <code>TTL</code>.
     * </p>
     * </li>
     * <li>
     * <p>
     * If a group of weighted resource record sets includes one or more weighted alias resource record sets for which
     * the alias target is an ELB load balancer, we recommend that you specify a <code>TTL</code> of 60 seconds for all
     * of the non-alias weighted resource record sets that have the same name and type. Values other than 60 seconds
     * (the TTL for load balancers) will change the effect of the values that you specify for <code>Weight</code>.
     * </p>
     * </li>
     * </ul>
     * 
     * @param tTL
     *        The resource record cache time to live (TTL), in seconds. Note the following:</p>
     *        <ul>
     *        <li>
     *        <p>
     *        If you're creating or updating an alias resource record set, omit <code>TTL</code>. Amazon Route 53 uses
     *        the value of <code>TTL</code> for the alias target.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If you're associating this resource record set with a health check (if you're adding a
     *        <code>HealthCheckId</code> element), we recommend that you specify a <code>TTL</code> of 60 seconds or
     *        less so clients respond quickly to changes in health status.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        All of the resource record sets in a group of weighted resource record sets must have the same value for
     *        <code>TTL</code>.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        If a group of weighted resource record sets includes one or more weighted alias resource record sets for
     *        which the alias target is an ELB load balancer, we recommend that you specify a <code>TTL</code> of 60
     *        seconds for all of the non-alias weighted resource record sets that have the same name and type. Values
     *        other than 60 seconds (the TTL for load balancers) will change the effect of the values that you specify
     *        for <code>Weight</code>.
     *        </p>
     *        </li>
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public ResourceRecordSet withTTL(Long tTL) {
        setTTL(tTL);
        return this;
    }

    /**
     * <p>
     * Information about the resource records to act upon.
     * </p>
     * <note>
     * <p>
     * If you're creating an alias resource record set, omit <code>ResourceRecords</code>.
     * </p>
     * </note>
     * 
     * @return Information about the resource records to act upon.</p> <note>
     *         <p>
     *         If you're creating an alias resource record set, omit <code>ResourceRecords</code>.
     *         </p>
     */

    public java.util.List<ResourceRecord> getResourceRecords() {
        if (resourceRecords == null) {
            resourceRecords = new com.amazonaws.internal.SdkInternalList<ResourceRecord>();
        }
        return resourceRecords;
    }

    /**
     * <p>
     * Information about the resource records to act upon.
     * </p>
     * <note>
     * <p>
     * If you're creating an alias resource record set, omit <code>ResourceRecords</code>.
     * </p>
     * </note>
     * 
     * @param resourceRecords
     *        Information about the resource records to act upon.</p> <note>
     *        <p>
     *        If you're creating an alias resource record set, omit <code>ResourceRecords</code>.
     *        </p>
     */

    public void setResourceRecords(java.util.Collection<ResourceRecord> resourceRecords) {
        if (resourceRecords == null) {
            this.resourceRecords = null;
            return;
        }

        this.resourceRecords = new com.amazonaws.internal.SdkInternalList<ResourceRecord>(resourceRecords);
    }

    /**
     * <p>
     * Information about the resource records to act upon.
     * </p>
     * <note>
     * <p>
     * If you're creating an alias resource record set, omit <code>ResourceRecords</code>.
     * </p>
     * </note>
     * <p>
     * <b>NOTE:</b> This method appends the values to the existing list (if any). Use
     * {@link #setResourceRecords(java.util.Collection)} or {@link #withResourceRecords(java.util.Collection)} if you
     * want to override the existing values.
     * </p>
     * 
     * @param resourceRecords
     *        Information about the resource records to act upon.</p> <note>
     *        <p>
     *        If you're creating an alias resource record set, omit <code>ResourceRecords</code>.
     *        </p>
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public ResourceRecordSet withResourceRecords(ResourceRecord... resourceRecords) {
        if (this.resourceRecords == null) {
            setResourceRecords(new com.amazonaws.internal.SdkInternalList<ResourceRecord>(resourceRecords.length));
        }
        for (ResourceRecord ele : resourceRecords) {
            this.resourceRecords.add(ele);
        }
        return this;
    }

    /**
     * <p>
     * Information about the resource records to act upon.
     * </p>
     * <note>
     * <p>
     * If you're creating an alias resource record set, omit <code>ResourceRecords</code>.
     * </p>
     * </note>
     * 
     * @param resourceRecords
     *        Information about the resource records to act upon.</p> <note>
     *        <p>
     *        If you're creating an alias resource record set, omit <code>ResourceRecords</code>.
     *        </p>
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public ResourceRecordSet withResourceRecords(java.util.Collection<ResourceRecord> resourceRecords) {
        setResourceRecords(resourceRecords);
        return this;
    }

    /**
     * <p>
     * <i>Alias resource record sets only:</i> Information about the AWS resource, such as a CloudFront distribution or
     * an Amazon S3 bucket, that you want to route traffic to.
     * </p>
     * <p>
     * If you're creating resource records sets for a private hosted zone, note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You can't create an alias resource record set in a private hosted zone to route traffic to a CloudFront
     * distribution.
     * </p>
     * </li>
     * <li>
     * <p>
     * Creating geolocation alias resource record sets or latency alias resource record sets in a private hosted zone is
     * unsupported.
     * </p>
     * </li>
     * <li>
     * <p>
     * For information about creating failover resource record sets in a private hosted zone, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html"
     * >Configuring Failover in a Private Hosted Zone</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * </li>
     * </ul>
     * 
     * @param aliasTarget
     *        <i>Alias resource record sets only:</i> Information about the AWS resource, such as a CloudFront
     *        distribution or an Amazon S3 bucket, that you want to route traffic to. </p>
     *        <p>
     *        If you're creating resource records sets for a private hosted zone, note the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        You can't create an alias resource record set in a private hosted zone to route traffic to a CloudFront
     *        distribution.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        Creating geolocation alias resource record sets or latency alias resource record sets in a private hosted
     *        zone is unsupported.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        For information about creating failover resource record sets in a private hosted zone, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html"
     *        >Configuring Failover in a Private Hosted Zone</a> in the <i>Amazon Route 53 Developer Guide</i>.
     *        </p>
     *        </li>
     */

    public void setAliasTarget(AliasTarget aliasTarget) {
        this.aliasTarget = aliasTarget;
    }

    /**
     * <p>
     * <i>Alias resource record sets only:</i> Information about the AWS resource, such as a CloudFront distribution or
     * an Amazon S3 bucket, that you want to route traffic to.
     * </p>
     * <p>
     * If you're creating resource records sets for a private hosted zone, note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You can't create an alias resource record set in a private hosted zone to route traffic to a CloudFront
     * distribution.
     * </p>
     * </li>
     * <li>
     * <p>
     * Creating geolocation alias resource record sets or latency alias resource record sets in a private hosted zone is
     * unsupported.
     * </p>
     * </li>
     * <li>
     * <p>
     * For information about creating failover resource record sets in a private hosted zone, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html"
     * >Configuring Failover in a Private Hosted Zone</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * </li>
     * </ul>
     * 
     * @return <i>Alias resource record sets only:</i> Information about the AWS resource, such as a CloudFront
     *         distribution or an Amazon S3 bucket, that you want to route traffic to. </p>
     *         <p>
     *         If you're creating resource records sets for a private hosted zone, note the following:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         You can't create an alias resource record set in a private hosted zone to route traffic to a CloudFront
     *         distribution.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         Creating geolocation alias resource record sets or latency alias resource record sets in a private hosted
     *         zone is unsupported.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         For information about creating failover resource record sets in a private hosted zone, see <a
     *         href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html"
     *         >Configuring Failover in a Private Hosted Zone</a> in the <i>Amazon Route 53 Developer Guide</i>.
     *         </p>
     *         </li>
     */

    public AliasTarget getAliasTarget() {
        return this.aliasTarget;
    }

    /**
     * <p>
     * <i>Alias resource record sets only:</i> Information about the AWS resource, such as a CloudFront distribution or
     * an Amazon S3 bucket, that you want to route traffic to.
     * </p>
     * <p>
     * If you're creating resource records sets for a private hosted zone, note the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You can't create an alias resource record set in a private hosted zone to route traffic to a CloudFront
     * distribution.
     * </p>
     * </li>
     * <li>
     * <p>
     * Creating geolocation alias resource record sets or latency alias resource record sets in a private hosted zone is
     * unsupported.
     * </p>
     * </li>
     * <li>
     * <p>
     * For information about creating failover resource record sets in a private hosted zone, see <a
     * href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html"
     * >Configuring Failover in a Private Hosted Zone</a> in the <i>Amazon Route 53 Developer Guide</i>.
     * </p>
     * </li>
     * </ul>
     * 
     * @param aliasTarget
     *        <i>Alias resource record sets only:</i> Information about the AWS resource, such as a CloudFront
     *        distribution or an Amazon S3 bucket, that you want to route traffic to. </p>
     *        <p>
     *        If you're creating resource records sets for a private hosted zone, note the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        You can't create an alias resource record set in a private hosted zone to route traffic to a CloudFront
     *        distribution.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        Creating geolocation alias resource record sets or latency alias resource record sets in a private hosted
     *        zone is unsupported.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        For information about creating failover resource record sets in a private hosted zone, see <a
     *        href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html"
     *        >Configuring Failover in a Private Hosted Zone</a> in the <i>Amazon Route 53 Developer Guide</i>.
     *        </p>
     *        </li>
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public ResourceRecordSet withAliasTarget(AliasTarget aliasTarget) {
        setAliasTarget(aliasTarget);
        return this;
    }

    /**
     * <p>
     * If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of
     * a health check is healthy, include the <code>HealthCheckId</code> element and specify the ID of the applicable
     * health check.
     * </p>
     * <p>
     * Route 53 determines whether a resource record set is healthy based on one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * By periodically sending a request to the endpoint that is specified in the health check
     * </p>
     * </li>
     * <li>
     * <p>
     * By aggregating the status of a specified group of health checks (calculated health checks)
     * </p>
     * </li>
     * <li>
     * <p>
     * By determining the current state of a CloudWatch alarm (CloudWatch metric health checks)
     * </p>
     * </li>
     * </ul>
     * <important>
     * <p>
     * Route 53 doesn't check the health of the endpoint that is specified in the resource record set, for example, the
     * endpoint specified by the IP address in the <code>Value</code> element. When you add a <code>HealthCheckId</code>
     * element to a resource record set, Route 53 checks the health of the endpoint that you specified in the health
     * check.
     * </p>
     * </important>
     * <p>
     * For more information, see the following topics in the <i>Amazon Route 53 Developer Guide</i>:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <a href=
     * "https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html">How
     * Amazon Route 53 Determines Whether an Endpoint Is Healthy</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and
     * DNS Failover</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     * Configuring Failover in a Private Hosted Zone</a>
     * </p>
     * </li>
     * </ul>
     * <p>
     * <b>When to Specify HealthCheckId</b>
     * </p>
     * <p>
     * Specifying a value for <code>HealthCheckId</code> is useful only when Route 53 is choosing between two or more
     * resource record sets to respond to a DNS query, and you want Route 53 to base the choice in part on the status of
     * a health check. Configuring health checks makes sense only in the following configurations:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <b>Non-alias resource record sets</b>: You're checking the health of a group of non-alias resource record sets
     * that have the same routing policy, name, and type (such as multiple weighted records named www.example.com with a
     * type of A) and you specify health check IDs for all the resource record sets.
     * </p>
     * <p>
     * If the health check status for a resource record set is healthy, Route 53 includes the record among the records
     * that it responds to DNS queries with.
     * </p>
     * <p>
     * If the health check status for a resource record set is unhealthy, Route 53 stops responding to DNS queries using
     * the value for that resource record set.
     * </p>
     * <p>
     * If the health check status for all resource record sets in the group is unhealthy, Route 53 considers all
     * resource record sets in the group healthy and responds to DNS queries accordingly.
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Alias resource record sets</b>: You specify the following settings:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You set <code>EvaluateTargetHealth</code> to true for an alias resource record set in a group of resource record
     * sets that have the same routing policy, name, and type (such as multiple weighted records named www.example.com
     * with a type of A).
     * </p>
     * </li>
     * <li>
     * <p>
     * You configure the alias resource record set to route traffic to a non-alias resource record set in the same
     * hosted zone.
     * </p>
     * </li>
     * <li>
     * <p>
     * You specify a health check ID for the non-alias resource record set.
     * </p>
     * </li>
     * </ul>
     * <p>
     * If the health check status is healthy, Route 53 considers the alias resource record set to be healthy and
     * includes the alias record among the records that it responds to DNS queries with.
     * </p>
     * <p>
     * If the health check status is unhealthy, Route 53 stops responding to DNS queries using the alias resource record
     * set.
     * </p>
     * <note>
     * <p>
     * The alias resource record set can also route traffic to a <i>group</i> of non-alias resource record sets that
     * have the same routing policy, name, and type. In that configuration, associate health checks with all of the
     * resource record sets in the group of non-alias resource record sets.
     * </p>
     * </note></li>
     * </ul>
     * <p>
     * <b>Geolocation Routing</b>
     * </p>
     * <p>
     * For geolocation resource record sets, if an endpoint is unhealthy, Route 53 looks for a resource record set for
     * the larger, associated geographic region. For example, suppose you have resource record sets for a state in the
     * United States, for the entire United States, for North America, and a resource record set that has <code>*</code>
     * for <code>CountryCode</code> is <code>*</code>, which applies to all locations. If the endpoint for the state
     * resource record set is unhealthy, Route 53 checks for healthy resource record sets in the following order until
     * it finds a resource record set for which the endpoint is healthy:
     * </p>
     * <ul>
     * <li>
     * <p>
     * The United States
     * </p>
     * </li>
     * <li>
     * <p>
     * North America
     * </p>
     * </li>
     * <li>
     * <p>
     * The default resource record set
     * </p>
     * </li>
     * </ul>
     * <p>
     * <b>Specifying the Health Check Endpoint by Domain Name</b>
     * </p>
     * <p>
     * If your health checks specify the endpoint only by domain name, we recommend that you create a separate health
     * check for each endpoint. For example, create a health check for each <code>HTTP</code> server that is serving
     * content for <code>www.example.com</code>. For the value of <code>FullyQualifiedDomainName</code>, specify the
     * domain name of the server (such as <code>us-east-2-www.example.com</code>), not the name of the resource record
     * sets (<code>www.example.com</code>).
     * </p>
     * <important>
     * <p>
     * Health check results will be unpredictable if you do the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * Create a health check that has the same value for <code>FullyQualifiedDomainName</code> as the name of a resource
     * record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * Associate that health check with the resource record set.
     * </p>
     * </li>
     * </ul>
     * </important>
     * 
     * @param healthCheckId
     *        If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the
     *        status of a health check is healthy, include the <code>HealthCheckId</code> element and specify the ID of
     *        the applicable health check.</p>
     *        <p>
     *        Route 53 determines whether a resource record set is healthy based on one of the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        By periodically sending a request to the endpoint that is specified in the health check
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        By aggregating the status of a specified group of health checks (calculated health checks)
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        By determining the current state of a CloudWatch alarm (CloudWatch metric health checks)
     *        </p>
     *        </li>
     *        </ul>
     *        <important>
     *        <p>
     *        Route 53 doesn't check the health of the endpoint that is specified in the resource record set, for
     *        example, the endpoint specified by the IP address in the <code>Value</code> element. When you add a
     *        <code>HealthCheckId</code> element to a resource record set, Route 53 checks the health of the endpoint
     *        that you specified in the health check.
     *        </p>
     *        </important>
     *        <p>
     *        For more information, see the following topics in the <i>Amazon Route 53 Developer Guide</i>:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <a href=
     *        "https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html"
     *        >How Amazon Route 53 Determines Whether an Endpoint Is Healthy</a>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health
     *        Checks and DNS Failover</a>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     *        Configuring Failover in a Private Hosted Zone</a>
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        <b>When to Specify HealthCheckId</b>
     *        </p>
     *        <p>
     *        Specifying a value for <code>HealthCheckId</code> is useful only when Route 53 is choosing between two or
     *        more resource record sets to respond to a DNS query, and you want Route 53 to base the choice in part on
     *        the status of a health check. Configuring health checks makes sense only in the following configurations:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <b>Non-alias resource record sets</b>: You're checking the health of a group of non-alias resource record
     *        sets that have the same routing policy, name, and type (such as multiple weighted records named
     *        www.example.com with a type of A) and you specify health check IDs for all the resource record sets.
     *        </p>
     *        <p>
     *        If the health check status for a resource record set is healthy, Route 53 includes the record among the
     *        records that it responds to DNS queries with.
     *        </p>
     *        <p>
     *        If the health check status for a resource record set is unhealthy, Route 53 stops responding to DNS
     *        queries using the value for that resource record set.
     *        </p>
     *        <p>
     *        If the health check status for all resource record sets in the group is unhealthy, Route 53 considers all
     *        resource record sets in the group healthy and responds to DNS queries accordingly.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Alias resource record sets</b>: You specify the following settings:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        You set <code>EvaluateTargetHealth</code> to true for an alias resource record set in a group of resource
     *        record sets that have the same routing policy, name, and type (such as multiple weighted records named
     *        www.example.com with a type of A).
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You configure the alias resource record set to route traffic to a non-alias resource record set in the
     *        same hosted zone.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You specify a health check ID for the non-alias resource record set.
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        If the health check status is healthy, Route 53 considers the alias resource record set to be healthy and
     *        includes the alias record among the records that it responds to DNS queries with.
     *        </p>
     *        <p>
     *        If the health check status is unhealthy, Route 53 stops responding to DNS queries using the alias resource
     *        record set.
     *        </p>
     *        <note>
     *        <p>
     *        The alias resource record set can also route traffic to a <i>group</i> of non-alias resource record sets
     *        that have the same routing policy, name, and type. In that configuration, associate health checks with all
     *        of the resource record sets in the group of non-alias resource record sets.
     *        </p>
     *        </note></li>
     *        </ul>
     *        <p>
     *        <b>Geolocation Routing</b>
     *        </p>
     *        <p>
     *        For geolocation resource record sets, if an endpoint is unhealthy, Route 53 looks for a resource record
     *        set for the larger, associated geographic region. For example, suppose you have resource record sets for a
     *        state in the United States, for the entire United States, for North America, and a resource record set
     *        that has <code>*</code> for <code>CountryCode</code> is <code>*</code>, which applies to all locations. If
     *        the endpoint for the state resource record set is unhealthy, Route 53 checks for healthy resource record
     *        sets in the following order until it finds a resource record set for which the endpoint is healthy:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        The United States
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        North America
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        The default resource record set
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        <b>Specifying the Health Check Endpoint by Domain Name</b>
     *        </p>
     *        <p>
     *        If your health checks specify the endpoint only by domain name, we recommend that you create a separate
     *        health check for each endpoint. For example, create a health check for each <code>HTTP</code> server that
     *        is serving content for <code>www.example.com</code>. For the value of
     *        <code>FullyQualifiedDomainName</code>, specify the domain name of the server (such as
     *        <code>us-east-2-www.example.com</code>), not the name of the resource record sets (
     *        <code>www.example.com</code>).
     *        </p>
     *        <important>
     *        <p>
     *        Health check results will be unpredictable if you do the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        Create a health check that has the same value for <code>FullyQualifiedDomainName</code> as the name of a
     *        resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        Associate that health check with the resource record set.
     *        </p>
     *        </li>
     *        </ul>
     */

    public void setHealthCheckId(String healthCheckId) {
        this.healthCheckId = healthCheckId;
    }

    /**
     * <p>
     * If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of
     * a health check is healthy, include the <code>HealthCheckId</code> element and specify the ID of the applicable
     * health check.
     * </p>
     * <p>
     * Route 53 determines whether a resource record set is healthy based on one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * By periodically sending a request to the endpoint that is specified in the health check
     * </p>
     * </li>
     * <li>
     * <p>
     * By aggregating the status of a specified group of health checks (calculated health checks)
     * </p>
     * </li>
     * <li>
     * <p>
     * By determining the current state of a CloudWatch alarm (CloudWatch metric health checks)
     * </p>
     * </li>
     * </ul>
     * <important>
     * <p>
     * Route 53 doesn't check the health of the endpoint that is specified in the resource record set, for example, the
     * endpoint specified by the IP address in the <code>Value</code> element. When you add a <code>HealthCheckId</code>
     * element to a resource record set, Route 53 checks the health of the endpoint that you specified in the health
     * check.
     * </p>
     * </important>
     * <p>
     * For more information, see the following topics in the <i>Amazon Route 53 Developer Guide</i>:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <a href=
     * "https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html">How
     * Amazon Route 53 Determines Whether an Endpoint Is Healthy</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and
     * DNS Failover</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     * Configuring Failover in a Private Hosted Zone</a>
     * </p>
     * </li>
     * </ul>
     * <p>
     * <b>When to Specify HealthCheckId</b>
     * </p>
     * <p>
     * Specifying a value for <code>HealthCheckId</code> is useful only when Route 53 is choosing between two or more
     * resource record sets to respond to a DNS query, and you want Route 53 to base the choice in part on the status of
     * a health check. Configuring health checks makes sense only in the following configurations:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <b>Non-alias resource record sets</b>: You're checking the health of a group of non-alias resource record sets
     * that have the same routing policy, name, and type (such as multiple weighted records named www.example.com with a
     * type of A) and you specify health check IDs for all the resource record sets.
     * </p>
     * <p>
     * If the health check status for a resource record set is healthy, Route 53 includes the record among the records
     * that it responds to DNS queries with.
     * </p>
     * <p>
     * If the health check status for a resource record set is unhealthy, Route 53 stops responding to DNS queries using
     * the value for that resource record set.
     * </p>
     * <p>
     * If the health check status for all resource record sets in the group is unhealthy, Route 53 considers all
     * resource record sets in the group healthy and responds to DNS queries accordingly.
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Alias resource record sets</b>: You specify the following settings:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You set <code>EvaluateTargetHealth</code> to true for an alias resource record set in a group of resource record
     * sets that have the same routing policy, name, and type (such as multiple weighted records named www.example.com
     * with a type of A).
     * </p>
     * </li>
     * <li>
     * <p>
     * You configure the alias resource record set to route traffic to a non-alias resource record set in the same
     * hosted zone.
     * </p>
     * </li>
     * <li>
     * <p>
     * You specify a health check ID for the non-alias resource record set.
     * </p>
     * </li>
     * </ul>
     * <p>
     * If the health check status is healthy, Route 53 considers the alias resource record set to be healthy and
     * includes the alias record among the records that it responds to DNS queries with.
     * </p>
     * <p>
     * If the health check status is unhealthy, Route 53 stops responding to DNS queries using the alias resource record
     * set.
     * </p>
     * <note>
     * <p>
     * The alias resource record set can also route traffic to a <i>group</i> of non-alias resource record sets that
     * have the same routing policy, name, and type. In that configuration, associate health checks with all of the
     * resource record sets in the group of non-alias resource record sets.
     * </p>
     * </note></li>
     * </ul>
     * <p>
     * <b>Geolocation Routing</b>
     * </p>
     * <p>
     * For geolocation resource record sets, if an endpoint is unhealthy, Route 53 looks for a resource record set for
     * the larger, associated geographic region. For example, suppose you have resource record sets for a state in the
     * United States, for the entire United States, for North America, and a resource record set that has <code>*</code>
     * for <code>CountryCode</code> is <code>*</code>, which applies to all locations. If the endpoint for the state
     * resource record set is unhealthy, Route 53 checks for healthy resource record sets in the following order until
     * it finds a resource record set for which the endpoint is healthy:
     * </p>
     * <ul>
     * <li>
     * <p>
     * The United States
     * </p>
     * </li>
     * <li>
     * <p>
     * North America
     * </p>
     * </li>
     * <li>
     * <p>
     * The default resource record set
     * </p>
     * </li>
     * </ul>
     * <p>
     * <b>Specifying the Health Check Endpoint by Domain Name</b>
     * </p>
     * <p>
     * If your health checks specify the endpoint only by domain name, we recommend that you create a separate health
     * check for each endpoint. For example, create a health check for each <code>HTTP</code> server that is serving
     * content for <code>www.example.com</code>. For the value of <code>FullyQualifiedDomainName</code>, specify the
     * domain name of the server (such as <code>us-east-2-www.example.com</code>), not the name of the resource record
     * sets (<code>www.example.com</code>).
     * </p>
     * <important>
     * <p>
     * Health check results will be unpredictable if you do the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * Create a health check that has the same value for <code>FullyQualifiedDomainName</code> as the name of a resource
     * record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * Associate that health check with the resource record set.
     * </p>
     * </li>
     * </ul>
     * </important>
     * 
     * @return If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the
     *         status of a health check is healthy, include the <code>HealthCheckId</code> element and specify the ID of
     *         the applicable health check.</p>
     *         <p>
     *         Route 53 determines whether a resource record set is healthy based on one of the following:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         By periodically sending a request to the endpoint that is specified in the health check
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         By aggregating the status of a specified group of health checks (calculated health checks)
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         By determining the current state of a CloudWatch alarm (CloudWatch metric health checks)
     *         </p>
     *         </li>
     *         </ul>
     *         <important>
     *         <p>
     *         Route 53 doesn't check the health of the endpoint that is specified in the resource record set, for
     *         example, the endpoint specified by the IP address in the <code>Value</code> element. When you add a
     *         <code>HealthCheckId</code> element to a resource record set, Route 53 checks the health of the endpoint
     *         that you specified in the health check.
     *         </p>
     *         </important>
     *         <p>
     *         For more information, see the following topics in the <i>Amazon Route 53 Developer Guide</i>:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         <a href=
     *         "https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html"
     *         >How Amazon Route 53 Determines Whether an Endpoint Is Healthy</a>
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health
     *         Checks and DNS Failover</a>
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <a
     *         href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     *         Configuring Failover in a Private Hosted Zone</a>
     *         </p>
     *         </li>
     *         </ul>
     *         <p>
     *         <b>When to Specify HealthCheckId</b>
     *         </p>
     *         <p>
     *         Specifying a value for <code>HealthCheckId</code> is useful only when Route 53 is choosing between two or
     *         more resource record sets to respond to a DNS query, and you want Route 53 to base the choice in part on
     *         the status of a health check. Configuring health checks makes sense only in the following configurations:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         <b>Non-alias resource record sets</b>: You're checking the health of a group of non-alias resource record
     *         sets that have the same routing policy, name, and type (such as multiple weighted records named
     *         www.example.com with a type of A) and you specify health check IDs for all the resource record sets.
     *         </p>
     *         <p>
     *         If the health check status for a resource record set is healthy, Route 53 includes the record among the
     *         records that it responds to DNS queries with.
     *         </p>
     *         <p>
     *         If the health check status for a resource record set is unhealthy, Route 53 stops responding to DNS
     *         queries using the value for that resource record set.
     *         </p>
     *         <p>
     *         If the health check status for all resource record sets in the group is unhealthy, Route 53 considers all
     *         resource record sets in the group healthy and responds to DNS queries accordingly.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         <b>Alias resource record sets</b>: You specify the following settings:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         You set <code>EvaluateTargetHealth</code> to true for an alias resource record set in a group of resource
     *         record sets that have the same routing policy, name, and type (such as multiple weighted records named
     *         www.example.com with a type of A).
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         You configure the alias resource record set to route traffic to a non-alias resource record set in the
     *         same hosted zone.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         You specify a health check ID for the non-alias resource record set.
     *         </p>
     *         </li>
     *         </ul>
     *         <p>
     *         If the health check status is healthy, Route 53 considers the alias resource record set to be healthy and
     *         includes the alias record among the records that it responds to DNS queries with.
     *         </p>
     *         <p>
     *         If the health check status is unhealthy, Route 53 stops responding to DNS queries using the alias
     *         resource record set.
     *         </p>
     *         <note>
     *         <p>
     *         The alias resource record set can also route traffic to a <i>group</i> of non-alias resource record sets
     *         that have the same routing policy, name, and type. In that configuration, associate health checks with
     *         all of the resource record sets in the group of non-alias resource record sets.
     *         </p>
     *         </note></li>
     *         </ul>
     *         <p>
     *         <b>Geolocation Routing</b>
     *         </p>
     *         <p>
     *         For geolocation resource record sets, if an endpoint is unhealthy, Route 53 looks for a resource record
     *         set for the larger, associated geographic region. For example, suppose you have resource record sets for
     *         a state in the United States, for the entire United States, for North America, and a resource record set
     *         that has <code>*</code> for <code>CountryCode</code> is <code>*</code>, which applies to all locations.
     *         If the endpoint for the state resource record set is unhealthy, Route 53 checks for healthy resource
     *         record sets in the following order until it finds a resource record set for which the endpoint is
     *         healthy:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         The United States
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         North America
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         The default resource record set
     *         </p>
     *         </li>
     *         </ul>
     *         <p>
     *         <b>Specifying the Health Check Endpoint by Domain Name</b>
     *         </p>
     *         <p>
     *         If your health checks specify the endpoint only by domain name, we recommend that you create a separate
     *         health check for each endpoint. For example, create a health check for each <code>HTTP</code> server that
     *         is serving content for <code>www.example.com</code>. For the value of
     *         <code>FullyQualifiedDomainName</code>, specify the domain name of the server (such as
     *         <code>us-east-2-www.example.com</code>), not the name of the resource record sets (
     *         <code>www.example.com</code>).
     *         </p>
     *         <important>
     *         <p>
     *         Health check results will be unpredictable if you do the following:
     *         </p>
     *         <ul>
     *         <li>
     *         <p>
     *         Create a health check that has the same value for <code>FullyQualifiedDomainName</code> as the name of a
     *         resource record set.
     *         </p>
     *         </li>
     *         <li>
     *         <p>
     *         Associate that health check with the resource record set.
     *         </p>
     *         </li>
     *         </ul>
     */

    public String getHealthCheckId() {
        return this.healthCheckId;
    }

    /**
     * <p>
     * If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of
     * a health check is healthy, include the <code>HealthCheckId</code> element and specify the ID of the applicable
     * health check.
     * </p>
     * <p>
     * Route 53 determines whether a resource record set is healthy based on one of the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * By periodically sending a request to the endpoint that is specified in the health check
     * </p>
     * </li>
     * <li>
     * <p>
     * By aggregating the status of a specified group of health checks (calculated health checks)
     * </p>
     * </li>
     * <li>
     * <p>
     * By determining the current state of a CloudWatch alarm (CloudWatch metric health checks)
     * </p>
     * </li>
     * </ul>
     * <important>
     * <p>
     * Route 53 doesn't check the health of the endpoint that is specified in the resource record set, for example, the
     * endpoint specified by the IP address in the <code>Value</code> element. When you add a <code>HealthCheckId</code>
     * element to a resource record set, Route 53 checks the health of the endpoint that you specified in the health
     * check.
     * </p>
     * </important>
     * <p>
     * For more information, see the following topics in the <i>Amazon Route 53 Developer Guide</i>:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <a href=
     * "https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html">How
     * Amazon Route 53 Determines Whether an Endpoint Is Healthy</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and
     * DNS Failover</a>
     * </p>
     * </li>
     * <li>
     * <p>
     * <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     * Configuring Failover in a Private Hosted Zone</a>
     * </p>
     * </li>
     * </ul>
     * <p>
     * <b>When to Specify HealthCheckId</b>
     * </p>
     * <p>
     * Specifying a value for <code>HealthCheckId</code> is useful only when Route 53 is choosing between two or more
     * resource record sets to respond to a DNS query, and you want Route 53 to base the choice in part on the status of
     * a health check. Configuring health checks makes sense only in the following configurations:
     * </p>
     * <ul>
     * <li>
     * <p>
     * <b>Non-alias resource record sets</b>: You're checking the health of a group of non-alias resource record sets
     * that have the same routing policy, name, and type (such as multiple weighted records named www.example.com with a
     * type of A) and you specify health check IDs for all the resource record sets.
     * </p>
     * <p>
     * If the health check status for a resource record set is healthy, Route 53 includes the record among the records
     * that it responds to DNS queries with.
     * </p>
     * <p>
     * If the health check status for a resource record set is unhealthy, Route 53 stops responding to DNS queries using
     * the value for that resource record set.
     * </p>
     * <p>
     * If the health check status for all resource record sets in the group is unhealthy, Route 53 considers all
     * resource record sets in the group healthy and responds to DNS queries accordingly.
     * </p>
     * </li>
     * <li>
     * <p>
     * <b>Alias resource record sets</b>: You specify the following settings:
     * </p>
     * <ul>
     * <li>
     * <p>
     * You set <code>EvaluateTargetHealth</code> to true for an alias resource record set in a group of resource record
     * sets that have the same routing policy, name, and type (such as multiple weighted records named www.example.com
     * with a type of A).
     * </p>
     * </li>
     * <li>
     * <p>
     * You configure the alias resource record set to route traffic to a non-alias resource record set in the same
     * hosted zone.
     * </p>
     * </li>
     * <li>
     * <p>
     * You specify a health check ID for the non-alias resource record set.
     * </p>
     * </li>
     * </ul>
     * <p>
     * If the health check status is healthy, Route 53 considers the alias resource record set to be healthy and
     * includes the alias record among the records that it responds to DNS queries with.
     * </p>
     * <p>
     * If the health check status is unhealthy, Route 53 stops responding to DNS queries using the alias resource record
     * set.
     * </p>
     * <note>
     * <p>
     * The alias resource record set can also route traffic to a <i>group</i> of non-alias resource record sets that
     * have the same routing policy, name, and type. In that configuration, associate health checks with all of the
     * resource record sets in the group of non-alias resource record sets.
     * </p>
     * </note></li>
     * </ul>
     * <p>
     * <b>Geolocation Routing</b>
     * </p>
     * <p>
     * For geolocation resource record sets, if an endpoint is unhealthy, Route 53 looks for a resource record set for
     * the larger, associated geographic region. For example, suppose you have resource record sets for a state in the
     * United States, for the entire United States, for North America, and a resource record set that has <code>*</code>
     * for <code>CountryCode</code> is <code>*</code>, which applies to all locations. If the endpoint for the state
     * resource record set is unhealthy, Route 53 checks for healthy resource record sets in the following order until
     * it finds a resource record set for which the endpoint is healthy:
     * </p>
     * <ul>
     * <li>
     * <p>
     * The United States
     * </p>
     * </li>
     * <li>
     * <p>
     * North America
     * </p>
     * </li>
     * <li>
     * <p>
     * The default resource record set
     * </p>
     * </li>
     * </ul>
     * <p>
     * <b>Specifying the Health Check Endpoint by Domain Name</b>
     * </p>
     * <p>
     * If your health checks specify the endpoint only by domain name, we recommend that you create a separate health
     * check for each endpoint. For example, create a health check for each <code>HTTP</code> server that is serving
     * content for <code>www.example.com</code>. For the value of <code>FullyQualifiedDomainName</code>, specify the
     * domain name of the server (such as <code>us-east-2-www.example.com</code>), not the name of the resource record
     * sets (<code>www.example.com</code>).
     * </p>
     * <important>
     * <p>
     * Health check results will be unpredictable if you do the following:
     * </p>
     * <ul>
     * <li>
     * <p>
     * Create a health check that has the same value for <code>FullyQualifiedDomainName</code> as the name of a resource
     * record set.
     * </p>
     * </li>
     * <li>
     * <p>
     * Associate that health check with the resource record set.
     * </p>
     * </li>
     * </ul>
     * </important>
     * 
     * @param healthCheckId
     *        If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the
     *        status of a health check is healthy, include the <code>HealthCheckId</code> element and specify the ID of
     *        the applicable health check.</p>
     *        <p>
     *        Route 53 determines whether a resource record set is healthy based on one of the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        By periodically sending a request to the endpoint that is specified in the health check
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        By aggregating the status of a specified group of health checks (calculated health checks)
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        By determining the current state of a CloudWatch alarm (CloudWatch metric health checks)
     *        </p>
     *        </li>
     *        </ul>
     *        <important>
     *        <p>
     *        Route 53 doesn't check the health of the endpoint that is specified in the resource record set, for
     *        example, the endpoint specified by the IP address in the <code>Value</code> element. When you add a
     *        <code>HealthCheckId</code> element to a resource record set, Route 53 checks the health of the endpoint
     *        that you specified in the health check.
     *        </p>
     *        </important>
     *        <p>
     *        For more information, see the following topics in the <i>Amazon Route 53 Developer Guide</i>:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <a href=
     *        "https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html"
     *        >How Amazon Route 53 Determines Whether an Endpoint Is Healthy</a>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health
     *        Checks and DNS Failover</a>
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">
     *        Configuring Failover in a Private Hosted Zone</a>
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        <b>When to Specify HealthCheckId</b>
     *        </p>
     *        <p>
     *        Specifying a value for <code>HealthCheckId</code> is useful only when Route 53 is choosing between two or
     *        more resource record sets to respond to a DNS query, and you want Route 53 to base the choice in part on
     *        the status of a health check. Configuring health checks makes sense only in the following configurations:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        <b>Non-alias resource record sets</b>: You're checking the health of a group of non-alias resource record
     *        sets that have the same routing policy, name, and type (such as multiple weighted records named
     *        www.example.com with a type of A) and you specify health check IDs for all the resource record sets.
     *        </p>
     *        <p>
     *        If the health check status for a resource record set is healthy, Route 53 includes the record among the
     *        records that it responds to DNS queries with.
     *        </p>
     *        <p>
     *        If the health check status for a resource record set is unhealthy, Route 53 stops responding to DNS
     *        queries using the value for that resource record set.
     *        </p>
     *        <p>
     *        If the health check status for all resource record sets in the group is unhealthy, Route 53 considers all
     *        resource record sets in the group healthy and responds to DNS queries accordingly.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        <b>Alias resource record sets</b>: You specify the following settings:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        You set <code>EvaluateTargetHealth</code> to true for an alias resource record set in a group of resource
     *        record sets that have the same routing policy, name, and type (such as multiple weighted records named
     *        www.example.com with a type of A).
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You configure the alias resource record set to route traffic to a non-alias resource record set in the
     *        same hosted zone.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        You specify a health check ID for the non-alias resource record set.
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        If the health check status is healthy, Route 53 considers the alias resource record set to be healthy and
     *        includes the alias record among the records that it responds to DNS queries with.
     *        </p>
     *        <p>
     *        If the health check status is unhealthy, Route 53 stops responding to DNS queries using the alias resource
     *        record set.
     *        </p>
     *        <note>
     *        <p>
     *        The alias resource record set can also route traffic to a <i>group</i> of non-alias resource record sets
     *        that have the same routing policy, name, and type. In that configuration, associate health checks with all
     *        of the resource record sets in the group of non-alias resource record sets.
     *        </p>
     *        </note></li>
     *        </ul>
     *        <p>
     *        <b>Geolocation Routing</b>
     *        </p>
     *        <p>
     *        For geolocation resource record sets, if an endpoint is unhealthy, Route 53 looks for a resource record
     *        set for the larger, associated geographic region. For example, suppose you have resource record sets for a
     *        state in the United States, for the entire United States, for North America, and a resource record set
     *        that has <code>*</code> for <code>CountryCode</code> is <code>*</code>, which applies to all locations. If
     *        the endpoint for the state resource record set is unhealthy, Route 53 checks for healthy resource record
     *        sets in the following order until it finds a resource record set for which the endpoint is healthy:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        The United States
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        North America
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        The default resource record set
     *        </p>
     *        </li>
     *        </ul>
     *        <p>
     *        <b>Specifying the Health Check Endpoint by Domain Name</b>
     *        </p>
     *        <p>
     *        If your health checks specify the endpoint only by domain name, we recommend that you create a separate
     *        health check for each endpoint. For example, create a health check for each <code>HTTP</code> server that
     *        is serving content for <code>www.example.com</code>. For the value of
     *        <code>FullyQualifiedDomainName</code>, specify the domain name of the server (such as
     *        <code>us-east-2-www.example.com</code>), not the name of the resource record sets (
     *        <code>www.example.com</code>).
     *        </p>
     *        <important>
     *        <p>
     *        Health check results will be unpredictable if you do the following:
     *        </p>
     *        <ul>
     *        <li>
     *        <p>
     *        Create a health check that has the same value for <code>FullyQualifiedDomainName</code> as the name of a
     *        resource record set.
     *        </p>
     *        </li>
     *        <li>
     *        <p>
     *        Associate that health check with the resource record set.
     *        </p>
     *        </li>
     *        </ul>
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public ResourceRecordSet withHealthCheckId(String healthCheckId) {
        setHealthCheckId(healthCheckId);
        return this;
    }

    /**
     * <p>
     * When you create a traffic policy instance, Amazon Route 53 automatically creates a resource record set.
     * <code>TrafficPolicyInstanceId</code> is the ID of the traffic policy instance that Route 53 created this resource
     * record set for.
     * </p>
     * <important>
     * <p>
     * To delete the resource record set that is associated with a traffic policy instance, use
     * <code>DeleteTrafficPolicyInstance</code>. Route 53 will delete the resource record set automatically. If you
     * delete the resource record set by using <code>ChangeResourceRecordSets</code>, Route 53 doesn't automatically
     * delete the traffic policy instance, and you'll continue to be charged for it even though it's no longer in use.
     * </p>
     * </important>
     * 
     * @param trafficPolicyInstanceId
     *        When you create a traffic policy instance, Amazon Route 53 automatically creates a resource record set.
     *        <code>TrafficPolicyInstanceId</code> is the ID of the traffic policy instance that Route 53 created this
     *        resource record set for.</p> <important>
     *        <p>
     *        To delete the resource record set that is associated with a traffic policy instance, use
     *        <code>DeleteTrafficPolicyInstance</code>. Route 53 will delete the resource record set automatically. If
     *        you delete the resource record set by using <code>ChangeResourceRecordSets</code>, Route 53 doesn't
     *        automatically delete the traffic policy instance, and you'll continue to be charged for it even though
     *        it's no longer in use.
     *        </p>
     */

    public void setTrafficPolicyInstanceId(String trafficPolicyInstanceId) {
        this.trafficPolicyInstanceId = trafficPolicyInstanceId;
    }

    /**
     * <p>
     * When you create a traffic policy instance, Amazon Route 53 automatically creates a resource record set.
     * <code>TrafficPolicyInstanceId</code> is the ID of the traffic policy instance that Route 53 created this resource
     * record set for.
     * </p>
     * <important>
     * <p>
     * To delete the resource record set that is associated with a traffic policy instance, use
     * <code>DeleteTrafficPolicyInstance</code>. Route 53 will delete the resource record set automatically. If you
     * delete the resource record set by using <code>ChangeResourceRecordSets</code>, Route 53 doesn't automatically
     * delete the traffic policy instance, and you'll continue to be charged for it even though it's no longer in use.
     * </p>
     * </important>
     * 
     * @return When you create a traffic policy instance, Amazon Route 53 automatically creates a resource record set.
     *         <code>TrafficPolicyInstanceId</code> is the ID of the traffic policy instance that Route 53 created this
     *         resource record set for.</p> <important>
     *         <p>
     *         To delete the resource record set that is associated with a traffic policy instance, use
     *         <code>DeleteTrafficPolicyInstance</code>. Route 53 will delete the resource record set automatically. If
     *         you delete the resource record set by using <code>ChangeResourceRecordSets</code>, Route 53 doesn't
     *         automatically delete the traffic policy instance, and you'll continue to be charged for it even though
     *         it's no longer in use.
     *         </p>
     */

    public String getTrafficPolicyInstanceId() {
        return this.trafficPolicyInstanceId;
    }

    /**
     * <p>
     * When you create a traffic policy instance, Amazon Route 53 automatically creates a resource record set.
     * <code>TrafficPolicyInstanceId</code> is the ID of the traffic policy instance that Route 53 created this resource
     * record set for.
     * </p>
     * <important>
     * <p>
     * To delete the resource record set that is associated with a traffic policy instance, use
     * <code>DeleteTrafficPolicyInstance</code>. Route 53 will delete the resource record set automatically. If you
     * delete the resource record set by using <code>ChangeResourceRecordSets</code>, Route 53 doesn't automatically
     * delete the traffic policy instance, and you'll continue to be charged for it even though it's no longer in use.
     * </p>
     * </important>
     * 
     * @param trafficPolicyInstanceId
     *        When you create a traffic policy instance, Amazon Route 53 automatically creates a resource record set.
     *        <code>TrafficPolicyInstanceId</code> is the ID of the traffic policy instance that Route 53 created this
     *        resource record set for.</p> <important>
     *        <p>
     *        To delete the resource record set that is associated with a traffic policy instance, use
     *        <code>DeleteTrafficPolicyInstance</code>. Route 53 will delete the resource record set automatically. If
     *        you delete the resource record set by using <code>ChangeResourceRecordSets</code>, Route 53 doesn't
     *        automatically delete the traffic policy instance, and you'll continue to be charged for it even though
     *        it's no longer in use.
     *        </p>
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public ResourceRecordSet withTrafficPolicyInstanceId(String trafficPolicyInstanceId) {
        setTrafficPolicyInstanceId(trafficPolicyInstanceId);
        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 (getName() != null)
            sb.append("Name: ").append(getName()).append(",");
        if (getType() != null)
            sb.append("Type: ").append(getType()).append(",");
        if (getSetIdentifier() != null)
            sb.append("SetIdentifier: ").append(getSetIdentifier()).append(",");
        if (getWeight() != null)
            sb.append("Weight: ").append(getWeight()).append(",");
        if (getRegion() != null)
            sb.append("Region: ").append(getRegion()).append(",");
        if (getGeoLocation() != null)
            sb.append("GeoLocation: ").append(getGeoLocation()).append(",");
        if (getFailover() != null)
            sb.append("Failover: ").append(getFailover()).append(",");
        if (getMultiValueAnswer() != null)
            sb.append("MultiValueAnswer: ").append(getMultiValueAnswer()).append(",");
        if (getTTL() != null)
            sb.append("TTL: ").append(getTTL()).append(",");
        if (getResourceRecords() != null)
            sb.append("ResourceRecords: ").append(getResourceRecords()).append(",");
        if (getAliasTarget() != null)
            sb.append("AliasTarget: ").append(getAliasTarget()).append(",");
        if (getHealthCheckId() != null)
            sb.append("HealthCheckId: ").append(getHealthCheckId()).append(",");
        if (getTrafficPolicyInstanceId() != null)
            sb.append("TrafficPolicyInstanceId: ").append(getTrafficPolicyInstanceId());
        sb.append("}");
        return sb.toString();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;

        if (obj instanceof ResourceRecordSet == false)
            return false;
        ResourceRecordSet other = (ResourceRecordSet) obj;
        if (other.getName() == null ^ this.getName() == null)
            return false;
        if (other.getName() != null && other.getName().equals(this.getName()) == false)
            return false;
        if (other.getType() == null ^ this.getType() == null)
            return false;
        if (other.getType() != null && other.getType().equals(this.getType()) == false)
            return false;
        if (other.getSetIdentifier() == null ^ this.getSetIdentifier() == null)
            return false;
        if (other.getSetIdentifier() != null && other.getSetIdentifier().equals(this.getSetIdentifier()) == false)
            return false;
        if (other.getWeight() == null ^ this.getWeight() == null)
            return false;
        if (other.getWeight() != null && other.getWeight().equals(this.getWeight()) == false)
            return false;
        if (other.getRegion() == null ^ this.getRegion() == null)
            return false;
        if (other.getRegion() != null && other.getRegion().equals(this.getRegion()) == false)
            return false;
        if (other.getGeoLocation() == null ^ this.getGeoLocation() == null)
            return false;
        if (other.getGeoLocation() != null && other.getGeoLocation().equals(this.getGeoLocation()) == false)
            return false;
        if (other.getFailover() == null ^ this.getFailover() == null)
            return false;
        if (other.getFailover() != null && other.getFailover().equals(this.getFailover()) == false)
            return false;
        if (other.getMultiValueAnswer() == null ^ this.getMultiValueAnswer() == null)
            return false;
        if (other.getMultiValueAnswer() != null
                && other.getMultiValueAnswer().equals(this.getMultiValueAnswer()) == false)
            return false;
        if (other.getTTL() == null ^ this.getTTL() == null)
            return false;
        if (other.getTTL() != null && other.getTTL().equals(this.getTTL()) == false)
            return false;
        if (other.getResourceRecords() == null ^ this.getResourceRecords() == null)
            return false;
        if (other.getResourceRecords() != null
                && other.getResourceRecords().equals(this.getResourceRecords()) == false)
            return false;
        if (other.getAliasTarget() == null ^ this.getAliasTarget() == null)
            return false;
        if (other.getAliasTarget() != null && other.getAliasTarget().equals(this.getAliasTarget()) == false)
            return false;
        if (other.getHealthCheckId() == null ^ this.getHealthCheckId() == null)
            return false;
        if (other.getHealthCheckId() != null && other.getHealthCheckId().equals(this.getHealthCheckId()) == false)
            return false;
        if (other.getTrafficPolicyInstanceId() == null ^ this.getTrafficPolicyInstanceId() == null)
            return false;
        if (other.getTrafficPolicyInstanceId() != null
                && other.getTrafficPolicyInstanceId().equals(this.getTrafficPolicyInstanceId()) == false)
            return false;
        return true;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;

        hashCode = prime * hashCode + ((getName() == null) ? 0 : getName().hashCode());
        hashCode = prime * hashCode + ((getType() == null) ? 0 : getType().hashCode());
        hashCode = prime * hashCode + ((getSetIdentifier() == null) ? 0 : getSetIdentifier().hashCode());
        hashCode = prime * hashCode + ((getWeight() == null) ? 0 : getWeight().hashCode());
        hashCode = prime * hashCode + ((getRegion() == null) ? 0 : getRegion().hashCode());
        hashCode = prime * hashCode + ((getGeoLocation() == null) ? 0 : getGeoLocation().hashCode());
        hashCode = prime * hashCode + ((getFailover() == null) ? 0 : getFailover().hashCode());
        hashCode = prime * hashCode + ((getMultiValueAnswer() == null) ? 0 : getMultiValueAnswer().hashCode());
        hashCode = prime * hashCode + ((getTTL() == null) ? 0 : getTTL().hashCode());
        hashCode = prime * hashCode + ((getResourceRecords() == null) ? 0 : getResourceRecords().hashCode());
        hashCode = prime * hashCode + ((getAliasTarget() == null) ? 0 : getAliasTarget().hashCode());
        hashCode = prime * hashCode + ((getHealthCheckId() == null) ? 0 : getHealthCheckId().hashCode());
        hashCode = prime * hashCode
                + ((getTrafficPolicyInstanceId() == null) ? 0 : getTrafficPolicyInstanceId().hashCode());
        return hashCode;
    }

    @Override
    public ResourceRecordSet clone() {
        try {
            return (ResourceRecordSet) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException(
                    "Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e);
        }
    }

}