使用nest.js在AWS Lambda中获取Cognito数据(即requestContext)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用nest.js在AWS Lambda中获取Cognito数据(即requestContext)相关的知识,希望对你有一定的参考价值。
我正在遵循https://github.com/serverless/examples/tree/master/aws-node-typescript-nest中的示例
我做了什么
1)成功将此部署到AWS并添加了一个Cognito授权者(我已经验证了所有这些工作,并且正在requestContext中获取用户数据)。
2)设置NestJS以处理路由。
我需要做什么
将event
和context
变量交给NestJS控制器或可注入服务,以便我可以进行进一步的验证和个性化。
main.ts片段,首先将请求路由。通知事件和上下文
async function bootstrapServer(): Promise<Server>
if (!cachedServer)
try
const expressApp = require('express')();
const nestApp = await NestFactory.create(AppModule, expressApp);
nestApp.use(eventContext());
await nestApp.init();
cachedServer = createServer(expressApp, undefined, binaryMimeTypes);
catch (error)
return Promise.reject(error);
return Promise.resolve(cachedServer);
export const handler: Handler = async (event: any, context: Context) =>
cachedServer = await bootstrapServer();
// LOOK HERE!!!!!!
// How do I pass event and context
return proxy(cachedServer, event, context, 'PROMISE').promise;
这里是控制器
我想在其中使用事件和上下文的控制器片段
import AppService from './app.service';
@Controller()
export class AppController
// how do I access event and context in this controller class?
constructor(private readonly appService: AppService)
@Get('hello')
getHello(): string
return this.appService.getHello();
答案
最后找到了它。
aws-serverless-example给了我所需的提示。
aws-serverless-express的一部分是将事件信息添加到req
正文的中间件。
示例
import * as awsServerlessExpressMiddleware from "aws-serverless-express/middleware";
app.use(awsServerlessExpressMiddleware.eventContext());
app.get('/', (req, res) =>
res.json(req.apiGateway.event);
);
以上是关于使用nest.js在AWS Lambda中获取Cognito数据(即requestContext)的主要内容,如果未能解决你的问题,请参考以下文章
Nest.js 与 AWS Cognito,如何访问用户属性
在nest.js 中,是不是可以在参数装饰器中获取服务实例?