【发布时间】:2020-07-05 11:39:28
【问题描述】:
所以我有一个非常令人困惑的问题,我不知道如何解决。我的设置是 API Gateway -> Lambda -> IoT Core。我设置了代码,它在我的 IDE 中运行良好。我将其部署到 AWS,但与 AWS 的连接超时。
Lambda 位于单个子网中,并且该子网确实具有到 IGW 的默认路由。我做了一个测试,Lambda 函数可以将我的 IoT 端点的 IP 解析为公共 IP (54.x.x.x)。但是 connect() 方法超时。我的 Lambda 函数安全组设置为允许所有传入/传出。
我错过了什么?为什么我无法从配置了 IGW 且似乎正在工作的 VPC 内部访问 IoT Core。任何方向将不胜感激。
更新
在玩了很多不同的东西之后,我无法确定我到底把我的配置搞砸了。但是按照接受的答案,我最终得到了以下设置,这似乎可以满足我的需要。
- 子网 1 10.14.10.0/24(自动分配公共 = 假)
- 本地路由(10.14.0.0/16)和默认路由=nat-gateway
- 子网 2 10.14.20.0/24(自动分配公共 = 假)
- 本地路由(10.14.0.0/16)和默认路由=nat-gateway
- 子网 3 10.14.30.0/24(自动分配公共 = 假)
- 本地路由(10.14.0.0/16)和默认路由=nat-gateway
- 子网 4 10.14.40.0/24(自动分配公共 = 假)
- 本地路由(10.14.0.0/16)和默认路由=nat-gateway
- 子网 5 10.14.200.0/24(自动分配公共=真)
- 本地路由(10.14.0.0/16)和默认路由=igw
- nat 网关
- 在子网 5 中
我不知道这是否是我想要的,但这就是我想要的。一系列不可公开访问但具有 Internet 连接以访问其他 AWS 服务的子网。所以我的 Lambda 资源、ECS 等可以私下访问并访问他们需要的东西。
感谢大家提供的信息。
【问题讨论】:
-
当 lambda 不在 VPC 中时是否一切正常?您的 lambda 是否对 VPC 具有正确的执行角色?
-
是的,API GW 有多个端点,所有端点都在 VPC 内正常工作(访问 DynamoDB、elasticache 等)。我没有在 VPC 之外专门尝试过。我会试试看。
-
@Marcin 是的,它确实在 VPC 之外工作。
-
有趣。您的子网上是否有任何 NACL 可以阻止连接。也是您的子网私有还是公有?
-
VPC 和子网是私有的。我正在使用默认的 NACL,它对入站和出站都有一个允许所有 ( 100 / ALL Traffic / ALL / ALL / 0.0.0.0/0 / ALLOW ) 的规则。我刚刚注意到的同一子网中也有一个 NAT GW。我添加它是为了解决过去的问题,但我不记得为什么了。
标签: amazon-web-services aws-lambda amazon-vpc aws-iot