¿Cómo puedo evitar el fallo de mi servicio de Amazon ECS al estabilizarse en AWS CloudFormation?

4 minutos de lectura
0

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 DescribeService. 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 que contiene el servicio permanece en el estado CREATE_IN_PROGRESS o UPDATE_IN_PROGRESS y no se puede actualizar.

Si no puede solucionar el problema subyacente con sus tareas de servicio de Amazon ECS de inmediato y no quiere esperar a que se agote el tiempo de espera de las llamadas a la API DescribeService, puede forzar manualmente el estado del recurso de servicio de Amazon ECS en AWS CloudFormation a un estado CREATE_COMPLETE. Para ello, 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: Forzar manualmente a AWS CloudFormation a un estado CREATE_COMPLETE no es una práctica recomendada para los servicios de producción, ya que todas las tareas se detienen y, al hacerlo, se puede provocar una interrupción de la producción.

Nota: Si recibe errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de la AWS CLI.

Resolución

Verificar la creación de recursos

1.    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

2.    Abra la consola de AWS CloudFormation y, a continuación, seleccione su pila.

3.    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.

Mediante la AWS CLI:

1.    Para describir el servicio y enumerar los eventos del servicio, ejecute el siguiente comando:

aws ecs describe-services --cluster awsExampleECSCluster --services MyNginxService2

2.    Para actualizar el recuento deseado del servicio, ejecute el siguiente comando:

aws ecs update-service --cluster awsExampleECSCluster --service MyNginxService2 --desired-count 0

3.    Actualice --desired-count a su valor original.

Mediante la consola de Amazon ECS:

1.    Abra la consola de Amazon ECS.

2.    En el panel de navegación, elija Clústeres y, a continuación, seleccione el clúster que contiene el servicio de Amazon ECS que ha creado.

3.    En la página Clústeres, elija el clúster que contiene el servicio de Amazon ECS que ha creado.

4.    En la página del clúster que ha seleccionado, en la columna Nombre del servicio, elija su servicio.

5.    Seleccione la pestaña Eventos y, a continuación, seleccione Actualizar.

6.    En la página Configurar servicio, en Número de tareas, introduzca 0.

7.    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: Para que su pila de AWS CloudFormation se sincronice con las propiedades del servicio de Amazon ECS después de solucionar el problema con las tareas subyacentes, debe volver a cambiar manualmente el recuento deseado (DesiredCount) al valor original de la plantilla.


Información relacionada

Actualización de un servicio

update-service

services-stable

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años