AWS SAM(Serverless Application Model)とは、AWS が提供するサーバーレスアプリケーション構築のためのフレームワークです。Lambda や API Gateway、DynamoDB などのサーバーレスサービスを簡単に定義・構築・デプロイ・管理できるようにするためのツールセットです。
✅ ざっくり一言でいうと
**「サーバーレスアプリを簡単に書いて、簡単にデプロイできる便利な仕組み」**です。
📦 AWS SAM の構成要素
要素 |
説明 |
SAM テンプレート(YAML) |
CloudFormation の拡張。Lambda関数やAPI Gatewayなどを簡潔に定義可能。 |
sam CLI |
開発・ビルド・ローカル実行・デプロイなどを行うコマンドラインツール。 |
SAM Runtime |
ローカル実行のときにLambdaと同じような実行環境を提供する仕組み。 |
📁 典型的なSAMプロジェクト構成
my-app/
├── template.yaml # SAMテンプレート(CloudFormationの拡張)
├── hello_world/
│ ├── app.py # Lambda関数のコード(例:Python)
│ └── requirements.txt # 依存パッケージ
└── events/ # テストイベントJSON
🛠️ よく使う sam
CLI コマンド
コマンド |
説明 |
sam init |
プロジェクトの初期化(テンプレート作成) |
sam build |
Lambda関数などのビルド(依存解決など) |
sam local invoke |
ローカルでLambda関数を実行 |
sam local start-api |
ローカルでAPI Gatewayのように動かす |
sam deploy --guided |
対話形式でデプロイ(初回向け) |
sam validate |
テンプレート構文チェック |
💡 AWS SAM のメリット
- ✅ YAML でシンプルにインフラを記述
- ✅ Lambda/APIGW/DynamoDB/SQS などを一括管理できる
- ✅ ローカル実行&テストが可能
- ✅ CI/CD との相性が良い(CodePipeline等と連携可能)
- ✅ CloudFormation ベースなので他のリソースとも統合しやすい
🤔 AWS CloudFormationとの違いは?
項目 |
CloudFormation |
AWS SAM |
記述量 |
多い(冗長) |
少ない(シンプル) |
ローカル実行 |
できない |
可能 |
Lambda用の拡張 |
なし |
あり(関数・APIを簡単に記述可能) |
🧠 まとめ:AWS SAMはこんな人におすすめ!
- サーバーレスアーキテクチャ(Lambda, API Gateway など)を使いたい
- シンプルにインフラをコードで管理したい(IaC)
- ローカルでデバッグや動作確認をしたい
- 小~中規模のLambdaベースのアプリを効率的に構築したい