跳至主要内容

如何使用 Serverless Framework 將 Express 部署到 AWS Lambda

· 4 分鐘閱讀
Eric Cheng

其實我的需求是使用 AWS Lambda 部署 Line Bot 的 Webhook NodeJS 環境,不過這篇筆記為了簡化,把重點放在如何部署到 AWS Lambda,所以先改成最簡單的 NodeJS Express

什麼是 Serverless Framework

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」

serverless login

會在瀏覽器開一個網頁導到 https://app.serverless.com/ ,先把帳號註冊好

Step 3 建立專案

先建立空目錄,以下測試目錄名稱為 test-express-aws,然後進到新建的目錄

mkdir test-express-aws
cd test-express-aws

直接執行 serverless

serveless

有很多選項可以選,請依照想要建立的專案種類決定,這個測試範例選擇「Node.js / Express API」

serverless project type

輸入 project 和 app 名稱,如果之前有建過其他 app,可以直接選或者再重新建立一個新的 app

serverless project name

執行完後,會發現執行的目錄下多了一個剛才建的 project 名稱的目錄,底下有幾支由程式新增的檔案

serverless file

學過 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

Step 4 部署到 AWS Lambda

執行

serverless deploy

成功後會顯示 endpoint 網址

serverless endpoint

直接用瀏覽器點選網址,可以看到 handler.js 寫的內容就在這邊,之後要修改內容,就直接改 handler.js 這支程式就可以 serverless endpoint 2

登入到 AWS Lambda,也可以看到原來在 local 的檔案,已經被上傳上來了 serverless aws lambda

可以看到自動連結到 API Gateway,不需要自己設定 serverless api

到 應用程式->監控 就可以看到這支 API 的使用狀況了 serverless 監控



版權聲明


這是 google 廣告