node.js 설치

curl -o- <https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh> | bash
source ./bashrc
nvm install 20.12.1
npm install express -g # global 옵션으로 express 설치

express app 생성

express <project_name>
cd <project_name>
npm install

routes/index.js 수정

var express = require("express");
var payload = require("../utils/payload-util");
var router = express.Router();

/* GET home page. */
router.get("/", function (req, res, next) {
	res.json(payload.success("home", {}));
});

router.get("/api/v1/status", function (req, res, next) {
	res.json(payload.success("fine", {}));
});

module.exports = router;

utils/payload-util.js 생성

module.exports = {
  success: function (message, obj) {
    return {
      timestamp: Date.now(),
      data: {
        message: message,
        detail: obj
      }
    };
  },
  error: function (status, code, message) {
    return {
      timestamp: Date.now(),
      error: {
        status: status,
        code: code,
        message: message
      }
    };
  }
};

Error handler 추가

app.js 상단에 utils/payload-util.js 로드 하고 핸들러 구현

var createError = require("http-errors");
var express = require("express");
var path = require("path");
var cookieParser = require("cookie-parser");
var logger = require("morgan");
var payload = require("./utils/payload-util"); // 해당 라인 추가

var indexRouter = require("./routes/index");

var app = express();

app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));

app.use("/", indexRouter);

// 이하 코드 추가
// error handler
app.use(function (err, req, res, next) {
	// set locals, only providing error in development
	res.locals.message = err.message;
	res.locals.error = req.app.get("env") === "development" ? err : {};

	// render the error page
	const status = err.status || 500;
	const code = err.code || -1;
	res.status(status);
	res.json(payload.error(status, code, err.message));
});
// 여기까지

애플리케이션 패키징

Serverless 프레임워크 설치

npm install -g serverless

Serverless 서비스 생성

serverless create --template aws-nodejs

Express 애플리케이션 수정하기

미들웨어 설치

npm install serverless-http

handler.js 수정