【问题标题】:boto3 pagination with route53domains使用 route53domains 进行 boto3 分页
【发布时间】:2019-09-09 10:34:21
【问题描述】:

尝试了解如何使用带有 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

【问题讨论】:

  • 您应该尝试获取像 p = client.get_paginator('list_domains') 这样的分页器,然后像 for page in p.paginate(): 这样循环遍历每个页面

标签: python boto3 amazon-route53


【解决方案1】:

您的代码要求域列表的方式是,您要求返回列出结果的单个“页面”,并且正如您所提到的,列表的最大大小为 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)

【讨论】:

    【解决方案2】:

    请注意,us-east-1 是唯一允许列出域的区域。而且我不确定使用 Config 对象是否更合适,因为我发现了如何从 [Boto3 docs][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
    

    【讨论】:

      猜你喜欢
      • 2018-09-01
      • 2017-01-14
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 2014-09-01
      • 2017-08-16
      相关资源
      最近更新 更多