如何获得AWS客户端令牌与`aws ec2 run-instances`一起使用?

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

我确实发现aws ec2 describe-instances结果中有一个ClientToken字段,但是如果你尝试使用一个,你当然会得到下面的错误:

 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

你做一个!

把任何string<64个字符将工作。 describe调用只是简单的给你返回用于创build实例的客户端令牌string

那么,这个想法是你处理这样的失败。

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

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

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