如何关闭 AWS CLI return 值的寻呼机?

How to turn off the pager for AWS CLI return value?

我正在尝试利用 AWS CLI 以及 bash 中的 for 循环来迭代清除多个 SQS 消息队列。 bash 脚本几乎按预期工作,我遇到的问题是每次 AWS CLI 发送请求时的 return 值。当请求成功时,它 return 是一个空值,并在命令行中打开一个交互式寻呼机。然后我必须手动键入 q 退出交互式屏幕并允许 for 循环继续下一次迭代。当尝试清除大量队列时,这变得非常乏味和耗时。

有没有办法配置 AWS CLI 以禁止此交互式寻呼机针对每个 return 值弹出?或者将 return 值通过管道传输到单独的文件而不是显示的方法?

我试过配置不同的 return 值类型(文本、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

可以设置环境变量PAGER"cat"强制awscli不启动less:

PAGER=cat aws sqs list-queues

我设置为 shell 别名是为了让我的生活更轻松:

# ~/.zshrc
alias aws="PAGER=cat aws"

我自己 运行 解决了这个问题,我能够通过调用 aws cli 作为 AWS_PAGER="" aws ....

来禁用该行为

或者您可以简单地 export AWS_PAGER="" 在您的 (bash) 脚本的顶部。

来源:https://github.com/aws/aws-cli/pull/4702#issue-344978525

您可以通过导出 AWS_PAGER="" 或修改您的 AWS cli 配置文件来禁用寻呼机。

export AWS_PAGER="" 

### or update your ~/.aws/config with 

[default]
cli_pager=

或者,您可以启用默认寻呼机将 less 程序输出为

export AWS_PAGER="less" 

或相应的配置更改。

参考:https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-pagination.html#cli-usage-pagination-clientside

我通过 docker 使用 aws cli v2 并在 docker 运行 命令上传递 --env AWS_PAGER="" 在 windows 上为我解决了这个问题10 使用 git bash.

我也将其设置为别名,以便与 jq 一起使用。

如何设置您的 docker 环境值:

别名示例: docker run --rm -it -v c:/users/me/.aws:/root/.aws --env AWS_PAGER="" amazon/aws-cli

您还可以在 AWS CLI 版本 2 中使用 --no-cli-pager

请参阅此处的“客户端寻呼机”部分 https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-pagination.html

在您的 ~/.aws/config 文件中,添加:

cli_pager=