Contents
1️⃣ 前提条件とインストール手順
1‑1. VS Code と公式拡張機能の導入
| 手順 | 内容 |
|---|---|
| ① | https://code.visualstudio.com/ から OS に合わせて VS Code をダウンロードしインストール。 |
| ② | VS Code の「拡張機能」パネルで AWS Toolkit for Visual Studio Code を検索 → Install 。 |
| ③ | インストール後、左サイドバーに AWS アイコンが表示され、AWS Explorer が利用可能になる。 |
ポイント:Toolkit は AWS Explorer・デプロイ UI・ローカルデバッグ構成 を自動生成するため、別途スクリプトを書かずにサーバーレス開発が完結します。
1‑2. AWS CLI と SAM CLI のインストール
| OS | 推奨バージョン(2026‑04‑19 時点) | インストール例 |
|---|---|---|
| macOS (Homebrew) | aws-cli 2.15.0 公式リリースノート: https://github.com/aws/aws-cli/releases/tag/2.15.0 sam-cli 1.106.0 公式リリースノート: https://github.com/aws/aws-sam-cli/releases/tag/v1.106.0 |
brew install awscli && brew install aws-sam-cli |
| Windows (MSI) | 同上 | MSI ダウンロード → インストールchoco install aws-sam-cli(Chocolatey) |
| Linux (apt) | 同上 | sudo apt-get update && sudo apt-get install -y awscli sam-cli |
バージョン確認コマンド
|
1 2 3 |
aws --version # 例: aws-cli/2.15.0 Python/3.11.6 … sam --version # SAM CLI, version 1.106.0 |
注意:バージョンは頻繁に更新されます。常に公式リリースページで最新情報を確認してください。
Docker の必須要件
SAM CLI がローカルで関数を実行する際は、内部で Docker コンテナ を起動します。事前に Docker Desktop(Windows/macOS)または Docker Engine(Linux)をインストールし、docker run hello-world で正常に動作することを確認してください。
1‑3. ランタイム(Node.js / Python)の準備
| 言語 | 推奨バージョン(2026‑04) | インストール例 |
|---|---|---|
| Node.js | 20.x (LTS) サポート一覧: https://docs.aws.amazon.com/lambda/latest/dg/runtime-support.html#runtime-nodejs |
macOS/Linux: curl -fsSL https://nodejs.org/dist/v20.x/node-v20.x-linux-x64.tar.xz \| tar -xJ -C /usr/local --strip-components=1Windows (PowerShell): winget install OpenJS.NodeJS --version 20.x |
| Python | 3.11 サポート一覧: https://docs.aws.amazon.com/lambda/latest/dg/runtime-support.html#runtime-python |
macOS/Linux: brew install python@3.11 && python3.11 -m pip install --upgrade pipWindows: Microsoft Store からインストール |
ポイント:ランタイムは AWS の公式ドキュメントで随時更新されます。利用前に必ず最新のサポート状況を確認してください。
2️⃣ AWS Toolkit for VS Code のセットアップとプロジェクト作成
2‑1. 認証設定(SSO 推奨)
- コマンドパレット
Ctrl+Shift+P→ AWS: Connect to AWS を選択。 - 「SSO」オプションを選び、ブラウザで組織の SSO ポータルにサインイン。
- 認証情報が
$HOME/.aws/configに自動保存されます(例:sso_start_url,sso_region,sso_account_id,sso_role_name)。
参考: https://docs.aws.amazon.com/ja_jp/toolkit-for-vscode/latest/userguide/remote-lambda.html
2‑2. リージョン・ロールの選択
- AWS Explorer のプロファイル右クリック →
Change Region→ 必要なリージョン(例:ap-northeast-1)を指定。 - ロールが必要な場合は
Switch Role→ 事前に作成した LambdaExecutionRole を選択。
2‑3. SAM アプリケーション雛形の生成
| 手順 | 内容 |
|---|---|
| ① | コマンドパレット → AWS: Create new SAM Application。 |
| ② | 「Runtime」画面で Node.js 20.x または Python 3.11 を選択。 |
| ③ | テンプレートは Hello World Example(最小構成)を選び、プロジェクト名と保存先を入力。 |
生成されるディレクトリ例:
|
1 2 3 4 5 6 |
my-sam-app/ ├─ src/ │ └─ app.js (Node) / app.py (Python) ├─ template.yaml └─ README.md |
まとめ:Toolkit が内部で
sam initを呼び出すため、CLI の知識がなくても数クリックで SAM プロジェクトが完成します。
3️⃣ ローカル実行・デバッグ
3‑1. launch.json の自動生成と最小カスタマイズ
Toolkit が launch.json を自動作成します。基本はそのままで動作し、必要に応じて以下だけ変更すれば OKです。
| 項目 | 目的 |
|---|---|
envFile |
.env に格納した環境変数をコンテナへ注入 |
program / handler |
ハンドラのパスがテンプレートと一致しているか確認 |
Node.js 用例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "attach", "name": "Attach to SAM Local", "port": 5858, "address": "localhost", "localRoot": "${workspaceFolder}/src", "remoteRoot": "/var/task" } ] } |
3‑2. ブレークポイントでステップ実行
src/app.js(またはapp.py)の任意行をクリックして赤丸ブレークポイントを設定。- デバッグパネルから Attach to SAM Local を選択 →
F5キーで開始。 - VS Code が自動的に
sam local invokeを実行し、コンテナ内の Lambda がブレークポイントで停止します。
3‑3. ローカルテストコマンド
| コマンド | 説明 |
|---|---|
sam local invoke "HelloWorldFunction" -e events/event.json |
JSON イベントを渡して単体関数を実行。 |
sam local start-api --port 3000 |
API Gateway をエミュレートし、ローカルで HTTP リクエストが受けられるようにする。 |
Docker 必要:上記コマンドはすべて Docker コンテナ内で実行されます。Docker が起動していないとエラーになるので事前確認を。
4️⃣ デプロイ手順と検証
4‑1. Toolkit の UI デプロイウィザード
- AWS Explorer で対象プロジェクト右クリック → Deploy Serverless Application。
- リージョンは自動選択、必要に応じて変更。
- スタック名(例:
my-sam-app-prod)を入力。 - S3 バケットは既存か「Create new bucket」を選択。バケット名はグローバルで一意であること、リージョンがデプロイ先と同じであることに注意(例:
sam-deploy-2026-123456789012)。 - 「Auto create IAM roles」や「Change set preview」を有効化し、最小権限ロールを自動生成。
ポイント:デプロイ時に作成される CloudFormation テンプレートは
template.yamlを元にしています。S3 バケットが存在しない場合は UI が自動で作成しますが、バケット名の衝突やリージョン不一致はデプロイ失敗の原因になるので事前に確認してください。
4‑2. CLI 版 sam deploy --guided
|
1 2 3 |
sam build # ビルド sam deploy --guided # 初回だけ対話形式で設定入力 → samconfig.toml に保存 |
対話プロンプト例:
|
1 2 3 4 5 6 |
Stack Name [my-sam-app-prod]: AWS Region [ap-northeast-1]: Confirm changeset before deployment [y/N]: y Allow SAM CLI IAM role creation [Y/n]: Y Save arguments to configuration file [Y/n]: Y |
保存後は sam deploy だけで同一設定が再利用できます。
4‑3. デプロイ後の検証
| 確認項目 | 方法 |
|---|---|
| 関数設定・ロール | Lambda コンソール → 対象関数 → Configuration > Permissions |
| 実行テスト | Lambda コンソールの Test タブでサンプルイベントを送信 |
| ログ確認 | CloudWatch コンソール → ロググループ /aws/lambda/<function-name> の最新ストリームを閲覧 |
ベストプラクティス:デプロイ直後は必ずコンソールと CloudWatch Logs でエラーメッセージが無いか確認し、問題があればローカルデバッグに戻ります。
5️⃣ ベストプラクティス & 簡易 CI/CD
5‑1. インクリメンタルデプロイ
- コードだけの変更 → Toolkit の「Deploy changes?」ダイアログまたは
sam deploy(差分のみ)で即時反映。 - テンプレートやリソース構成の変更 → 事前に Change Set Preview を確認し、影響範囲を把握してからデプロイ。
5‑2. 機密情報の管理
| サービス | 用途 |
|---|---|
| AWS Systems Manager Parameter Store (SecureString) | 環境変数として Lambda に注入。例: {{resolve:ssm-secure:/myapp/prod/db_password:1}} |
| AWS Secrets Manager | 複数キーやローテーションが必要なシークレットに最適。例: {{resolve:secretsmanager:mySecret:SecretString:password}} |
template.yaml での参照例
|
1 2 3 4 5 6 7 8 9 10 |
Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: Handler: src/app.lambda_handler Runtime: python3.11 Environment: Variables: DB_PASSWORD: {{resolve:ssm-secure:/myapp/prod/db_password:1}} |
5‑3. GitHub Actions による自動ビルド・デプロイ(サンプル)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
name: Deploy SAM Application on: push: branches: [ main ] jobs: build-and-deploy: runs-on: ubuntu-latest permissions: id-token: write # OIDC 用 steps: - name: Checkout source uses: actions/checkout@v4 - name: Set up Node.js (20.x) uses: actions/setup-node@v3 with: node-version: '20' - name: Install AWS CLI & SAM CLI run: | curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip && sudo ./aws/install pip install --upgrade aws-sam-cli - name: Configure AWS credentials (OIDC) uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/GitHubActionsSAMDeployRole aws-region: ap-northeast-1 - name: Build SAM application run: sam build - name: Deploy SAM stack env: S3_BUCKET: ${{ secrets.SAM_DEPLOY_BUCKET }} run: | sam deploy \ --stack-name my-sam-app-prod \ --s3-bucket $S3_BUCKET \ --no-confirm-changeset \ --no-fail-on-empty-changeset |
- OIDC により長期的なアクセスキーを保存せず、GitHub から一時的に IAM ロールを取得。
--no-confirm-changesetは自動デプロイ向けオプションですが、本番環境ではステージングでの事前テストを推奨。
6️⃣ まとめと次のステップ
| フェーズ | 主な作業 |
|---|---|
| 準備 | VS Code・AWS Toolkit・AWS CLI (2.15.0)・SAM CLI (1.106.0)・Docker のインストール、Node.js 20 / Python 3.11 のセットアップ |
| プロジェクト作成 | Toolkit → Create new SAM Application で雛形生成、launch.json が自動作成されローカルデバッグが即開始可能 |
| ローカルテスト | sam local invoke / sam local start-api + ブレークポイントで詳細検証 |
| デプロイ | UI ウィザードまたは sam deploy --guided でスタック作成、S3 バケット名の一意性とリージョンを確認 |
| 検証 | Lambda コンソール・CloudWatch Logs で実行結果を必ずチェック |
| 運用 | インクリメンタルデプロイ、機密情報は Parameter Store/Secrets Manager に保管、GitHub Actions で CI/CD を自動化 |
次にやること
1. 本記事通りに環境構築し、sam local start-apiでローカル API が正しく応答するか確認。
2. デプロイが成功したら、AWS 無料利用枠(Free Tier)を有効化し、本番トラフィックのシミュレーションを行う。
参考リンク一覧
- AWS CLI リリースノート: https://github.com/aws/aws-cli/releases
- SAM CLI リリースノート: https://github.com/aws/aws-sam-cli/releases
- Lambda ランタイムサポート表: https://docs.aws.amazon.com/lambda/latest/dg/runtime-support.html
- AWS Toolkit for VS Code ドキュメント: https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html
これで、VS Code + AWS Toolkit を活用したサーバーレス開発のフローが網羅的に理解できるはずです。ぜひ実際に手を動かして体感してください!