AWS CloudFormation Master Class を受けてみた①

Pocket

はじめに

今回は、 Udemy で Stephane Maarek 氏 が提供する「 AWS CloudFormation Master Class 」というコースを受講しました。
こちらのコースの概要を何回かに分けて紹介していきますので、よろしくお願いします。

AWS CloudFormation Master Class

About AWS and CloudFormation
AWS と CloudFormation は、それぞれ以下の特徴があります

・AWS はクラウドコンピュータと呼ばれるもの
・従量課金で簡単に利用できるサーバやサービスを提供している
・世界中で利用されており現在は50以上ものサービスが用意されている

・AWS インフラ環境について宣言的な記述が可能なサービス
・例として以下の様な記述が可能
セキュリティグループを用意して欲しい
このセキュリティグループを使用している EC2 を2台用意して欲しい
これらの EC2 用に固定 IP を用意して欲しい
そしてCloudFormation は上記の内容に対して正しい順番で正確に構築が可能

CloudFormation のメリット
CloudFormation を利用するメリットとして、以下が挙げられます。

・コードでインフラ環境を構築
既存のリソースが特に無いため、ユーザ自身で自由にコントロール可能
git を用いてコードのバージョン管理が可能
・コスト
費用が一目で分かる
CloudFormation テンプレートを使用することでリソースに対するコストを試算可能

・生産性
クラウド環境でインフラの構築と破壊が可能
宣言型プログラム(細かい指示が不要)
・複数のスタックやアプリ、レイヤーを構築可能
VPC スタック
ネットワークスタック
・わざわざ1から作る必要なし
ウェブを探せばお目当てのテンプレを見つけられる

CloudFormation vs Ansible / Terraform
Ansible や Terrafform と比較した場合でも、以下の理由から CloudFormation を利用することをおすすめします。

・Ansible と Terraform は CloudFormation と比べてユーザのスタックを完全に利用できない
・Ansible と Terraform は新サービスや API の登場の度に長時間のアップデートが必要となる
・それに対して CloudFormation はAWS から常に最新のサービスや情報をアップデートしている

Download the code
本コースでは、 Cloudformation を利用するにあたって事前にコードをダウンロードする必要があります。

URLから飛んだ先でコードをダウンロードします。

ダウンロードしたら完了です。
その他の項目は任意なので、必要であればそちらもどうぞ。

Introductory Example

今回は、CloudFormation を使って以下の構築を行います。

・EC2 インスタンスの作成
・固定 IP を追加して作成
・作成した EC2 にセキュリティグループを2つ追加

EC2インスタンスの作成
それでは、始めましょう。
※コース内で Region を N.Virginia と指定しているため、ここでも Region は N.Virginia を選択

AWS のコンソール画面より、CloudFormation を選択します。
「Create new stack」を選択します。

CloudFormation のテンプレートの選択方法は、大きく分けて2通りあります。
・テンプレートのデザイン
・テンプレートの選択
-サンプルを選択
-Amazon S3 にテンプレートをアップロード
-Amazon S3 URL を選択
今回は、Amazon S3 にテンプレートをアップロードします。
先ほどダウンロードしたコードから、「0-just-ec2-yaml」YMAL ファイルを選択します。

ファイルを選択したら、スタックの名前を入力して次へ。

・Key に「 Course 」と入力
・Value に「 Udemy 」と入力
入力が完了したら、次へ。

テンプレートの内容などを確認し、問題が無ければ「 Create 」を選択

作成が完了すると、スタックが追加されているのが分かります。
「 Event 」タブを選択するとイベントの履歴と詳細を知ることができます。


「 Resource 」タブを選択するか、EC2 サービスの画面に飛ぶことで、作成された インスタンスを確認できます。
ただ、今回のスタックでは固定 IP やセキュリティグループの設定ができておりません。
CloudFormation に戻り、固定 IP とセキュリティグループの設定も行いましょう。

固定 IP とセキュリティグループの設定
固定 IP とセキュリティグループの設定をするため、作成したスタックを更新します。

作成したスタックを選択した状態で、「アクション」→「スタックの更新」を選択します。

テンプレートの選択で、「 1-ec2-with-sg-eip-yaml 」のファイルを選んだら、確認画面にまで進みます。

確認画面で、今回のスタックの更新による変更内容が表示されます。
内容を確認して、問題が無ければ「 Update 」を選択しましょう。

スタックのイベント履歴を確認すると、セキュリティグループなど、先ほどよりも履歴が増えているのが確認できます。

リソースタグを選択すると、EC2 以外にも固定 IP などが作成されていることが確認できます。
※先ほど作成した EC2 インスンタンスは、スタックの更新によって削除されています(イベントログからも確認できます)。

スタックの削除を行うと、このスタックで作成した全てのリソースを削除することができます。

まとめ

今回学んだ CloudFormation の内容についてまとめました。

・テンプレートを参照する際は、S3 にアップロードしている必要がある
・既存のテンプレートを残した状態で、テンプレートの更新はできない
・スタックは名前で認識されている
・スタックを削除すると、スタックで作成したリソース全てを削除することになる

おわりに

以上で、最初の CloudFormation についての簡単な説明とその機能についての説明は終了です。
今回の内容だけでも、CloudFormation の便利さを知って頂けたかと思います。
次回はより実践的な CloudFormation の活用になっていきます。