目次
はじめに
こんにちはディーネットのタナミです。
皆さんは、CloudFormationのパラメーターの順序が自身の想定していたものと違い、見づらくなってしまった経験はありませんか?
実はそれ、たった一つセクションを追加するだけで解決することが出来ます!
Parametersはアルファベット順に並ぶ
なぜ自身が想定した通りにParametersが表示されないのか?
それは基本的にParametersはアルファベット順に表示されるようになっています。
下記のようなParametersを設定したとしましょう。
Parameters:
ProjectName:
Type: String
Description: Project Name
Environment:
Type: String
Description: Environment
AllowedValues:
- dev
- stg
- prod
- cmn
- test
EC2flag:
Type: String
Description: Set true to create EC2 alarms
AllowedValues:
- 'true'
- 'false'
Default: 'false'
ALBflag:
Type: String
Description: Set true to create ALB alarms
AllowedValues:
- 'true'
- 'false'
Default: 'false'
Hostname:
Type: String
Description: EC2 Hostname (required when EC2flag is true)
Default: ''
InstanceID:
Type: String
Description: EC2 Instance ID (required when EC2flag is true)
Default: ''
ALBarn:
Type: String
Description: ALB ARN (required when ALBflag is true)
Default: ''
DiskDevice:
Type: String
Description: Disk device name for disk_used_percent metric
Default: nvme0n1p2
DiskFstype:
Type: String
Description: Filesystem type for disk_used_percent metric
Default: xfs
DiskPath:
Type: String
Description: Mount path for disk_used_percent metric
Default: /
S3endpoint:
Type: String
Description: xxxxxx.s3.ap-northeast-1.amazonaws.com
しかしながら実際に表示されるのは下図の通りであり、これでは見づらく扱いづらいですよね。

Metadataを使用しよう
そこで、Metadataセクションを用いることでParametersを整理された状態で表示させることが出来ます。
下記のような形で設定することが出来ます。
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: 使用用途の記載
Parameters:
- 上記のLabelに含めたいParametersを記載
実際に設定を行うと下記のようなコードになります。
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: "common"
Parameters:
- ProjectName
- Environment
- Label:
default: "S3 endpoint"
Parameters:
- S3endpoint
- Label:
default: "EC2 Alarm"
Parameters:
- EC2flag
- Hostname
- InstanceID
- DiskDevice
- DiskFstype
- DiskPath
- Label:
default: "ALB Alarm"
Parameters:
- ALBflag
- ALBarn
下図のように表示されます。

まとめ
いかがでしょうか。
Metadataを用いることでかなり見やすくなったかと思います。
ほんのひと手間でUXが向上するので是非、お試しください。
よろしくお願いします。