Saltar al contenido

¿Cómo puedo evitar el fallo de mi servicio de Amazon ECS al estabilizarse en 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: «Service arn:aws:ecs:us-east-accountID:service/ServiceName did not stabilize.»

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, fuerza manualmente el estado del recurso del servicio Amazon ECS en AWS CloudFormation a un estado CREATE_COMPLETE. Define 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), consulta Solución de errores de la AWS CLI. Además, asegúrate de utilizar la versión más reciente.

Resolución

Verificación de la creación de recursos

Sigue estos pasos:

  1. En tu plantilla de AWS CloudFormation, crea 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. Abre la consola de AWS CloudFormation y, a continuación, selecciona tu pila.

  3. Selecciona la pestaña Eventos y, a continuación, comprueba que se está creando el recurso.

Actualización del recuento deseado del servicio

Puedes actualizar el recuento deseado del servicio a su valor original con la AWS CLI o la consola de Amazon ECS.

AWS CLI

Sigue estos pasos:

  1. Para describir el servicio y enumerar los eventos del servicio, ejecuta el comando describe-services de la AWS CLI:

    aws ecs describe-services --cluster awsExampleECSCluster --services MyNginxService2
  2. Para actualizar el recuento deseado del servicio, ejecuta el comando update-service de la CLI de AWS:

    aws ecs update-service --cluster awsExampleECSCluster --service MyNginxService2 --desired-count 0
  3. Actualiza --desired-count a su valor original.

Consola de Amazon ECS

Sigue estos pasos:

  1. Abre la consola de Amazon ECS.

  2. En el panel de navegación, selecciona Clústeres. A continuación, selecciona el clúster que contiene el servicio Amazon ECS que has creado.

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

  4. En la página del clúster que has seleccionado, en la columna Nombre del servicio, elige tu servicio.

  5. Selecciona la pestaña Eventos y, a continuación, selecciona Actualizar.

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

  7. Elige Siguiente paso para pasar al final del asistente Actualizar servicio y, a continuación, elige 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: Sincroniza tu 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, cambia manualmente el recuento deseado (DesiredCount) al valor original de la plantilla.

Información relacionada

¿Qué es Amazon Elastic Container Service?

services-stable

DescribeServices

OFICIAL DE AWSActualizada hace 2 años