2016-05-15 73 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'获取别名 –