簡體   English   中英

使用 route53domains 的 boto3 分頁

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM