【问题标题】:AWS Lambda running in VPC to publish to SNS在 VPC 中运行以发布到 SNS 的 AWS Lambda
【发布时间】:2018-02-22 11:30:53
【问题描述】:

我有一个在 VPC 中运行的 Lambda,它访问安全资源(例如:RDS),但我还需要它来发布 SNS 通知。有没有办法在没有 NAT 网关的情况下做到这一点?

或者,我正在考虑写入触发另一个 lambda 的 DynamoDB 表,但想知道是否有更简单的方法。

【问题讨论】:

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


【解决方案1】:

简单的答案是否定的。 SNS 目前不能用作 VPC 终端节点,因此您需要继续执行您已经在执行的操作,以便通过 lambda(私有子网中的 NAT 网关)访问 RDS。

换句话说,2016 年的这个答案在今天仍然适用 -> How to let AWS lambda in a VPC to publish SNS notification?

【讨论】:

    【解决方案2】:

    选项 A:使用 NAT 网关 您的 lambda 位于私有子网中,这意味着它无法与外部世界(互联网)通信,因此除非您将其设为公共子网(当然不建议这样做),否则您无法访问外部世界。 NAT 网关允许您的资源通过它进行访问,而且实现起来并不难。 这是一个关于如何做到这一点的方便教程: https://github.com/naguibihab/aws-goodies/blob/master/how-to-setup-lambda-to-talk-to-internet-and-vpc.md

    选项 B:使用 NAT 实例 与使用 NAT 网关类似,您也可以使用 NAT instance,这需要更多管理,可用性可能较低,但也可能更便宜。 NAT 实例的工作方式与 NAT 网关相同,它需要位于公共子网中,并且私有子网中的任何 lambda 函数都可以通过它访问互联网。

    至于您的 DynamoDB 替代方案,您可以按照 Khalid T 的建议为 Dynamo db 创建一个 VPC 端点:https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints-ddb.html


    编辑 我已得到更正,编辑了我的答案。

    【讨论】:

    • 确实,您目前需要一个 NAT 网关来访问 VPC 中的 SNS,但这不是 DynamoDB 访问所必需的。您可以创建一个VPC Endpoint for DynamoDB
    • 也可以使用 NAT instance,成本比 NAT 网关低很多。
    猜你喜欢
    • 2020-06-14
    • 2016-06-30
    • 2015-11-16
    • 2018-10-14
    • 2019-01-28
    • 2021-10-18
    • 2016-04-02
    • 2017-10-11
    • 2016-11-06
    相关资源
    最近更新 更多