俺のアウトプット

調べたこと、試したことを書きます

CloudFormationテンプレートのAWS固有のパラメータ型

Parametersセクションでは、AWS固有のパラメータ型を利用することができます。 入力値はアカウントユーザーに関連するリソース情報になります。
通常の型と比べて、

  • 入力補助がある
  • 入力値をチェックしてくれる

というメリットがあります。
手間が減り、入力間違いがないため、定義されているパラメータ型があれば積極的に使用しましょう。

AWS固有のパラメータ型

型は AWS:: から始まります。

パラメータ型 入力補助 複数対応 説明 入力例
AWS::EC2::AvailabilityZone::Name アベイラビリティーゾーン ap-northeast-1a
AWS::EC2::Image::Id EC2 イメージID ami-ff527ecf
AWS::EC2::Instance::Id EC2 インスタンスID i-011c45735cf4e9dbc
AWS::EC2::KeyPair::KeyName EC2 キーペア名
AWS::EC2::SecurityGroup::GroupName セキュリティグループ名 web-sg
AWS::EC2::SecurityGroup::Id セキュリティグループID sg-a123fd85
AWS::EC2::Subnet::Id サブネットID subnet-123a351e
AWS::EC2::Volume::Id EBS ボリュームID vol-3cdd3f56
AWS::EC2::VPC::Id VPC ID vpc-a123baa3
AWS::Route53::HostedZone::Id Route 53 ホストゾーンID Z23YXV4OVPL04A

入力補助

ドロップダウンリストが表示されます。直接入力することも可能です。
AMI(AWS::EC2::Image::Id) は候補が多いため入力補助がありません。事前に調べて入力します。

f:id:kitsugi:20180719065428p:plain

複数対応

キーペア名(AWS::EC2::KeyPair::KeyName) 以外はリスト形式 List<パラメータ型> で指定可能です。

Type: List<AWS::EC2::AvailabilityZone::Name>

選択するとテキストボックスに追加され、☓を押すと消去できます。

f:id:kitsugi:20180719065447p:plain

サンプル

パラメータでアベイラビリティゾーン(AZ)を選択し、サブネット作成時に選択したAZを参照設定するサンプルです。

AWSTemplateFormatVersion: '2010-09-09'
Parameters:
  MyAZ:
    Type: AWS::EC2::AvailabilityZone::Name
    Description: AvailabilityZone Name
Resources:
  MyVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
  MySubnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref MyVPC
      AvailabilityZone: !Ref MyAZ
      CidrBlock: 10.0.1.0/24
Outputs:
  Result:
    Value: !Ref MySubnet
    Description: AvailabilityZone Name

入力 (Parameters)

  • ドロップダウンリストには、選択しているリージョンのAZ一覧が表示されます。
  • パラメータを選択しないでスタックを作成すると、エラーになりロールバックされます。

出力 (Outputs)

  • サブネットIDを出力しています。
  • [VPC] - [サブネット] から、作成されたサブネットのAZを確認し、パラメータで選択した値と同じことを確認します。

参考