Resolución de problemas de actualizaciones de la estrategia de implementación de Amazon ECS
En esta sección se brindan soluciones a problemas comunes que puede encontrar al migrar estrategias de implementación.
Múltiples revisiones de servicio o conjuntos de tareas
Los siguientes problemas se refieren a tener varias revisiones de servicio para una sola implementación.
- Varios conjuntos de tareas al actualizar el controlador de implementación de ECS
-
Mensaje de error:
Updating the deployment controller is not supported when there are multiple tasksets in the service. Please ensure your service has only one taskset and try again.
Solución: este error se produce al intentar cambiar el tipo de controlador de implementación de un servicio con varios conjuntos de tareas activos. Para resolver este problema en el controlador de implementación
CODE_DEPLOY
oEXTERNAL
:-
Compruebe los conjuntos de tareas actuales:
aws ecs describe-services --cluster
your-cluster-name
--servicesyour-service-name
--query "services[0].taskSets" -
Espere a que se complete cualquier implementación en curso.
-
Fuerce una nueva implementación para limpiar los conjuntos de tareas:
aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--force-new-deployment -
Si es necesario, elimine manualmente los conjuntos de tareas adicionales:
aws ecs delete-task-set --cluster
your-cluster-name
--serviceyour-service-name
--task-settask-set-id
-
Cuando solo quede un conjunto de tareas, vuelva a intentar actualizar el controlador de implementación.
Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.
-
- Falta el conjunto de tareas principal al actualizar el controlador de implementación
ECS
-
Mensaje de error:
Updating the deployment controller requires a primary taskset in the service. Please ensure your service has a primary taskset and try again.
Solución: este error se produce al intentar cambiar el tipo de controlador de implementación de un servicio que no tiene un conjunto de tareas principal. Para resolver este problema, siga estos pasos:
-
Verifique el estado del servicio y los conjuntos de tareas. ). Si existe un conjunto de tareas en el servicio, debe marcarse como
ACTIVE
.aws ecs describe-services --cluster
your-cluster-name
--servicesyour-service-name
--query "services[0].taskSets[*].[status,id]Si no hay ningún conjunto de tareas en estado
ACTIVE
, migre la implementación. Para más información, consulte Métodos de migración. -
Si el servicio no tiene tareas en ejecución, implemente al menos una tarea actualizando el servicio:
aws ecs update-service-primary-task-set --cluster
your-cluster-name
--serviceyour-service-name
--primary-task-set your-taskset-idEsto marcará el conjunto de tareas (anteriormente
ACTIVE
) en el servicio como en estadoPRIMARY
. -
Espere a que la tarea alcance un estado de ejecución estable. Puede comprobar el estado con:
aws ecs describe-services --cluster
your-cluster-name
--servicesyour-service-name
--query "services[0].deployments" -
Una vez que el servicio tenga una tarea principal configurada con tareas en ejecución, vuelva a intentar actualizar el controlador de implementación.
Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.
-
Discrepancia entre el tipo de detección de errores de implementación y el controlador de implementación
Los problemas siguientes se relacionan con una discrepancia entre el tipo de detección de errores de implementación y el controlador de implementación.
- Interruptor de circuito de implementación con un controlador que no es de ECS
-
Mensaje de error:
Deployment circuit breaker feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.
Solución: este error se produce al intentar habilitar la característica de interruptor de circuito de implementación en un servicio que no utiliza el controlador de implementación
ECS
. El interruptor de circuito de implementación solo es compatible con el controlador de implementaciónECS
.-
Compruebe el controlador de implementación actual del servicio:
aws ecs describe-services --cluster
your-cluster-name
--servicesyour-service-name
--query "services[0].deploymentController" -
Actualice su servicio para usar el controlador de implementación
ECS
:aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--deployment-controller type=ECS -
Una vez que el servicio utilice el controlador de implementación
ECS
, active el interruptor de ccircuito de implementación:aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}"
Para obtener más información, consulte Detección de errores por el interruptor de circuito de implementación de Amazon ECS.
-
- Reversión basada en alarmas con un controlador que no es de ECS
-
Mensaje de error:
Alarm based rollback feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.
Solución: este error se produce al intentar configurar la reversión basada en alarmas en un servicio que no utiliza el controlador de implementación
ECS
. La característica de reversión basada en alarmas solo es compatible con el controlador de implementaciónECS
.-
Compruebe el controlador de implementación actual del servicio:
aws ecs describe-services --cluster
your-cluster-name
--servicesyour-service-name
--query "services[0].deploymentController" -
Actualice su servicio para usar el controlador de implementación
ECS
:aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--deployment-controller type=ECS -
Una vez que el servicio utilice el controlador de implementación
ECS
, configure la reversión basada en alarmas:aws ecs update-service --cluster
your-cluster-name
--servicesyour-service-name
--deployment-configuration "alarms={alarmNames=[your-alarm-name],enable=true,rollback=true}"
Para obtener más información, consulte Detección de errores en la implementación de Amazon ECS por las alarmas de CloudWatch.
-
Discrepancia entre Service Connect y el controlador de implementación
Los siguientes problemas se relacionan con una discrepancia entre Service Connect y el controlador de implementación.
- Controlador
EXTERNAL
con Service Connect -
Mensaje de error:
The EXTERNAL deployment controller type is not supported for services using Service Connect.
Solución: este error se produce al intentar utilizar el controlador de implementación
EXTERNAL
con un servicio que tiene activado Service Connect. El controladorEXTERNAL
no es compatible con Service Connect.-
Compruebe si su servicio tiene activado Service Connect:
aws ecs describe-services --cluster
your-cluster-name
--services your-service-name --query "services[0].serviceConnectConfiguration" -
Si necesita usar el controlador de implementación
EXTERNAL
, desactive Service Connect actualizando el servicio:aws ecs update-service --cluster your-cluster-name --service your-service-name --service-connect-configuration "{}"
-
Como alternativa, si debe usar Service Connect, utilice el controlador de implementación
ECS
en su lugar:aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.
-
- Service Connect con un controlador que no es de ECS
-
Mensaje de error:
Service Connect feature is only supported with ECS (rolling update) deployment controller. Update to ECS deployment controller and try again.
Solución: este error se produce al intentar configurar Service Connect en un servicio que no utiliza el controlador de implementación
ECS
. La característica Service Connect solo es compatible con el controlador de implementaciónECS
.-
Compruebe el controlador de implementación actual del servicio:
aws ecs describe-services --cluster
your-cluster-name
--servicesyour-service-name
--query "services[0].deploymentController" -
Actualice su servicio para usar el controlador de implementación de ECS:
aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--deployment-controller type=ECS -
Una vez que el servicio utilice el controlador de implementación de ECS, habilite Service Connect:
aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--service-connect-configuration "enabled=true,namespace=your-namespace"
Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.
-
Discrepancia entre el tipo de controlador y la estrategia de programación
Los siguientes problemas se relacionan con una discrepancia entre el tipo de controlador y la estrategia de programación.
- Controlador
CODE_DEPLOY
con estrategia de programaciónDAEMON
-
Mensaje de error:
The CODE_DEPLOY deployment controller type is not supported for services using the DAEMON scheduling strategy.
Solución: este error se produce al intentar utilizar el controlador de implementación CODE_DEPLOY con un servicio que utiliza la estrategia de programación
DAEMON
. El controladorCODE_DEPLOY
solo es compatible con la estrategia de programaciónREPLICA
.-
Compruebe la estrategia de programación actual de su servicio:
aws ecs describe-services --cluster
your-cluster-name
--servicesyour-service-name
--query "services[0].schedulingStrategy" -
Si necesita implementaciones azul/verde, cambie su servicio para usar la estrategia de programación
REPLICA
:aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--scheduling-strategy REPLICA -
Como alternativa, si debe utilizar la estrategia de programación
DAEMON
, utilice el controlador de implementaciónECS
en su lugar:aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--deployment-controller type=ECS
Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.
-
- Controlador EXTERNAL con la estrategia de programación DAEMON
-
Mensaje de error:
The EXTERNAL deployment controller type is not supported for services using the DAEMON scheduling strategy.
Solución: este error se produce al intentar utilizar el controlador de implementación EXTERNAL con un servicio de ECS que utiliza la estrategia de programación DAEMON. El controlador EXTERNAL solo es compatible con la estrategia de programación REPLICA.
-
Compruebe la estrategia de programación actual de su servicio:
aws ecs describe-services --cluster
your-cluster-name
--servicesyour-service-name
--query "services[0].schedulingStrategy" -
Si necesita usar el controlador de implementación
EXTERNAL
, cambie su servicio para usar la estrategia de programaciónREPLICA
:aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--scheduling-strategy REPLICA -
Como alternativa, si debe utilizar la estrategia de programación
DAEMON
, utilice el controlador de implementaciónECS
en su lugar:aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--deployment-controller type=ECS
Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.
-
- Registros de servicios con tipo de lanzamiento externo
-
Mensaje de error:
Service registries are not supported for external launch type.
Solución: este error se produce al intentar configurar la detección de servicios (registros de servicios) para un servicio que utiliza el tipo de lanzamiento
EXTERNAL
. La detección de servicios no es compatible con el tipo de lanzamientoEXTERNAL
.-
Compruebe el tipo de lanzamiento actual de su servicio:
aws ecs describe-services --cluster
your-cluster-name
--servicesyour-service-name
--query "services[0].launchType" -
Si necesita la detección de servicio, cámbielo para usar el tipo de lanzamiento
EC2
oFARGATE
:aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--launch-type FARGATE -
Como alternativa, si debe usar el tipo de lanzamiento
EXTERNAL
, elimine la configuración del registro de servicio:aws ecs update-service --cluster
your-cluster-name
--serviceyour-service-name
--service-registries "[]"
Para obtener más información, consulte Estrategias y controladores de implementación de servicios de Amazon ECS.
-
Reversión de una actualización del controlador de implementación
Si decide que desea volver al controlador de implementaciones anterior, puede optar por uno de los siguientes procedimientos:
-
Si utilizó AWS CloudFormation, puede utilizar la plantilla anterior para crear una nueva pila. Para más información, consulte Creación de una pila desde en la Guía del usuario de AWS CloudFormation.
-
Si utilizó la consola de Amazon ECS o la AWS CLI, puede actualizar el servicio. Para obtener más información, consulte Actualización de un servicio de Amazon ECS.
Si utiliza el comando update-service, utilice la opción
--deployment-controller
y configúrela en el controlador de implementación anterior.