Instiq
第4章 · デプロイ·v2.1.0·更新 2026/6/28·読了目安 約8分

変更要約: in-scopeサービス網羅(軸B): s1にCodeArtifact/CloudShell、s3にAmplifyの定義・役割・選択基準を追記。

4.2IaC:CloudFormation と SAM

この節の要点

CloudFormation による宣言的なインフラ定義(スタック・テンプレート)と、サーバーレス向けの簡潔記法 AWS SAM、再現性のあるデプロイの利点を理解します。

インフラを手作業で作らず、テンプレートとしてコード化するのが Infrastructure as Code(IaC) です。AWS では CloudFormation が中核で、サーバーレスには SAM が便利です。

4.2.1CloudFormation と SAM

CloudFormation(YAML/JSON の宣言的テンプレートでリソースのスタックをデプロイ・再現性/バージョン管理)と、AWS SAM(Lambda/API Gateway/DynamoDB 向けの簡潔記法で、CloudFormation に変換される)の役割の違いを対比した図。
CloudFormation と SAM
  • CloudFormation:YAML/JSON の宣言的テンプレートでリソース群(スタック)をまとめてデプロイ。
  • AWS SAM:Lambda/API Gateway/DynamoDB などサーバーレス向けの簡潔記法。内部で CloudFormation に変換される。
  • IaC により再現性・バージョン管理・レビューが可能になり、環境差異(ドリフト)を抑えられる。

CloudFormation テンプレートは複数のセクションで構成されます。Parameters で入力値(環境名など)を受け取り、Resources でリソースを宣言、Outputs でスタックの出力(エンドポイント等)を公開、Mappings/Conditions で環境差を吸収します。変更を適用する前に 変更セット(Change Set) で「何が作成/更新/削除されるか」を確認でき、事故を防げます。手作業の変更でテンプレートと実体がずれた状態が ドリフト で、ドリフト検出で発見できます。SAMAWS::Serverless::Function などの短い記法でサーバーレスを表現し、デプロイ時に通常の CloudFormation へ展開されます。SAM CLI を使えば sam local でローカル実行・sam deploy でデプロイができ、内部では成果物を S3 にアップロードしてからスタックを更新します。同種のツールに、汎用プログラミング言語でテンプレートを生成する CDK もあります。

項目CloudFormationSAM
対象あらゆる AWS リソースサーバーレス中心
記法詳細な YAML/JSON簡潔な短縮記法
実行スタックをデプロイCloudFormation に変換

テンプレートを使いこなす要素も押さえます。値を参照する 組み込み関数 には、論理 ID を参照する Ref、属性を取得する Fn::GetAtt、文字列に変数を埋め込む Fn::Sub、リストを連結する Fn::Join などがあります。リージョンやアカウント ID は 擬似パラメータAWS::Region 等)で得られます。大規模構成はテンプレートを分割する ネストスタック や、出力を別スタックで参照する クロススタック参照(Export/ImportValue) で整理します。重要リソースを誤って消さないために、DeletionPolicy(例:Retain)や スタックポリシーで保護します。デプロイ失敗時は既定で自動ロールバックされ、スタックは前の安定状態へ戻ります。SAM には共通設定をまとめる Globals や、よく使う権限を簡単に付与できる ポリシーテンプレートがあり、サーバーレスのテンプレートをさらに短く保てます。

シナリオ:Lambda+API Gateway+DynamoDB を一括デプロイ。 これらは SAM の短い記法でテンプレート化すると最小限の行数で書けます。本番反映前に 変更セットで差分(追加/削除されるリソース)を確認し、CI/CD パイプラインから sam deploy で再現性のあるデプロイを行います。手動変更によるドリフトは検出で監視します。

補足

Q. CloudFormation と SAM の使い分けは? 汎用は CloudFormation、サーバーレスを簡潔に書くなら SAM(CloudFormation に変換)。Q. 変更を安全に適用するには? 変更セットで差分を事前確認。Q. ドリフトとは? テンプレートと実体のずれ。検出で発見。

試験ポイント

「インフラを宣言的にコード化=CloudFormation(スタック)」「サーバーレスを簡潔に定義=SAM(→CloudFormation へ変換)」「適用前の差分確認=変更セット」「テンプレートとのずれ=ドリフト」 は DVA で頻出です。SAM CLI でローカルテストやデプロイができます。

4.2.2この節のまとめ

  • CloudFormation=宣言的テンプレートでスタックをデプロイ、適用前は変更セットで差分確認
  • SAM=サーバーレス向け簡潔記法(CloudFormation に変換)、ずれはドリフト検出

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. インフラを宣言的なテンプレートで定義し、リソースのスタックとしてデプロイする AWS のサービスはどれですか?

Q2. Lambda や API Gateway などのサーバーレスアプリを簡潔に定義でき、CloudFormation に変換されるのはどれですか?

Q3. IaC(テンプレート)でインフラを管理する利点として最も適切なものはどれですか?

理解度を確認第4章「デプロイ」の問題を解く

学習の記録を残しませんか

参考書はすべて無料で読めます。無料登録すると、問題集での演習・既読と進捗の記録・間違えた問題の復習・ハイライトが使えます。