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

时间:2017-02-24 10:40:06

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

我刚刚开始使用AWS-Lambda,AWS-API Gateway和ExpressJs。我无法在“ExpressJs”应用程序中找到AWS-Lambda“上下文”的可用性。

我正在使用:

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

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

lambda.js(从API-Gateway发起。在“app.js”调用中提供“context”变量)

'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表达的核心是:

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

我的问题:

  1. 有没有办法用这个访问AWS-Lambda“上下文” 结构
  2. 如果没有,那么最好的“模式”是什么?
  3. 任何意见都赞赏。

1 个答案:

答案 0 :(得分: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;