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 elDescribe
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 unInvalidInstanceID.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 elDescribeInstances
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 unInvalidGroup.NotFound
error. Para confirmar el estado del grupo de seguridad, ejecute elDescribeSecurityGroups
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.