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

比方说,我有一个应用程序,可以运行在空运行模式,在命令行上设置一个标志; myapp --dryrunmyapp --dryrun的任务定义是:

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

我正在尝试为可在开发和生产环境中使用的任务定义创build单个CloudForm模板,其中干运行标志仅设置为开发环境。

有没有一些方法来设置条件命令,或者我会诉诸一个hackystring,我通过像:

  Command: - ./myapp - !Ref DryRun 

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

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

不幸的是,CloudForm参数没有Booltypes,所以你必须把它作为一个String传入,然后使用一个ConditionString转换为一个Bool

 MyTaskDefinition Type: AWS::ECS::TaskDefinition Properties: ContainerDefinitions: - Name: myApp Image: user/myapp:latest Command: - ./myapp - Fn::If: - UseDryRun - --dryrun - Ref: AWS::NoValue Parameters: DryRun: Type: String AllowedValues: # No bool parameter in CFN - true - false Conditions: UseDryRun: !Equals [ !Ref DryRun, true ]