皆さん、こんにちは! おすすめの牛は短角牛、ITエンジニアのSkyfox(なかやま)です!
この記事を読んで、AWS CloudFormationを使ってくださると嬉しいです!
この記事について
対象者
- 手作業でAWS環境構築するのに疲れた方
- CloudFormationに興味がある方
- AWSリソースをマネージドコンソールで作成したことがある方
本記事のゴール
- CloudFormationの概要がわかること
- CloudFormationを使用してみようかという気持ちになること
背景
AWS環境をマネージドコンソールで作成したことがある皆さん、こんなことを思ったことはありませんか?
今回の記事では、このようなお悩みを解決します。
CloudFormationの概要
AWS CloudFormationとは
AWS CloudFormationは、AWSのインフラ構成をコードで作成・管理してくれるサービスです。
いわば、あなたの作業チームの
「 インフラ構築・管理をしてくれる、 もう1人のメンバー 」
です!
メリット・デメリット
メリット
-
インフラ構成をコード化できる
CloudFormationを使用すると、AWSリソースの設定をコードとして管理できます。
これにより、リソースの構成が管理しやすくなり、誰でも同じ環境を構築することができるようになります。
-
作業効率がUPする
インフラ構成をコード化してしまえば、複数のAWSリソースを一度に自動で作成、更新、削除することができます。
手動の設定作業が不要になるため、作業効率が大幅に上がります。
-
環境・用途ごとに柔軟に対応できる
AWSリソースを作成するとき、開発環境や本番環境などに合わせて、リソースの設定をすることができます。
-
変更履歴を管理できる
リソースの更新や変更履歴がCloudFormationで管理できるため、誰が何を変更したかがわかるようになっています。
そのため、問題が起きたときに原因を特定しやすくなります。
デメリット
-
エラーメッセージがわかりにくい
コード側でエラーが発生したとき、エラーメッセージがわかりにくく、原因を特定することが難しいことがあります。
-
コード化には慣れが必要
コードを書くルールがあるため、CloudFormationを使い始めた方だと、はじめはコード作成に慣れが必要です。
(最近は身近なAIもあるので、簡単な構成であれば、コードを書かずにできるやも)
-
複雑なコードにすると読みづらい
コード化するときに内容が複雑になると、読みづらく、保守が難しくなることがあります。
-
デプロイに時間がかかることがある
多くのリソースを管理している場合、コードの変更やリソースの削除に時間がかかることがあります。
CloudFormationを使用するための前知識
前章までで、CloudFormationの概要や良さは、わかったかと思います。
それでは、実際にみなさんが使えるようになるため、ここからは必要な知識をインプットしていきましょう!
主なキーワード
-
テンプレート
- リソースの設定や構成など、インフラ構成に必要な情報を定義するファイル
- YAML形式 or JSON形式で書きます
- ※前章まで「コード化」と言っていたのは、これのことです
-
スタック
- テンプレートをもと作成されたAWSリソースのコレクション(集合体)
- スタック単位でリソースの作成・更新・削除をおこない、一括管理ができます
- ※テンプレートをもとに作成されたリソースたちを、まとめて管理する単位としても呼ばれています
-
変更セット
- スタックを更新する前に、その内容をプレビューする機能
- どのリソースが追加・更新・削除されるかを一目で確認できます
リソース作成までの流れ
流れはたったの3ステップです。
- テンプレートの作成
- デプロイ(スタックの作成)
※AWS マネージドコンソール or CLI - スタックをもとに設定されたAWSリソースが自動的に生成
それでは、詳しくみていきましょう!
テンプレートの書き方
テンプレートを作るときは、作りたいシステム構成を思い描いてから作りましょう!
今回はyaml形式で書いていきます。
テンプレートは、以下の7つのセクションで構成されています。
重要なのは、赤枠がついた5つです。
- Parameters
- ユーザーがスタック作成時に入力する値を設定するセクション
- スタックを作成・更新する度に設定値を変えたい場合に便利です
- Mappings
- 3階層「Key, Key, Value」で、マップ定数を定義するセクション
- 開発環境・本番環境などの環境によって、異なる値を設定したい場合に便利です
- 「Parameters」や「Conditions」セクションと組み合わせて使われます
- Conditions
- リソースや設定値の作成条件を定義するセクション
- IF分岐する場合などに使います
- ▶︎ ある環境ではリソースを作成し、他の環境では作成しないといった柔軟な設定ができます
- Resources
- 実際に作成・管理するAWSリソースを記入するセクション
- メインとなるセクションで、テンプレートには必須で書きます
- Outputs
- スタック外(別のテンプレート)にリソース情報をアウトプットするセクション
- 例えば、Aスタックで作成したS3バケットを、Bスタックで使いたいときに便利です
スタック(AWSリソース)のデプロイ方法
今回は、一例として事前に作成したテンプレートを使用し、AWSマネージドコンソールでデプロイする方法を簡単に書きます。
ステップ1
CloudFormationのコンソールを開き、「スタックの作成」の「新しいリソースを使用(標準)」(画像の赤枠)をクリックします。
ステップ2
「スタックの作成」ステップでは、今回すでに作成してあるテンプレートを使いたいので、画像のように設定していきます。
テンプレートの設定は、「テンプレートの指定」項目の「ファイルの選択」ボタン(画像の赤枠)をクリックし、指定します。
ステップ3
「スタックの詳細を指定」ステップでは、以下の設定をします。
- 設定
- スタック名を提供
- スタック名: ※適したスタック名をつけてください
- パラメータ
- ※ テンプレートの内容により変化します
- テンプレートの「Parameters」セクションで設定した項目が表示されます
- ここで今回作成したいスタックの設定値を選択していきます
- ※ テンプレートの内容により変化します
- スタック名を提供
ステップ4
「スタックオプションの設定」ステップでは、適宜設定します。
ステップ5
「確認して作成」ステップで、設定した項目を確認し、大丈夫でしたら、「送信」ボタンをクリックします。
ステップ6
画像のように、CloudFormationと作成したリソースが以下のように確認できましたら、完成です
Appendix
変更セットについて
今回は詳細には書きませんが、スタック更新時に以下の赤枠のように、変更があるリソースを「変更セットのプレビュー」項目で表示してくれます。
これで変更した内容が合っているか確認してから、スタックを更新することができます。
(「間違って必要なリソースを消してしまった」ということも防げます。)
さいごに
AWS CloudFormationのイメージは、つきましたでしょうか?
この記事を導入としてもらい、
AWSリソースを一括作成・管理する
「 インフラ構築・管理をしてくれる、 もう1人のメンバー 」
として、AWS CloudFormationで快適なインフラ構築を実施してもらえればと思います。
使用イラスト
- イラスト「Loose Drawing」