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?