在抱怨允许附加到 VPC 的 lambda 函数访问互联网的 NAT 网关成本时,我发现了一些关于在公共子网而不是私有子网中部署 lambda 并将 EIP 附加到由 Lambda 创建的 ENI 的建议。 (我也有一个连接到 VPC 的 IGW)。
我关注了这篇文章:https://stackoverflow.com/a/74683282/3701903 https://stackoverflow.com/a/74683282/3701903
这有效!我在公共子网中运行的 lambda 可以访问互联网。
然而,我在很多地方读到“这不应该是可能的”,或者“为 lambda 提供互联网访问的唯一方法是通过 NAT 网关/实例。”或“如果你这样做,它就无法正确扩展”。
这只是一个坏主意吗?我的 lambda 需要访问互联网和 VPC 中的资源(例如私有子网中的 rds)
这是一个巧妙的技巧。它的发布使之成为可能Lambda 超平面 ENI https://docs.aws.amazon.com/lambda/latest/dg/foundation-networking.html#foundation-nw-eni2019 年 9 月。在此之前,每个 VPC 内 Lambda 实例都需要自己的 ENI。之后,多个实例可以共享相同的 ENI。
扩展的限制是每个 ENI 都需要自己的弹性 IP,并且有一个您可以关联的弹性 IP 数量有限 https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-eips每个区域。
这可能会导致问题的是子网和安全组的每个组合都需要自己的 ENI。如果您只是将“默认”安全组分配给所有 Lambda,那么每个子网将需要一个 ENI,并且可以轻松保持在配额之下。但是,在多应用程序环境中,您通常会创建多个安全组来控制应用程序内的通信(例如,允许来自一个 Lambda 但不允许来自另一个 Lambda 的入站连接的数据库 SG)。
您还应该注意,使用弹性 IP 时,您将需要支付 EC2 数据传输费用。好消息:进入 Lambda 的流量将免费!坏消息:从 Lambda 发出的流量将按每 GB 0.09 美元(针对美国地区)收费,是 NAT 网关数据传输成本的两倍。
底线:如果您只是为了个人帐户而这样做,那就继续吧。但在生产环境中,我认为总拥有成本(包括中断风险)将远远高于 NAT 网关。如果您确实不想为 AWS 托管的 NAT 付费,那么配置一个t3.micro
担任该职务的实例。但请注意,您现在将面临保持其健康的责任。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)