doujian4752 2019-01-07 18:39
浏览 12

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

It seems like a very simple thing but my connection times out every time.

Here is the code in the Lambda function (written in 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)
}

Obviously I've removed the real username, password, address, and db-name but I've verified they are all correct (I can connect to the DB through MySQLWorkbench with the same details).

I'm assuming it has to do with permissions or something? My Lambda function does have permission to access full RDS functionality.

I also tried removing the defer db.Close() thinking maybe it's leaving the connection open indefinitely but that didn't seem to change much.

I had it working without the db.Ping since sql.Open doesn't actually create the connection.

I'm new to AWS so I'm having trouble figuring out how to debug this. Where would I find a logged event showing where the blockage is? Or is there something wrong in the connection I'm making here?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 运动想象脑电信号数据集.vhdr
    • ¥15 三因素重复测量数据R语句编写,不存在交互作用
    • ¥15 微信会员卡等级和折扣规则
    • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
    • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
    • ¥15 gdf格式的脑电数据如何处理matlab
    • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
    • ¥100 监控抖音用户作品更新可以微信公众号提醒
    • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
    • ¥70 2048小游戏毕设项目