1
我已经设置了一个亚马逊Lambda函数,该函数具有用于开发,测试和生产的不同别名,以及具有指向各自别名版本的几个阶段的API网关。Amazon Lambda - 别名特定配置
现在我想访问一个数据库表,显然每个别名应该访问它自己的表。在文档中,我找不到将别名特定配置传递给我的函数的可能性。对此有最佳做法吗?
我已经设置了一个亚马逊Lambda函数,该函数具有用于开发,测试和生产的不同别名,以及具有指向各自别名版本的几个阶段的API网关。Amazon Lambda - 别名特定配置
现在我想访问一个数据库表,显然每个别名应该访问它自己的表。在文档中,我找不到将别名特定配置传递给我的函数的可能性。对此有最佳做法吗?
在API网关中设置Stage Variables,并向您的映射模板中添加如下内容以将这些阶段变量传递给Lambda函数。
"stage-variables" : {
#foreach($key in $stageVariables.keySet())
"$key" : "$util.escapeJavaScript($stageVariables.get($key))"
#if($foreach.hasNext),#end
#end
}
Lambda函数然后可以从事件对象中抽取事件,如数据库表名。
这听起来像是通过API网关公开的功能的一个很好的解决方案。 S3或SNS触发的功能是否有类似的最佳做法? – Matthias
不幸的是这些更困难。您可以使用DynamoDB表来存储特定于不同功能别名的设置。然后,您可以检查'context'对象以获取'functionVersion'值,然后从DynamoDB查找设置。 –
看起来你也可以从'process.env.AWS_LAMBDA_FUNCTION_VERSION'获取别名 –