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

