如何解决无法使用 AWS Amplify 连接到 postgres 数据库
我已使用具有 Go Lambda 函数的后端设置 AWS Amplify。我正在尝试连接到 RDS 上的 postgres 数据库,但它似乎无法 ping 通它(我可以使用具有相同输入的 sql 工作台进行连接)。
在日志上,您可以看到“尝试连接”,但除了结束请求 ID 等之外别无其他
如果它适用于 sql 工作台,那么它应该适用于 Go。我哪里出错了?
Go 代码是:
package main
import (
"bytes"
"context"
"database/sql"
"encoding/json"
"fmt"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
_ "github.com/lib/pq"
)
type Response events.APIGatewayProxyResponse
const (
host = "***.***.***.*****.amazonaws.com"
port = 5432
user = "postgres"
password = "********"
dbname = "*******"
)
func Handler(ctx context.Context,request events.APIGatewayProxyRequest) (Response,error) {
var buf bytes.Buffer
fmt.Println("trying to connect")
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=require",host,port,user,password,dbname)
db,err := sql.Open("postgres",psqlInfo)
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("connected")
body,err := json.Marshal(map[string]interface{}{
"message": a2,})
if err != nil {
return Response{StatusCode: 404},err
}
json.HTMLEscape(&buf,body)
resp := Response{
StatusCode: 200,IsBase64Encoded: false,Body: buf.String(),Headers: map[string]string{
"Content-Type": "application/json","X-MyCompany-Func-Reply": "hello-handler","Access-Control-Allow-Origin": "*","Access-Control-Allow-Methods": "POST,GET,OPTIONS,PUT,DELETE","Access-Control-Allow-Headers": "Accept,Content-Type,Content-Length,Accept-Encoding,X-CSRF-Token,Authorization",},}
return resp,nil
}
func main() {
lambda.Start(Handler)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。