はじめに
AWS Solutions Architect Associate (SAA) の学習中に整理した AWS CloudFormation 関連の知識をまとめました。
CloudFormation は IaC(Infrastructure as Code)の基盤であり、Template / Stack / StackSet の違い、SG スニペットの読み解きなどが試験で問われます。
本記事は個人の学習ノートをベースにしています。誤りがあればコメントでご指摘いただけると助かります。
サービス概要
CloudFormation の概念
| 概念 | 説明 | クロスアカウント / リージョン |
|---|---|---|
| Template | リソース定義の JSON / YAML ファイル | ❌(定義のみ) |
| Stack | テンプレートからデプロイされたリソースの集合 | ❌(単一) |
| StackSet | 複数アカウント / リージョンにスタックをデプロイ | ✅ |
特徴
- Infrastructure as Code(IaC)
- ベストプラクティスをテンプレートにコード化
- バージョン管理可能、レビュー可能
- CloudFormation 自体は無料(作成されるリソースのみ課金)
CloudFormation SG スニペット(YAML 例)
SecurityGroupIngress: # インバウンドルール
- IpProtocol: tcp
FromPort: 80 # HTTP
ToPort: 80
CidrIp: 0.0.0.0/0 # 全IPから許可
- IpProtocol: tcp
FromPort: 22 # SSH
ToPort: 22
CidrIp: 192.168.1.1/32 # 1つのIPのみ
よくある引っかけ
-
0.0.0.0/0= 全 IP(「IP アドレス 0.0.0.0」ではない) -
SecurityGroupIngress= インバウンド(NACL ではない、アウトバウンドでもない) -
/32= 単一ホスト
試験で問われる設計パターン
ベストプラクティスを再利用可能なインフラテンプレートに → CloudFormation
シナリオ: インフラのベストプラクティスをテンプレート化して、チーム全体で再利用できるようにしたいです。
正解: AWS CloudFormation
- Trusted Advisor は推奨のみ(テンプレート作成不可)
- Lambda + メール通知はリアクティブ(予防にならない)
- IAM で作成を禁止するのは根本的な解決にならない
複数アカウント・リージョンに同じテンプレートをデプロイ → StackSets
シナリオ: Organizations 内の複数アカウント・複数リージョンに同じインフラ構成をデプロイしたいです。
正解: CloudFormation StackSets
- Template(定義)→ Stack(単一デプロイ)→ StackSet(マルチデプロイ)
- RAM はリソース共有(テンプレートデプロイではない)
CloudFormation SG スニペットの読み解き
シナリオ: 以下の CloudFormation スニペットが何を設定しているか、正しい記述を3つ選んでください。
正解:
- セキュリティグループのインバウンドルールを設定している
- 任意の IP アドレスから HTTP ポート(80)を許可している
- 1つの IP アドレスから SSH ポート(22)を許可している
-
0.0.0.0/0= 全 IP(「IP アドレス 0.0.0.0」ではない) -
/32= 単一ホスト
EBS io1 が高コスト → gp2 に変更(CloudFormation は無料)
シナリオ: コスト削減の選択肢に CloudFormation が含まれています。
ポイント: CloudFormation は無料サービスなので、コスト削減の対象にはなりません(ダミー選択肢)。
おわりに
CloudFormation は「Template → Stack → StackSet」の3層構造を理解しておけば基本的な問題に対応できます。SG スニペットの読み解き問題では 0.0.0.0/0(全 IP)と /32(単一ホスト)の意味を正確に把握しておくことが重要です。
間違いや補足があればぜひコメントで教えてください。