假设我有一个能够在干运行模式下运行的应用程序,由命令行上的标志设置; 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
答案 0 :(得分:0)
最新的解决方案是使用If
函数,该函数在true时设置标志,如果为false则使用AWS::NoValue
。
AWS::NoValue
将完全删除该属性,这意味着true的命令为["./myapp", "--dryrun"]
,false时的命令为["./myapp"]
。
很遗憾,CloudForm参数没有Bool
类型,因此您必须将其作为String
传递,然后使用Condition
转换{{1}转到String
。
Bool