VPC内的AWS Lambda。 504网关超时(ENI?)

时间:2020-04-24 04:47:19

标签: amazon-web-services aws-lambda aws-api-gateway

我在AWS上部署了一个无服务器.net核心Web api lambda应用程序。

当我在同一VPC内访问ElasticSearch服务时,我将它放在VPC内。

我有两个连接到Elasticsearch服务的API微服务。

一段时间不使用(4小时,6小时,18小时-我不确定,但似乎是随机的)后,该功能无响应,并且收到504网关超时错误,“找不到端点” < / p>

我在某处读到,如果“闲置”时间过长,则ENI将释放回AWS系统中,并且再次触发Lambda应该将其启动。

我似乎无法通过调用它来“唤醒”该函数,因为它不断因上述错误而超时(我还增加了默认超时)。

这是关键-如果我对特定的lambda函数进行了任何更改,并保存了这些更改(包括更改超时值之类的简单操作)-我的API调用(即使是不同的lambda,两者都可以)开始工作再次像它已经“踢”回去了。显然,更改是这样做的,但是为什么呢?

很明显,我不想在生产环境中使用超时,无论使用了多少lambda或API调用。

我需要一个防弹解决方案。当然,这是一些描述的配置问题,但是我不确定在哪里看。

我为VPC更改了路由表,公共/专用子网,CIDR块,创建了Internet网关,NAT等。所有这些都有效,但是需要VPC访问权的这两个lambda总是以某种方式“睡着”。

1 个答案:

答案 0 :(得分:0)

这是由于Lambda的冷启动。 reInvent 2019中发布了一个新功能,其中有针对lambda的预配置并发(不要与保留并发混淆)。

确保预配置的并发至少达到1(或并行处理的请求数量),以使lambda始终保持温暖并可以处理请求

参考:https://aws.amazon.com/blogs/aws/new-provisioned-concurrency-for-lambda-functions/

要获取更多上下文,VPC中的Lambda使用超平面ENI并在同一帐户中共享相同安全组的功能:子网配对使用相同的网络接口。

如果某个帐户中的Lambda函数闲置了一段时间(通常使用该ENI的所有函数在40分钟内没有使用,因为我这次从AWS支持获得此信息),该服务将回收未使用的Hyperplane资源,因此很少调用的函数可能仍会看到更长的冷启动时间。

参考:https://aws.amazon.com/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/