[英]Database connection hanging on AWS Lambda
我正在嘗試使用 Go 在 AWS Lambda 中進行基本的數據庫連接,由於某種原因,它卡在了 db.prepare() 並且 cloudwatch 中沒有顯示任何日志。
func Handler(request Request) (Response, error) {
db, err := sql.Open("mysql", dbUsername+":"+dbPassword+"@tcp("+dbURL+":"+dbPort+")/"+dbName)
if err != nil {
log.Fatal(err)
}
defer db.Close()
stmt, err := db.Prepare("SELECT id, password FROM package_passwords WHERE password = ?")
return Response{
Message: "rows",
Ok: false,
}, nil
}
奇怪的是,上面的代碼在 AWS Lambda 中停留了至少超過 5 秒,而它在普通的 go run/go build 中運行良好。
可能是 AWS 安全組
lambda 嘗試連接,但安全組超時,因為他們永遠阻止它
將 AWSLambdaVPCAccessExecutionRole 策略附加到您的 lambda 並確保 Lambda 在 VPC 中。 檢查數據庫安全組是否允許從 VPC 訪問
這個問題Allow AWS Lambda to access RDS Database中還有一些提示
如果是 RDS 操作,我認為它正在超時。 lambda 函數的默認超時為 6 秒,因此在使用 RDS 完成操作之前它會超時。 為避免這種情況,您不必增加超時。 相反,您可以將“callBackWaitsForEmptyEventLoop”設為 false 作為 lambda 函數中的第一行代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.