2016-05-15 77 views
1

我已經設置了一個亞馬遜Lambda函數,該函數具有用於開發,測試和生產的不同別名,以及具有指向各自別名版本的幾個階段的API網關。Amazon Lambda - 別名特定配置

現在我想訪問一個數據庫表,顯然每個別名應該訪問它自己的表。在文檔中,我找不到將別名特定配置傳遞給我的函數的可能性。對此有最佳做法嗎?

回答

1

在API網關中設置Stage Variables,並向您的映射模板中添加如下內容以將這些階段變量傳遞給Lambda函數。

"stage-variables" : { 
    #foreach($key in $stageVariables.keySet()) 
     "$key" : "$util.escapeJavaScript($stageVariables.get($key))" 
     #if($foreach.hasNext),#end 
    #end 
    } 

Lambda函數然後可以從事件對象中抽取事件,如數據庫表名。

+0

這聽起來像是通過API網關公開的功能的一個很好的解決方案。 S3或SNS觸發的功能是否有類似的最佳做法? – Matthias

+0

不幸的是這些更困難。您可以使用DynamoDB表來存儲特定於不同功能別名的設置。然後,您可以檢查'context'對象以獲取'functionVersion'值,然後從DynamoDB查找設置。 –

+0

看起來你也可以從'process.env.AWS_LAMBDA_FUNCTION_VERSION'獲取別名 –