我正在AWS Lambda上托管一个Nestjs应用程序(使用无服务器框架)。请注意,实现在AWS API网关之后。
问题:如何访问Nest控制器
中的事件
参数?
这是我如何引导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."
}
我很难理解如何访问< code>event参数,该参数在“普通”node 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.'
};
};
解决方案:
在引导期间将 AwsExpress无服务器软件添加到您的设置中:
const awsServerlessExpressMiddleware = require('aws-serverless-express/middleware')
app.use(awsServerlessExpressMiddleware.eventContext())
注意:< code>app.use应该在< code>app.init()之前
现在可以访问事件
和上下文
对象:
var event = req.apiGateway.event;
var context = req.apiGateway.context;
学分: SO上的这个答案
如您所见,我正在使用codePipeline和codeBuild自动化部署。我的后端基于无服务器框架,它在触发命令时部署lambda函数。这就是我没有使用codeDeploy进行传统部署的原因<代码>构建规范。yml文件如下所示: 现在,我有3个关于CodeBuild和Serverless的问题: 问题1:命令依赖于一个名为的文件,其中包含数据库密码等秘密。此文件将不会被签入git。你认为在cod
我已经在AWS中安装了Redis服务器,虽然我可以从同一台服务器中访问它,但我无法从外部IP连接到它。 我还做了以下工作: 向实例的安全组中添加了入站规则,以允许访问所有流量(要测试) 我仍然无法使用redis-cli-hxxx.xxx.xxx.xx-p 6379访问它 请帮帮忙 更新: 我可以telnet到端口,所以Redis本身一定有什么东西不允许访问? netstat结果: [ec2-use
我的工作中有一个活动选择插件,它使用一个groovy脚本将另一个工作区文件夹中的文件夹列为选择。我在Jenkins单节点(没有主从节点)中使用了这个,它正在工作。 现在我已经切换到Jenkins主从服务器架构。由于工作区是从工作区,所以选择不会在作业中列出。请让我知道,如果有任何方式访问从工作在主从的工作区。
我最近探索了serverless,我想为我的应用程序创建一个“简单”的后端。它应该像CRUD连接到DynamoDB,就像这里很好地显示的那样。然后转换成使用Cognoto记录用户。链接1和链接2( 在我的实施过程中,我遇到了一些问题,我想请您帮助,因为我不喜欢使用我只复制的东西,也不知道它是如何工作的: > 为什么我不需要设置CORS(标头)时初始化lambdas与无服务器,而不是在亚马逊控制台中
我对Axon框架比较陌生,只是评估框架是否适合我的项目。本文描述了事件的版本控制。但是在本例中,EventStore更改为JPA。是否可以将Axon服务器上传事件作为事件存储?还是我误解了什么?
我是K8s的新手“需要帮助” 现在的问题是。- 如何在k8s AWS中旋转私人容器服务,这些服务是私人的,我只能访问?