微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用 AWS Amplify 连接到 postgres 数据库

如何解决无法使用 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 举报,一经查实,本站将立刻删除。