簡體   English   中英

使用AWS Lambda和Golang連接到AWS RDS PostgreSQL

[英]Connect to AWS RDS PostgreSQL with AWS Lambda and Golang

我正在嘗試從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")

我在db.Ping()和我得到的日志中有錯誤

Cannot ping db
dial tcp: address tcp/something.eu-west-3.rds.amazonaws.com: unknown port: OpError
null

我使用pq庫,導入為_ "github.com/lib/pq"

我嘗試在主機之后的url中添加默認端口5432 ,但沒有結果。

我確定我錯過了一個愚蠢的關鍵點,plz halp

手動創建連接URL時,需要轉義路徑特殊變量:

dnsStr := fmt.Sprintf("postgres://%s:%s@%s/testdb",
    "rdsadmin", url.PathEscape(authToken), "something.eu-west-3.rds.amazonaws.com")

另外,打印連接ping錯誤可能很有用:

fmt.Printf("Cannot ping db: %s\n", err)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM