はじめに
テンプレート作成の時には、パラメータを用途毎にまとめて書いているのにも関わらず、コンソールからスタック作成する時には、表示される順序がバラバラになっていてもやもやしている方必見です。
解決策
Metadataの「AWS::CloudFormation::Interface」を使用することで解決できます。
使い方
使い方は簡単です。
metadataセクションを宣言し、ParameterGroupsプロパティにリストでグループ毎に宣言するのみになります。
AWS公式ドキュメント:https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-cloudformation-interface.html
詳しく説明していきます。
- 何も設定していない場合
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
#りソース名などに使用する環境パラメータ
SystemName:
Type: String
Environment:
Type: String
#EC2に使用するパラメータ
EC2ImageId:
Description: Specifies the AMI ID for your instances.
Type: String
Default: ami-XXXXXXXX
KeyPairName:
Description: Name of key pair to use
Type: AWS::EC2::KeyPair::KeyName
このようにテンプレート上ではグループ毎に記述しているにも関わらず、コンソール上ではバラバラになってしまいます。
できるのであれば記述通りに表示されて欲しいものです。
- Metadataを宣言した場合
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
#りソース名などに使用する環境パラメータ
SystemName:
Type: String
Environment:
Type: String
#EC2に使用するパラメータ
EC2ImageId:
Description: Specifies the AMI ID for your instances.
Type: String
Default: ami-XXXXXXXX
KeyPairName:
Description: Name of key pair to use
Type: AWS::EC2::KeyPair::KeyName
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: "Environment Configuration"
Parameters:
- SystemName
- Environment
- Label:
default: "EC2 Configuration"
Parameters:
- EC2ImageId
- KeyPairName
ちゃんとMetadataに記述した通りに表示されました!
Labelを指定することで、パラメータのグループ名をつけることも可能です。
最後に
パラメータの順序を制御することでスタック作成時に見やすくなり、
ヒューマンエラーを予防することにもつながるので、コンソールからスタックを作成する場合は是非使っていきたい機能だと感じました。