我在亚马逊Route 53上有一个托管区域,有超过15k条记录。我试图通过脚本更改所有这些记录的TTL,但在这种情况下找不到太多帮助。
这可行吗?
虽然没有一个方便的'BulkUpdateTTL' API,只是在一个区域ID &更新的TTL值,是的,您可以通过编程来完成。
你需要使用2个api:
ListResourceRecordSets
(API参考,CLI)列出您的托管区域 中的记录ChangeResourceRecordSets
(API参考,CLI)然后更新每个记录的TTL值
对于ListResourceRecordSets
, API一次最多返回300条记录。如果您是通过CLI执行此操作,它将自动为您处理分页,并在向您提供结果之前在后台执行您需要的50(15,000/300)个请求。
如果使用SDK,您将需要自己实现分页逻辑。如果需要获取更多页面,则响应将把IsTruncated
属性设置为true。继续发送请求,直到设置为false
,这意味着您已经列出了所有记录。为了显示下一组300条记录,从每个响应中获取NextRecordName
、NextRecordType
和NextRecordIdentifier
的值(如果有的话),并将它们作为StartRecordName
、StartRecordType
和StartRecordIdentifier
的值提供给下一个ListResourceRecordSets
调用。
对于ChangeResourceRecordSets
,一次最多可以更新1000条记录。用您获得的记录的更改列表填充Changes
数组-对于每条记录,指定Name
,所需的新TTL
值和动作为UPSERT
。
我已经能够从2016年找到这个脚本,它看起来是上述逻辑的Python实现-在使用它之前,请随意尝试干跑选项或在测试环境中运行它。它可能需要一些调整。
逻辑保持不变:)