如何关闭AWS CLI返回值的分页器?

90
我正在尝试使用AWS CLI以及bash中的for循环来迭代清除多个SQS消息队列。虽然bash脚本基本按预期工作,但每次AWS CLI发送请求时返回值都存在问题。当请求成功时,它会返回一个空值并在命令行中打开交互式分页器。然后我必须手动输入q以退出交互屏幕,并允许for循环继续到下一个迭代。当尝试清除大量队列时,这变得非常繁琐和耗时。

有没有办法配置AWS CLI禁用弹出每个返回值的交互式分页器?或将返回值导入到单独的文件中而不是显示在命令行上?

我已经尝试了配置不同的返回值类型(文本、yaml、JSON),但没有任何运气。另外--no-pagination参数也不能改变行为。

以下是我尝试运行的bash脚本示例:

for x in 1 2 3; do 
  aws sqs purge-queue --queue-url https://sqs.<aws-region>.amazonaws.com/<id>/<env>-$x-<queueName>.fifo; 
done

2
我无法重现这个问题,你能分享一个例子吗?也许可以与我们分享一下SQS或交互式分页器? - Amit Baranes
2
你尝试过 echo q | aws sqs ... 吗? - Walter A
2
重写 for x (1 2 3),选项:for x in 1 2 3for x in {1..3}for ((x=1; x<=3; x++)) - Walter A
1
“--no-pagination” 是指服务器端分页,适用于列表命令的结果过长,服务器无法在单个响应中完整返回整个列表的情况。它不影响客户端分页。 - Liz Av
6个回答

107

在 Github 的 pull request 上找到这个东西真是太好了,这正是我一直在 AWS 文档中寻找但从未有过任何运气的东西。谢谢! - Colin Armstrong
17
如果您不喜欢使用环境变量的解决方案,可以像该来源提到的那样,在您的 ~/.aws/config 文件中添加 cli_pager = cat。请注意保持原文意思,同时使语言易于理解,但请勿添加任何解释性内容。 - mziwisky
1
太棒了!我终于摆脱了我的ssm脚本上的烦人行为。 - petern-sc
5
这里有相关文档以及许多其他有用的配置选项:https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-pagination.html - Scott McAllister
3
如果您不想通过cat获取额外的反馈,您可以在AWS配置中设置cli_pager = - adelphus

62

46

2
要更新AWS配置文件,可以使用以下命令:aws configure set cli_pager ""。 如果要针对特定的配置文件禁用分页器,请添加--profile profile-name - cbliard

9
你可以将环境变量 PAGER 设置为 "cat" 来强制 awscli 不启动 lessPAGER=cat aws sqs list-queues 我设置了一个 shell 别名来方便使用:
# ~/.zshrc
alias aws="PAGER=cat aws"

1
不错,这个可行。看起来你也可以使用 PAGER="" 来达到同样的效果。谢谢! - Colin Armstrong

5

你在第一行有一个拼写错误。--env AWS_PAGEER="" 两个E。除此之外,赞一个! - DKebler

4

Inside your ~/.aws/config file, add:

cli_pager=


不错的方法!对我有用。它应该属于某个配置文件,这是我在第一步中忽略了的。https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html - mimin0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接