python - Python Boto3 分页错误:“PageIterator”对象不可下标
问题描述
我正在尝试获取一个区域中可用实例的完整列表。该代码将遍历多个页面,但会因错误而停止:
Traceback (most recent call last):
File "list_available_instance_offerings.py", line 29, in <module>
marker = page_iterator['Marker']
TypeError: 'PageIterator' object is not subscriptable
如何迭代所有页面而不会过早出错?
这是我的脚本:
import sys
import boto3
ec2 = boto3.client("ec2")
marker = None
while True:
paginator = ec2.get_paginator('describe_instance_type_offerings')
page_iterator = paginator.paginate(
LocationType='availability-zone',Filters=[{'Name': 'location', 'Values':['us-east-1a']}],
PaginationConfig={
'PageSize': 50,
'StartingToken': marker})
for page in page_iterator:
offerings = page['InstanceTypeOfferings']
for offer in offerings:
print(offer['InstanceType'])
try:
marker = page_iterator['Marker']
except KeyError:
sys.exit()
解决方案
没有这样的属性Marker
。我相信你是NextToken
从page
. 在这种情况下,它应该是:
try:
marker = page['NextToken']
except KeyError:
sys.exit()
推荐阅读
- oracle - 根据出生日期和计划开始日期计算年龄
- vb.net - 如何在循环中创建动态变量以减少代码行数。网络
- ios - TableViewController iOS 中不显示底栏
- flutter - 调用通知列表时 Flutter Widget 未更新
- pointers - 有没有办法在 Intel Pin 中检索检测系统调用的缓冲区?
- react-native - api数组上的复选框反应原生
- time-complexity - 嵌套 for 循环与 N 个 for 循环的时间复杂度
- r - 以相同的顺序将所有逻辑规则与矩阵匹配
- apache-spark - 如何在 SparkKubernetesOperator 运算符中将 execution_date 作为参数传递?
- image - 从 3d 图像创建补丁以进行训练