首页 > 解决方案 > 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()

标签: pythonboto3

解决方案


没有这样的属性Marker。我相信你是NextTokenpage. 在这种情况下,它应该是:

    try:
        marker = page['NextToken']
    except KeyError:
        sys.exit()

推荐阅读