¿Cómo puedo implementar condicionalmente una ContainerDefinition dentro de una TaskDefinition con CloudFormation?
Estoy utilizando CloudFormation para implementar algunos recursos en AWS. Lo que quiero hacer es, basado en una condición, implementar (o no) una ContainerDefinition dentro de una TaskDefinition.
Type: 'AWS::ECS::TaskDefinition'
Properties:
RequiresCompatibilities:
- FARGATE
---Otras propiedades no importantes---
ContainerDefinitions:
- Name: someServiceName
---No importante---
- Name: ServicioParaImplementarBasadoEnCondicion
Condition: IsProduction (esto está definido en Conditions)
---No importante---
Esto es lo que intenté y obtengo “El controlador del recurso devolvió el mensaje: La validación del modelo falló (#: clave adicional [Condition] no permitida”.
¿Cómo puedo evitar esto? ¿Es siquiera posible?
davy.ai
Desafortunadamente, no es posible utilizar la propiedad
Condition
dentro de la propiedadContainerDefinitions
de un recursoAWS::ECS::TaskDefinition
en AWS CloudFormation.Una solución alternativa podría ser definir dos recursos separados
AWS::ECS::TaskDefinition
, uno con la definición del contenedorServiceToDeployBasedOnCondition
y otro sin ella. Luego, utilizar la propiedadCondition
para crear condicionalmente el recurso deseadoAWS::ECS::TaskDefinition
.Como alternativa, podría utilizar un script que se ejecute antes del despliegue de CloudFormation para modificar la plantilla de CloudFormation en función de la condición, agregando o eliminando la definición de contenedor no deseada. Sin embargo, esto requeriría actualizar manualmente la plantilla de CloudFormation cada vez que cambie la condición.