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 控制台中的一个短语。只留下没有任何 Weight
或 Latency
标志的记录,它将成为 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 可以很好地添加一条简单的记录,尽量不添加 weight
或 latency
标志只会在使用版本 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)
我可以使用 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 控制台中的一个短语。只留下没有任何 Weight
或 Latency
标志的记录,它将成为 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 可以很好地添加一条简单的记录,尽量不添加 weight
或 latency
标志只会在使用版本 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)