0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CloudFormationでパラメータ入力順を指定する方法

Last updated at Posted at 2021-09-26

こんにちは、Masuyama です。

CloudFormation が大好きなので検証する時は大抵テンプレートからリソースを作成しているのですが、
いくつかパラメータを入力する時に思った通りの順番にならないことが地味に気になっていました。

パラメータ入力順を指定しない時

例を示します。

下記のテンプレート内では以下 5 つのパラメータを上から指定しています。

  1. EnvironmentName
  2. VPCCIDR
  3. PrivateSubnetCIDR
  4. Ec2ImageId
  5. Ec2InstanceType
  6. KeyPair
...
Parameters:
  EnvironmentName:
    Type: String
    Default: xxxxxxxx-env

  VPCCIDR:
    Type: String
    Default: 10.3.0.0/16

  PrivateSubnetCIDR:
    Type: String
    Default: 10.3.0.0/24

  Ec2ImageId:
    Type: AWS::SSM::Parameter::Value<String>
    Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2

  Ec2InstanceType:
    Type: String
    Default: t3.nano

  KeyPair:
    Type: String
    Default: CfKeyPair
...

しかし、テンプレートをアップロードした時にはランダムなパラメータ入力順となり、テンプレート内で (上から) 記述している順番とは全く異なっています。

image1.png

パラメータ数が少ないうちならそこまで気になりませんが、多くなってくると混乱や入力ミスのもとになりますので、入力順を指定するようにしてみましょう。

パラメータ入力順を指定する

パラメータグループを設定

入力順を指定するにあたり、まずはパラメータをいくつかのグループに分けるという作業をします。
例えば VPC 関連のパラメータ、EC2 関連のパラメータと分けるといった作業です。
(入力順を指定するだけであれば、すべてのパラメータを 1 つのグループに入れてしまっても構いませんが、グルーピングしてあげた方が可視性が上がるのでオススメです。)

ここでは次のようにグルーピングします。

  • Stack 関連
    • EnvironmentName
  • VPC 関連
    • VPCCIDR
    • PrivateSubnetCIDR
  • EC2 関連
    • Ec2ImageId
    • Ec2InstanceType
    • KeyPair

テンプレート上でパラメータグループを指定

この場合、テンプレート内の冒頭に [MetaData] > [AWS::CloudFormation::Interface] > [ParameterGroups] という枠を作って指定してあげます。

AWSTemplateFormatVersion: "2010-09-09"

Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      -
        Label:
          default: Stack Configuration
        Parameters:
          - EnvironmentName
      -
        Label:
          default: VPC Configuration
        Parameters:
          - VPCCIDR
          - PrivateSubnetCIDR
      -
        Label:
          default: EC2 Configuration
        Parameters:
          - Ec2ImageId
          - Ec2InstanceType
          - KeyPair
...

テンプレートをアップロード

上記テンプレートをアップロードすると、パラメータグループごとに分かれており、更にテンプレート内で上から指定した順序でパラメータを入力するように欄が作られました。

image2.png

入力時の可視性も上がりますし、毎回同じ順番で入力することになるので入力ミスも減ることにも繋がります。
また、テンプレート自体も読みやすくなりますので、積極的にパラメータグループは使っていこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?