多个API网关实例,一个lambda函数

时间:2018-11-08 13:15:19

标签: amazon-web-services aws-lambda aws-api-gateway

我正在尝试构建一个系统,其中多个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函数一次..)

感谢您对这个问题的想法!

1 个答案:

答案 0 :(得分:2)

如果您使用Lambda-Proxy集成,就可以了。

事件的完整详细信息可以为found here,但是至关重要的是,标题HostoriginReferer都指向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/"
}

因此,从该信息分支/查找数据库行为对于您来说应该是微不足道的。