CLF / ドメイン3 クラウドテクノロジーとサービス
重要な内容
AWS CloudFormation
は、AWS リソースの構成をテンプレートというテキストファイルに書いておき、その内容どおりに環境を自動構築するサービスです。 このように、インフラをコードで管理する考え方を (Infrastructure as Code) と呼びます。
CLF では、IaC のメリット(ヒューマンエラーの削減や環境の再現性)、テンプレートとスタックの関係、料金の考え方、 との違いを判断できることが重要です。
Point
- IaC = Infrastructure as Code(コードとしてのインフラ) の略です。
- サーバーやネットワークなどのインフラ構成を、手作業ではなくコード(テキストファイル)で定義して自動構築する考え方です。
- CloudFormation は「AWS 公式の IaC サービス」と覚えます。
- 和訳
- Infrastructure: 基盤、インフラ
- Weblio英和辞書「infrastructure」
概要
AWS でシステムを作るときは、 インスタンス、データベース、ネットワーク設定など、多くのリソースを組み合わせます。 これらをから1つずつ手作業で作ると、時間がかかるうえに、設定ミスや作業漏れが起きやすくなります。
では、必要なリソースとその設定をテンプレートに記述し、そのテンプレートから「スタック」という単位で環境を一括作成します。 同じテンプレートを使えば、開発環境・本番環境や別のに、同じ構成の環境を何度でも作れます。
代表的な使い道は、環境の複製(開発・検証・本番)、複数リージョンへの展開、災害対策用環境の迅速な再構築です。
試験では、「手作業をなくして構築を自動化・標準化したい」という要件から CloudFormation を選べるか、そしてアプリのデプロイを簡単にする と区別できるかを判断します。
主要技術
①IaCと手動構築との対比 ⚠️ 頻出
を使う最大の理由は、手作業による構築の弱点を解消できることです。
| 観点 | 手動構築(コンソール操作) | CloudFormation() | 判断ポイント |
|---|---|---|---|
| 作業ミス | 設定ミスや手順漏れが起きやすいです。 | テンプレートどおりに自動構築するため、ヒューマンエラーを減らせます。 | 「人的ミスを減らす」は IaC です。 |
| 再現性 | 同じ環境をもう一度正確に作るのが難しいです。 | 同じテンプレートから何度でも同じ環境を作れます。 | 「同一構成を繰り返し構築」は IaC です。 |
| 構築時間 | リソースが多いほど時間がかかります。 | 一括で自動作成されるため短時間で構築できます。 | 「迅速な」は IaC です。 |
| 変更管理 | 誰がいつ何を変えたか追いにくいです。 | テンプレートはテキストなので、バージョン管理システムで変更履歴を管理できます。 | 「変更の追跡・レビュー」は IaC です。 |
⚠️ 頻出: 「手作業での環境構築によるミスをなくしたい」「インフラをコードとして管理したい」というキーワードは、CloudFormation(IaC)が答えになります。
Point
- Provisioning(プロビジョニング) は、リソースを「準備して使える状態にする」ことです。
- CloudFormation は、テンプレートを読み取って AWS リソースを自動的にプロビジョニングします。
- 和訳
- Provision: 供給、準備
- Weblio英和辞書「provision」
②テンプレートとスタック ⚠️ 頻出
テンプレートは、作成したいリソースとその設定を または 形式で記述したテキストファイルです。 テンプレートを に渡すと、記述されたリソース一式が「スタック」として作成されます。
| 用語 | 役割 | 判断ポイント |
|---|---|---|
| テンプレート | リソース構成の設計図です。 | JSON または YAML で記述するテキストファイルです。 |
| スタック | テンプレートから作られたリソースの集まりです。 | 関連リソースを1つの単位として作成・更新・削除できます。 |
| 変更セット | スタック更新前に変更内容を確認する仕組みです。 | 「更新の影響を事前に確認」で選びます。 |
スタックを削除すると、そのスタックに含まれるリソースもまとめて削除されます。 検証用の環境を使い終わったら丸ごと片付ける、といった使い方ができ、消し忘れによる無駄なコストも防げます。
⚠️ 頻出: 「テンプレート(JSON/YAML)」「スタック」という単語が出たら、CloudFormation を思い浮かべます。
Point
- Stack(スタック) は「積み重ね」という意味で、テンプレートから作られたリソースの束を指します。
- Change Set(変更セット) は、スタック更新前に「何がどう変わるか」の一覧を確認できる機能です。
- 和訳
- Stack: 積み重ね、山
- Weblio英和辞書「stack」
③環境の再現・複数リージョン展開・構成ドリフト
テンプレートは再利用できるため、1つのテンプレートから複数の環境を同じ構成で作成できます。
- 複数のやアカウントへまとめて展開したい場合は、 StackSets を使うと、1回の操作で複数アカウント・複数リージョンにスタックを作成できます。
- スタック作成後に、コンソールなどから手動でリソースが変更されると、テンプレートの定義と実際の状態にずれが生じます。このずれを構成ドリフトと呼び、ドリフト検出機能で見つけられます。
Point
- Drift(ドリフト) は「漂流、ずれ」という意味です。
- テンプレート(あるべき状態)から実際のリソースが「流されてずれていく」イメージで覚えます。
- 「CloudFormation の管理外で行われた手動変更を検出する」= ドリフト検出です。
- 和訳
- Drift: 漂流、ずれ
- Weblio英和辞書「drift」
④料金の考え方
自体の利用には追加料金がかかりません。 支払うのは、テンプレートから作成された インスタンスや データベースなど、実際の AWS リソースの利用料金だけです。
| 項目 | 課金の扱い | 判断ポイント |
|---|---|---|
| CloudFormation の利用 | 追加料金なしです。 | サービス自体は無料で使えます。 |
| 作成されたリソース | 通常どおり課金されます。 | EC2 や RDS などのリソース料金は発生します。 |
⚠️ 頻出: 「CloudFormation は無料か」という趣旨の問題では、サービス自体は追加料金なし、ただし作成したリソースには通常の料金が発生する、と判断します。
⑤Elastic Beanstalkとの違い ⚠️ 頻出
は、Web アプリケーションのコードをアップロードするだけで、 インスタンスの用意、ロードバランシング、、ヘルスなどの実行基盤を自動的に構築・管理してくれるサービスです。 どちらも環境を自動構築しますが、目的と自由度が異なります。
| 観点 | AWS Elastic Beanstalk | 判断ポイント | |
|---|---|---|---|
| 目的 | インフラ全体をコードで定義・管理します()。 | アプリケーションのデプロイと実行基盤の管理を簡単にします。 | 「インフラの自動化」か「アプリの簡単デプロイ」かで分けます。 |
| 利用者が用意するもの | テンプレート(/) | アプリケーションのコード | テンプレートを書くのが CloudFormation です。 |
| 対象範囲 | ほぼすべての AWS リソースを自由に構成できます。 | Web アプリ実行に必要な定番構成が対象です。 | 細かい構成の自由度が必要なら CloudFormation です。 |
| 追加料金 | なし(作成リソース分のみ) | なし(利用リソース分のみ) | どちらもサービス自体は追加料金なしです。 |
⚠️ 頻出: 「開発者がコードをアップロードするだけでデプロイしたい」は Elastic Beanstalk、「インフラ構成をテンプレートで定義して自動構築したい」は CloudFormation です。
Point
- Elastic Beanstalk(エラスティック・ビーンストーク) の Beanstalk は、童話「ジャックと豆の木」の豆の木です。
- コードを植えるだけで実行環境が自動で育つイメージで覚えます。
- なお、Elastic Beanstalk は内部で CloudFormation を利用して環境を構築しています。
- 和訳
- Beanstalk: 豆の木、豆の茎
- Weblio英和辞書「beanstalk」
⑥AWS CDK(参考)
(Cloud Development Kit)は、TypeScript や Python などの一般的なプログラミング言語でインフラを定義できる開発フレームワークです。 書いたコードから のテンプレートが生成され、実際のデプロイは CloudFormation の仕組みで行われます。
CLF では、「使い慣れたプログラミング言語でインフラを定義したい」というキーワードが出たら AWS CDK を選ぶ、という程度で十分です。
Point
- CDK = Cloud Development Kit(クラウド開発キット) の略です。
- CDK は「プログラミング言語 → CloudFormation テンプレート」への変換役と覚えます。
- テンプレートを直接書くのが CloudFormation、プログラミング言語で書くのが CDK です。
試験対策
CLF の問題では、まず「何を自動化したいのか」を確認します。 インフラ構成そのものの自動化・標準化なら 、アプリケーションのデプロイの簡素化なら と整理すると選びやすくなります。
| 問題文のキーワード | 優先して考える機能・サービス | 理由 |
|---|---|---|
| インフラをコードとして管理() | AWS CloudFormation | AWS の代表的な IaC サービスです。 |
| テンプレート(/)で環境を構築 | AWS CloudFormation | テンプレートとスタックが中心概念です。 |
| 手作業によるミス(ヒューマンエラー)を削減 | AWS CloudFormation | 自動構築により設定ミスや手順漏れを防げます。 |
| 同じ環境を複数に再現 | AWS CloudFormation(+ StackSets) | テンプレートの再利用で同一構成を展開できます。 |
| 複数アカウントへ一括デプロイ | CloudFormation StackSets | 1回の操作で複数アカウント・リージョンに展開できます。 |
| 手動変更によるテンプレートとのずれを検出 | ドリフト検出 | 管理外の変更(構成ドリフト)を発見できます。 |
| コードをアップロードするだけでデプロイ | AWS Elastic Beanstalk | 実行基盤の構築・管理を自動化するサービスです。 |
| 使い慣れたプログラミング言語でインフラを定義 | コードから CloudFormation テンプレートを生成します。 |
よくある誤答パターンは次のとおりです。
- CloudFormation と Elastic Beanstalk の混同です。テンプレートでインフラを定義するのが CloudFormation、アプリのコードを渡して実行基盤を任せるのが Elastic Beanstalk です。
- 「CloudFormation の利用自体に料金がかかる」と考えることです。サービス自体は追加料金なしで、課金されるのは作成されたリソース分だけです。
- IaC の問題で や を選ぶことです。環境を「構築する」のが CloudFormation、リソース構成の変更を「記録・評価する」のが AWS Config、 操作の履歴を「記録する」のが CloudTrail です。
参考文献
- What is CloudFormation? - AWS CloudFormation
- How CloudFormation works - AWS CloudFormation
- Managing stacks across accounts and Regions with StackSets - AWS CloudFormation
- Detect drift on an entire CloudFormation stack - AWS CloudFormation
- AWS CloudFormation Pricing
- What is AWS Elastic Beanstalk? - AWS Elastic Beanstalk
- What is the AWS CDK? - AWS Cloud Development Kit
- AWS Certified Cloud Practitioner (CLF-C02) Exam Guide