本文档 AWS CLI 仅适用于版本 1。有关版本 2 的文档 AWS CLI,请参阅版本 2 用户指南。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用中的分页选项 AWS CLI
本主题介绍分页 AWS CLI的输出的不同方式。
服务器端分页
对于可以返回大型项目列表的命令,当 AWS CLI 调用服务来填充列表时, AWS Command Line Interface (AWS CLI) 有多个选项可以控制输出中包含API的项目数量。
默认情况下, AWS CLI 使用由各个服务确定的页面大小并检索所有可用项目。例如,Amazon S3 的原定设置页面大小为 1000。如果您在包含 3500 个对象的 Amazon S3 存储桶上运行 aws
s3api list-objects
,则 AWS CLI
将自动对 Amazon S3 发出四次调用,以在后台处理服务特定分页逻辑并在最终输出中返回所有 3500 个对象。
如何使用 --no-paginate 参数
--no-paginate
选项在客户端禁用以下分页标记。使用命令时,默认情况下, AWS CLI 会自动进行多次调用以返回所有可能的结果以创建分页。每页显示一次调用的结果。禁用分页 AWS CLI 只能调用一次命令结果的第一页。
例如,如果您在包含 3,500 个对象的 Amazon S3 存储桶aws s3api list-objects
上运行,则 AWS CLI 只会首次调用 Amazon S3,只返回最终输出中的前 1,000 个对象。
$
aws s3api list-objects \ --bucket amzn-s3-demo-bucket \
--no-paginate
{ "Contents": [ ...
如何使用 --page-size 参数
如果您在对大量资源运行列表命令时发现问题,则表明原定设置页面大小可能过大。这可能导致对 AWS 服务的调用超过允许的最大时间,并生成 “超时” 错误。您可以使用--page-size
选项来指定每次调用 AWS 服务时 AWS CLI 请求的项目数量较少。 AWS CLI 仍会检索完整列表,但在后台执行的服务API调用次数较多,每次调用检索的项目数量也较少。这样,各个调用成功的可能性会更高且不会发生超时。更改页面大小不会影响输出;它只会影响生成输出所需的API调用次数。
$
aws s3api list-objects \ --bucket amzn-s3-demo-bucket \
--page-size 100
{ "Contents": [ ...
如何使用 --max-items 参数
要在 AWS CLI 输出中一次包含更少的项目,请使用--max-items
选项。 AWS CLI 仍如前所述,使用服务进行分页,但一次只能打印出您指定的项目数量。
$
aws s3api list-objects \ --bucket amzn-s3-demo-bucket \ --max-items 100
{ "NextToken": "eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==", "Contents": [ ...
如何使用 --starting-token 参数
如果 output (--max-items
) 的项目数小于底层API调用返回的项目总数,则输出中NextToken
包含一个,您可以将其传递给后续命令以检索下一组项目。以下示例显示如何使用上一示例返回的 NextToken
值,并使您能够检索接下来的 100 个项目。
注意
参数 --starting-token
不能为空。如果上一个命令未返回 NextToken
值,则没有更多项目可返回,您不需要再次调用该命令。
$
aws s3api list-objects \ --bucket amzn-s3-demo-bucket \ --max-items 100 \
--starting-token eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==
{ "Contents": [ ...
每次致电时,指定的 AWS 服务可能不会按相同的顺序退回商品。如果您为 --page-size
和 --max-items
指定不同的值,您可能会获得意外结果(项目缺失或重复)。为防止出现这种情况,请对 --page-size
和 --max-items
使用相同的数字,以同步 AWS CLI
的分页与基础服务的分页。您还可以检索整个列表并在本地执行任何必需的分页操作。