无法使用 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...