Phi*_*mer 3 boto amazon-route53
我正在编写一个脚本,确保我们的所有 EC2 实例都有 DNS 条目,并且所有 DNS 条目都指向有效的 EC2 实例。
我的方法是尝试获取我们域的所有资源记录,以便在检查实例名称时可以迭代列表。
然而,获取所有资源记录似乎并不是一件非常简单的事情!GET ListResourceRecordSets 的文档似乎表明它可能会做我想要的事情,而 boto 等效项似乎是 get_all_rrsets ...但它似乎没有像我预期的那样工作。
例如,如果我去:
r53 = boto.connect_route53()
zones = r53.get_zones()
fooA = r53.get_all_rrsets(zones[0][id], name="a")
Run Code Online (Sandbox Code Playgroud)
然后我得到 100 个结果。如果我接着去:
fooB = r53.get_all_rrsets(zones[0][id], name="b")
Run Code Online (Sandbox Code Playgroud)
我得到相同的100 个结果。我是否误解了 get_all_rrsets 没有映射到 ListResourceRecordSets 上?
关于如何获取 53 号公路的所有记录,有什么建议吗?
更新: cli53 ( https://github.com/barnybug/cli53/blob/master/cli53/client.py ) 能够通过其以 BIND 格式 (cmd_export) 导出 Route 53 区域的功能来执行此操作。然而,我的 Python 技能还不够强,无法让我理解该代码是如何工作的!
谢谢。
小智 5
get_all_rrsets返回ResourceRecordSets派生自 Python 列表类的 a 。默认返回 100 条记录。因此,如果您将结果用作列表,它将有 100 条记录。相反,你想做的是这样的:
r53records = r53.get_all_rrsets(zones[0][id])
for record in r53records:
# do something with each record here
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要列表中的所有记录:
records = [r for r in r53.get_all_rrsets(zones[0][id]))]
Run Code Online (Sandbox Code Playgroud)
当使用 for 循环或列表理解进行迭代时,Boto 将根据需要一次获取附加记录(最多)100 条记录。
| 归档时间: |
|
| 查看次数: |
7415 次 |
| 最近记录: |