Моя лямбда-функция истекает, когда я пытаюсь пропинговать соединение с БД

Это кажется очень простой вещью, но мое соединение прерывается каждый раз.

Вот код в функции 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, поэтому мне сложно понять, как это отладить. Где я могу найти зарегистрированное событие, показывающее, где находится блокировка? Или что-то не так в связи, которую я здесь устанавливаю?

0 ответов

Другие вопросы по тегам