Lud*_*ope 5 postgresql go amazon-rds aws-lambda
我正在尝试从 Go 中的 lambda 连接到 AWS RDS PosgreSQL 数据库。
authToken
日志中看起来不错。
creds := credentials.NewEnvCredentials()
authToken, err := rdsutils.BuildAuthToken("something.eu-west-3.rds.amazonaws.com", "eu-west-3", "Username", creds)
if err != nil {
fmt.Println("Cannot create db auth token")
return response.Status(500), err
}
// Create the DNS string for the DB connection
// // user:password@protocol(endpoint:port)/dbname?<params>
dnsStr := fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=verify-full",
"Username", authToken, "something.eu-west-3.rds.amazonaws.com", "table_name",
)
db, err := sql.Open("postgres", dnsStr)
if err != nil {
fmt.Println("Cannot open db")
return response.Status(500), err
}
err = db.Ping()
if err != nil {
fmt.Println("Cannot ping db")
return response.Status(500), err
}
fmt.Println("Connection established")
Run Code Online (Sandbox Code Playgroud)
db.Ping()
我在、 和我收到的日志中出现错误
Cannot ping db
dial tcp: address tcp/something.eu-west-3.rds.amazonaws.com: unknown port: OpError
null
Run Code Online (Sandbox Code Playgroud)
我使用该pq
库,导入为_ "github.com/lib/pq"
我尝试5432
在 url 中的主机后面添加默认端口,但没有结果。
我确信我错过了一个愚蠢的关键点,请停止
当您手动创建连接 URL 时,您需要转义路径特殊变量:
dnsStr := fmt.Sprintf("postgres://%s:%s@%s/testdb",
"rdsadmin", url.PathEscape(authToken), "something.eu-west-3.rds.amazonaws.com")
Run Code Online (Sandbox Code Playgroud)
打印连接 ping 错误也可能很有用:
fmt.Printf("Cannot ping db: %s\n", err)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5077 次 |
最近记录: |