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