如何让VAL中的AWS lambda发布SNS通知?

时间:2016-03-14 22:17:36

标签: amazon-web-services aws-lambda amazon-sns amazon-vpc

我有一个lambda函数,通过VPC访问RDS中的Postgres数据库。在查询数据库之后,我想向SNS发布通知。因为我的lambda函数存在于我的VPC中,所以它无法访问SNS。我的VPC上有一个互联网网关。我阅读了VPC端点文档,目前仅支持s3。

无论如何在VPC中以lambda函数发布到SNS?

4 个答案:

答案 0 :(得分:13)

<强>更新

截至2018年4月,SNS通过AWS PrivateLink支持VPC Endpoints。因此,无需设置Internet网关或NAT实例,以便VPC内部的Lambda函数发布SNS通知。

有关详细信息,请参阅this博文。

答案 1 :(得分:8)

您需要在VPC中运行NAT服务器才能将流量路由到VPC之外。 AWS现在提供managed NAT service,使这更容易。

答案 2 :(得分:3)

我知道这已经过时了,但是对于那些不想配置NAT的人来说,这是另一种选择。而不是试图在VPC内部与SNS交互的lambda函数,分成2个lambda函数,如下所示。

Function 1位于VPC内部并与数据库交互,返回数据库交互的结果(例如,符合某些条件的ID列表)。

Function 2位于VPC之外,调用Function 1,然后处理值数组并发布相应的SNS通知(例如,根据列表中的每个ID发送消息)。

如果有一个SNS的VPC端点会很好,但仍然在2016年末,情况似乎并非如此。

答案 3 :(得分:2)

我终于设法让它发挥作用......

诀窍是你必须有2个子网。

公共路由表,具有将流量发送到VPC的Internet网关的路由表。将NAT放在那里。

一个私有的,带有路由表,可以将流量发送到NAT。将Lambdas放在那里。 (BTW制作公有子网意味着将自动分配公共IP选项设置为是。)

AWS文档的概述图中概述了它:

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html#Configuration-2