func (r *DNSProvider) changeRecord(action, fqdn, value string, ttl int) error { hostedZoneID, err := r.getHostedZoneID(fqdn) if err != nil { return err } recordSet := newTXTRecordSet(fqdn, value, ttl) update := route53.Change{Action: action, Record: recordSet} changes := []route53.Change{update} req := route53.ChangeResourceRecordSetsRequest{Comment: "Created by Lego", Changes: changes} resp, err := r.client.ChangeResourceRecordSets(hostedZoneID, &req) if err != nil { return err } return acme.WaitFor(90*time.Second, 5*time.Second, func() (bool, error) { status, err := r.client.GetChange(resp.ChangeInfo.ID) if err != nil { return false, err } if status == "INSYNC" { return true, nil } return false, nil }) }
func (r *DNSProvider) changeRecord(action, fqdn, value string, ttl int) error { hostedZoneID, err := r.getHostedZoneID(fqdn) if err != nil { return fmt.Errorf("Failed to determine Route 53 hosted zone ID: %v", err) } recordSet := newTXTRecordSet(fqdn, value, ttl) reqParams := &route53.ChangeResourceRecordSetsInput{ HostedZoneId: aws.String(hostedZoneID), ChangeBatch: &route53.ChangeBatch{ Comment: aws.String("Managed by Lego"), Changes: []*route53.Change{ { Action: aws.String(action), ResourceRecordSet: recordSet, }, }, }, } resp, err := r.client.ChangeResourceRecordSets(reqParams) if err != nil { return fmt.Errorf("Failed to change Route 53 record set: %v", err) } statusID := resp.ChangeInfo.Id return acme.WaitFor(120*time.Second, 4*time.Second, func() (bool, error) { reqParams := &route53.GetChangeInput{ Id: statusID, } resp, err := r.client.GetChange(reqParams) if err != nil { return false, fmt.Errorf("Failed to query Route 53 change status: %v", err) } if *resp.ChangeInfo.Status == route53.ChangeStatusInsync { return true, nil } return false, nil }) }