Container for the parameters to the ChangeResourceRecordSets operation.

Use this action to create or change your authoritative DNS information. To use this action, send a POST request to the 2012-12-12/hostedzone/hosted Zone ID/rrset resource. The request body must include an XML document with a ChangeResourceRecordSetsRequest element.

Changes are a list of change items and are considered transactional. For more information on transactional changes, also known as change batches, see Creating, Changing, and Deleting Resource Record Sets Using the Route 53 API in the Amazon Route 53 Developer Guide .

IMPORTANT:Due to the nature of transactional changes, you cannot delete the same resource record set more than once in a single change batch. If you attempt to delete the same change batch more than once, Route 53 returns an InvalidChangeBatch error.

In response to a ChangeResourceRecordSets request, your DNS data is changed on all Route 53 DNS servers. Initially, the status of a change is PENDING . This means the change has not yet propagated to all the authoritative Route 53 DNS servers. When the change is propagated to all hosts, the change returns a status of INSYNC .

Note the following limitations on a ChangeResourceRecordSets request:

- A request cannot contain more than 100 Change elements.

- A request cannot contain more than 1000 ResourceRecord elements.

The sum of the number of characters (including spaces) in all Value elements in a request cannot exceed 32,000 characters.

Inheritance: Amazon.Runtime.AmazonWebServiceRequest
Exemple #1
0
 public void EditR53Record(Amazon.Route53.Model.ResourceRecordSet rrset, bool delete = false)
 {
     using (var r53 = new Amazon.Route53.AmazonRoute53Client(
                CommonParams.ResolveCredentials(),
                CommonParams.RegionEndpoint))
     {
         var rrRequ = new Amazon.Route53.Model.ChangeResourceRecordSetsRequest
         {
             HostedZoneId = HostedZoneId,
             ChangeBatch  = new Amazon.Route53.Model.ChangeBatch
             {
                 Changes = new List <Amazon.Route53.Model.Change>
                 {
                     new Amazon.Route53.Model.Change
                     {
                         Action = delete
                             ? Amazon.Route53.ChangeAction.DELETE
                             : Amazon.Route53.ChangeAction.UPSERT,
                         ResourceRecordSet = rrset
                     }
                 }
             }
         };
         var rrResp = r53.ChangeResourceRecordSets(rrRequ);
     }
 }
Exemple #2
0
        public async Task EditR53Record(Amazon.Route53.Model.ResourceRecordSet rrSet,
                                        bool delete = false)
        {
#pragma warning disable 618 // "'StoredProfileCredentials' is obsolete..."
            //var creds = new BasicAWSCredentials(AwsAccessKey, AwsSecretKey);
            var creds = new StoredProfileAWSCredentials("acmesharp-tests");
#pragma warning restore 618
            var reg = RegionEndpoint.GetBySystemName(AwsRegion);
            using (var r53 = new Amazon.Route53.AmazonRoute53Client(creds, reg))
            {
                var rrRequ = new Amazon.Route53.Model.ChangeResourceRecordSetsRequest
                {
                    HostedZoneId = HostedZoneId,
                    ChangeBatch  = new Amazon.Route53.Model.ChangeBatch
                    {
                        Changes = new List <Amazon.Route53.Model.Change>
                        {
                            new Amazon.Route53.Model.Change
                            {
                                Action = delete
                                    ? Amazon.Route53.ChangeAction.DELETE
                                    : Amazon.Route53.ChangeAction.UPSERT,
                                ResourceRecordSet = rrSet
                            }
                        }
                    }
                };

                var rrResp = await r53.ChangeResourceRecordSetsAsync(rrRequ);
            }
        }
Exemple #3
0
    public static void Route53CreateAdd(string[] args)
    {
      #region Route53CreateAdd
      string domainName = "www.example.org";

      IAmazonRoute53 route53Client = new AmazonRoute53Client();

      CreateHostedZoneRequest zoneRequest = new CreateHostedZoneRequest
      {
        Name = domainName,
        CallerReference = "my_change_request"
      };

      CreateHostedZoneResponse zoneResponse = route53Client.CreateHostedZone(zoneRequest);

      ResourceRecordSet recordSet = new ResourceRecordSet
      {
        Name = domainName,
        TTL = 60,
        Type = RRType.A,
        ResourceRecords = new List<ResourceRecord> { new ResourceRecord { Value = "192.0.2.235" } }
      };

      Change change1 = new Change
      {
        ResourceRecordSet = recordSet,
        Action = ChangeAction.CREATE
      };

      ChangeBatch changeBatch = new ChangeBatch
      {
        Changes = new List<Change> { change1 }
      };

      ChangeResourceRecordSetsRequest recordsetRequest = new ChangeResourceRecordSetsRequest
      {
        HostedZoneId = zoneResponse.HostedZone.Id,
        ChangeBatch = changeBatch
      };

      ChangeResourceRecordSetsResponse recordsetResponse = route53Client.ChangeResourceRecordSets(recordsetRequest);

      GetChangeRequest changeRequest = new GetChangeRequest
      {
        Id = recordsetResponse.ChangeInfo.Id
      };

      while (route53Client.GetChange(changeRequest).ChangeInfo.Status == ChangeStatus.PENDING)
      {
        Console.WriteLine("Change is pending.");
        Thread.Sleep(TimeSpan.FromSeconds(15));
      }
      #endregion

      Console.WriteLine("Change is complete.");
      Console.ReadKey();
    }
Exemple #4
0
        public void EditR53Record(Amazon.Route53.Model.ResourceRecordSet rrset, bool delete = false)
        {
            using (var r53 = new Amazon.Route53.AmazonRoute53Client(
                       CommonParams.ResolveCredentials(),
                       CommonParams.RegionEndpoint))
            {
                var rrRequ = new Amazon.Route53.Model.ChangeResourceRecordSetsRequest
                {
                    HostedZoneId = HostedZoneId,
                    ChangeBatch  = new Amazon.Route53.Model.ChangeBatch
                    {
                        Changes = new List <Amazon.Route53.Model.Change>
                        {
                            new Amazon.Route53.Model.Change
                            {
                                Action = delete
                                    ? Amazon.Route53.ChangeAction.DELETE
                                    : Amazon.Route53.ChangeAction.UPSERT,
                                ResourceRecordSet = rrset
                            }
                        }
                    }
                };

                LOG.Debug("Submiting R53 action [{0}] to zone [{1}] for record [{2}]",
                          rrRequ.ChangeBatch.Changes[0].Action,
                          rrRequ.HostedZoneId,
                          rrRequ.ChangeBatch.Changes[0].ResourceRecordSet.Name);

                var rrResp = r53.ChangeResourceRecordSets(rrRequ);

                if (LOG.IsDebugEnabled)
                {
                    LOG.Debug("R53 response: [{0}]",
                              NLog.Targets.DefaultJsonSerializer.Instance.SerializeObject(rrResp));
                }
            }
        }
        /// <summary>
        /// Initiates the asynchronous execution of the ChangeResourceRecordSets operation.
        /// </summary>
        /// 
        /// <param name="request">Container for the necessary parameters to execute the ChangeResourceRecordSets operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        public Task<ChangeResourceRecordSetsResponse> ChangeResourceRecordSetsAsync(ChangeResourceRecordSetsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller = new ChangeResourceRecordSetsRequestMarshaller();
            var unmarshaller = ChangeResourceRecordSetsResponseUnmarshaller.Instance;

            return InvokeAsync<ChangeResourceRecordSetsRequest,ChangeResourceRecordSetsResponse>(request, marshaller, 
                unmarshaller, cancellationToken);
        }
        /// <summary>
        /// Use this action to create or change your authoritative DNS information. To use this
        /// action, send a <code>POST</code> request to the <code>2013-04-01/hostedzone/<i>hosted
        /// Zone ID</i>/rrset</code> resource. The request body must include an XML document with
        /// a <code>ChangeResourceRecordSetsRequest</code> element.
        /// 
        ///  
        /// <para>
        /// Changes are a list of change items and are considered transactional. For more information
        /// on transactional changes, also known as change batches, see <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/RRSchanges.html#RRSchanges_API">Creating,
        /// Changing, and Deleting Resource Record Sets Using the Route 53 API</a> in the <i>Amazon
        /// Route 53 Developer Guide</i>.
        /// </para>
        ///  <important>Due to the nature of transactional changes, you cannot delete the same
        /// resource record set more than once in a single change batch. If you attempt to delete
        /// the same change batch more than once, Route 53 returns an <code>InvalidChangeBatch</code>
        /// error.</important> 
        /// <para>
        /// In response to a <code>ChangeResourceRecordSets</code> request, your DNS data is changed
        /// on all Route 53 DNS servers. Initially, the status of a change is <code>PENDING</code>.
        /// This means the change has not yet propagated to all the authoritative Route 53 DNS
        /// servers. When the change is propagated to all hosts, the change returns a status of
        /// <code>INSYNC</code>.
        /// </para>
        ///  
        /// <para>
        /// Note the following limitations on a <code>ChangeResourceRecordSets</code> request:
        /// </para>
        ///  
        /// <para>
        /// - A request cannot contain more than 100 Change elements.
        /// </para>
        ///  
        /// <para>
        /// - A request cannot contain more than 1000 ResourceRecord elements.
        /// </para>
        ///  
        /// <para>
        /// The sum of the number of characters (including spaces) in all <code>Value</code> elements
        /// in a request cannot exceed 32,000 characters.
        /// </para>
        /// </summary>
        /// <param name="request">Container for the necessary parameters to execute the ChangeResourceRecordSets service method.</param>
        /// 
        /// <returns>The response from the ChangeResourceRecordSets service method, as returned by Route53.</returns>
        /// <exception cref="Amazon.Route53.Model.InvalidChangeBatchException">
        /// This error contains a list of one or more error messages. Each error message indicates
        /// one error in the change batch. For more information, see <a href="http://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html#example_Errors">Example
        /// InvalidChangeBatch Errors</a>.
        /// </exception>
        /// <exception cref="Amazon.Route53.Model.InvalidInputException">
        /// Some value specified in the request is invalid or the XML document is malformed.
        /// </exception>
        /// <exception cref="Amazon.Route53.Model.NoSuchHealthCheckException">
        /// The health check you are trying to get or delete does not exist.
        /// </exception>
        /// <exception cref="Amazon.Route53.Model.NoSuchHostedZoneException">
        /// 
        /// </exception>
        /// <exception cref="Amazon.Route53.Model.PriorRequestNotCompleteException">
        /// The request was rejected because Route 53 was still processing a prior request.
        /// </exception>
        public ChangeResourceRecordSetsResponse ChangeResourceRecordSets(ChangeResourceRecordSetsRequest request)
        {
            var marshaller = new ChangeResourceRecordSetsRequestMarshaller();
            var unmarshaller = ChangeResourceRecordSetsResponseUnmarshaller.Instance;

            return Invoke<ChangeResourceRecordSetsRequest,ChangeResourceRecordSetsResponse>(request, marshaller, unmarshaller);
        }
        /// <summary>
        /// Initiates the asynchronous execution of the ChangeResourceRecordSets operation.
        /// </summary>
        /// 
        /// <param name="request">Container for the necessary parameters to execute the ChangeResourceRecordSets operation on AmazonRoute53Client.</param>
        /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param>
        /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.</param>
        /// 
        /// <returns>An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndChangeResourceRecordSets
        ///         operation.</returns>
        public IAsyncResult BeginChangeResourceRecordSets(ChangeResourceRecordSetsRequest request, AsyncCallback callback, object state)
        {
            var marshaller = new ChangeResourceRecordSetsRequestMarshaller();
            var unmarshaller = ChangeResourceRecordSetsResponseUnmarshaller.Instance;

            return BeginInvoke<ChangeResourceRecordSetsRequest>(request, marshaller, unmarshaller,
                callback, state);
        }
 IAsyncResult invokeChangeResourceRecordSets(ChangeResourceRecordSetsRequest changeResourceRecordSetsRequest, AsyncCallback callback, object state, bool synchronized)
 {
     IRequest irequest = new ChangeResourceRecordSetsRequestMarshaller().Marshall(changeResourceRecordSetsRequest);
     var unmarshaller = ChangeResourceRecordSetsResponseUnmarshaller.GetInstance();
     AsyncResult result = new AsyncResult(irequest, callback, state, synchronized, signer, unmarshaller);
     Invoke(result);
     return result;
 }
 /// <summary>
 /// <para>Use this action to create or change your authoritative DNS information. To use this action, send a <c>POST</c> request to the
 /// <c>2011-05-05/hostedzone/hosted Zone ID/rrset</c> resource. The request body must include an XML document with a
 /// <c>ChangeResourceRecordSetsRequest</c> element.</para> <para>Changes are a list of change items and are considered transactional. For more
 /// information on transactional changes, also known as change batches, see Creating, Changing, and Deleting Resource Record Sets Using the
 /// Route 53 API in the <i>Amazon Route 53 Developer Guide</i> .</para> <para><b>IMPORTANT:</b>Due to the nature of transactional changes, you
 /// cannot delete the same resource record set more than once in a single change batch. If you attempt to delete the same change batch more than
 /// once, Route 53 returns an InvalidChangeBatch error.</para> <para>In response to a <c>ChangeResourceRecordSets</c> request, your DNS data is
 /// changed on all Route 53 DNS servers. Initially, the status of a change is <c>PENDING</c> . This means the change has not yet propagated to
 /// all the authoritative Route 53 DNS servers. When the change is propagated to all hosts, the change returns a status of <c>INSYNC</c>
 /// .</para> <para>Note the following limitations on a <c>ChangeResourceRecordSets</c> request:</para> <para>- A request cannot contain more
 /// than 100 Change elements.</para> <para>- A request cannot contain more than 1000 ResourceRecord elements.</para> <para>The sum of the number
 /// of characters (including spaces) in all <c>Value</c> elements in a request cannot exceed 32,000 characters.</para>
 /// </summary>
 /// 
 /// <param name="changeResourceRecordSetsRequest">Container for the necessary parameters to execute the ChangeResourceRecordSets service method
 ///          on AmazonRoute53.</param>
 /// 
 /// <returns>The response from the ChangeResourceRecordSets service method, as returned by AmazonRoute53.</returns>
 /// 
 /// <exception cref="InvalidInputException"/>
 /// <exception cref="InvalidChangeBatchException"/>
 public ChangeResourceRecordSetsResponse ChangeResourceRecordSets(ChangeResourceRecordSetsRequest changeResourceRecordSetsRequest)
 {
     IAsyncResult asyncResult = invokeChangeResourceRecordSets(changeResourceRecordSetsRequest, null, null, true);
     return EndChangeResourceRecordSets(asyncResult);
 }
		internal ChangeResourceRecordSetsResponse ChangeResourceRecordSets(ChangeResourceRecordSetsRequest request)
        {
            var task = ChangeResourceRecordSetsAsync(request);
            try
            {
                return task.Result;
            }
            catch(AggregateException e)
            {
                ExceptionDispatchInfo.Capture(e.InnerException).Throw();
                return null;
            }
        }
Exemple #11
0
        public object Execute(ExecutorContext context)
        {
            var cmdletContext = context as CmdletContext;
            // create request
            var request = new Amazon.Route53.Model.ChangeResourceRecordSetsRequest();

            if (cmdletContext.HostedZoneId != null)
            {
                request.HostedZoneId = cmdletContext.HostedZoneId;
            }

            // populate ChangeBatch
            var requestChangeBatchIsNull = true;

            request.ChangeBatch = new Amazon.Route53.Model.ChangeBatch();
            System.String requestChangeBatch_changeBatch_Comment = null;
            if (cmdletContext.ChangeBatch_Comment != null)
            {
                requestChangeBatch_changeBatch_Comment = cmdletContext.ChangeBatch_Comment;
            }
            if (requestChangeBatch_changeBatch_Comment != null)
            {
                request.ChangeBatch.Comment = requestChangeBatch_changeBatch_Comment;
                requestChangeBatchIsNull    = false;
            }
            List <Amazon.Route53.Model.Change> requestChangeBatch_changeBatch_Change = null;

            if (cmdletContext.ChangeBatch_Change != null)
            {
                requestChangeBatch_changeBatch_Change = cmdletContext.ChangeBatch_Change;
            }
            if (requestChangeBatch_changeBatch_Change != null)
            {
                request.ChangeBatch.Changes = requestChangeBatch_changeBatch_Change;
                requestChangeBatchIsNull    = false;
            }
            // determine if request.ChangeBatch should be set to null
            if (requestChangeBatchIsNull)
            {
                request.ChangeBatch = null;
            }

            CmdletOutput output;

            // issue call
            var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);

            try
            {
                var    response       = CallAWSServiceOperation(client, request);
                object pipelineOutput = null;
                pipelineOutput = cmdletContext.Select(response, this);
                output         = new CmdletOutput
                {
                    PipelineOutput  = pipelineOutput,
                    ServiceResponse = response
                };
            }
            catch (Exception e)
            {
                output = new CmdletOutput {
                    ErrorResponse = e
                };
            }

            return(output);
        }
Exemple #12
0
 public void EditR53Record(Amazon.Route53.Model.ResourceRecordSet rrset, bool delete = false)
 {
     using (var r53 = new Amazon.Route53.AmazonRoute53Client(
             CommonParams.ResolveCredentials(),
             CommonParams.RegionEndpoint))
     {
         var rrRequ = new Amazon.Route53.Model.ChangeResourceRecordSetsRequest
         {
             HostedZoneId = HostedZoneId,
             ChangeBatch = new Amazon.Route53.Model.ChangeBatch
             {
                 Changes = new List<Amazon.Route53.Model.Change>
                 {
                     new Amazon.Route53.Model.Change
                     {
                         Action = delete
                             ? Amazon.Route53.ChangeAction.DELETE
                             : Amazon.Route53.ChangeAction.UPSERT,
                         ResourceRecordSet = rrset
                     }
                 }
             }
         };
         var rrResp = r53.ChangeResourceRecordSets(rrRequ);
     }
 }
        private ChangeResourceRecordSetsRequest GetChangeResourceRecordSetsRequest(string hostname, string ipAddress, string action, List<HostedZone> zones)
        {
            string domain = DomainName.Parse(hostname).Domain;
            string hostedZoneId = zones.Single(z => z.Name.StartsWith(domain)).Id;

            var record = new ResourceRecord() { Value = ipAddress };

            var recordSet = new ResourceRecordSet()
                                {
                                    Name = hostname,
                                    TTL = 300, //5 min.
                                    Type = DnsRecordType.A,
                                    ResourceRecords = new List<ResourceRecord> {record}
                                };

            var change = new Change() {Action = action, ResourceRecordSet = recordSet};

            var request = new ChangeResourceRecordSetsRequest()
                          	{
                          		ChangeBatch = new ChangeBatch()
                          		              	{
                          		              		Changes = new List<Change> {change},
                          		              		Comment = string.Format("Automatically updated by {0}", this.ToString())
                          		              	},
                          		HostedZoneId = hostedZoneId
                          	};
            return request;
        }
Exemple #14
0
        /// <summary>
        /// Submits the change request.
        /// </summary>
        /// <param name="hostedZoneId">The hosted zone identifier.</param>
        /// <param name="changes">The changes.</param>
        /// <returns></returns>
        private ChangeInfo SubmitChangeResourceRecordSets(string hostedZoneId, List<Change> changes)
        {
            var request = new ChangeResourceRecordSetsRequest
                          {
                              HostedZoneId = hostedZoneId,
                              ChangeBatch = new ChangeBatch {Changes = changes}
                          };

            var response = Client.ChangeResourceRecordSets(request);

            return response.ChangeInfo;
        }
		internal ChangeResourceRecordSetsResponse ChangeResourceRecordSets(ChangeResourceRecordSetsRequest request)
        {
            var task = ChangeResourceRecordSetsAsync(request);
            try
            {
                return task.Result;
            }
            catch(AggregateException e)
            {
                throw e.InnerException;
            }
        }
        /// <summary>
        /// <para>Use this action to create or change your authoritative DNS information. To use this action, send a <c>POST</c> request to the
        /// <c>2012-12-12/hostedzone/hosted Zone ID/rrset</c> resource. The request body must include an XML document with a
        /// <c>ChangeResourceRecordSetsRequest</c> element.</para> <para>Changes are a list of change items and are considered transactional. For more
        /// information on transactional changes, also known as change batches, see <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/RRSchanges.html#RRSchanges_API">Creating, Changing, and Deleting Resource
        /// Record Sets Using the Route 53 API</a> in the <i>Amazon Route 53 Developer Guide</i> .</para> <para><b>IMPORTANT:</b>Due to the nature of
        /// transactional changes, you cannot delete the same resource record set more than once in a single change batch. If you attempt to delete the
        /// same change batch more than once, Route 53 returns an InvalidChangeBatch error.</para> <para>In response to a
        /// <c>ChangeResourceRecordSets</c> request, your DNS data is changed on all Route 53 DNS servers. Initially, the status of a change is
        /// <c>PENDING</c> . This means the change has not yet propagated to all the authoritative Route 53 DNS servers. When the change is propagated
        /// to all hosts, the change returns a status of <c>INSYNC</c> .</para> <para>Note the following limitations on a
        /// <c>ChangeResourceRecordSets</c> request:</para> <para>- A request cannot contain more than 100 Change elements.</para> <para>- A request
        /// cannot contain more than 1000 ResourceRecord elements.</para> <para>The sum of the number of characters (including spaces) in all
        /// <c>Value</c> elements in a request cannot exceed 32,000 characters.</para>
        /// </summary>
        /// 
        /// <param name="changeResourceRecordSetsRequest">Container for the necessary parameters to execute the ChangeResourceRecordSets service method
        /// on AmazonRoute53.</param>
        /// 
        /// <returns>The response from the ChangeResourceRecordSets service method, as returned by AmazonRoute53.</returns>
        /// 
        /// <exception cref="T:Amazon.Route53.Model.InvalidInputException" />
        /// <exception cref="T:Amazon.Route53.Model.NoSuchHostedZoneException" />
        /// <exception cref="T:Amazon.Route53.Model.InvalidChangeBatchException" />
        /// <exception cref="T:Amazon.Route53.Model.NoSuchHealthCheckException" />
        /// <exception cref="T:Amazon.Route53.Model.PriorRequestNotCompleteException" />
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
		public async Task<ChangeResourceRecordSetsResponse> ChangeResourceRecordSetsAsync(ChangeResourceRecordSetsRequest changeResourceRecordSetsRequest, CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller = new ChangeResourceRecordSetsRequestMarshaller();
            var unmarshaller = ChangeResourceRecordSetsResponseUnmarshaller.GetInstance();
            var response = await Invoke<IRequest, ChangeResourceRecordSetsRequest, ChangeResourceRecordSetsResponse>(changeResourceRecordSetsRequest, marshaller, unmarshaller, signer, cancellationToken)
                .ConfigureAwait(continueOnCapturedContext: false);
            return response;
        }
Exemple #17
0
 private Amazon.Route53.Model.ChangeResourceRecordSetsResponse CallAWSServiceOperation(IAmazonRoute53 client, Amazon.Route53.Model.ChangeResourceRecordSetsRequest request)
 {
     Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon Route 53", "ChangeResourceRecordSets");
     try
     {
         #if DESKTOP
         return(client.ChangeResourceRecordSets(request));
         #elif CORECLR
         return(client.ChangeResourceRecordSetsAsync(request).GetAwaiter().GetResult());
         #else
                 #error "Unknown build edition"
         #endif
     }
     catch (AmazonServiceException exc)
     {
         var webException = exc.InnerException as System.Net.WebException;
         if (webException != null)
         {
             throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException);
         }
         throw;
     }
 }
        /// <summary>
        /// <para>Use this action to create or change your authoritative DNS information. To use this action, send a <c>POST</c> request to the
        /// <c>2013-04-01/hostedzone/hosted Zone ID/rrset</c> resource. The request body must include an XML document with a
        /// <c>ChangeResourceRecordSetsRequest</c> element.</para> <para>Changes are a list of change items and are considered transactional. For more
        /// information on transactional changes, also known as change batches, see <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/RRSchanges.html#RRSchanges_API">Creating, Changing, and Deleting Resource
        /// Record Sets Using the Route 53 API</a> in the <i>Amazon Route 53 Developer Guide</i> .</para> <para><b>IMPORTANT:</b>Due to the nature of
        /// transactional changes, you cannot delete the same resource record set more than once in a single change batch. If you attempt to delete the
        /// same change batch more than once, Route 53 returns an InvalidChangeBatch error.</para> <para>In response to a
        /// <c>ChangeResourceRecordSets</c> request, your DNS data is changed on all Route 53 DNS servers. Initially, the status of a change is
        /// <c>PENDING</c> . This means the change has not yet propagated to all the authoritative Route 53 DNS servers. When the change is propagated
        /// to all hosts, the change returns a status of <c>INSYNC</c> .</para> <para>Note the following limitations on a
        /// <c>ChangeResourceRecordSets</c> request:</para> <para>- A request cannot contain more than 100 Change elements.</para> <para>- A request
        /// cannot contain more than 1000 ResourceRecord elements.</para> <para>The sum of the number of characters (including spaces) in all
        /// <c>Value</c> elements in a request cannot exceed 32,000 characters.</para>
        /// </summary>
        /// 
        /// <param name="changeResourceRecordSetsRequest">Container for the necessary parameters to execute the ChangeResourceRecordSets service method
        /// on AmazonRoute53.</param>
        /// 
        /// <returns>The response from the ChangeResourceRecordSets service method, as returned by AmazonRoute53.</returns>
        /// 
        /// <exception cref="T:Amazon.Route53.Model.PriorRequestNotCompleteException" />
        /// <exception cref="T:Amazon.Route53.Model.NoSuchHealthCheckException" />
        /// <exception cref="T:Amazon.Route53.Model.NoSuchHostedZoneException" />
        /// <exception cref="T:Amazon.Route53.Model.InvalidInputException" />
        /// <exception cref="T:Amazon.Route53.Model.InvalidChangeBatchException" />
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
		public Task<ChangeResourceRecordSetsResponse> ChangeResourceRecordSetsAsync(ChangeResourceRecordSetsRequest changeResourceRecordSetsRequest, CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller = new ChangeResourceRecordSetsRequestMarshaller();
            var unmarshaller = ChangeResourceRecordSetsResponseUnmarshaller.GetInstance();
            return Invoke<IRequest, ChangeResourceRecordSetsRequest, ChangeResourceRecordSetsResponse>(changeResourceRecordSetsRequest, marshaller, unmarshaller, signer, cancellationToken);
        }
 /// <summary>
 /// Initiates the asynchronous execution of the ChangeResourceRecordSets operation.
 /// <seealso cref="Amazon.Route53.AmazonRoute53.ChangeResourceRecordSets"/>
 /// </summary>
 /// 
 /// <param name="changeResourceRecordSetsRequest">Container for the necessary parameters to execute the ChangeResourceRecordSets operation on
 ///          AmazonRoute53.</param>
 /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param>
 /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
 ///          procedure using the AsyncState property.</param>
 /// 
 /// <returns>An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking
 ///         EndChangeResourceRecordSets operation.</returns>
 public IAsyncResult BeginChangeResourceRecordSets(ChangeResourceRecordSetsRequest changeResourceRecordSetsRequest, AsyncCallback callback, object state)
 {
     return invokeChangeResourceRecordSets(changeResourceRecordSetsRequest, callback, state, false);
 }