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的一部分进行传递
例如:
阶段变量
- 环境:“发展”
事件
变量应如下所示
{
"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"
}