AWS Route53 - 添加简单记录

AWS Route53 - Adding Simple Record

我可以使用 API 为 AWS Route53 添加“加权”A 记录,使用 [Weight: aws.Int64(weight)],使用下面的代码效果很好。但是如何添加“简单”A 记录 - 我没有看到简单的选项?

    params := &route53.ChangeResourceRecordSetsInput{
    ChangeBatch: &route53.ChangeBatch{ // Required
        Changes: []*route53.Change{ // Required
            { // Required
                Action: aws.String("UPSERT"), // Required
                ResourceRecordSet: &route53.ResourceRecordSet{ // Required
                    Name: aws.String(name), // Required
                    Type: aws.String("A"),  // Required
                    ResourceRecords: []*route53.ResourceRecord{
                        { // Required
                            Value: aws.String(target), // Required
                        },
                    },
                    TTL: aws.Int64(TTL),
                    //Region: aws.String("us-east-1"),
                    Weight:        aws.Int64(weight),
                    SetIdentifier: aws.String("-"),
                },
            },
        },
        Comment: aws.String("Sample update."),
    },
    HostedZoneId: aws.String(zoneId), // Required
}

'Simple' 记录只是 Web 控制台中的一个短语。只留下没有任何 WeightLatency 标志的记录,它将成为 Route53 中的标准 DNS 记录。

请参阅 type ResourceRecordSet 文档,已标记必填字段。其余的,比如 Weight 是可选的!

https://docs.aws.amazon.com/sdk-for-go/api/service/route53/#ResourceRecordSet

与使用 CLI (https://aws.amazon.com/premiumsupport/knowledge-center/simple-resource-record-route53-cli/) 几乎相同,只是将相同的字段移植到 Go 结构。

经过几个小时无果而终的搜索后,我发现使用 aws-sdk-go-v2 可以很好地添加一条简单的记录,尽量不添加 weightlatency标志只会在使用版本 1 的 SDK 时导致错误,所以我这样做并且工作正常:

cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
    // handle error
    return err
}

client := route53.NewFromConfig(cfg)

params := &route53.ChangeResourceRecordSetsInput{
    ChangeBatch: &types.ChangeBatch{
        Changes: []types.Change{
            {
                Action: types.ChangeActionUpsert,
                ResourceRecordSet: &types.ResourceRecordSet{
                    Name: aws.String(name),
                    Type: types.RRTypeCname,
                    ResourceRecords: []types.ResourceRecord{
                        {
                            Value: aws.String(target),
                        },
                    },
                    TTL: aws.Int64(60),
                },
            },
        },
    },
    HostedZoneId: aws.String(zoneId),
}

output, err := client.ChangeResourceRecordSets(context.TODO(), params)