在 AWS API Gateway 中,如何在 Lambda(节点)中包含阶段参数作为事件变量的一部分?

Tol*_*oli 2 amazon-web-services aws-lambda aws-api-gateway

我有一个名为“环境”的阶段变量设置。

我想将它POST作为 JSON 的一部分在请求中传递。

例子:

阶段变量

  • 环境:“发展”

JSON

{
  "name": "Toli",
  "company": "SomeCompany"
}
Run Code Online (Sandbox Code Playgroud)

event 变量应该看起来像;

{
  "name": "Toli",
  "company": "SomeCompany",
  "environment": "development"
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我能想到的最好的是以下映射模板(在集成请求下):

{
    "body" : $input.json('$'),
    "environment" : "$stageVariables.environment"
}
Run Code Online (Sandbox Code Playgroud)

然后在节点我做

exports.handler = function(event, context) {
    var environment = event.environment;
    // hack to merge stage and JSON
    event = _.extend(event.body, {
      environment : environment
    });
    ....
Run Code Online (Sandbox Code Playgroud)

Max*_*lle 5

如果您的 API 网关方法使用Lambda 代理集成,则您的所有阶段变量都可以通过该event.stageVariables对象使用。

对于这个项目,我目前的工作,我创建了一个简单的函数,越过所有的属性event.stageVariables,并将它们附加到process.env(例如:Object.assign(process.env, event.stageVariables);