はじめに
こんにちは。スタディング開発担当のドカ食いダイスキ!山本です。
KIYO ラーニングではサービスの提供に AWS を活用しています。
今回は VSCode の拡張機能「AWS Toolkit」と「AWS SAM」を利用した Lambda の開発方法をご紹介します。
対象読者
- AWS Lambda 開発をこれから始めたい方
- AWS SAM のローカル開発環境を整えたい方
- CLI は苦手、GUI ベースで操作したい方
背景と目的
スタディングでは基本的に EC2・ECS を利用してアプリケーションを提供しています。
ただし、一部の機能に関しては Lambda 等を利用して処理を行っています。
上記の通り Lambda の利用頻度は少ないことから、開発・デプロイは AWS コンソール上で都度行っていましたが、
- 関数の設定が複雑化
- 関連リソースの把握
- デプロイ作業の手間
- マイクロサービスの推進
などの理由から、簡単に構築・デプロイ管理をする方法を考えていました。
その際、AWS Builders Flash に掲載されている「サーバーレスのローカル開発環境を整備する」という連載を拝見し、VSCode の拡張機能「AWS Toolkit」と「AWS SAM」を利用した Lambda の開発に辿り着きました。
事前準備
- AWS アカウント(作成済)
- VSCode(インストール済)
- AWS CLI(認証設定済)
- Docker(ローカル実行用)
AWS Toolkit とは?
AWS Toolkit は、Visual Studio Code 用の公式拡張機能で、AWS リソースの操作・デバッグ・デプロイなどを支援してくれるツールです。
AWS Toolkit のポイント
項目 | 内容 |
---|---|
公式拡張機能 | Amazon 提供、信頼性が高い |
GUI で AWS リソース操作 | Lambda 関数の作成・実行・デプロイ |
ローカルデバッグ対応 | VSCode 内で Lambda のブレークポイント可 |
CloudWatch Logs 表示 | GUI からリアルタイムにログ確認可能 |
プロファイル&リージョン選択 | 簡単に環境切替ができる |
AWS Toolkit の主な機能
機能 | 説明 |
---|---|
Lambda 関数作成 | SAM テンプレートをベースにアプリケーション作成 |
ローカル実行 / デバッグ | Docker 経由で Lambda をローカル起動&デバッグ |
SAM ビルド & デプロイ | SAM CLI のコマンドを GUI から呼び出し |
AWS Explorer | VSCode 内で AWS リソースを一覧表示・操作 |
イベント生成 | Lambda 用のテストイベントを GUI で作成&保存 |
CloudWatch Logs 閲覧 | デプロイ後のログ確認を VSCode で完結可能 |
AWS Toolkit のインストール手順
- VSCode の拡張機能から「AWS Toolkit」を検索してインストール(外部サイト)
- AWS プロファイル or SSO で認証
- リージョン設定(例:東京リージョン → ap-northeast-1)
AWS SAM とは?
AWS SAM(Serverless Application Model)は、サーバーレスアプリケーションを簡単に定義・デプロイできるフレームワークです。
CloudFormation を拡張しており、YAML 形式で AWS リソースを簡潔に記述できます。
AWS SAM のポイント
- サーバーレスアプリケーションの定義を簡単に
- CloudFormation を拡張したテンプレート形式(YAML/JSON)で、Lambda 関数や API Gateway、DynamoDB などの AWS リソースを宣言的に記述できます
- 開発からデプロイまでを支援
- SAM CLI を使うことで、ローカル環境での関数実行や API のテスト、ビルド、パッケージング、クラウドへのデプロイを一元管理できます
- ローカルでのテストが可能
- Lambda 関数や API Gateway の動作をローカルで模擬的に起動できるため、開発効率が上がります
- CloudFormation との互換性
- SAM テンプレートは内部的に CloudFormation テンプレートに変換されるため、AWS の標準 IaC ツールとの親和性が高いです
AWS SAM の主な機能
機能 | 説明 |
---|---|
テンプレート定義 | Lambda 関数や API Gateway、DynamoDB などを記述 |
ローカル実行 | sam local invoke や sam local start-api でテスト |
ビルド・パッケージング | 依存関係の解決やコードのパッケージ化を自動化 |
デプロイ | sam deploy で AWS 環境へ一括デプロイ |
ログ参照 | sam logs で CloudWatch Logs を簡単に確認 |
AWS SAM CLI のインストール手順
▶︎ macOS (Homebrew)
▶︎ Windows (MSI インストーラー)
公式からダウンロード → インストール(外部サイト)
SAM アプリケーションの作成
AWS Toolkit – Explorer のメニューから
Create Lambda SAM Application
を実行すると、対話形式でアプリケーションを作成できます。
今回は以下の内容を選択します:
-
ランタイム:
Node.js 22.x
-
アーキテクチャ:
arm64
-
テンプレート:
AWS SAM Hello World
-
保存先: (任意のディレクトリ)
-
アプリケーション名: デフォルト(
lambda-nodejs22.x
)
作成後のディレクトリ構成
lambda-nodejs22.x/
├── events/
│ └── event.json ...Lambda関数のテスト用イベントデータが記載されています。ローカルで関数をテストする際に使います。 ※今回は紹介しません
├── hello-world/ ...サンプルのLambda関数が格納されているディレクトリです。
│ ├── tests/unit
│ │ └── test-handler.mjs ...Lambda関数のユニットテストコードです。 ※今回は紹介しません
│ ├── .npmignore
│ ├── app.mjs ...Lambda関数の本体(Node.jsのESモジュール形式)です。
│ └── package.json ...Node.js アプリケーションの依存関係やスクリプトが記載されています。 ※今回は紹介しません
├── .gitignore
├── README.md
├── README.TOOLKIT.md
├── samconfig.toml ...AWS SAM CLIの設定ファイルです。デプロイ時のパラメータやプロファイルなどが保存されます。
└── template.yaml ...AWS SAMのテンプレートファイルです。Lambda関数やAPI GatewayなどAWSリソースの定義が記述されています。
Lambda 関数の本体
lambda-nodejs22.x/hello-world/app.mjs
export const lambdaHandler = async (event, context) => {
const response = {
statusCode: 200,
body: JSON.stringify({
message: 'hello world',
}),
};
return response;
};
ローカル実行(VSCode)
※今回のテンプレートでは .vscode/launch.json
(デバッグ構成を管理するための設定ファイル)が自動作成されます。そのため、手動での設定は基本的に不要です。
-
Lambda のハンドラー関数に
[AWS: Add Debug Configuration | AWS: Edit Debug Configuration]
と表示されているか確認します- 表示されない場合は
AWS Toolkit
の設定からSamcli: Enable Code Lenses
を有効にしてください
- 表示されない場合は
-
AWS: Add Debug Configuration
を選択してください -
デバッグの構成を選択します
- 今回のテンプレートで作成した場合は、以下の構成が選択できます
-
lambda-nodejs22.x/template.yml:HelloWorldFunction
- Lambda 関数を直接呼び出す構成
-
lambda-nodejs22.x/template.yml:HelloWorldFunction(API Event: HelloWorld)
- API Gateway から Lambda 関数を呼び出す構成
-
- 今回は「Lambda 関数を直接呼び出す構成」を選択します
- 今回のテンプレートで作成した場合は、以下の構成が選択できます
-
.vscode/launch.json
ファイルが作成され、3 で選択した構成が反映されます -
実行とデバッグのメニューから、構成を選択して実行します
-
Lambda ランタイムの Docker イメージ上で関数が実行されます(Docker Desktop が起動していることを確認してください)
ブレークポイントが設定できるためステップ実行や変数の確認が可能となり、動作確認やバグ修正が簡単に行えます。
デプロイ
AWS Toolkit – Application Builder から今回作成したアプリケーションに対して
を実行すると、対話形式でアプリケーションをデプロイできます。
今回は以下の内容を選択します:
-
デプロイコマンド:
Deploy
…すべてのリソースを CloudFormation 経由でデプロイ ※Sync
は差分のみをデプロイ -
デプロイに必要なパラメータソース:
Specify required parameters and save as defaults
…必要なパラメータを指定してデフォルトとして保存する ⇒ 次回からUse default values from samconfig
(デフォルトパラメーター)として利用可能です -
リージョン: ap-northeast-1
-
CloudFormation スタック:
sample-stack
(新規作成) -
デプロイ時に一時的に使う S3 バケット:
Create a SAM CLI managed S3 bucket
(新規作成) …次回以降新規作成を選択した場合も、このタイミングで作成されたバケットが使い回されるようです
デプロイしたリソースを削除する方法
デプロイした SAM アプリケーションのリソースは、AWS CloudFormation スタックとしてまとめて管理されます。
スタックを削除することでリソースが一括削除されます。
-
AWS Toolkit – Explorer のメニューを開きます
-
[CloudFormation] → 対象のスタック(
sample-stack
)を右クリックします -
「Delete CloudFormation Stack」を選択します
-
確認ダイアログで「Delete」を選択します
※今回のテンプレートでは発生しませんが、デプロイしたリソースによっては手動削除が必要なケースもあります。
※CloudFormation でエラーになる場合は、削除保護や依存関係を確認してください。
まとめ
項目 | 内容 |
---|---|
開発効率 | Lambda 関数の作成〜テストが GUI で完結 |
初心者にもおすすめ | CLI が苦手でも AWS リソースと連携できる |
ローカル実行可能 | 動作確認やバグ修正が簡単 |
デプロイ簡単 | SAM テンプレートを基に AWS 環境へ反映 |
おわりに
今回ご紹介した内容を活用すれば、Lambda 関数の構築やデプロイ管理がとても簡単に行えるようになります。
本記事では基本的な部分にフォーカスしましたが、エイリアスやバージョン管理、S3 など他の AWS リソースとの連携も AWS SAM で柔軟に対応できます。
みなさんも「AWS Toolkit」と「AWS SAM」を利用した開発の第一歩を踏み出してみてください!
KIYOラーニング株式会社について
当社のビジョンは『世界一「学びやすく、分かりやすく、続けやすい」学習手段を提供する』ことです。革新的な教育サービスを作り成長させていく事で、オンライン教育分野でナンバーワンの存在となり、世界に展開していくことを目指しています。
プロダクト
- スタディング:「学びやすく・わかりやすく・続けやすい」オンライン資格対策講座
- スタディングキャリア:資格取得者の仕事探しやキャリア形成を支援する転職サービス
- AirCourse:受け放題の動画研修がついたeラーニングシステム(LMS)
KIYOラーニング株式会社では一緒に働く仲間を募集しています
Views: 0