Col*_*ong 37 bash amazon-sqs amazon-web-services aws-cli
我正在尝试利用 AWS CLI 和forbash 中的循环来迭代清除多个 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
Run Code Online (Sandbox Code Playgroud)
cue*_*dee 60
我自己刚刚遇到这个问题,我能够通过调用 aws cli as 来禁用该行为AWS_PAGER="" aws ...。
或者,您可以简单地export AWS_PAGER=""位于(bash)脚本的顶部。
来源:https : //github.com/aws/aws-cli/pull/4702#issue-344978525
nak*_*ume 19
您可以通过导出AWS_PAGER=""或修改您的 AWS cli 配置文件来禁用寻呼机。
export AWS_PAGER=""
### or update your ~/.aws/config with
[default]
cli_pager=
Run Code Online (Sandbox Code Playgroud)
或者,您可以启用默认分页器以将less程序输出为
export AWS_PAGER="less"
Run Code Online (Sandbox Code Playgroud)
或相应的配置更改。
参考:https : //docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html#cli-usage-output-pager
Dan*_*rov 11
您还可以--no-cli-pager在 AWS CLI 版本 2 中使用。
请参阅此处的“客户端寻呼机”部分https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-pagination.html
您可以将环境变量设置PAGER为"cat"来强制 awscli 不启动less:
PAGER=cat aws sqs list-queues
我设置为 shell 别名以使我的生活更轻松:
# ~/.zshrc
alias aws="PAGER=cat aws"
Run Code Online (Sandbox Code Playgroud)
我正在通过 docker 使用 aws cli v2,并通过--env AWS_PAGER=""docker run 命令在 Windows 10 上使用 git bash 为我修复了这个问题。
我也将它设置为别名,以便使用 jq。
如何设置 docker env 值:
别名示例:
docker run --rm -it -v c:/users/me/.aws:/root/.aws --env AWS_PAGER="" amazon/aws-cli