首页 > 解决方案 > 如果我在没有 MaxResults 的情况下调用 EC2 客户端的“describe_instances”函数,它会返回所有实例吗?

问题描述

如果我在没有 MaxResults 参数的情况下调用 boto3 EC2 客户端的describe_instances函数,它会在初始调用中返回所有实例吗?有一个参数可以指定,但这不是必需的。如果我不指定此 MaxResults 参数,响应将包含所有实例,还是仍会使用响应的 将它们分成组?MaxResultsNextToken

文件说

“描述指定的实例或所有 AWS 账户的实例......如果您不指定实例 ID,Amazon EC2 会返回所有相关实例的信息。”

但是,如果我的帐户有很多实例,我是否还需要期望可以分块返回内容尚不清楚。MaxResults 参数可以设置为“介于 5 和 1000 之间”,这意味着 1000可能是默认的 MaxResults。

标签: amazon-web-servicesamazon-ec2boto3

解决方案


修改的

让我们假设我们调用了describe_instances()并且没有设置 的值MaxResults

然后,响应将包含实例列表。可以有也可以NextToken没有。如果NextToken存在,则响应仅显示所有实例的一部分。如果NextToken不存在,则响应显示所有实例。

不设置MaxResults并不意味着响应将显示所有实例。


原来的

一旦您收到因describe_instances()without的响应NextToken,结果会显示所有实例,即使您没有设置MaxResults. 您只需要关心describe_instances().

或者使用分页器在没有 NextToken 的情况下获取所有结果。这是我的快照示例代码。

import boto3

boto3 = boto3.session.Session(region_name='ap-northeast-2')
ec2 = boto3.client('ec2')

page_iterator = ec2.get_paginator('describe_snapshots').paginate()

for page in page_iterator:
    for snapshot in page['Snapshots']:
        print(snapshot['SnapshotId'], snapshot['StartTime'])

这将打印所有快照 ID 和开始时间。


推荐阅读