AWS Lambda function stops being able to connect?
我有一个lambda函数,使用CloudWatch计划的事件每小时运行一次。
当被触发时,该函数向Internet上的服务发出一个HTTP请求,然后在收到响应后,在向同一个服务发出多个HTTP请求之前,在我们的VPC内执行一些SQL查询。
由于SQL数据库的原因,lambda必须在我们的vpc中运行。所以为了连接到互联网,我将我们的nat网关子网包含在lambda的vpc子网中。
我尝试了多次销毁和创建此lambda函数,每次都有相同的结果:
它按预期运行几小时。然后,在这之后,它再也不会成功,因为为第一个HTTP请求建立TCP连接的尝试确实失败了。只有在我用相同的代码和配置创建了一个全新的lambda函数之后,它才能连接到Internet。
怎么会这样?
I've included our NAT gateway subnet among the Lambda's VPC subnets.
号
这绝对是一个错误的配置。
需要Internet访问的lambda函数需要位于其默认路由指向NAT网关的子网上——其中任何一个子网都不能是具有实际NAT网关的子网。NAT网关从不向与网关本身位于同一子网上的任何实例提供NAT服务。