В подключении AWS SAM golang lambda localhost отказано к postgres

Я не могу подключить лямбда-функцию AWS SAM к локальному экземпляру postgres. Я буду конкретен через мгновение, но сначала позвольте мне сказать, что тот же код работает для моего коллеги и что я пробовал использовать Postgres в контейнере докеров, а также устанавливал вручную. Чтобы упростить задачу, я начал с примера SAM helloworld golang и добавил следующее:

import (
  _ "github.com/lib/pq"
  "database/sql"
)
.
.
.
const (
    host     = "localhost"
    port     = 5432
    user     = "postgres"
    password = "postgres"
    dbname   = "postgres"
)
.
.
.
.
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
    "password=%s dbname=%s sslmode=disable",
    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("Successfully connected!")

И я получаю следующую ошибку:

dial tcp 127.0.0.1:5432: connect: connection refused: OpError
[{"path":"github.com/aws/[email protected]/lambda/function.go","line":35,"label":"(*Function).Invoke.func1"},{"path":"runtime/panic.go","line":969,"label":"gopanic"},{"path":"hello-world/main.go","line":67,"label":"handler"},{"path":"reflect/value.go","line":475,"label":"Value.call"},{"path":"reflect/value.go","line":336,"label":"Value.Call"},{"path":"github.com/aws/[email protected]/lambda/handler.go","line":124,"label":"NewHandler.func1"},{"path":"github.com/aws/[email protected]/lambda/handler.go","line":24,"label":"lambdaHandler.Invoke"},{"path":"github.com/aws/[email protected]/lambda/function.go","line":67,"label":"(*Function).Invoke"},{"path":"reflect/value.go","line":475,"label":"V
alue.call"},{"path":"reflect/value.go","line":336,"label":"Value.Call"},{"path":"net/rpc/server.go","line":377,"label":"(*service).call"},{"path":"runtime/asm_amd64.s","line":1374,"label":"goexit"}]

SAM CLI, версия 1.21.1

Я пробовал это на двух машинах и получил ту же ошибку. Есть что-то, чего мне просто не хватает? Я могу подтвердить, что база данных принимает соединения нормально. Я попадаю в него каждый день из приложения узла. Кроме того, я могу создать код golang вне SAM, и он будет работать нормально. Итак, что-то не так с моей настройкой SAM.


person Etwillms    schedule 22.03.2021    source источник


Ответы (1)


Догадаться. В лямбде мне нужно было установить строку подключения postgres для нажатия host.docker.internal

person Etwillms    schedule 22.03.2021