AWS CLIのCloudformationのParametersの値に外部ファイルを与える方法
目次
AWSリソースのコード管理を行うために、AWS Cloudformationを使うことがしばしばあります。
特にAWS AmplifyではAWSリソースの管理をCloudformationに強制されるため、Amplifyの利用を機にCloudformationを触る機会が増えた人も多いのではないでしょうか。私もそうでした。
今回はAWS CLIの aws cloudformation
コマンドを使う時の小ネタを紹介します。
Parametersが肥大化しCLIの実行がつらくなる
- デプロイするステージを変えたい
- 一つのCloudformation Templateを雛形にして複数のAWSリソース群を生成したい
等、Cloudformation Templateが成長するにつれ、Parametersブロックの定義が増えていきます。
具体的には、以下のようにCloudformation TemplateにParameter定義を追加することになり、
1AWSTemplateFormatVersion: "2010-09-09"
2Description : "Cloudformation template example"
3
4Parameters:
5 ParamA:
6 Type: String
7 ParamB:
8 Type: String
9 ParamC:
10 Type: String
11
12Resources:
13(以下略)
Cloudformation TemplateをAWS CLIから以下のようにデプロイします。
1aws cloudformation deploy \
2 --template-file ${Templateファイル名} \
3 --stack-name ${スタック名} \
4 --parameter-overrides ParamA=foo ParamB=bar ParamC=baz
この --parameter-overrides
オプションは Key=Value
形式で指定する必要があります。
全てのParameterのペアを直接書いてコマンドを実行することは現実的ではありません。
パラメータを外部ファイルに定義する
そのため、このParamtersのペアを外部ファイルに定義しましょう。
以下のような parameters.properties
ファイルを作成し、Key-Valueペアを定義していきます。
1ParamA=foo
2ParamB=bar
3ParamC=baz
--parameter-overrides
オプション部分は parameters.properties
ファイルの定義を流し込むように書き換えてあげれば良いです。
1aws cloudformation deploy \
2 --template-file ${Templateファイル名} \
3 --stack-name ${スタック名} \
4 --parameter-overrides `cat parameters.properties`