2017-04-04 11 views
0

私は、コマンドラインでフラグで設定されたドライランモードで実行できるアプリを持っているとしましょう。 myapp --dryrun、およびそのタスクの定義のためのCloudFormは次のとおりです。私はドライランフラグのみが設定されている開発と生産環境で使用することができるタスク定義のための単一のCloudFormテンプレートを作成しようとしていますAWSクラウドフォームのタスク定義条件付きコマンド

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

開発環境のために。

条件付きコマンドを設定するには、いくつかの方法はありますか、私は私のように渡すハック文字列に頼るつもりです:

 Command: 
     - ./myapp 
     - !Ref DryRun 

答えて

0

neatestソリューションがフラグを設定If機能を、使用していましたtrueの場合はAWS::NoValueを使用します。

AWS::NoValueは、trueのコマンドが["./myapp", "--dryrun"]であり、falseのコマンドが["./myapp"]であることを意味します。

は残念ながら、CloudFormパラメータにはBool型はありません、ので、あなたはStringとしてこれをで渡す必要があり、その後、StringからBoolに変換しConditionを使用しています。

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 ] 
関連する問題