如何获取 AWS 客户端令牌以与“aws ec2 run-instances”一起使用?

Bru*_*sky 2 amazon-ec2 amazon-web-services aws-cli

如此处所述https://aws.amazon.com/blogs/aws/new-amazon-ec2-feature-idempot-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).
Run Code Online (Sandbox Code Playgroud)

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

Nat*_*ath 5

你补一张吧!

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

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

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

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

自从我编写此代码以来已经有很长时间了,但我相信当我这样做时,我让我的工作人员使用 SQS 消息 ID 作为客户端令牌,因此如果我的工作人员失败,或者 sqs 交付两次,我不会泄漏实例。