CloudFormationのパラメータを配列型にする
前半は復習としてパラメータが文字列の書き方、後半が本記事の本題で配列型にする方法です。
パラメータが文字列の場合
テンプレートファイルに以下のように書くと aws cloudformation deploy
実行時にパラメータを渡すことができます。
# パラメータを受け入れる記述 Parameters: Foo: Type: String Default: defaultValue # --parameter-overrides がない場合のデフォルト値 # Resourcesの中にパラメータの値を埋め込む記述 Resources: ...: Properties: Aaa: !Ref Foo # または Aaa: !Sub ${Foo} # または、文字列の中に値を埋め込むには Aaa: !Sub aaa-${Foo}-bbb # または Aaa: !Sub - aaa-${f}-bbb - f: !Ref Foo # 上記記述が以下の記述と同等になる (--parameter-overrides Foo=fooValue の場合) Aaa: fooValue
パラメータを渡すには aws cloudformation deploy
に --parameter-overrides Foo=fooValue
のようにコマンドラインパラメータを加えます。
$ aws cloudformation deploy --template-file template.yaml --stack-name xxxx --parameter-overrides Foo=fooValue
パラメータが配列の場合
CommaDelimitedList
というTypeを使ってコンマ区切りで書きます。
# パラメータを受け入れる記述 Parameters: Foo: Type: CommaDelimitedList Default: default1,default2,default3 # --parameter-overrides がない場合のデフォルト値 # Resourcesの中にパラメータの値を埋め込む記述 Resources: ...: Properties: Aaa: !Ref Foo # 上記記述が以下の記述と同等になる (--parameter-overrides Foo=foo1,foo2,foo3 の場合) Aaa: - foo1 - foo2 - foo3
パラメータを渡すときもコンマ区切りで書きます。
$ aws cloudformation deploy --template-file template.yaml --stack-name xxxx --parameter-overrides Foo=foo1,foo2,foo3