尝试连接到Firestore后Lambda超时

时间:2019-03-18 09:51:11

标签: aws-lambda google-cloud-firestore

我有一个连续运行的lambda(间隔30分钟),当尝试连接到Firestore时超时。我真的不知道为什么会这样发生。.我在lambda开头就用过

 context.callbackWaitsForEmptyEventLoop = false;

有人可以帮我解决这个问题吗?...

2 个答案:

答案 0 :(得分:0)

Lambda函数有15分钟的限制。如果您超过该限制,他们将超时并且无法解决该问题。

您可以在docs中看到它:

  

您现在可以将函数的超时值设置为最多15的任何值   分钟。达到指定的超时后,AWS Lambda终止   执行Lambda函数。作为最佳做法,您应该设置   超时值基于您的预期执行时间,以防止   您的功能不会比预期的运行时间更长。

您还可以选中AWS Lambda Limits。尽管可以通过联系AWS来提高其中一些限制,但最长执行时间不是其中之一。

如果您的函数运行时间少于15分钟,则可以通过控制台(在基本设置下,我要附上屏幕截图)或aws-cli(或通过AWS SAM之类的框架)来增加函数的超时时间无服务器等,如果您正在使用的话。)

检查如何更改限制here

enter image description here

但是,我会尝试了解为什么您的功能在连接到Google的Firestore时会超时。我对Google Cloud一无所知,但也许您应该允许它上的出站流量。也许应该增加超时时间,但是Firebase可能阻止任何出站流量,从而使Lambda超时。如果您的Lambda不在VPC上,则它应该能够无缝连接到Internet,因此与Firebase的连接应该相当快。

我建议的另一件事是运行Lambda function under Node 8,因为您可以利用async/await的优势并摆脱起初非常混乱的contextcallback对象

答案 1 :(得分:0)

您的lambda函数可以访问互联网吗?这是一个非常常见的错误,您需要设置VPC的子网以使其能够访问Internet。

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