【发布时间】:2021-03-20 16:14:39
【问题描述】:
我在 AWS Lambda 上托管 Nestjs 应用程序(使用无服务器框架)。 请注意,实施在 AWS API Gateway 之后。
问题:如何访问我的 Nest controller 中的 event 参数?
这就是我引导 NestJS 服务器的方式:
import { APIGatewayProxyHandler } from 'aws-lambda';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { Server } from 'http';
import { ExpressAdapter } from '@nestjs/platform-express';
import * as awsServerlessExpress from 'aws-serverless-express';
import * as express from 'express';
let cachedServer: Server;
const bootstrapServer = async (): Promise<Server> => {
const expressApp = express();
const adapter = new ExpressAdapter(expressApp);
const app = await NestFactory.create(AppModule, adapter);
app.enableCors();
await app.init();
return awsServerlessExpress.createServer(expressApp);
}
export const handler: APIGatewayProxyHandler = async (event, context) => {
if (!cachedServer) {
cachedServer = await bootstrapServer()
}
return awsServerlessExpress.proxy(cachedServer, event, context, 'PROMISE')
.promise;
};
这是一个控制器中的一个函数:
@Get()
getUsers(event) { // <-- HOW TO ACCESS event HERE?? This event is undefined.
return {
statusCode: 200,
body: "This function works and returns this JSON as expected."
}
我很难理解如何访问 event 参数,它可以在“普通”节点 12.x Lambda 函数中轻松访问:
module.exports.hello = async (event) => {
return {
statusCode: 200,
body: 'In a normal Lambda, the event is easily accessible, but in NestJS its (apparently) not.'
};
};
【问题讨论】:
标签: node.js amazon-web-services nestjs serverless-framework