serverless-http 사용 시 Lambda Context 객체 사용하기

AWS Lambda를 사용할 때 Serverless framework을 사용하면 AWS Lambda를 손쉽게 관리 및 배포할 수 있고, DB와 같은 다른 AWS의 인프라도 Serverless framework를 통해 코드로써 관리할 수 있다.
(AWS에서 직접 관리하는 SAM도 있다.)

또한 serverless-http 패키지를 사용하면 손쉽게 express와도 integrate 할 수 있다.

1
2
3
4
5
6
const serverless = require('serverless-http');
const expresss = require('express');

const app = express();

module.exports.handler = serverless(app);

위 코드에서 module.exports.handler = serverless(app);를 통해 handler에 express 애플리케이션을 등록하는 것이다.

이때, 원래
https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/nodejs-prog-model-context.html

1
2
3
4
exports.handler = async (event, context) => {
// do something...
return 'Hello Lambda!'
}
1
2
3
4
5
6
7
8
9
10
11
12
const serverless = require('serverless-http');
const expresss = require('express');

const app = express();

module.exports.handler = serverless(app, {
request: function (req, event, context) {
// context.callbackWaitsForEmptyEventLoop = false;
req.event = event;
req.context = context;
}
});

참고
https://forum.serverless.com/t/solved-access-requestcontext-from-express-route-with-serverless-http-and-serverless-offline/5880

Share