【AWS】CloudFormation(CFn)を使ってみる:概要編


はじめに

みなさん、コードは管理してますか?
してる?
良いですね。

では、インフラもコード管理してますか?
えっ?神が作られし古文書(Excelのドキュメント)があるから大丈夫だって?
じゃあ、それを元に検証環境を1台作ってみましょうかーーーー

どーも、のぶこふです。
この記事はGFAMアドベントカレンダー2021の8日目の記事です。

今回のサービス一覧

Service名とか 概要
CloudFormation 1 2 3 AWS向けのIaC

IaC?

  • Infrastructure as Code
  • 細かい説明はWikipedia大先生にお任せするとして、ざっくりと・・・
    • すばやく複製:コードでインフラを定義することで、構築における再利用性と冪等性を担保する
    • 管理を簡略化:パラメータシートやドキュメントを管理する必要がなくなり、コードを正とできる
    • 制御や変更の追跡:Git等によるコード管理により、改訂履歴の追跡が可能

CloudFormation

  • くらうど ふぉーめーしょん
  • 設定ファイル(テンプレート)を使ったリソースのモデル化と管理を行う、AWS向けのIaC。
    • AWSおよびサードパーティのリソースをモデル化、プロビジョニング、管理することが可能
    • テンプレートを自由に作成することができ、自分好みのシステム構成を自動的に構築できる
      • JSON、YAMLフォーマットのテキスト形式をサポート
  • CFnと略される

基本機能

  • 作成
    • テンプレートに定義された構成でスタックを自動作成
    • 並列でリソースを作成し、依存関係がある場合は自動的に解決(すごい)
  • 変更
    • スタックに前回のテンプレートとの差分を適用(冪等性)
    • リソース変更時は「無停止変更/再起動/再作成」のいずれかが発生
    • Change Setを作成することで、差分の内容を事前に確認可能
  • 削除
    • 依存関係を解決しつつリソースをすべて削除
    • データストアはスナップショット取得/保持が可能

手順

  1. テンプレート作成
  2. アップロード
  3. スタックの作成
  4. リソースの作成と管理

用語

名称 概要
テンプレート スタックの設計図。JSON/YAML形式のテキスト
スタック テンプレートからプロビジョニングされるリソースの集合体。スタック単位でリソースの管理が可能。リソースの構築順は、テンプレートの依存関係からCFnが自動的に決定

テンプレートの要素

名称 概要
AWSTemplateFormatVersion CFnのテンプレートバージョン。「2010-09-09」が唯一有効な値
Description テンプレートの説明文
Metadata テンプレートに関する追加情報
Parameters スタック作成や更新の際に、ユーザ入力を求めるパラメータ
Mappings Conditionsに使用するキーと値のマッピングテーブル
Conditions 条件名と条件判断内容を列挙。本番/検証で構成が異なる場合等に便利
Transform サーバレスアプリケーションや定形コンテンツ挿入等のためのマクロを指定
Resources 「必須」。スタックを構成するリソースとプロパティ
Outputs スタック構築後にCFnから出力させる値

おわりに

一旦、今回はここまでとして、次回、実際にテンプレートの作成やCFnの実行を試してみようと思います。

今回はここまでです。
ありがとうございました。