繁体   English   中英

AWS VPC Lambda 网络问题

[英]AWS VPC Lambda Networking Issue

所以我有一个非常令人困惑的问题,我不知道如何解决。 我的设置是 API 网关 -> Lambda -> 物联网核心。 我设置了代码,它在我的 IDE 上运行良好。我将它部署到 AWS,但我与 AWS 的连接超时了。

Lambda 在单个 su.net 中,su.net 确实有一条到 IGW 的默认路由。 我做了一个测试,Lambda function可以将我的IoT端点的IP解析为公共的IP(54.xxx)。 但是 connect() 方法超时。 我的 Lambda function 安全组设置为允许所有传入/传出。

我错过了什么? 为什么我无法从配置了 IGW 且似乎正常工作的 VPC 内部访问 IoT Core。 任何方向将不胜感激。

更新

在玩了许多不同的东西之后,我无法确定到底是什么弄乱了我的配置。 但是按照接受的答案,我最终得到了以下设置,它似乎可以满足我的需要。

  • su.net-1 10.14.10.0/24 (auto-assign-public=false)
    • 本地路由 ( 10.14.0.0/16 ) 和默认路由=nat-gateway
  • su.net-2 10.14.20.0/24 (auto-assign-public=false)
    • 本地路由 ( 10.14.0.0/16 ) 和默认路由=nat-gateway
  • su.net-3 10.14.30.0/24 (auto-assign-public=false)
    • 本地路由 ( 10.14.0.0/16 ) 和默认路由=nat-gateway
  • su.net-4 10.14.40.0/24 (auto-assign-public=false)
    • 本地路由 ( 10.14.0.0/16 ) 和默认路由=nat-gateway
  • su.net-5 10.14.200.0/24 (auto-assign-public=true)
    • 本地路由 ( 10.14.0.0/16 ) 和默认路由=igw
  • nat网关
    • 在 su.net-5

我不知道这是否是我想要的,但这是我一直在寻找的。 一系列不可公开访问的 su.net,但具有用于访问其他 AWS 服务的 inte.net 连接。 所以我的 Lambda 资源、ECS 等可以私下访问他们需要的东西。

谢谢大家的信息。

您不应将 Lambda 函数部署到公有子网(即具有到 IGW 的默认路由的子网)。 它不会按照您希望的方式工作。 Lambda 函数没有也不能拥有公共 IP,因此无法通过 IGW 路由到 Internet。

如果 Lambda 需要位于 VPC 中,则将其移动到私有子网,并确保私有子网具有通往公有子网中 NAT(或 NAT 网关)的默认路由。 或者在 VPC 之外完全部署 Lambda 函数(如果可行的话)。

更多信息请访问:

当您说“我进行了测试,Lambda 函数可以将我的 IoT 端点的 IP 解析为公共 IP (54.xxx)”时,您的意思是 DNS 解析,还是您已经使用实际网络流量进行了检查。

在任一情况下,您都可以为您的 VPC 启用 VPC 流日志,然后重试。 流日志将确定 SG 还是 NACL 正在阻止您的流量。

另请记住,Lambda 不能存在于公共子网中,它们必须驻留在私有子网中,并在公共子网上使用 NAT GW 连接到 Internet。

我遇到了同样的问题。 值得庆幸的是,AWS 已将此过程自动化,只需点击几下即可,但遗憾的是每月要多花 $$$(起价约 30 美元)。

您需要创建一个同时具有公共和私有 su.net 的 VPC 组。 就我而言,我正在访问一个 RDS 数据库,然后构建 email 模板并通过 SES 发送这些电子邮件。

什么不起作用:当我在我的 lambda function 上部署默认 VPC 时,RDS 可以工作,但 SES 不会。 原因是 SES API 无法通过默认 VPC 访问 inte.net,您需要设置一个私有 su.net 以允许这样做。

VPC 向导只需单击几下即可为您完成这一切,但您正在考虑花费大约 30 美元/月 (CAD) 来设置 NAT 网关 + 每 GB 的任何潜在数据处理费用(阅读定价)。 就我而言,从中触发几个 email 模板比部署另一个 ec2 实例更重要,并且让我可以灵活地进行扩展而无需过多的即时配置。

此链接是开始的好地方。 如何让 inte.net 访问连接到 Amazon VPC 的 Lambda function?

按照该文章中的 VPC 向导超链接,您只需要 go 到 VPC 控制台并创建一个 VPC,应该看起来像这样(如下)

在此处输入图像描述

一旦 AWS 发挥其魔力,您需要将 VPC 分配给您的 Lambda function,为您的 lambda function 分配正确的权限,并且不要忘记使用正确的入站规则配置您的安全组。 在我的例子中,我需要添加一个 PostGres 规则来访问我的 RDS。

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM