import { AliasTargetProps } from './AliasTargetProps';
import { CidrRoutingConfigProps } from './CidrRoutingConfigProps';
import { Value } from '../../../cloudformation/Value';
import { GeoLocationProps } from './GeoLocationProps';
/**
  Information about the record that you want to create.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html">the AWS Docs</a>
*/
export interface RecordSetProps {
    /** <code>AliasTarget</code>  <a name="cfn-route53-recordset-aliastarget"></a>
  
  Alias resource record sets only:: nformation about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.<br />
  If you’re creating resource records sets for a private hosted zone, note the following: */
    aliasTarget?: AliasTargetProps;
    /** <code>CidrRoutingConfig</code>  <a name="cfn-route53-recordset-cidrroutingconfig"></a>
  The object that is specified in resource record set object when you are linking a resource record set to a CIDR location.<br />
  A <code>LocationName</code> with an asterisk “*” can be used to create a default CIDR record. <code>CollectionId</code> is still required for default record.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    cidrRoutingConfig?: CidrRoutingConfigProps;
    /** <code>Failover</code>  <a name="cfn-route53-recordset-failover"></a>
  
  Failover resource record sets only:: o 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.<br />
  Except where noted, the following failover behaviors assume that you have included the <code>HealthCheckId</code> element in both resource record sets: */
    failover?: Value<string>;
    /** <code>GeoLocation</code>  <a name="cfn-route53-recordset-geolocation"></a>
  
  Geolocation resource record sets only::  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>.<br />
  Although creating geolocation and geolocation alias resource record sets in a private hosted zone is allowed, it’s not supported.
  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.<br />
  You can’t create two geolocation resource record sets that specify the same geographic location.<br />
  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.<br />
  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>. Two groups of queries are routed to the resource that you specify in this record: 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.
  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.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    geoLocation?: GeoLocationProps;
    /** <p> */
    healthCheckId?: Value<string>;
    /** <code>HostedZoneId</code>  <a name="cfn-route53-recordset-hostedzoneid"></a>
  The ID of the hosted zone that you want to create records in.<br />
  Specify either <code>HostedZoneName</code> or <code>HostedZoneId</code>, but not both. If you have multiple hosted zones with the same domain name, you must specify the hosted zone using <code>HostedZoneId</code>.<br />
  
  Required: No<br />
  
  Maximum: <code>32</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement">Replacement</a> */
    hostedZoneId?: Value<string>;
    /** <code>HostedZoneName</code>  <a name="cfn-route53-recordset-hostedzonename"></a>
  The name of the hosted zone that you want to create records in. You must include a trailing dot (for example, <code>www.example.com.</code>) as part of the <code>HostedZoneName</code>.<br />
  When you create a stack using an AWS::Route53::RecordSet that specifies <code>HostedZoneName</code>, AWS CloudFormation attempts to find a hosted zone whose name matches the HostedZoneName. If AWS CloudFormation cannot find a hosted zone with a matching domain name, or if there is more than one hosted zone with the specified domain name, AWS CloudFormation will not create the stack.<br />
  Specify either <code>HostedZoneName</code> or <code>HostedZoneId</code>, but not both. If you have multiple hosted zones with the same domain name, you must specify the hosted zone using <code>HostedZoneId</code>.<br />
  
  Required: No<br />
  
  Maximum: <code>32</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement">Replacement</a> */
    hostedZoneName?: Value<string>;
    /** <code>MultiValueAnswer</code>  <a name="cfn-route53-recordset-multivalueanswer"></a>
  
  Multivalue answer resource record sets only: 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: */
    multiValueAnswer?: Value<boolean>;
    /** <p>You can create a maximum of 100 weighted resource record sets that have the same values for the  */
    name: Value<string>;
    /** <code>Region</code>  <a name="cfn-route53-recordset-region"></a>
  
  Latency-based resource record sets only:: he 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.<br />
  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.<br />
  Note the following: */
    region?: Value<string>;
    /** <code>ResourceRecords</code>  <a name="cfn-route53-recordset-resourcerecords"></a>
  One or more values that correspond with the value that you specified for the <code>Type</code> property. For example, if you specified <code>A</code> for <code>Type</code>, you specify one or more IP addresses in IPv4 format for <code>ResourceRecords</code>. For information about the format of values for each record type, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS Resource Record Types</a> in the
  Amazon Route 53 Developer Guide: br />
  Note the following: */
    resourceRecords?: Value<Value<string>[]>;
    /** <code>SetIdentifier</code>  <a name="cfn-route53-recordset-setidentifier"></a>
  
  Resource record sets that have a routing policy other than simple:: n 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.<br />
  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
  Amazon Route 53 Developer Guide: br />
  
  Required: No<br />
  
  Minimum: <code>1</code><br />
  
  Maximum: <code>128</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    setIdentifier?: Value<string>;
    /** <p> */
    tTL?: Value<string>;
    /** <code>Type</code>  <a name="cfn-route53-recordset-type"></a>
  The DNS record type. For information about different record types and how data is encoded for them, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS Resource Record Types</a> in the
  Amazon Route 53 Developer Guide: br />
  Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>DS</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><br />
  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.<br />
  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><br />
  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,
  Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1: 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>.
  Values for alias resource record sets: */
    type: Value<string>;
    /** <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="https://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
  Amazon Route 53 Developer Guide:
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    weight?: Value<number>;
}
