其實我的需求是使用 AWS Lambda 部署 Line Bot 的 Webhook NodeJS 環境,不過這篇筆記為了簡化,把重點放在如何部署到 AWS Lambda,所以先改成最簡單的 NodeJS Express
什麼是 Serverless Framework
Serverless Framework 是一個 open source 工具,用於簡化開發、部署和管理 serverless 應用。
雖然在官網首頁上就寫著 Zero-Friction Serverless Apps on AWS Lambda,但其實和 AWS 官方並沒有關係,就是個第三方的工具。
測試記錄
Step 1 申請 AWS 帳號及安裝 AWS CLI
這個就不多說了,要測試 AWS Lambda 當然要先有 AWS 帳號,也請先安裝 AWS CLI
Step 2 安裝 Serverless Framework
使用 npm 安裝
npm i serverless -g
如果之前安裝過,先請先 update 到最新的版本
serverless update
建議在安裝後,直接執行 login
serverless login
選擇「Login/Register」
會在瀏覽器開一個網頁導到 https://app.serverless.com/ ,先把帳號註冊好
Step 3 建立專案
先建立空目錄,以下測試目錄名稱為 test-express-aws,然後進到新建的目錄
mkdir test-express-aws
cd test-express-aws
直接執行 serverless
serveless
有很多選項可以選,請依照想要建立的專案種類決定,這個測試範例選擇「Node.js / Express API」
輸入 project 和 app 名稱,如果之前有建過其他 app,可以直接選或者再重新建立一個新的 app
執行完後,會發現執行的目錄下多了一個剛才建的 project 名稱的目錄,底下有幾支由程式新增的檔案
學過 node js 應該就不陌生了,看一下 package.json 已經幫我們寫好 dependencies,有 express 和 serverless-http
{
"name": "test-project-0910",
"version": "1.0.0",
"description": "",
"dependencies": {
"express": "^4.19.2",
"serverless-http": "^3.2.0"
}
}
也自動生成了一支簡單的 express 程式 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);
直接在專案下執行 npm install 安裝 dependencies library,大致上就可以用了
npm install