duan_88598 2017-07-20 05:21
浏览 64
已采纳

Golang-删除Route53记录

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

展开全部

  • 写回答

1条回答 默认 最新

  • duandianwen1723 2017-07-21 04:50
    关注

    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)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?