Coherencia eventual en la EC2 API de Amazon - Amazon Elastic Compute Cloud

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Coherencia eventual en la EC2 API de Amazon

La EC2 API de Amazon sigue un modelo de coherencia eventual, debido a la naturaleza distribuida del sistema que admite la API. Esto significa que el resultado de un comando de API que ejecute y que afecte a sus EC2 recursos de Amazon podría no estar inmediatamente visible para todos los comandos posteriores que ejecute. Debe tenérselo en cuenta cuando se ejecute un comando de API que siga inmediatamente a un comando de API anterior.

La consistencia final puede afectar a la forma en que administra los recursos. Por ejemplo, si ejecuta un comando para crear un recurso, acabará siendo visible para otros comandos. Esto significa que si ejecuta un comando para modificar o describir el recurso que acaba de crear, es posible que su ID no se haya propagado por todo el sistema y aparecerá un error al responder que el recurso no existe.

Para administrar la consistencia final, puede hacer lo siguiente:

  • Confirme el estado del recurso antes de ejecutar un comando para modificarlo. Ejecute el comando Describe correspondiente mediante un algoritmo de retroceso exponencial para asegurarse de que dispone de tiempo suficiente para que el comando anterior se propague en el sistema. Para ello, ejecuta el Describe comando varias veces, empezando con un par de segundos de espera y aumentando gradualmente hasta unos minutos de espera.

  • Agregue tiempo de espera entre los comandos siguientes, incluso si un comando Describe devuelve una respuesta precisa. Aplique un algoritmo de retroceso exponencial comenzando con un par de segundos de tiempo de espera y aumente gradualmente hasta unos pocos minutos de tiempo de espera.

Ejemplos de posibles errores de consistencia

A continuación se muestran ejemplos de códigos de error que se pueden encontrar debido a una consistencia final.

  • InvalidInstanceID.NotFound

    Si ejecuta correctamente el comando RunInstances y ejecuta inmediatamente otro comando con el ID de instancia que se proporcionó en la respuesta de RunInstances, es posible que devuelva un error InvalidInstanceID.NotFound. Esto no significa que la instancia no exista.

    Algunos comandos específicos que pueden verse afectados son:

    • DescribeInstances: para confirmar el estado real de la instancia, ejecute este comando mediante un algoritmo de retroceso exponencial.

    • TerminateInstances: para confirmar el estado real de la instancia, ejecute primero el comando DescribeInstances mediante un algoritmo de retroceso exponencial.

      importante

      Si aparece un error InvalidInstanceID.NotFound después de ejecutar TerminateInstances, no significa que la instancia esté terminada o vaya a estarlo. Es posible que la instancia siga ejecutándose. Por eso es importante confirmar primero el estado de la instancia mediante DescribeInstances.

  • InvalidGroup.NotFound

    Si ejecuta correctamente el comando CreateSecurityGroup y ejecuta inmediatamente otro comando con el ID de grupo de seguridad que se proporcionó en la respuesta de CreateSecurityGroup, es posible que devuelva un error InvalidGroup.NotFound. Para confirmar el estado del grupo de seguridad, ejecute el comando DescribeSecurityGroups mediante un algoritmo de retroceso exponencial.

  • InstanceLimitExceeded

    Ha solicitado más instancias de las que permite el límite de instancias actual para el tipo de instancia especificado. Podría alcanzar este límite de forma inesperada si inicia y termina instancias rápidamente, ya que las instancias terminadas se tienen en cuenta para el límite de instancias durante un tiempo después de su terminación.