我有一个连续运行的lambda(间隔30分钟),当尝试连接到Firestore时超时。我真的不知道为什么会这样发生。.我在lambda开头就用过
context.callbackWaitsForEmptyEventLoop = false;
有人可以帮我解决这个问题吗?...
答案 0 :(得分:0)
Lambda函数有15分钟的限制。如果您超过该限制,他们将超时并且无法解决该问题。
您可以在docs中看到它:
您现在可以将函数的超时值设置为最多15的任何值 分钟。达到指定的超时后,AWS Lambda终止 执行Lambda函数。作为最佳做法,您应该设置 超时值基于您的预期执行时间,以防止 您的功能不会比预期的运行时间更长。
您还可以选中AWS Lambda Limits。尽管可以通过联系AWS来提高其中一些限制,但最长执行时间不是其中之一。
如果您的函数运行时间少于15分钟,则可以通过控制台(在基本设置下,我要附上屏幕截图)或aws-cli(或通过AWS SAM之类的框架)来增加函数的超时时间无服务器等,如果您正在使用的话。)
检查如何更改限制here
但是,我会尝试了解为什么您的功能在连接到Google的Firestore时会超时。我对Google Cloud一无所知,但也许您应该允许它上的出站流量。也许应该增加超时时间,但是Firebase可能阻止任何出站流量,从而使Lambda超时。如果您的Lambda不在VPC上,则它应该能够无缝连接到Internet,因此与Firebase的连接应该相当快。
我建议的另一件事是运行Lambda function under Node 8,因为您可以利用async/await的优势并摆脱起初非常混乱的context
和callback
对象
答案 1 :(得分:0)
您的lambda函数可以访问互联网吗?这是一个非常常见的错误,您需要设置VPC的子网以使其能够访问Internet。
https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/