Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在AWS API网关中,如何将阶段参数作为事件变量的一部分包含在Lambda(节点)中?_Amazon Web Services_Aws Lambda_Aws Api Gateway - Fatal编程技术网

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

Amazon web services 在AWS API网关中,如何将阶段参数作为事件变量的一部分包含在Lambda(节点)中?,amazon-web-services,aws-lambda,aws-api-gateway,Amazon Web Services,Aws Lambda,Aws Api Gateway,我设置了一个称为“环境”的阶段变量 我想在一个POST请求中将其作为JSON的一部分进行传递 例如: 阶段变量 环境:“发展” JSON 事件变量应如下所示 { "name": "Toli", "company": "SomeCompany", "environment": "development" } 到目前为止,我能想到的最好的方法是以下映射模板(在Integration Request下): 那么在节点中,我会这样做 exports.handler = function

我设置了一个称为“环境”的阶段变量

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

例如:

阶段变量

  • 环境:“发展”
JSON

事件
变量应如下所示

{
  "name": "Toli",
  "company": "SomeCompany",
  "environment": "development"
}
到目前为止,我能想到的最好的方法是以下映射模板(在Integration Request下):

那么在节点中,我会这样做

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

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

您也可以在
$context
对象中访问阶段名称

集成请求:

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

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


对于我目前正在进行的项目,我创建了一个简单的函数,它可以遍历
事件.stageVariables
中的所有属性,并将它们附加到
进程.env
(例如:
对象.assign(process.env,event.stageVariables);
)中,这似乎是正式的方法:虽然很简单,这个很好的答案对我来说很有挑战性。。10倍
{
    "environment" : "$context.stage"
}