Coherencia eventual en la API de Amazon EC2 - 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 API de Amazon EC2

La API de Amazon EC2 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 recursos de Amazon EC2 podría no estar inmediatamente visible para todos los comandos posteriores que ejecute. Debe tener esto en cuenta cuando ejecute un comando de API que siga inmediatamente a un comando de API anterior.

La coherencia eventual puede afectar a la forma en que gestionas tus recursos. Por ejemplo, si ejecuta un comando para crear un recurso, eventualmente será visible para otros comandos. Esto significa que si ejecutas un comando para modificar o describir el recurso que acabas de crear, es posible que su identificador no se haya propagado por todo el sistema y aparecerá un error al responder que el recurso no existe.

Para gestionar la coherencia final, puede hacer lo siguiente:

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

  • Añada el tiempo de espera entre los comandos siguientes, incluso si un Describe comando 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 cinco minutos de tiempo de espera.

Ejemplos de posibles errores de coherencia

A continuación se muestran ejemplos de códigos de error que se pueden encontrar como resultado de una posible coherencia.

  • InvalidInstanceID.NotFound

    Si ejecuta correctamente el RunInstances comando y, a continuación, ejecuta inmediatamente otro comando con el identificador de instancia que se proporcionó en la respuesta deRunInstances, es posible que devuelva un InvalidInstanceID.NotFound error. 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, ejecuta este comando mediante un algoritmo de retroceso exponencial.

    • TerminateInstances: Para confirmar el estado de la instancia, primero ejecuta el DescribeInstances comando con un algoritmo de retroceso exponencial.

      importante

      Si se InvalidInstanceID.NotFound produce un error después de ejecutarlaTerminateInstances, esto no significa que la instancia se haya cerrado o vaya a finalizar. Es posible que la instancia siga ejecutándose. Por eso es importante confirmar primero el estado de la instancia medianteDescribeInstances.

  • InvalidGroup.NotFound

    Si ejecuta correctamente el CreateSecurityGroup comando y, a continuación, ejecuta inmediatamente otro comando con el ID del grupo de seguridad que se proporcionó en la respuesta deCreateSecurityGroup, es posible que devuelva un InvalidGroup.NotFound error. Para confirmar el estado del grupo de seguridad, ejecute el DescribeSecurityGroups comando 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ías alcanzar este límite de forma inesperada si lanzas y cierras instancias rápidamente, ya que las instancias canceladas se tienen en cuenta para el límite de instancias durante un tiempo después de su finalización.