【问题标题】:Issue with VPC attached to Lambda function附加到 Lambda 函数的 VPC 出现问题
【发布时间】:2018-08-23 19:21:06
【问题描述】:

我有一个 Lambda 函数,它连接到外部数据库(运行 MySQL)并在从数据库中获取数据后发送 SNS 电子邮件。

我创建了一个带有 NAT 网关、2 个子网和一个允许所有传入和传出流量的安全组的 VPC。创建 VPC 以附加到我的 Lambda 函数的原因是我需要一个弹性 IP,因为 MySQL 需要授权所有尝试连接的外部 IP。

没有 VPC,我的代码可以正常工作,从数据库中获取数据并毫无问题地发送 SNS 电子邮件。但是,将 VPC 添加到 Lambda 函数时,MySQL 查询不起作用,SNS 也不会发送任何电子邮件。

我在 CloudWatch Logs 中没有收到任何错误或任何可能导致问题的迹象。有人知道是什么原因造成的吗?

【问题讨论】:

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


    【解决方案1】:

    要使 AWS Lambda 函数能够访问 Internet,其中一个是必需的:

    • 不要选择 VPC。 该功能将直接连接到 Internet,但与您的需求相反,您不会有与之关联的弹性 IP 地址。
    • 将 Lambda 函数连接到 私有子网 并使用 NAT 网关 连接到 Internet。 Lambda 函数似乎来自 NAT 网关的 IP 地址。
    • 将 Lambda 函数连接到 公共子网,并将 弹性 IP 地址 关联到 Lambda 函数连接到子网的弹性网络接口 (ENI)。互联网流量似乎来自弹性 IP 地址。

    【讨论】:

    • 当Lambda服务不断自动创建和删除ENI时,如何管理ENI Elastic IP技巧?
    • 嗯。我在一个 ENI 上做过,但是我没有想到创建多个 Lambda 函数和 ENI 的情况。如果有可能并发执行,我想 NAT 网关是要走的路!
    • @MarkB 是正确的..."If your Lambda function accesses a VPC, you must make sure that your VPC has sufficient ENI capacity to support the scale requirements of your Lambda function." Lambda 需要分配给函数的 ENI 数量的近似公式是 ceil(实际峰值执行并发数 × (container大小 (MiB) ÷ 3072))。
    • @JohnRotenstein 谢谢。我弄清楚我的问题是什么。我创建了 2 个公有子网,没有创建私有子网,并将 2 个公有子网分配给 Lambda 函数。我更改了它并创建了 2 个私有子网和 2 个公有子网,并且仅将 2 个私有子网附加到 Lambda 函数。
    猜你喜欢
    • 2019-07-30
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 2022-06-10
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多