当我尝试ping数据库连接时,我的Lambda函数超时

时间:2019-01-07 18:39:50

标签: amazon-web-services go aws-lambda amazon-rds aws-lambda-go

这似乎很简单,但是每次连接都会超时。

这是Lambda函数中的代码(用Go编写)

package main

import (
    "database/sql"
    "log"

    _ "github.com/go-sql-driver/mysql"
    // "github.com/aws/aws-sdk-go/service/rds"
    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"
)

func Handler(request events.APIGatewayProxyRequest) {

    db, err := sql.Open("mysql", "username:password(my-database-address:3306)/db_name")

    if err != nil {
        log.Print(err.Error())
    }

    defer db.Close()

    err = db.Ping()

    if err != nil {
        log.Print(err.Error())
    }

}

func main() {
    lambda.Start(Handler)
}

很明显,我已经删除了真实的用户名,密码,地址和数据库名称,但是我已经验证它们都是正确的(我可以通过MySQLWorkbench连接到数据库,具有相同的详细信息)。

我假设它与权限有关?我的Lambda函数确实有权访问完整的RDS功能。

我还尝试删除了延迟db.Close(),以为它可能会无限期地保持打开状态,但这似乎并没有太大变化。

由于sql.Open实际上并未创建连接,因此我在没有 db.Ping的情况下工作。

我是AWS的新手,因此无法弄清楚如何调试它。我在哪里可以找到记录在案的事件,显示阻塞在哪里?还是我在这里进行的连接有问题?

0 个答案:

没有答案