Consistência eventual na API do Amazon EC2 - Amazon Elastic Compute Cloud

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Consistência eventual na API do Amazon EC2

A API do Amazon EC2 segue um modelo de consistência eventual, devido à natureza distribuída do sistema que suporta a API. Isso significa que o resultado de um comando de API que você executa e que afeta seus recursos do Amazon EC2 pode não ser imediatamente visível para todos os comandos subsequentes que você executar. Você deve ter isso em mente ao executar um comando de API que segue imediatamente um comando de API anterior.

A consistência eventual pode afetar a maneira como você gerencia seus recursos. Por exemplo, se você executar um comando para criar um recurso, ele eventualmente ficará visível para outros comandos. Isso significa que, se você executar um comando para modificar ou descrever o recurso que acabou de criar, seu ID pode não ter se propagado por todo o sistema e você receberá um erro respondendo que o recurso não existe.

Para gerenciar a consistência eventual, você pode fazer o seguinte:

  • Confirme o estado do recurso antes de executar um comando para modificá-lo. Execute o Describe comando apropriado usando um algoritmo de recuo exponencial para garantir tempo suficiente para que o comando anterior se propague pelo sistema. Para fazer isso, execute o Describe comando repetidamente, começando com alguns segundos de tempo de espera e aumentando gradualmente até cinco minutos de tempo de espera.

  • Adicione o tempo de espera entre os comandos subsequentes, mesmo que um Describe comando retorne uma resposta precisa. Aplique um algoritmo de recuo exponencial começando com alguns segundos de tempo de espera e aumente gradualmente até cerca de cinco minutos de tempo de espera.

Exemplos de eventuais erros de consistência

A seguir estão exemplos de códigos de erro que você pode encontrar como resultado de uma eventual consistência.

  • InvalidInstanceID.NotFound

    Se você executar o RunInstances comando com êxito e, em seguida, executar imediatamente outro comando usando o ID da instância fornecido na resposta deRunInstances, ele poderá retornar um InvalidInstanceID.NotFound erro. Isso não significa que a instância não exista.

    Alguns comandos específicos que podem ser afetados são:

    • DescribeInstances: para confirmar o estado real da instância, execute esse comando usando um algoritmo de recuo exponencial.

    • TerminateInstances: para confirmar o estado da instância, primeiro execute o DescribeInstances comando usando um algoritmo de recuo exponencial.

      Importante

      Se você receber um InvalidInstanceID.NotFound erro após a execuçãoTerminateInstances, isso não significa que a instância foi ou será encerrada. Sua instância ainda pode estar em execução. É por isso que é importante primeiro confirmar o estado da instância usandoDescribeInstances.

  • InvalidGroup.NotFound

    Se você executar o CreateSecurityGroup comando com êxito e, em seguida, executar imediatamente outro comando usando o ID do grupo de segurança fornecido na resposta deCreateSecurityGroup, ele poderá retornar um InvalidGroup.NotFound erro. Para confirmar o estado do grupo de segurança, execute o DescribeSecurityGroups comando usando um algoritmo de recuo exponencial.

  • InstanceLimitExceeded

    Você solicitou mais instâncias do que o limite atual permite para o tipo de instância especificado. Você pode atingir esse limite inesperadamente se estiver iniciando e encerrando instâncias rapidamente, pois as instâncias encerradas contam para seu limite de instâncias por um tempo depois de serem encerradas.