はじめに
前回は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
からの操作を行ってみたいと思います。