我正在尝试获取某个区域中可用实例的完整列表。该代码将迭代多个页面,但会因错误而停止:
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
Run Code Online (Sandbox Code Playgroud)
如何迭代所有页面而不会过早出错?
这是我的脚本:
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()
Run Code Online (Sandbox Code Playgroud)
不存在这样的属性Marker
。我相信你正在追寻NextToken
来自page
. 在这种情况下,应该是:
try:
marker = page['NextToken']
except KeyError:
sys.exit()
Run Code Online (Sandbox Code Playgroud)