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"

Спасибо за помощь. Я буду рад добавить любые подробности, если кто-то еще столкнется с этой проблемой.

Вернуться на верх