Serverless Flamework で Lambda をデプロイする方法
Serverless Flamework で Lambda をデプロイする方法
Serverless Flamework にアカウント登録が済んでいることやローカルから AWS のリソースを操作できる認証情報を用意している前提で Serverless Flamework に Lambda をデプロイする方法を残す。
1. serverless コマンドのインストール
npm で serverless コマンドをインストールする。
npm i -g serverless
2. Serverless プロジェクトの作成
下記コマンドを実行してプロジェクトを初期化する。その際にインタラクションな Serverless プロジェクト初期化ツールが起動するので質問に答えて進めていく。
serverless
または以下のコマンドでも良い。
sls
今回のサンプルアプリのためにツールに対しては以下のように答えた。
✔ Select A Template: · AWS / Node.js / Express API
✔ Name Your Project: · sample-lambda-app
✔ Template Downloaded
✔ Create Or Select An Existing App: · Create A New App
✔ Name Your New App: · sample-lambda-app
✔ AWS Credentials Set-Up Method: · Skip & Set Later (AWS SSO, ENV Vars)
3. 試しに現状でデプロイしてみる
さっそく初期状態で Lambda をデプロイして問題なく疎通できるか確認しておく。
2025年6月2日現在では handler.js
の内容は以下の通りだ。
const serverless = require("serverless-http");
const express = require("express");
const app = express();
app.get("/", (req, res, next) => {
return res.status(200).json({
message: "Hello from root!",
});
});
app.get("/hello", (req, res, next) => {
return res.status(200).json({
message: "Hello from path!",
});
});
app.use((req, res, next) => {
return res.status(404).json({
error: "Not Found",
});
});
exports.handler = serverless(app);
デプロイする。
cd sample-lambda-app
sls --aws-profile <your profile name> deploy
出力結果は以下の通り。
Deploying "sample-lambda-app" to stage "dev" (us-east-1)
✔ Service deployed to stack sample-lambda-app-dev (57s)
endpoint: ANY - https://xxxxxxxxxx.execute-api.us-east-1.amazonaws.com
functions:
api: sample-lambda-app-dev-api (952 kB)
出力された endpoint
にアクセスすると以下のように出力されるはずだ。
{"message":"Hello from root!"}
/hello
の場合。
{"message":"Hello from path!"}
/hoge
(存在しないパス)の場合。
{"error":"Not Found"}
4. エコーさせるエンドポイントを足してみる
handler.js
に以下のコードを足して、クエリー文字列の message
キーの値をそのまま応答するエンドポイントを足してみる。
app.get("/echo", (req, res, next) => {
const query = req.query;
return res.status(200).json({
message: query.message,
});
});
再度デプロイする。
sls --aws-profile <your profile name> deploy
curl してみると、、
curl "https://xxxxxxxxx.execute-api.us-east-1.amazonaws.com/echo?message=hello"
{"message":"hello"}
返ってきた 🎉
5. お片付け
以下のコマンドを実行して今日作ったリソースを削除する。
sls --aws-profile <your profile name> remove
まとめ
Serverless Flamework で Lambda をデプロイする方法をまとめた。
ハッカソンでサーバーから呼び出されるBotをホストする程度のユースケースなら今回の内容で十分に答えられるであろう。
現実ではDBを必要としたりWebから直接呼び出したりする場合もあるだろうから、さらなる情報が必要とされるであろう。また、TypeScriptで型を明確化させたりテストコードの記述を可能にする環境を構築させて保守性をあげたいという話もあるだろうし、実行ログがどうであるとかCI/CDがどうであるとか話は尽きないがここでは割愛する。
(デプロイ先リージョンを変えるくらいは言及してもよかったかなと思いつつ時間が。。)
Serverless Flamework を使ってしゅっと Lambda を用意できるの最高。
Discussion