我正在尝试构建一个系统,其中多个API网关实例应执行相同的lambda函数。
我的问题是,我只想更改所用API网关功能中的lambda配置。
让我们以数据库名称为例,如果从一个API或另一个API触发了lambda,则应更改该数据库。
示例:
API Gateways:
https://my-first-api-gateway.execute-api.eu-west-1.amazonaws.com
https://my-second-api-gateway.execute-api.eu-west-1.amazonaws.com
然后,我有一个lambda函数被两个API调用:say_hello
。
此功能必须从数据库中检索报价。如果已从my-first-api-gateway
调用了该函数,则lambda函数必须使用my_first_database
,如果已从my-second-api-gateway
调用了该函数,则必须使用my_second_database
。
我随附的唯一解决方案是部署与我拥有的API网关一样多的lambda函数。然后使用环境变量存储我的数据库名称。
我不喜欢我的解决方案,因为当我更新一行代码时,我将不得不重新部署所有的lambda函数。(如果我要使用300个不同的数据库,那意味着要更新300个lambda函数一次..)
感谢您对这个问题的想法!
答案 0 :(得分:2)
如果您使用Lambda-Proxy
集成,就可以了。
事件的完整详细信息可以为found here,但是至关重要的是,标题Host
,origin
和Referer
都指向API网关uri:
"headers": {
"Host": "j3ap25j034.execute-api.eu-west-2.amazonaws.com",
"origin": "https://j3ap25j034.execute-api.eu-west-2.amazonaws.com",
"Referer": "https://j3ap25j034.execute-api.eu-west-2.amazonaws.com/dev/"
}
因此,从该信息分支/查找数据库行为对于您来说应该是微不足道的。