是否可以使用AWS CLI配置重试?

时间:2017-07-06 15:45:36

标签: amazon-web-services aws-cli

我有一个使用AWS CLI(目前为v1.11.90)协调各种AWS资源的脚本。除此之外,它连续三次或四次调用aws cloudformation list-stacks

我经常遇到错误,因为我的请求受到限制:

An error occurred (Throttling) when calling the ListStacks operation (reached max retries: 4): Rate exceeded

特别是如果我碰巧在我的浏览器中打开了CloudFormation控制台,这种情况非常可靠。

我想在这些情况下将其配置为更宽容 - 要么更积极地退出,要么重试更多次。我试图找到一种方法,并且已经看到了一些能够在boto中完成此操作的参考,但我无法通过CLI了解如何执行此操作。

3 个答案:

答案 0 :(得分:2)

似乎您正在使用ListStack进行云数据服务,可能正在实施轮询和重试,现在在CLI中构建了一个更简单的解决方案:aws <service> wait <condition>,因此轮询已经实现。< / p>

$ aws cloudformation wait stack-exists --stack-name <name of the stack>

答案 1 :(得分:2)

其他答案很好,但要回答准确的问题:是的,定义环境变量 AWS_MAX_ATTEMPTS

https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html

答案 2 :(得分:0)

如果您要创建一些资源并等待该资源成功创建,AWS cli提供了等待模块[1] 由于您要重试错误,可以使用while或until进行重试。下面的代码将一直运行,直到命令成功。

while [ $? -ne 0 ]; do
YOUR COMMAND
GOOD CONDITION TO EXIT AFTER SOME RETRIES 
done

确保您在重试后退出状态良好,否则最终将无限循环。

[1] http://docs.aws.amazon.com/cli/latest/reference/cloudformation/wait/index.html