Edited at

AWS CloudFormation Master Class を受けてみた①


はじめに

今回は、 Udemy で Stephane Maarek 氏 が提供する「 AWS CloudFormation Master Class 」というコースを受講しました。

こちらのコースの概要を何回かに分けて紹介していきますので、よろしくお願いします。


AWS CloudFormation Master Class


About AWS and CloudFormation

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

image.png


  • AWS はクラウドコンピュータと呼ばれるもの

  • 従量課金で簡単に利用できるサーバやサービスを提供している

  • 世界中で利用されており現在は50以上ものサービスが用意されている

image.png


  • AWS インフラ環境について宣言的な記述が可能なサービス

  • 例として以下の様な記述が可能


    • セキュリティグループを用意して欲しい

    • このセキュリティグループを使用している EC2 を2台用意して欲しい

    • これらの EC2 用に固定 IP を用意して欲しい



  • そしてCloudFormation は上記の内容に対して正しい順番で正確に構築が可能


CloudFormation のメリット

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

image.png


  • コードでインフラ環境を構築


    • 既存のリソースが特に無いため、ユーザ自身で自由にコントロール可能

    • git を用いてコードのバージョン管理が可能



  • コスト


    • 費用が一目で分かる

    • CloudFormation テンプレートを使用することでリソースに対するコストを試算可能



image.png


  • 生産性


    • クラウド環境でインフラの構築と破壊が可能

    • 宣言型プログラム(細かい指示が不要)



  • 複数のスタックやアプリ、レイヤーを構築可能


    • VPC スタック

    • ネットワークスタック



  • わざわざ1から作る必要なし


    • ウェブを探せばお目当てのテンプレを見つけられる





CloudFormation vs Ansible / Terraform

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

image.png


  • Ansible と Terraform は CloudFormation と比べてユーザのスタックを完全に利用できない

  • Ansible と Terraform は新サービスや API の登場の度に長時間のアップデートが必要となる

  • それに対して CloudFormation はAWS から常に最新のサービスや情報をアップデートしている


Download the code

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

image.png

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

image.png

ダウンロードしたら完了です。

その他の項目は任意なので、必要であればそちらもどうぞ。


Introductory Example

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

image.png


  • EC2 インスタンスの作成

  • 固定 IP を追加して作成

  • 作成した EC2 にセキュリティグループを2つ追加


EC2インスタンスの作成

それでは、始めましょう。

※コース内で Region を N.Virginia と指定しているため、ここでも Region は N.Virginia を選択

image.png

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

「Create new stack」を選択します。

image.png

CloudFormation のテンプレートの選択方法は、大きく分けて2通りあります。


  • テンプレートのデザイン

  • テンプレートの選択


    • サンプルを選択

    • Amazon S3 にテンプレートをアップロード

    • Amazon S3 URL を選択



今回は、Amazon S3 にテンプレートをアップロードします。

先ほどダウンロードしたコードから、「0-just-ec2-yaml」YMAL ファイルを選択します。

image.png

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

image.png


  • Key に「 Course 」と入力

  • Value に「 Udemy 」と入力

入力が完了したら、次へ。

image.png

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

image.png

作成が完了すると、スタックが追加されているのが分かります。

「 Event 」タブを選択するとイベントの履歴と詳細を知ることができます。

image.png

image.png

「 Resource 」タブを選択するか、EC2 サービスの画面に飛ぶことで、作成された インスタンスを確認できます。

ただ、今回のスタックでは固定 IP やセキュリティグループの設定ができておりません。

CloudFormation に戻り、固定 IP とセキュリティグループの設定も行いましょう。


固定 IP とセキュリティグループの設定

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

image.png

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

image.png

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

image.png

確認画面で、今回のスタックの更新による変更内容が表示されます。

内容を確認して、問題が無ければ「 Update 」を選択しましょう。

image.png

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

image.png

リソースタグを選択すると、EC2 以外にも固定 IP などが作成されていることが確認できます。

※先ほど作成した EC2 インスンタンスは、スタックの更新によって削除されています(イベントログからも確認できます)。

image.png

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


まとめ

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

image.png


  • テンプレートを参照する際は、S3 にアップロードしている必要がある

  • 既存のテンプレートを残した状態で、テンプレートの更新はできない

  • スタックは名前で認識されている

  • スタックを削除すると、スタックで作成したリソース全てを削除することになる


おわりに

以上で、最初の CloudFormation についての簡単な説明とその機能についての説明は終了です。

今回の内容だけでも、CloudFormation の便利さを知って頂けたかと思います。

次回はより実践的な CloudFormation の活用になっていきます。