PostgREST в Google Cloud SQL: unix формат URI сокета? - PullRequest
0 голосов
/ 05 марта 2020

Кто-нибудь из вас имеет опыт работы с PostgREST и Cloud SQL?

Мой экземпляр SQL готов к работе с открытым доступом (0.0.0.0/0), и я могу получить к нему доступ через локальный PostGREST с помощью прокси-приложения Cloud.

Теперь я хочу запустить Postgrest из экземпляра того же проекта, но не могу найти формат URI для Postgrest, который поддерживает формат Cloud SQL, поскольку Google SQL Cloud использует только сокеты unix как /cloudsql/INSTANCE_CONNECTION_NAME

Конфиг 1

db-uri = "postgres://postgres:password@/unix(/cloudsql/INSTANCE_CONNECTION_NAME)/mydatabase"
db-schema = "api"
jwt-secret = "OOcJ7VoSY1mXqod4MKtb9WCCwt9erJkRQ2tzYmLb4Xe="
db-anon-role = "web_anon"
server-port=3000

Возвращает {"details":"could not translate host name \"unix(\" to address: Unknown host\n","code":"","message":"Database connection error"}

Конфиг 2

db-uri = "postgres://postgres:password@/mydatabase?unix_socket=/cloudsql/INSTANCE_CONNECTION_NAME"
db-schema = "api"
jwt-secret = "OOcJ7VoSY1mXqod4MKtb9WCCwt9erJkRQ2tzYmLb4Xe="
db-anon-role = "web_anon"
server-port=3000

Синтаксический анализатор отклоняет вопросительный знак {"details":"invalid URI query parameter: \"unix_socket\"\n","code":"","message":"Database connection error"}

Конфигурация 3

db-uri = "postgres://postgres:password@/mydatabase"
db-schema = "api"
jwt-secret = "OOcJ7VoSY1mXqod4MKtb9WCCwt9erJkRQ2tzYmLb4Xe="
db-anon-role = "web_anon"
server-port=3000
server-unix-socket= "/cloudsql/INSTANCE_CONNECTION_NAME"

server-unix-socket, по-видимому, принимает только путь к файлу блокировки сокета. Подавая его /cloudsql/INSTANCE_CONNECTION_NAME пытается удалить файл, как в `postgrest.exe: / cloudsql / INSTANCE_CONNECTION_NAME: DeleteFile" / cloudsql / INSTANCE_CONNECTION_NAME ": неверный аргумент t (неверный синтаксис имени файла, имени каталога или метки тома).

Документация

Облако SQL Do c

PostgREST

Среда

  • PostgreSQL версия: 11
  • Версия PostgREST: 6.0.2
  • Операционная система: Win10 и Alpine

1 Ответ

0 голосов
/ 19 марта 2020

В соответствии с Соединение с облаком SQL, например:

# postgres+pg8000://<db_user>:<db_pass>@/<db_name>?unix _sock = / cloudsql //. S.PG SQL .5432

Затем вы можете попробовать с (Как упоминалось @ marian.vladoi):

db-uri = "postgres://postgres:password@/mydatabase?unix_socket=/cloudsql/INSTANCE_CONNECTION_NAME/.s.PGSQL.5432"

Имейте в виду, что имя соединения должно включать:

ProjectID:Region:DatabaseName

Например: myproject:myregion:myinstance

В любом случае, вы можете найти здесь больше опций для подключения из внешних приложений и из Google Cloud .

...