AWS VPC Lambda网络问题

时间:2020-03-24 22:13:06

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

所以我有一个非常困惑的问题,我不知道如何解决。我的设置是API Gateway-> Lambda-> IoT Core。我设置了代码,并且可以从我的IDE正常工作。我将其部署到AWS,并且与AWS的连接超时。

Lambda位于单个子网中,并且该子网确实具有通往IGW的默认路由。我进行了测试,Lambda函数可以将IoT端点的IP解析为公共IP(54.x.x.x)。但是connect()方法超时。我的Lambda函数安全组已设置为允许所有传入/传出。

我想念什么?为什么我不能从配置了IGW且似乎正在运行的VPC内部进入IoT核心版。任何方向将不胜感激。

更新

在玩了很多不同的事情之后,我无法确定自己到底是在搞乱我的配置。但是,按照接受的答案,我完成了以下设置,该设置似乎可以满足我的需要。

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

我不知道这是否是我想要的,但这就是我想要的。一系列子网,这些子网不可公开访问,但具有互联网连接以访问其他AWS服务。因此,我的Lambda资源,ECS等可以私下放置并访问所需的资源。

谢谢大家提供的信息。

2 个答案:

答案 0 :(得分:1)

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

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

更多信息,位于:

答案 1 :(得分:0)

当您说“我进行了测试,并且Lambda函数可以将我的IoT终端节点的IP解析为公共IP(54.xxx)”时,您的意思是DNS解析,或者您已在实际网络中进行了检查交通。

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

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