首页 文章

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

提问于
浏览
15

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

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

4 回答

  • 2

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

  • 10

    UPDATE

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

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

  • 3

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

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

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

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

  • 8

    我终于设法让它工作了......

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

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

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

    AWS文档在此概述图中概述了它:

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

相关问题