LoginSignup
2
2

More than 3 years have passed since last update.

CloudFormationをゼロから勉強する。(その2:デザイナーからのテンプレート作成)

Last updated at Posted at 2020-08-22

はじめに

前回は環境を整えるところで終了したので、今回は実際に手を動かしてテンプレートを作成してみたいと思います。

テンプレート作成

AWSコンソールのCloudFormationの画面からスタックの作成ボタンをクリックして作成を進めます。

デザイナー画面からのテンプレート作成

スタックの作成画面に進むと以下3つのテンプレート準備方法が表示されます。
今回はデザイナー画面から操作してみたいので、デザイナーでテンプレートを作成を選択して次へ進みます。

capture_17082020_071521.jpg

構成図作成

左ペインに表示されているリソースタイプのオブジェクトを選択してドラッグ&ドロップするだけで構成に従ったソースコードが生成されます。
以下で、実際のデザイナー画面からVPCSubnetリソースを配置してみました。

cf_select.gif

見た目でどのような構成のソースコードなのかが分かりやすくて良いですね。
自作のソースコードの構成も可視化してくれるなら構成チェックにも役立ちそうです。

また、例えばSubnetリソースを別のVPCリソース上に移動した場合、連動する値も変更されるのはコーディングする際に気にしなくて済むのでうれしい機能です。

以下動画のプロパティ欄に記載されているVpcIdに注目するとSubnetリソースに紐付くVpcIdの論理IDが変わることが分かるかと思います。

cf_move.gif

必須コードの記載

デザイナー画面で構成図を作成しただけでは設定がまだ足りないので実際にコーディングしていきます。
テンプレートの言語はJSONYAMLがありますが、YAMLでコーディングすることにします。

また、今回はVPCSubnetリソースのサブネットを以下とします。

リソース プロパティ パラメータ
VPC CidrBlock 172.24.0.0/16
Subnet CidrBlock 172.24.0.0/24

CloudFormationユーザガイド」の「テンプレートリファレンス」を見ると、VPCSubnetリソースはCidrBlockプロパティが必須項目のようです。

画面上のVPCリソースを選択するとプロパティ欄が表示されるため、以下のように編集します。

VPCリソースのプロパティ(編集前)
Resources:
  EC2VPC1WR8B:
    Type: 'AWS::EC2::VPC'
    Properties: {}        ★{}を削除して次行にCidrBlockを追加
VPCリソースのプロパティ(編集後)
Resources:
  EC2VPC1WR8B:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: 172.24.0.0/16

Subnetリソースも同じように編集します。
VPCリソースの中にSubnetリソースを配置している場合は「{}」は無く、すでにVPCリソースの論理IDが含まれたVpcIdが記載されているはずなので、VpcIdの下にCidrBlockを追加します。

Subnetリソースのプロパティ
Resources:
  EC2SJOWQ:
    Type: 'AWS::EC2::Subnet'
    Properties:
      VpcId: !Ref EC2VPC1WR8B
      CidrBlock: 172.24.0.0/24

スタックの作成

コーディングが完了したら、画面上のテンプレートの検証ボタンをクリックし、問題が無ければスタックの作成ボタンをクリックすると、最初の「テンプレートの指定」画面に戻るため、「次へ」で進みます。

尚、デザイナー画面でテンプレートを作成した場合はS3に「cf-templates-xxxxxxxxx」というディレクトリが作成されて、その中にテンプレートが保存されるようです。

スタック作成までにいくつかの画面で色々とオプションなどが表示されますが、今回は「スタック名」だけ入力して、スタックを作成してしまいます。

作成されたリソースの確認

「スタックを作成」ボタンをクリックすることでリソースの作成が開始されるので、さっそく確認してみると、無事作成されているようです。

  • VPC画面
    capture_20082020_085024.jpg

  • サブネット画面
    capture_20082020_085116.jpg

テンプレートの削除

作ったスタックの削除はあっという間で、削除するスタックを選択し、「削除」ボタンを押せば、テンプレートに記載されているリソースがまとめて削除されます。

capture_20082020_085906.jpg

おわりに

構成図を作る感覚で実際のコードまで生成されるのは、今までオンプレ環境の構成図を1から作ってパラメータ設計していたことを考えると非常に画期的だと感じました。

また、デザイナー画面からの作成はテンプレートの雛形を作成するのに非常に便利で、慣れれば少ないコーディングでCloudFormationのテンプレートを作成できそうです。

次回は汎用性を持たせるために画面からパラメータを入出力させるように改良してみたいと思います。

2
2
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
2
2