我有一个简单的lambda函数,它可以连接数据库并找到用户。
import pymongo
def my_handler(event, context):
client = pymongo.MongoClient('uri') #My db connection here.
db = client.dbName
col = db.users
col.find_one({'email':'example@gmail.com'})
foundedUser = col.find_one({'hello':'Amazon DocumentDB'})
print(foundedUser)
client.close()
我遇到了一个奇怪的问题,有时lambda会连接并找到100ms或更短的时间。 但是有时30秒后会出现超时错误。 我有所有的vpc配置,依此类推。 我已经尝试使用node.js进行修改,现在尝试使用python结果是相同的。 有什么建议吗?
答案 0 :(得分:0)
所以我遇到了同样的问题。看看这些。
https://blog.cloudboost.io/i-wish-i-knew-how-to-use-mongodb-connection-in-aws-lambda-f91cd2694ae5
https://www.mongodb.com/blog/post/optimizing-aws-lambda-performance-with-mongodb-atlas-and-nodejs
还有这个
https://hackernoon.com/building-a-serverless-rest-api-with-node-js-and-mongodb-2e0ed0638f47
显然,AWS Lambda是“无状态的”,据我了解,一旦冷启动调用此函数,它将运行您的代码并连接到数据库。之后,您在一定时间内(例如5分钟)对Lambda函数进行的任何调用都将使用相同的连接。之后,如果关闭连接并再次调用函数,则Lamda不会重新建立与数据库的连接。
这些教程有望帮助设置它,以便它在每次函数调用时检查连接。