簡體   English   中英

數據庫連接掛在 AWS Lambda 上

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM