AWS-CloudFormation

Metadateセクションを使ってCloudFormationを見やすくしよう

はじめに

こんにちはディーネットのタナミです。

皆さんは、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が向上するので是非、お試しください。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA