はじめに
前回は環境を整えるところで終了したので、今回は実際に手を動かしてテンプレートを作成してみたいと思います。
テンプレート作成
AWSコンソールのCloudFormation
の画面からスタックの作成
ボタンをクリックして作成を進めます。
デザイナー画面からのテンプレート作成
スタックの作成
画面に進むと以下3つのテンプレート準備方法が表示されます。
今回はデザイナー画面から操作してみたいので、デザイナーでテンプレートを作成
を選択して次へ進みます。
構成図作成
左ペインに表示されているリソースタイプ
のオブジェクトを選択してドラッグ&ドロップするだけで構成に従ったソースコードが生成されます。
以下で、実際のデザイナー画面からVPC
とSubnet
リソースを配置してみました。
見た目でどのような構成のソースコードなのかが分かりやすくて良いですね。
自作のソースコードの構成も可視化してくれるなら構成チェックにも役立ちそうです。
また、例えばSubnet
リソースを別のVPC
リソース上に移動した場合、連動する値も変更されるのはコーディングする際に気にしなくて済むのでうれしい機能です。
以下動画のプロパティ欄に記載されているVpcId
に注目するとSubnet
リソースに紐付くVpcId
の論理IDが変わることが分かるかと思います。
必須コードの記載
デザイナー画面で構成図を作成しただけでは設定がまだ足りないので実際にコーディングしていきます。
テンプレートの言語はJSON
とYAML
がありますが、YAML
でコーディングすることにします。
また、今回はVPC
とSubnet
リソースのサブネットを以下とします。
リソース | プロパティ | パラメータ |
---|---|---|
VPC | CidrBlock | 172.24.0.0/16 |
Subnet | CidrBlock | 172.24.0.0/24 |
「CloudFormationユーザガイド」の「テンプレートリファレンス」を見ると、VPC
とSubnet
リソースはCidrBlock
プロパティが必須項目のようです。
画面上のVPC
リソースを選択するとプロパティ
欄が表示されるため、以下のように編集します。
Resources:
EC2VPC1WR8B:
Type: 'AWS::EC2::VPC'
Properties: {} ★{}を削除して次行にCidrBlockを追加
Resources:
EC2VPC1WR8B:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: 172.24.0.0/16
Subnet
リソースも同じように編集します。
VPC
リソースの中にSubnet
リソースを配置している場合は「{}」は無く、すでにVPC
リソースの論理IDが含まれたVpcId
が記載されているはずなので、VpcId
の下にCidrBlock
を追加します。
Resources:
EC2SJOWQ:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref EC2VPC1WR8B
CidrBlock: 172.24.0.0/24
スタックの作成
コーディングが完了したら、画面上のテンプレートの検証
ボタンをクリックし、問題が無ければスタックの作成
ボタンをクリックすると、最初の「テンプレートの指定」画面に戻るため、「次へ」で進みます。
尚、デザイナー画面でテンプレートを作成した場合はS3に「cf-templates-xxxxxxxxx」というディレクトリが作成されて、その中にテンプレートが保存されるようです。
スタック作成までにいくつかの画面で色々とオプションなどが表示されますが、今回は「スタック名」だけ入力して、スタックを作成してしまいます。
作成されたリソースの確認
「スタックを作成」ボタンをクリックすることでリソースの作成が開始されるので、さっそく確認してみると、無事作成されているようです。
テンプレートの削除
作ったスタックの削除はあっという間で、削除するスタックを選択し、「削除」ボタンを押せば、テンプレートに記載されているリソースがまとめて削除されます。
おわりに
構成図を作る感覚で実際のコードまで生成されるのは、今までオンプレ環境の構成図を1から作ってパラメータ設計していたことを考えると非常に画期的だと感じました。
また、デザイナー画面からの作成はテンプレートの雛形を作成するのに非常に便利で、慣れれば少ないコーディングでCloudFormation
のテンプレートを作成できそうです。
次回は汎用性を持たせるために画面からパラメータを入出力させるように改良してみたいと思います。