はじめに
今回は、 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 を利用するにあたって事前にコードをダウンロードする必要があります。
ダウンロードしたら完了です。
その他の項目は任意なので、必要であればそちらもどうぞ。
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 の活用になっていきます。