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

时间:2016-03-19 00:54:39

标签: amazon-web-services aws-lambda aws-api-gateway

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

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

示例:

舞台变量

  • 环境:“发展”

JSON

{
  "name": "Toli",
  "company": "SomeCompany"
}

event变量看起来应该是这样的;

{
  "name": "Toli",
  "company": "SomeCompany",
  "environment": "development"
}

到目前为止,我能想到的最好的是以下映射模板(在Integration Request下):

{
    "body" : $input.json('$'),
    "environment" : "$stageVariables.environment"
}

然后在节点I中

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

3 个答案:

答案 0 :(得分:3)

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

对于我目前正在处理的项目,我创建了一个简单的函数,它遍历event.stageVariables中的所有属性,并将它们附加到process.env(例如:Object.assign(process.env, event.stageVariables);

答案 1 :(得分:1)

您建议使用映射模板传递变量,这是此类工作流程的推荐解决方案。

答案 2 :(得分:0)

您还可以访问$context对象中的舞台名称。

整合请求:

{
    "environment" : "$context.stage"
}