Como você obtém um token de cliente da AWS para usar com 'aws ec2 run-instances'?

1

Conforme descrito link , o AWS CLI impõe a idempotência do comando aws ec2 run-instances --cli-input-json . Infelizmente, não há documentação sobre como um token de cliente é gerado.

Eu descobri que há um campo ClientToken nos resultados aws ec2 describe-instances , mas é claro que você ainda recebe 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 ser usado com --client-token ?

    
por Bruno Bronosky 06.12.2016 / 09:13

1 resposta

3

Você inventa um!

Colocar qualquer string < 64 chars irão funcionar. A chamada de descrição simplesmente retorna a string de token do cliente usada para criar a instância

A ideia então é lidar com falhas como essa.

  1. Gere o token do cliente, por exemplo, "Instância do Bobs"
  2. Fazer chamada de instância de execução bem-sucedida com o token do cliente
  3. Algo está errado no cliente, ou seja, o script falha ou atinge o tempo limite
  4. Seu código é iniciado novamente e gera o mesmo token de cliente (o truque é garantir que isso aconteça)
  5. Você obtém sucesso, mas na verdade recupera a mesma resposta com a mesma ID de reserva que recebeu na primeira vez em que fez a solicitação e não foi criada uma segunda instância

Sugiro ler o link para obter mais informações sobre a idempotência.

Já faz tempo que codifiquei isso, mas acredito que, quando fiz isso, meus funcionários usaram o ID da mensagem do SQS como o token do cliente; assim, se meus funcionários falhassem ou os sqs fossem entregues duas vezes, eu não vazaria instâncias.

    
por 06.12.2016 / 12:12