es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no es posible utilizar la propiedad Condition dentro de la propiedad ContainerDefinitions de un recurso AWS::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 contenedor ServiceToDeployBasedOnCondition y otro sin ella. Luego, utilizar la propiedad Condition para crear condicionalmente el recurso deseado AWS::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.

Comments are closed.