アプリケーション開発で実践されているような、コード管理・作業の自動化をインフラ構築にも導入し、インフラ構築作業内容をコードで記述して管理できるようにしたIaC(Infrastructure as Code)という考え方があります。
参考
https://www.sbbit.jp/article/cont1/39402
そしてAWSで、IaCを実現したサービスがCloudFormationです。
想定している読者
- CloudFormationについてほとんど知識がない方。
- CloudFormationの概要や利用することのメリットを知りたい方
本記事のゴール
- CloudFormationについての概要が理解できること
- CloudFormationを利用することのメリットが理解できていること
そもそもCloudFormationとは?
- AWS内の全てのリソースを自動でプロビジョニングできるAWSサービス
- 構成定義ファイルをjson,yaml形式で記述可能
- CloudFormationを利用することに対する料金は発生しない
- CloudFormationを利用して作成したリソースに対して、手動で作成した場合と同様の料金が発生
重要な用語
-
テンプレート
リソースの構築内容を定義するファイル。それぞれのリソースの依存関係もこのテンプレートに記述される。また、json,yamlの2種類の形式で記述可能。(2020/3/12現在) -
スタック
テンプレートを利用してCloudFormationによってプロビジョニングされるAWSリソースの集合体。スタックを削除すればスタック内の全てのリソースも削除される。また、テンプレートを更新した場合に、差分のあるリソースのみに対して変更を加えることも可能。
ユースケース
- AWSのリソースを効率的に構築したい
- 開発・テスト・本番など、同一の構成の環境を複数構築したい
- 環境構成をバージョン管理したい
CloudFormationを利用するメリット
素早くリソースを構築できる
手動で構築する場合と比べて圧倒的に短い時間でリソースを構築することが可能です。
ざっくりとした比較をすると、慣れた人であっても30分ぐらい時間がかかるような作業であっても、CloudFormationを利用すれば実行1分、構築まで3分ぐらい短時間で構築が完了してしまうようなイメージです。
何度でも同じ構成を再現できる
手動で作業をすると、どうしても手順にミスなどが発生しますが、CloudFormationを実行することで、全く同じ構成がリソースを構築できます。本番環境とテスト環境などで、同じ構成を実現したい場合に有効です。
インフラストラクチャの運用をバージョン管理できる
インフラ環境の運用をコードで管理しているため、同じ作業であれば、以前実行したコードをそのまま流用できます。また、環境構成に変更が生じた場合には、該当箇所のみコードを修正し、修正版の環境を構築できます。これにより、インフラ環境のバージョン管理が容易に実現できます。
不要になったリソースを確実に削除できる
手動でリソースを削除する場合、どうしても依存関係が複雑で消すのに苦労したり、消し忘れが発生します。有料のリソースを利用している場合、当然消し忘れた分の費用も発生します。しかし、CloudFormationはスタック単位でリソースがまとまっており、スタックを消せば、スタック内の全てのリソースが削除されます。これによって、不要になったリソースを確実に削除することができます。