Conforme descrito aqui https://aws.amazon.com/blogs/aws/new-amazon-ec2-feature-idempotent-instance-creation/ AWS CLI impõe a idempotência do aws ec2 run-instances --cli-input-json
comando. Infelizmente, não há documentação sobre como um token de cliente é gerado.
Descobri que há um ClientToken
campo nos aws ec2 describe-instances
resultados, mas é claro que você ainda receberá o seguinte erro se tentar usar um:
An error occurred (IdempotentParameterMismatch) when calling the RunInstances operation: Arguments on this idempotent request are inconsistent with arguments used in previous request(s).
Como obtenho um token para usar --client-token
?
Você inventa um!
Colocar qualquer string < 64 caracteres funcionará. A chamada de descrição simplesmente retorna a string do token do cliente usada para criar a instância
A ideia então é você lidar com falhas como essa.
Sugiro ler http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html para obter mais informações sobre idempotência.
Já faz muito tempo desde que codifiquei isso, mas acredito que, quando o fiz, meus funcionários usaram o ID da mensagem SQS como o token do cliente; portanto, se meus funcionários falhassem ou sqs fossem entregues duas vezes, eu não vazaria instâncias.