AWS Command Line Interface
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 AWS CLI 分页选项

对于可返回项目的大型列表的命令,AWS Command Line Interface (AWS CLI) 添加了三个选项。当 AWS CLI 调用服务的 API 以填充此列表时,您可使用这三个选项控制输出中包括的项目数。

默认情况下,AWS CLI 使用页面大小 1000 并检索所有可用项目。如果您在包含 3500 个对象的 Amazon S3 存储桶上运行 aws s3api list-objects,则 CLI 将对 Amazon S3 进行四次调用,以在后台处理服务特定分页逻辑并在最终输出中返回所有 3500 个对象。

如果您在对大量资源运行列表命令时发现问题,则表明默认页面大小 1000 可能过高。这可能会导致对 AWS 服务的调用超过允许的最大时间并生成“超时”错误。您可以使用 --page-size 选项来指定 AWS CLI 从对 AWS 服务的每个调用请求数量较少的项目。CLI 仍将检索完整列表,但会在后台执行大量服务 API 调用,并减少每次调用时检索的项目数。这样,各个调用成功的可能性会更高且不会发生超时。更改页面大小不会影响输出;它只影响生成输出所需进行的 API 调用数。

$ aws s3api list-objects --bucket my-bucket --page-size 100 { "Contents": [ ...

要在 AWS CLI 输出中一次包括更少的项目,请使用 --max-items 选项。AWS CLI 仍会按上面所述使用该服务处理分页,但只打印您指定的一次检索的项目数:

$ aws s3api list-objects --bucket my-bucket --max-items 100 { "NextToken": "eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==", "Contents": [ ...

如果项目输出的数量 (--max-items) 少于基础 API 调用所返回的项目总数,则输出将包含您可传递到后续命令的 NextToken 以检索下一组项目。以下示例显示如何使用上一示例返回的 NextToken 值,并使您能够检索接下来的 100 个项目。

注意

参数 --starting-token 不能为空。如果上一个命令未返回 NextToken 值,则没有更多项目可返回,您不需要再次调用该命令。

$ aws s3api list-objects --bucket my-bucket --max-items 100 --starting-token eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ== { "Contents": [ ...

每次调用指定的 AWS 服务时返回项目的顺序可能不同。如果您为 --page-size--max-items 指定不同的值,您可能会获得意外结果(项目缺失或重复)。为防止出现这种情况,请对 --page-size--max-items 使用相同的数字,以同步 AWS CLI 的分页与基础服务的分页。您还可以检索整个列表并在本地执行任何必需的分页操作。