はじめに
みなさん、コードは管理してますか?
してる?
良いですね。
では、インフラもコード管理してますか?
えっ?神が作られし古文書(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を作成することで、差分の内容を事前に確認可能
- 削除
- 依存関係を解決しつつリソースをすべて削除
- データストアはスナップショット取得/保持が可能
手順
- テンプレート作成
- アップロード
- スタックの作成
- リソースの作成と管理
用語
名称 | 概要 |
---|---|
テンプレート | スタックの設計図。JSON/YAML形式のテキスト |
スタック | テンプレートからプロビジョニングされるリソースの集合体。スタック単位でリソースの管理が可能。リソースの構築順は、テンプレートの依存関係からCFnが自動的に決定 |
テンプレートの要素
名称 | 概要 |
---|---|
AWSTemplateFormatVersion | CFnのテンプレートバージョン。「2010-09-09」が唯一有効な値 |
Description | テンプレートの説明文 |
Metadata | テンプレートに関する追加情報 |
Parameters | スタック作成や更新の際に、ユーザ入力を求めるパラメータ |
Mappings | Conditionsに使用するキーと値のマッピングテーブル |
Conditions | 条件名と条件判断内容を列挙。本番/検証で構成が異なる場合等に便利 |
Transform | サーバレスアプリケーションや定形コンテンツ挿入等のためのマクロを指定 |
Resources | 「必須」。スタックを構成するリソースとプロパティ |
Outputs | スタック構築後にCFnから出力させる値 |
おわりに
一旦、今回はここまでとして、次回、実際にテンプレートの作成やCFnの実行を試してみようと思います。
今回はここまでです。
ありがとうございました。