Невозможно подключиться к postgres cloudsql из движка приложения - PullRequest
0 голосов
/ 17 мая 2019

Я делаю свой первый проект движка приложения, используя Go.У меня есть облачный экземпляр sql и механизм приложений в одном проекте внутри облачной консоли.

В моем файле app.yaml есть следующее:

service: myservice
runtime: go
api_version: go1

env_variables:
  #for deploying
  #POSTGRES_CONNECTION: "user=postgres password=<redacted> dbname=my_database host=/cloudsql/myproject:us-west1:myserver"

  #for testing locally via cloud proxy
  POSTGRES_CONNECTION: "user=postgres password=<redacted> dbname=mydatabase sslmode=disable"


beta_settings:
  cloud_sql_instances: myproject:us-west1:myserver

handlers:

# All URLs are handled by the Go application script
- url: /.*
  script: _go_app

В коде, который я открываю, соединениекак это:

datastoreName := os.Getenv("POSTGRES_CONNECTION")
db, err := sql.Open("postgres", datastoreName)

На моей локальной машине у меня есть настройка cloud_sql_proxy, например:

./cloud_sql_proxy -instances=passio-nutrition-develop-bcb6:us-west1:nutrition-sqlite-source=tcp:5432

И с POSTGRES_CONNECTION, настроенным для локального тестирования, все работает отлично.

Однако, когда я устанавливаю POSTGRES_CONNECTION для развертывания и запускаю gcloud app deploy, я получаю сообщение об ошибке при попытке достичь конечной точки:

{"Op":"dial","Net":"unix","Source":null,"Addr":{"Name":"/cloudsql/myproject:us-west1:myserver/.s.PGSQL.5432","Net":"unix"},"Err":{"Syscall":"socket","Err":1}}

Я пробовал разныеверсии POSTGRES_CONNECTION, включая добавление =tcp:5432 в конец host и cloud_sql_instances, но я не могу подключиться к работе.

Если кто-нибудь может дать мне несколько советов, которые были бы хорошими

Ответы [ 2 ]

1 голос
/ 19 мая 2019

Убедитесь, что у вас включен API-интерфейс Cloud SQL Admin, и что ваша учетная запись службы App Engine по умолчанию имеет правильные разрешения IAM (ей должна быть роль Cloud SQL Connect или выше).

0 голосов
/ 17 мая 2019

Пример приложения. Yaml

время выполнения: go

api_version: go1

обработчики:

URL: / таблицы стилей

static_dir: таблицы стилей

url: /(.*.(gif|png|jpg))$

static_files: static / \ 1

загрузка: статическая /. *. (Gif | png | jpg) $

url: /.*

скрипт: _go_app

Подключение к Postgresql

основной пакет

импорт (

"базы данных / SQL"

"FMT"

_ "github.com/lib/pq"

)

const (

host = "localhost"

port = 5432

user = "postgres"

пароль = "ваш пароль"

dbname = "calhounio_demo"

)

func main () {

psqlInfo: = fmt.Sprintf ("хост = порт% s =% d пользователь =% s" +

"password=%s dbname=%s sslmode=disable",

host, port, user, password, dbname)

db, err: = sql.Open ("postgres", psqlInfo)

if err! = Nil {

panic(err)

}

отложено дБ. Закрыть ()

err = db.Ping ()

if err! = Nil {

panic(err)

}

fmt.Println («Успешно подключен!»)

}

...