node.js - 运行 nodejs + expressjs 时访问 aws-lambda 上下文

标签 node.js amazon-web-services express aws-lambda

我刚刚开始使用 AWS-Lambda、AWS-API 网关和 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 网关请求并初始化 Node 应用程序。以下是我从不同的教程等中找到的结构

lambda.js(从 API 网关启动。在调用“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)

我的 app.js express 的核心是:

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

我的问题:

  1. 有没有办法用这个访问 AWS-Lambda“上下文” 结构?
  2. 如果没有,使其可用的最佳“模式”是什么?

感谢任何意见。

最佳答案

您需要添加包含在 aws-serverless-express 包中的中间件,它公开了 eventcontext 对象。你这样添加它:

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

配置此中间件后,eventcontext 对象将添加到请求中。您可以像这样访问这些对象:

var event = req.apiGateway.event;
var context = req.apiGateway.context;

关于node.js - 运行 nodejs + expressjs 时访问 aws-lambda 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42436527/

相关文章:

node.js - Firebase多路径更新将父 Node 设置为null

amazon-web-services - 如何让k8s Pod(由Jenkins生成)使用服务帐户IAM角色访问AWS资源

amazon-web-services - 带有 git-remote-codecommit 的 AWS CodeCommit

javascript - 这个错误说明了什么?类型 'ParsedQs' 不可分配给类型 'string'

javascript - 如何配置 Express 响应对象自动给 JSON 添加属性?

node.js - 有或没有 token JWT+PASSPORT 可用的路线

javascript - node.js 从 Controller 调用 ws.send

amazon-web-services - AWS API Gateway 自定义授权方日志

javascript - 如何让 Jade 的外部 JSON 从 Express 渲染?

node.js - NodeJS 请求响应偶尔会收到解析错误消息