![](/img/trans.png)
[英]403 on ChangeResourceRecordSets despite the role having route53Domains:* in the policy
[英]boto3 pagination with route53domains
嘗試了解如何使用帶有 boto3 的 Python 腳本使用分頁來列出我們的注冊域。 我們目前有 200 個,而 MaxItems 是 100 個。試圖找出一種在 20 頁中分頁的方法。我檢查了 Route 53 的 boto3 文檔,這正是我為此使用的,但谷歌搜索沒有成功。
嘗試了各種分頁方法,但每次都出錯。 想知道 Route 53 是否支持分頁。
#!/usr/bin/env python
import boto3
import json
listofdomains = []
client = boto3.client('route53domains', region_name='us-east-1')
r = client.list_domains(
#Marker='NextPageMarker',
MaxItems=100
)
for i in r['Domains']:
listofdomains.append(i['DomainName'])
print(i['DomainName'])
finallist = json.dumps(listofdomains)
print finallist
您的代碼要求域列表的方式,您要求返回列出結果的單個“頁面”,正如您所提到的,列表的最大大小為 100。相反,獲取一個分頁器使用client.get_paginator('list_domains')
的list_domains
方法,並使用該分頁器遍歷每一頁結果,一次一個:
#!/usr/bin/env python
import boto3
import json
listofdomains = []
client = boto3.client('route53domains', region_name='us-east-1')
# Use a pager instead
p = client.get_paginator('list_domains')
for page in p.paginate():
for i in page['Domains']:
dom = i['DomainName']
listofdomains.append(dom)
print(dom)
finallist = json.dumps(listofdomains)
print(finallist)
請注意, us-east-1
是唯一允許列出域的區域。 而且我不確定使用 Config 對象是否更合適,因為我從 [Boto3 文檔][1] 中找到了如何重置默認區域。 然后其他一切就像@charlesreid1 所做的一樣。
from botocore.config import Config
my_config = Config(
region_name = 'us-east-1',
signature_version = 'v4',
retries = {
'max_attempts': 10,
'mode': 'standard'
}
)
client = boto3.client('route53domains', config=my_config)
[1]: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html?highlight=region
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.