如何批量更新现有Route 53 DNS记录的TTL ?



我在亚马逊Route 53上有一个托管区域,有超过15k条记录。我试图通过脚本更改所有这些记录的TTL,但在这种情况下找不到太多帮助。

这可行吗?

虽然没有一个方便的'BulkUpdateTTL' API,只是在一个区域ID &更新的TTL值,是的,您可以通过编程来完成。

你需要使用2个api:

  1. ListResourceRecordSets(API参考,CLI)列出您的托管区域
  2. 中的记录
  3. ChangeResourceRecordSets(API参考,CLI)然后更新每个记录的TTL值

对于ListResourceRecordSets, API一次最多返回300条记录。如果您是通过CLI执行此操作,它将自动为您处理分页,并在向您提供结果之前在后台执行您需要的50(15,000/300)个请求。

如果使用SDK,您将需要自己实现分页逻辑。如果需要获取更多页面,则响应将把IsTruncated属性设置为true。继续发送请求,直到设置为false,这意味着您已经列出了所有记录。为了显示下一组300条记录,从每个响应中获取NextRecordNameNextRecordTypeNextRecordIdentifier的值(如果有的话),并将它们作为StartRecordNameStartRecordTypeStartRecordIdentifier的值提供给下一个ListResourceRecordSets调用。

对于ChangeResourceRecordSets,一次最多可以更新1000条记录。用您获得的记录的更改列表填充Changes数组-对于每条记录,指定Name,所需的新TTL值和动作为UPSERT

我已经能够从2016年找到这个脚本,它看起来是上述逻辑的Python实现-在使用它之前,请随意尝试干跑选项或在测试环境中运行它。它可能需要一些调整。

逻辑保持不变:)

最新更新