AWS云表单任务定义条件命令

时间:2017-04-04 04:01:42

标签: amazon-web-services docker amazon-cloudformation

假设我有一个能够在干运行模式下运行的应用程序,由命令行上的标志设置; myapp --dryrun,其任务定义的CloudForm是:

MyTaskDefinition
  Type: AWS::ECS::TaskDefinition
  Properties:
    ContainerDefinitions:
    - Name: myApp
      Image: user/myapp:latest
      Command:
      - ./myapp
      - --dryrun
      Environment:
      - Name: SOME_ENV_VAR
        Value: !Ref SomeEnvVar

我正在尝试为任务定义创建一个CloudForm模板,该模板可以在开发和生产环境中使用,其中只为开发环境设置了干运行标志。

有没有办法设置条件命令,或者我会使用像我这样传递的hacky字符串:

      Command:
      - ./myapp
      - !Ref DryRun

1 个答案:

答案 0 :(得分:0)

最新的解决方案是使用If函数,该函数在true时设置标志,如果为false则使用AWS::NoValue

AWS::NoValue将完全删除该属性,这意味着true的命令为["./myapp", "--dryrun"],false时的命令为["./myapp"]

很遗憾,CloudForm参数没有Bool类型,因此您必须将其作为String传递,然后使用Condition转换{{1}转到String

Bool