使用Route53 upserts避免竞争条件

时间:2017-08-28 09:34:39

标签: amazon-web-services amazon-ec2 aws-sdk aws-cli amazon-route53

我需要以编程方式更新包含多个A条目的IPv4记录。

每当EC2实例启动/终止时都会触发更新。

我想到的方法是read当前记录,将IPv4地址,然后upsert新记录附加到Route53。但是,这会导致可能的竞争条件。

实现这一目标的最佳方法是什么,以避免竞争条件?

(p.s.ELB不是一个选项 - 我需要DNS循环负载平衡。)

1 个答案:

答案 0 :(得分:0)

Route53's multivalued answers是正确的方法。

您可以创建多个A记录(每个IP一个),而不是使用一个A记录,并使用您在创建记录时指定的SetIdentifier来区分它们({{3 }})。 SetIdentifier可以是您喜欢的任何内容,并且记录的唯一ID实际上变为record_name:set_identifier

Route53会在响应客户端请求时自动将这些记录合并到一条记录中(因此它将返回一条A记录,其中包含您指定为单个记录的所有IP集合。

这意味着您可以原封为upsert / delete您的个人IP地址,避免在尝试更新包含多个值的A记录时遇到的竞争条件。

另外,Route53可以选择健康检查每条记录,只返回健康记录:)