这似乎是一件非常简单的事情,但我的连接每次都会超时。
这是 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 的新手,所以我无法弄清楚如何调试它。我在哪里可以找到显示阻塞位置的记录事件?还是我在这里建立的连接有问题?