AWS VPC Lambda函数不断丢失Internet访问权限

时间:2016-04-12 18:20:52

标签: node.js amazon-web-services aws-lambda amazon-elasticache vpc

希望有人可以帮助我解决这个问题。我目前正在研究一个lambda函数,该函数利用云监视调度程序来检查各种设备,并使用弹性缓存在读数上维护一个简单的数据库。

我的问题是我在晚上关闭测试后。我在早上启动lambda功能,功能无法访问互联网。其中由函数超时表示。经过几个小时的乱码我的路线和我的vpc设置后,它将重新开始工作。只是打破第二天。有时它只与nat实例一起使用nat网关。我通常对vpc设置所做的更改很小。我使用的设置模式是一个公共,一个私人和一个natgateway。

更新:昨天整天无法从我的VPC访问互联网,今天运行正常。我做了什么不同的事,没有。当它再次停止运行时,可能在今天晚些时候,我将调用AWS,看看我们是否可以找到它的底部。

3 个答案:

答案 0 :(得分:0)

具有VPC访问权限的Lambda函数将需要NAT网关才能访问互联网。您声明它有时仅适用于Internet网关,但根据AWS文档,这是不可能的。如果要删除NAT网关或VPC到NAT网关的路由,那么将从已启用VPC访问的任何Lambda函数中删除Internet访问。

答案 1 :(得分:0)

这听起来像是由于AWS Lambda使用的临时端口范围所致。我建议您检查所有网络ACLS(NACLS),以确保它们允许在ephemeral port range used by Lambda上进行通信:

  

AWS Lambda函数使用端口1024-65535

因此,这意味着当您运行lambda时,它可以使用该范围内的任何端口来发送与互联网的通信。即使目的地是端口80或443,发送端口也将在此临时范围内,因此,当Internet服务器做出响应时,它将把响应发送回原始临时端口。确保您的NACLS允许此临时范围(入站或出站,或两者都取决于您的使用情况)进行通信,否则可能会因使用哪个临时端口而被阻止。本文提供了有用的解释:https://www.whizlabs.com/blog/ephemeral-ports/

答案 2 :(得分:0)

我刚刚用lambda修复了同一问题-问题是我已将lambda设置为在我的所有子网(我有2个私有网络和1个公共网络)中运行。此知识库文章指定您应仅在专用子网中运行它们,这很有意义:

https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/

转到AWS控制台上的lambda页面,取消选择公共子网并保存,问题应得到解决。