見出し画像

【AWS】CloudFormation についてざっくりまとめる:学習メモ

CloudFormation は小難しそうで苦手意識があったのですが、いつまでもそう言ってられないので詳しく調べてみました。

「え... これ使いこなせたらめっちゃいいじゃん」と思うようになり、苦手意識はどっかにいきました。 やったぜ。

実際に使ってみた記事はこちら

CloudFormation とは?

AWSリソースについて記述したテンプレートを用意し、環境構築を自動化できるサービス。
テンプレートはJSONかYAML形式で作成する。
CloudFormation によって作成されたリソースたちを「スタック」と呼ぶ。

具体的になにがうれしいのか

■ 同じ環境を簡単に複製できる
 AWSコンソールからポチポチ手作業で環境構築できるけど、環境によって差分が出る可能性が出てくる。
 (本番環境では設定したけど、STG環境はミスって設定してなかったとか)

 コードを用意する初期コストはかかるものの、似たような環境を複数作るなら手作業で構築するよりも短時間でミスなく環境を作れる。
■ 環境のコード化によるメリットがいっぱい
 コード化すれば差分確認がしやすくなる。
 また、Gitなどでバージョン管理できる・レビューできる。
■ 追加料金なし
 CloudFormation 自体の利用料金はかからない。
 CloudFormation によって作成されたリソース分の料金はかかる。
■ 自動で判別してくれる便利機能つき 
 リソースの構築順・リソース間の依存関係はCloudFormation が自動で判別してくれるので、気にしなくていい。

主にできること

・テンプレートをもとにスタックを自動作成できる
・環境の作成だけでなく、変更・削除も可能
・変更のプレビューができるため、変更箇所・変更箇所がスタックに与える影響を事前に確認できる
・スタックを削除すればリソース群をまとめて削除することができる
・環境構築を自動化できるサービスはいくつかあるものの、細かい部分まで設定できて自由度が高いのはCloudFormation
・主要なサービスにはだいたい対応している (EC2, IAM, RDSなど)

気をつけるポイント

テンプレートが壮大すぎると影響範囲が広くなったり管理が大変。
適度に分割を考えないといけない

→ 以下の観点で分割するといいかも
 ■ 依存関係
  VPCのテンプレート・セキュリティ + IAMのテンプレート・アプリケーションのテンプレート
 ■ ライフサイクル
  更新が定頻度なVPCやIAMのテンプレート・更新が高頻度なアプリケーションのテンプレート

テンプレートについて

■ 以下のようにセクションが分かれている。「Resources」のみ必須

画像1

参考:【AWS Black Belt Online Seminar】AWS CloudFormation

■ 「Parameters」はAWSコンソールからユーザーに入力させたい項目を定義する
 (ユーザー名・パスワード・キーペアなど)

 以下はテンプレートに記載した「Parameters」

画像2

 上記のテンプレートをアップロードすると、AWSコンソールに「パラメータ」が表示される

画像3

■ 主な組み込み関数
 ・!Ref
  指定したパラメータやリソースの値を取得する関数
  動的に値が決まる項目をテンプレートに記載する際に利用する
   (例:VPCのIDは構築時に決まるため、テンプレートを準備している段階ではわからない)

 ・!GetAtt
  リソースが持つ属性値を取得する関数(例:EC2のパブリックDNS名

参考資料

【AWS Black Belt Online Seminar】AWS CloudFormation
Amazon Web Services 業務システム設計・移行ガイド 一番大切な知識と技術が身につく

この記事が気に入ったらサポートをしてみませんか?