こんにちは「やま」です。
前回AWSのコンテナをご紹介しましたが、今回はAWS CloudFormationのサービスを概要レベルでご紹介します。
AWS CloudFormationとは
AWS CloudFormationとは、AWSのリソース(例えば、EC2とS3とSGとElastic IPなどの組み合わせたリソースなど)を自動に作成してくれるサービスです。
すごっく簡単に言うと...
例えば「みんなでバーベキューしよ!!」となった時を想像してみてください。あなたは、バーベキューに何を持って行きますか??
バーベキュー前日までに、みんなで「あーだ、こーだ、自分これ持って行く。」と楽しくてちょっと面倒な決める工程がありますよね。
または、まず無いと思いますが、事前に決めないでそれぞれ自分のグリルやテーブル、食材などを持ち寄って、自然とかみ合うことはないですよね。
AWS CloudFormationは、そのような面倒くさいことを解決するツールです。すべてをテンプレートというレシピブックに書いて、一気にAWSのリソースを自動で作成してくれるサービスです。
作成したいAWSのリソースを、テキストファイルのテンプレートに決まった形式で記述することにより、AWS CloudFormationはAWSのリソースをその通りにシステム構成を自動で構築してくれます。(何百回というポチポチの動作がなくなります)

※AWS CloudFormationのスタックとは、
レゴブロックのセットみたいなもので、レゴのセットにはブロック(リソース)がたくさん入っていて、それぞれが組み合わさることで車や家など完成形(インフラ環境)ができます。AWS CloudFormationのスタックも同じように、複数のAWSリソース(EC2、S3、RDSなど)をひとまとめにして自動で構築・管理します。「AWSリソースのまとまり」のこと。
AWS CloudFormationの特徴
● コードでインフラ構成を管理
AWS CloudFormationは「Infrastructure as Code (IaC)」と呼ばれるコンセプトを提供します。インフラ(サーバー、ネットワーク、データベースなど)をコードで管理する方法です。簡単に言うと、サーバー設定やネットワーク構成を「手動でポチポチ作業する」代わりに、「プログラムコードで一気に自動構築する」技術です。
例えば、家を建てる時、大工さんが一つ一つ部材を切って組み立てるのは時間がかかりますよね。IaCは、設計図を元に工場で一気に家を作るプレハブ工法のようなイメージです。効率よく、同じものを何度も簡単に作れるのがポイントですね。
自動化することで大きな時間節約が可能です。
● テンプレートの記述方式はYAMLやJSON
すこしプログラミングもできる人にはこのポイントは魅力的です。コードの格納を反映したテンプレートは、容易にカスタマイズも可能です。
下記、JSONとYAMLのEC2とS3を作成するのテンプレートの構文例です。
【JSONの構文】
JSONは厳格な構文ルールを持ち、機械での解析に適しているため、APIレスポンスやデータ交換に多く利用されています。(ちょっと扱いにくいです)

【YAMLの構文】
YAMLは「#」 を使ってコメントを書くことができます。可視性(見やすい)が高いのでお勧めなので特に理由が無ければYAMLで問題ないです。JSONはよりYAMLの方が使いやすいです。

テンプレートは、1から作るには理解を含むという観点から良いですが、AWSの公式サイトに用意されているサービスごとのサンプルテンプレートを利用するか、世界中の優秀なエンジニアがネット上に公開しているテンプレートを利用しましょう。
公開しているテンプレートを理解し、カスタマイズしたほうが効率的です。賢く効率化していきましょう。
また、テンプレート以外にAWS CloudFormation Designerがあり
テンプレートを作成、参照、および変更するためのグラフィックツールです。デザイナーを使用すると、ドラッグ&ドロップを使用してテンプレートリソースを図示し、統合された JSON および YAML エディタ を使用して詳細を編集できます。
AWS CloudFormationのメリットとデメリット
【メリット】
●Infrastructure as code(コードでインフラ構成管理が可能)
AWSリソースの設定を手動で実施しない方針として、どのテンプレートでどの変更が発生したのか履歴でわかり追いやすくなり、テンプレートのバージョン管理して変更内容が見えやすくなる。
●オペレーションの自動化
人間のミスが減る。
●コスト削減
作成や削除しやすい。
開発環境は休日夜間自動的に削除する仕組みを作ることで平日日中帯のみ起動するといったコスト削減が可能。
【デメリット】
●コードの基本知識の習得
JSONやYAMLのテンプレート記述に慣れる必要があるので、ある程度理解する必要がある。
●エラーメッセージが難解
テンプレートエラーがわかりづらい場合があるので、AWS CloudFormation Designerで視覚的に編集をおすすめ。
実際の活用例
・ウェブサービスの構築: EC2やRDSでバックエンドの構築を自動化。
・開発環境の構築自動化: プロジェクトごとにテスト環境をさくっと構築。
・災害復旧 (DR) プラン作成: 構成情報をコードで保存することで復旧が楽に。
まとめ
AWS CloudFormationを使えば、複雑なインフラ管理から解放され、シンプルかつ効率的な運用が実現します。一度テンプレートを作れば、あとはクリックひとつでビジネスのスピードを加速させ、イノベーションに集中できる世界が広がります。
・AWSリソースの管理・構築を効率化したい
・開発標準に基づいて、簡単にインフラ作成・更新をしたい。
そんなときは「AWS CloudFormation」を活用しましょう。
Comments