如何从route53获取所有记录?
在这里引用代码段,该代码段似乎对某人有用,但对我来说却不清楚:https://github.com/aws/aws-sdk-ruby/issues/620
试图通过资源记录集获取全部(我大约有7000条记录),但似乎无法获得与list_resource_record_sets
一起使用的分页。这是我所拥有的:
route53 = Aws::Route53::Client.new
response = route53.list_resource_record_sets({
start_record_name: fqdn(name),
start_record_type: type,
max_items: 100, # fyi - aws api maximum is 100 so we'll need to page
})
response.last_page?
response = response.next_page until response.last_page?
我确认我已经迷上了正确的区域,我在aws控制台中看到了我想要获取的记录(以便以后可以删除),但似乎无法通过api获取。我使用了这个:https://github.com/aws/aws-sdk-ruby/issues/620作为起点。
关于我在做什么错的任何想法?还是有一种更简单的方法,也许是我找不到的api中的另一种方法,对于我来说,只要获得hosted_zone_id,类型和名称,我就可以得到我需要的记录?
答案 0 :(得分:1)
您链接的问题是针对Ruby AWS SDK v2的,但最新的是v3。自2014年以来,情况似乎有所变化,因为我没有看到v2 API或v3 API中的#next_page
或#last_page?
方法。>
请考虑在#next_record_name
为true时从响应中使用#next_record_type
和#is_truncated
。这与Ruby AWS SDK中其他分页的工作方式(例如DynamoDB扫描)更加一致。
类似以下的方法应该可以工作(尽管我没有具有记录的AWS账户来对其进行测试):
route53 = Aws::Route53::Client.new
hosted_zone = ? # Required field according to the API docs
next_name = fqdn(name)
next_type = type
loop do
response = route53.list_resource_record_sets(
hosted_zone_id: hosted_zone,
start_record_name: next_name,
start_record_type: next_type,
max_items: 100, # fyi - aws api maximum is 100 so we'll need to page
)
records = response.resource_record_sets
# Break here if you find the record you want
# Also break if we've run out of pages
break unless response.is_truncated
next_name = response.next_record_name
next_type = response.next_record_type
end