はじめに
前回はCloudFormationのデザイナー画面からテンプレートを作成しましたが、固定値をそのまま記載しており、使いまわししにくいので、今回は汎用的にするため、固定値を変数として適宜パラメータを入力させるようにして、後から確認したい値を出力させてみたいと思います。
テンプレートパスの確認
前回のテンプレート作成でS3に保存されているテンプレートのディレクトリパスを確認します。
AWSマネジメントコンソールかaws cliで確認してください。
aws s3 ls
aws s3 ls --recursive cf-templates-xxxxxxxxxxxx-[リージョン名]
S3にはデザイナー画面で作成したテンプレートが以下のディレクトリパスで保存されているはずです。
cf-templates-xxxxxxxxxxxx-[リージョン名]
├─ xxxxxxxxxx-designer/
│ └─ new.templatexxxxxxxxxxx ★テンプレート
└─ xxxxxxxxxx-new.templatexxxxxxxxxxx ★テンプレート
テンプレートが2種類保存されておりますが、「new.templatexxxxxxxxxxx」と「xxxxxxxxxx-new.templatexxxxxxxxxxx」の内容は同じです。
違いは分かりませんでしたが、デザイナー画面で作業中のファイルと保存してあるファイルなどの違いなのでしょうか?
読み込むだけならどちらでもよさそうですが、今回は「xxxxxxxxxx-designer」配下の「new.templatexxxxxxxxxxx」を読み込むようにします。
スタックの作成
前回デザイナー画面から作成したテンプレートを使って改良していこうと思います。
デザイナー画面で作成したテンプレートは、スタックが削除されていてもS3の「cf-templates-xxxxxxxxx」に保存されているため、S3に保存されているテンプレートを読み込みます。
尚、Amazon S3 URLは「S3://」のような指定も可能なので、aws cliから確認した人は以下の様な表記で入力したほうが簡単です。
- s3://cf-templates-xxxxxxxxxxxx-[リージョン名]/xxxxxxxxxx-designer/new.templatexxxxxxxxxxx
テンプレートの読み込み
前回と同様、スタックの作成ボタンをクリックし、スタックの作成を進めます。
今回はテンプレートファイルがあるので、テンプレートの準備完了を選択し、テンプレートの指定で、先ほど調べたS3のURLを入力してデザイナーで表示をクリックして前回のデザイナー画面を表示します。
コーディング
「AWS Black Belt Online Seminar AWS CloudFormation アップデート」のスライドを確認すると、パラメータ値をユーザに入力させるにはParametersセクションを作成、任意のパラメータを画面出力させるにはOutputセクションを作成することで画面出力できるようなので早速作成していきます。
入力項目(Parametersセクション)の作成
前回直接値を書き込んでいたVPCとSubnetリソースのCidrBlockの値を、スタック作成時に入力させるようにしようと思います。
Parametersセクションは前回編集していたResourcesセクションとは異なるため、デザイナー画面の何もない部分をクリックし、パラメータタブに以下を追加します。
Parameters:
VPCRange:
Type: String
Description: "VPC Subnet Range"
SubnetRange:
Type: String
Description: "Subnet Range"
パラメータの置き換え
前回固定値で記載した値を、先ほどParametersセクションで指定した変数に置き換えます。
Parametersの値は、!Ref [パラメータ名]で呼び出せるため、先ほどのParametersセクションで指定したVPCRangeパラメータの値を呼び出すには、!Ref VPCRangeと指定します。
Resources:
EC2VPC1WR8B:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: !Ref VPCRange
Resources:
EC2SJOWQ:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref EC2VPC1WR8B
CidrBlock: !Ref SubnetRange
出力項目(Outputsセクション)の作成
Outputsセクションは先ほどと同様、何もない部分をクリックし、出力タブに以下を追記します。
今回はリージョン名を画面出力させるようにしたいと思います。
Outputs:
VPCRegion:
Description: Region Name
Value: !Ref 'AWS::Region'
スタックの作成
各コーディングが完了したら、スタックの作成ボタンをクリックし作成を進めていくと、スタックの名前を入力する画面で、先ほどParametersセクションで指定した項目が表示されるので、サブネットを画面上から直接入力して、スタックを作成します。
スタック作成後の確認
無事スタックが作成されると、スタック画面の出力に先ほどOutputsセクションで指定したリージョン名が表示されていることが確認できます。
尚、エクスポート名が空欄となっていますが、他のスタックから値を呼び出したいときに、Exportパラメータを指定することで呼び出すことが可能となるそうです。(Cross Stack Reference)
おわりに
入力画面から指定のパラメータを入力できて、さらに控えておきたい情報が出力パラメータとして画面上から確認できるのは、他の人に指示するような場合や運用手順など作成する場合などに有用ですね。
次回はaws cliからの操作を行ってみたいと思います。


