2016-03-19 26 views
2

我有一個階段變量設置爲「環境」。在AWS API網關中,如何在Lambda(Node)中包含階段參數作爲事件變量的一部分?

我想在作爲JSON的一部分的POST請求中傳遞它。

例子:

舞臺變量

  • 環境: 「發展」

JSON

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

event變量應該像;

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

到目前爲止,我能想出了下面的映射模板(下合併請求)最好的:

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

然後在節點我做

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

這似乎是做了官方的方式:http://docs.aws.amazon.com/apigateway/latest/developerguide/amazon-api-gateway-using-stage-variables.html – TimoSolo

回答

1

你使用的建議用於傳遞變量的映射模板將是此類工作流的推薦解決方案。

0

您還可以訪問$context對象中的舞臺名稱。

合併請求:

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

如果你的API網關方法使用LAMBDA代理集成,所有階段的變量將通過event.stageVariables對象是可用的。

對於這個項目我目前工作的,我創建了一個簡單的函數,越過所有屬性在event.stageVariables,並將它們附加到process.env(如:Object.assign(process.env, event.stageVariables);

+0

雖然瑣碎,但這個偉大的答案是非常具有挑戰性的.. 10倍 –

相關問題