I am writing a go program (using AWS Go SDK) which manages (creates, deletes) Route53 Records. I have managed to create a record, but I am having issues while deleting those.
This is what I have tried so far.
func deleteRecord(svc *route53.Route53) {
dnsName := "vikas027.something.net"
request := &route53.ChangeResourceRecordSetsInput{
ChangeBatch: &route53.ChangeBatch{
Changes: []*route53.Change{
{
Action: aws.String("DELETE"),
ResourceRecordSet: &route53.ResourceRecordSet{
Name: aws.String(dnsName),
Type: aws.String("A"),
ResourceRecords: []*route53.ResourceRecord{
{
Value: aws.String(dnsName),
},
},
},
},
},
},
HostedZoneId: aws.String(zoneID),
}
resp, err := svc.ChangeResourceRecordSets(request)
if err != nil {
fmt.Println("Unable to delete DNS Record", err)
}
fmt.Println(resp)
}
Above function throws below error.
Unable to delete DNS RecordInvalidInput: Invalid request
status code: 400, request id: 0363068b-6d4d-11e7-ab47-cf662178898b
Thanks again Imperalix for the hint. The basic idea is to use the exact parameters which were used to create the record. This is what is now working for me to delete CNAME
records.
func deleteRecord(svc *route53.Route53) {
dnsName := "vikas027.something.net"
request := &route53.ChangeResourceRecordSetsInput{
ChangeBatch: &route53.ChangeBatch{
Changes: []*route53.Change{
{
Action: aws.String("DELETE"),
ResourceRecordSet: &route53.ResourceRecordSet{
Name: aws.String(dnsName),
Type: aws.String("CNAME"),
ResourceRecords: []*route53.ResourceRecord{
{
Value: aws.String(AliasName),
},
},
TTL: aws.Int64(ttl),
Weight: aws.Int64(weight),
SetIdentifier: aws.String(setIdentifier),
},
},
},
},
HostedZoneId: aws.String(zoneID),
}
resp, err := svc.ChangeResourceRecordSets(request)
if err != nil {
fmt.Println("Unable to delete DNS Record", err)
}
fmt.Println(resp)
}