Mi servicio de Amazon Elastic Container Service (Amazon ECS) no se estabiliza en AWS CloudFormation. Aparece el siguiente error: «El servicio arn:aws:ecs:us-east-accountID:service/ServiceName no se estabilizó».
Descripción breve
Un servicio creado en Amazon ECS no se estabiliza si no se encuentra en el estado especificado en la plantilla de AWS CloudFormation. Para confirmar que un servicio ha iniciado el número deseado de tareas con la definición de tarea deseada, AWS CloudFormation realiza llamadas repetidas a la API DescribeServices. Estas llamadas comprueban el estado del servicio hasta alcanzar el estado deseado. El proceso de llamada puede tardar hasta tres horas. A continuación, se agota el tiempo de espera de AWS CloudFormation y devuelve el mensaje «El ARN del servicio no se estabilizó». Mientras AWS CloudFormation comprueba el estado del servicio, la pila con el servicio permanece en el estado CREATE_IN_PROGRESS o UPDATE_IN_PROGRESS y no se puede actualizar.
Para evitar que se agote el tiempo de espera de una llamada a la API DescribeServices, fuerce manualmente el estado del recurso del servicio Amazon ECS en AWS CloudFormation a un estado CREATE_COMPLETE. Defina manualmente el recuento deseado del servicio en cero en la consola de Amazon ECS para detener la ejecución de las tareas. AWS CloudFormation considera entonces que la actualización se ha realizado correctamente, ya que el número de tareas es igual al recuento deseado de cero.
Importante: Se recomienda no forzar manualmente a AWS CloudFormation a un estado CREATE_COMPLETE, ya que una parada forzada puede provocar una interrupción de la producción.
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente.
Resolución
Verificar la creación de recursos
Siga estos pasos:
-
En su plantilla de AWS CloudFormation, cree un recurso AWS::ECS::Service. Por ejemplo:
Resources:
ECSServiceA:
Type: AWS::ECS::Service
Properties:
DesiredCount: 1
Cluster: awsExampleECSCluster
LaunchType: EC2
ServiceName: "MyNginxService2"
TaskDefinition: NginxTask:1
-
Abra la consola de AWS CloudFormation y, a continuación, seleccione su pila.
-
Seleccione la pestaña Eventos y, a continuación, compruebe que se está creando el recurso.
Actualizar el recuento deseado del servicio
Puede actualizar el recuento deseado del servicio a su valor original con la AWS CLI o la consola de Amazon ECS.
AWS CLI
Siga estos pasos:
-
Para describir el servicio y enumerar los eventos del servicio, ejecute el comando describe-services de la AWS CLI:
aws ecs describe-services --cluster awsExampleECSCluster --services MyNginxService2
-
Para actualizar el recuento deseado del servicio, ejecute el comando update-service de la CLI de AWS:
aws ecs update-service --cluster awsExampleECSCluster --service MyNginxService2 --desired-count 0
-
Actualice --desired-count a su valor original.
Consola de Amazon ECS
Siga estos pasos:
-
Abra la consola de Amazon ECS.
-
En el panel de navegación, seleccione Clústeres. A continuación, seleccione el clúster que contiene el servicio Amazon ECS que ha creado.
-
En la página Clústeres, elija el clúster que contiene el servicio de Amazon ECS que ha creado.
-
En la página del clúster que ha seleccionado, en la columna Nombre del servicio, elija su servicio.
-
Seleccione la pestaña Eventos y, a continuación, seleccione Actualizar.
-
En la página Configurar servicio, en Número de tareas, introduzca 0.
-
Elija Siguiente paso para pasar al final del asistente Actualizar servicio y, a continuación, elija Actualizar servicio.
El servicio ahora alcanza un estado estable y hace la transición del recurso de servicio de Amazon ECS en AWS CloudFormation a CREATE_COMPLETE o UPDATE_COMPLETE.
Importante: Sincronice su pila de AWS CloudFormation con las propiedades del servicio Amazon ECS después de solucionar el problema con las tareas subyacentes. Para realizar una sincronización, cambie manualmente el recuento deseado (DesiredCount) al valor original de la plantilla.
Información relacionada
¿Qué es Amazon Elastic Container Service?
services-stable
DescribeServices