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.
Consistencia eventual en la Amazonía EC2 API
Amazon EC2 API sigue un modelo de coherencia eventual, debido a la naturaleza distribuida del sistema que soporta elAPI. Esto significa que el resultado de un API comando que ejecute y que afecte a sus EC2 recursos de Amazon podría no estar inmediatamente visible para todos los comandos subsiguientes que ejecute. Debes tener esto en cuenta cuando ejecutes un API comando que siga inmediatamente a un API comando anterior.
La coherencia eventual puede afectar a la forma en que administra sus 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 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, ejecute el comandoDescribe
varias veces, empezando con un par de segundos de espera y aumentando gradualmente hasta cinco minutos. -
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 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 ID 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 haber sido canceladas.