当前位置: 首页 > 知识库问答 >
问题:

运行nodejs expressjs时访问aws lambda上下文

蒋高杰
2023-03-14

我刚开始使用AWS-Lambda、AWS-API Gateway和ExpressJs。我在查找AWS-Lambda“上下文”如何在我的“ExpressJs”应用程序中可用时遇到了麻烦。

我正在使用:

  • AWS-Lambda
  • AWS-API网关
  • NodeJs v4.3.2
  • ExpressJs 4.14.1
  • ClaudiaJs 2.7.0

在Aws Lambda中,我使用aws-serverless-express来接收API网关请求并初始化节点应用程序。以下是我从不同教程等找到的结构

lambda.js(从API-Gateway发起。在对“app.js”的调用中提供“上下文”变量)

'use strict'
const awsServerlessExpress = require('aws-serverless-express')
const app = require('./app')
const server = awsServerlessExpress.createServer(app)
exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context)

我的应用程序的核心。js express是:

var express = require('express');
...
var app = express();
...
app.use('/', index);
...
module.exports = app;

我的问题:

  1. 是否有一种方法可以使用这种结构访问AWS Lambda“上下文”
  2. 如果没有,什么是使其可用的最佳“模式”

欢迎任何意见。

共有1个答案

贺高杰
2023-03-14

您需要添加aws serverless express包中包含的中间件,该包公开了事件上下文对象。您可以这样添加:

const awsServerlessExpressMiddleware = require('aws-serverless-express/middleware')
app.use(awsServerlessExpressMiddleware.eventContext())

配置此中间件后,事件上下文对象将被添加到请求中。您像这样访问这些对象:

var event = req.apiGateway.event;
var context = req.apiGateway.context;
 类似资料:
  • 有没有一种方法可以在运行时访问JUnit5版本? 例如。 在JUnit4中工作得很好。 我正在寻找JUnit5的“对应物” 谢谢:-)

  • 我通过Xtext创建了一个DSL,现在需要将编辑器中创建的模型转换为另一个模型。我认为最直接的方法是使用某种M2M转换框架,但我需要访问文本文件后面的模型。问题:如何获得模型的引用?

  • 在我的java应用程序中,我有一个Quartz作业,它每天运行一次,处理特定的任务。在我的方法中只有以下内容: 是一个实例变量。

  • 问题内容: 我有一个测试: 它尝试访问。在Java 8中,它起作用了,但是在Java 9中(我在使用Oracle JDK 9),它失败了。从JDK是默认不可用在Java中9。 我正在尝试使用模块描述符访问它: 在这里,我专门请求访问模块(包含)。但是测试仍然失败。 当我删除该子句并添加包含的依赖项(作为库)时,它会起作用: 当我(在Maven的依赖性增加他们两个和),汇编IDEA失败,出现以下消息

  • 我有关于Android 6(Marshmallow)运行时权限的问题。如果用户想从图库中挑选一张照片,我们是否应该要求权限? 似乎我可以访问画廊,即使我关闭了存储权限。

  • 我有一个类似的问题,如何访问外部的领事UI,但我不能使网络选项的组合工作正确。 我在OSX上使用的是Docker for Mac,而不是老的Docker机器,也使用了官方的Consuler Docker镜像,而不是Progrium/Docker镜像。 我可以使用以下方法启动一个3节点服务器集群 到目前为止还不错,他们互相联系,工作很好。现在我想启动一个代理,并通过它查看UI。 我尝试了一堆-cli