使用boto3实现Route53Domains分页查询注册域名的问题
解决Route53域名分页查询问题
我来帮你搞定这个分页查询的问题!Route53的list_domains接口确实支持分页,你之前的问题应该是没正确处理Marker的循环传递。下面是调整后的代码,完美实现每页20条的查询:
#!/usr/bin/env python import boto3 import json listofdomains = [] client = boto3.client('route53domains', region_name='us-east-1') next_marker = None while True: # 构造请求参数,只有当next_marker存在时才传入Marker参数 request_params = {'MaxItems': '20'} if next_marker: request_params['Marker'] = next_marker response = client.list_domains(**request_params) # 处理当前页的域名 for domain in response['Domains']: domain_name = domain['DomainName'] listofdomains.append(domain_name) print(domain_name) # 检查是否有下一页,如果没有就退出循环 next_marker = response.get('NextMarker') if not next_marker: break finallist = json.dumps(listofdomains) print(finallist) # 注意:如果用Python2,改成print finallist即可
关键说明:
- 分页核心逻辑:通过循环传递
Marker参数实现分页,每次请求的Marker值来自上一次响应的NextMarker,直到响应中没有NextMarker表示所有域名已查询完毕 - 每页条数控制:把
MaxItems设为'20'(这个参数需要传字符串类型,boto3内部会自动处理类型转换) - 兼容性处理:代码兼顾了Python2和Python3的打印语法,你可以根据自己的环境调整
- 健壮性拓展:如果需要更稳定的运行,可以添加
try-except块捕获API调用异常,比如权限不足、网络波动等情况
内容的提问来源于stack exchange,提问作者Dwight S.
相关产品推荐
相关产品推荐

