如何获取用于“aws ec2 run-instances”的 AWS 客户端令牌?

如何获取用于“aws ec2 run-instances”的 AWS 客户端令牌?

如此处所述https://aws.amazon.com/blogs/aws/new-amazon-ec2-feature-idempotent-instance-creation/AWS CLI 强制执行aws ec2 run-instances --cli-input-json命令的幂等性。遗憾的是,没有关于如何生成客户端令牌的文档。

ClientToken我确实发现结果中有一个字段aws ec2 describe-instances,但是如果您尝试使用它,当然仍然会出现以下错误:

An error occurred (IdempotentParameterMismatch) when calling the RunInstances operation: Arguments on this idempotent request are inconsistent with arguments used in previous request(s).

如何获取要使用的令牌--client-token

答案1

你编一个吧!

输入任何小于 64 个字符的字符串都可以。describe 调用只会返回用于创建实例的客户端令牌字符串

然后你的想法就是处理这样的失败。

  1. 生成客户端令牌,即“Bobs 实例”
  2. 使用客户端令牌成功运行实例调用
  3. 客户端出现问题,例如脚本失败或超时
  4. 您的代码重新启动并生成相同的客户端令牌(诀窍是确保这种情况发生)
  5. 你获得了成功,但实际上你得到的响应与你第一次发出请求时获得的预订 ID 相同,并且没有创建第二个实例

我建议阅读http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html有关幂等性的更多信息。

我编写这个代码已经很久了,但我相信当我编写它时,我让我的工作人员使用 SQS 消息 ID 作为客户端令牌,所以如果我的工作人员失败了,或者 sqs 传递了两次,我就不会泄漏实例。

相关内容