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
Describecorrespondiente 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 elDescribecomando 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
Describedevuelve 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.NotFoundSi ejecuta correctamente el comando
RunInstancesy ejecuta inmediatamente otro comando con el ID de instancia que se proporcionó en la respuesta deRunInstances, es posible que devuelva un errorInvalidInstanceID.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 comandoDescribeInstancesmediante un algoritmo de retroceso exponencial.importante
Si aparece un error
InvalidInstanceID.NotFounddespués de ejecutarTerminateInstances, 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 medianteDescribeInstances.
-
-
InvalidGroup.NotFoundSi ejecuta correctamente el comando
CreateSecurityGroupy ejecuta inmediatamente otro comando con el ID de grupo de seguridad que se proporcionó en la respuesta deCreateSecurityGroup, es posible que devuelva un errorInvalidGroup.NotFound. Para confirmar el estado del grupo de seguridad, ejecute el comandoDescribeSecurityGroupsmediante un algoritmo de retroceso exponencial. -
InstanceLimitExceededHa 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.