App engine+Postgresql получает ошибку "Connection refused" (Отказ в подключении)
Я новичок, пытаюсь развернуть игрушечное приложение django на стандартном App engine и получаю следующую ошибку.
Отказ в подключении Запущен ли сервер локально и принимает ли он соединения на доменном сокете Unix "/cloudsql/asim800:us-central1:django-app1/.s.PGSQL.5432"?
Мое приложение работает правильно локально с облачным SQL.
Мой settings.py выглядит следующим образом
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'HOST': '/cloudsql/asim800:us-central1:django-app1',
'NAME': 'myproject',
'USER': 'pblogsu',
'PASSWORD': '****',
}
}
Я могу видеть их правильно в следующем журнале:
{'database': 'myproject', 'host': '/cloudsql/asim800:us-central1:django-app1', 'password': 'pblogsu', 'user': 'hidden'}
Я включил Google Cloud SQL API. Я видел сообщения о похожей проблеме, как здесь (https://github.com/GoogleCloudPlatform/python-docs-samples/issues/870), но ни одно из предложений мне не помогло. Любая помощь будет очень признательна.
Проверьте параметры unix_socket_directories
и port
на сервере PostgreSQL. Чтобы ваша попытка подключения сработала
сервер должен работать на той же машине, что и клиент
cloudsql/asim800:us-central1:django-app1
должен быть вunix_socket_directories
port
должно быть 5432
Я наконец-то смог понять, что одну из учетных записей службы (связанную с GAE) нужно добавить в IAM & Admin> IAM и затем дать ей роль Cloud sql.Client.
Задним числом это кажется простым решением, но для того, чтобы решить проблему, пришлось немало покопаться. Я подозревал, что может быть проблема с правами, но не был уверен, какую учетную запись нужно добавить. Я получил первую подсказку, увидев эту ошибку в журналах:
"CloudSQL warning: your action is needed to update your application and avoid potential disruptions. Please see https://cloud.google.com/sql/docs/mysql/connect-overview for additional details: ensure that the account has access to "asim800:us-central1:django-mysql-1" (and make sure there's no typo in that name). Error during createEphemeral for asim800:us-central1:django-mysql-1: googleapi: Error 403: The client is not authorized to make this request., notAuthorized"
Спасибо за помощь. Я буду рад добавить любые подробности, если кто-то еще столкнется с этой проблемой.