0

这似乎是一件非常简单的事情,但我的连接每次都会超时。

这是 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 功能。

我还尝试删除 defer db.Close() 认为它可能会无限期地打开连接,但这似乎并没有太大变化。

我让它在没有db.Ping 的情况下工作,因为 sql.Open 实际上并没有创建连接。

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

4

0 回答 0