AWS SAM(Serverless Application Model)ガイド
AWS SAM(Serverless Application Model)は、サーバーレスアプリケーションを簡単に構築・デプロイ・管理するためのAWS公式フレームワークです。この記事では、SAMの概要から使い方、利点、CLIコマンドなどを詳しく解説します。
📌 SAMとは何か?
項目 | 内容 |
---|---|
名称 | AWS Serverless Application Model (SAM) |
提供元 | Amazon Web Services(AWS公式) |
目的 | サーバーレスアプリケーションの簡易構築と運用 |
基盤 | AWS CloudFormation(インフラ構成のIaC) |
特徴 | CloudFormationの簡略版テンプレート記法を使える / ローカル開発が容易 / デプロイが高速 |
SAMはCloudFormationの拡張であり、template.yaml
を使ってLambda、API Gateway、DynamoDBなどのリソースを宣言的に定義・管理します。
🧱 SAMのアーキテクチャと構成要素
SAMで定義可能な主要リソース:
-
AWS::Serverless::Function
:Lambda関数 -
AWS::Serverless::Api
:API Gateway -
AWS::Serverless::SimpleTable
:DynamoDB -
AWS::Serverless::LayerVersion
:Lambdaレイヤー
SAMテンプレートはYAML形式で記述され、CloudFormationに変換されてデプロイされます。
🧰 SAM CLI とは?
SAM CLIはSAMアプリケーションのローカルビルド・テスト・デプロイなどを簡単に行えるコマンドラインツールです。
主要なコマンド一覧
コマンド | 説明 |
---|---|
sam init |
プロジェクトの初期化(テンプレート生成) |
sam build |
Lambda関数などをビルド(依存のインストール含む) |
sam local invoke |
ローカルで関数をテスト(Docker使用) |
sam local start-api |
ローカルでAPI Gatewayを模擬起動(REST API) |
sam deploy --guided |
初回デプロイ(スタック名などを対話式で設定) |
sam logs |
CloudWatchログをCLIから取得 |
sam delete |
deploy削除 |
🐳 SAMとDockerの関係
SAM CLIは、Lambdaの実行環境をローカルで再現するためにDockerを利用します。これにより、本番に近い環境で関数をテストできます。
sam local invoke # ローカルで1回実行
sam local start-api # ローカルでHTTPサーバー起動
📂 SAM プロジェクト構成例
sam-app/
├── template.yaml # SAMテンプレート
├── hello_world/
│ ├── app.py # Lambda関数コード
│ └── requirements.txt # Python依存(pip)
├── events/ # テストイベント(任意)
└── .aws-sam/ # ビルド成果物(自動生成)
✨ SAMのメリット
- YAMLによる簡易テンプレートでサーバーレス開発が高速に
- CloudFormationベースなのでIaCのベストプラクティスに対応
- Dockerを使って本番に近い環境でローカルテスト可能
- CLIでビルド・デプロイ・ログ確認が一括でできる