Некоторое предисловие:
- У меня нет доступа к проекту, в котором размещена postgres БД.
- Человек, имеющий доступ к проект, и тот, кто настраивал БД, не может работать со мной напрямую над этим. Мне сказали, что они следовали документации GCP и что с их стороны все настроено правильно.
- Я могу подключиться из моего локального развертывания приложения, потому что человек, установивший экземпляр БД разрешил мой IP-адрес; это не работает для гибкого развертывания движка приложения.
Проблема:
У меня есть гибкий экземпляр движка приложения, построенный на golang 1.12. Он подключается к экземпляру postgreSQL 11 DB Cloud SQL в другом проекте с помощью github.com/jinzhu/gorm со следующим кодом:
dbUri := fmt.Sprintf("host=%s user=%s dbname=%s password=%s", dbHost, dbUsername, dbName, dbPassword)
conn, err := gorm.Open("postgres", dbUri)
if err != nil {
log.Printf("Database error: %+v\n", err)
}
dbhost в настоящее время находится в формате IP-адреса базы данных. адрес.
- Я пробовал / cloudsql / project: region: instance
- Я пробовал /cloudsql/project:region:instance/.s.pgsql.5432
Соответствующие настройки из app.yaml, которые я использую:
beta_settings:
cloud_sql_instances: [project:region:instance]
- Я пробовал добавить = tcp: 5432 со всеми вариантами приведенного выше dbhost
Ошибки:
В журналах ядра приложения в облачной консоли при подключении отображается только следующая информация:
sql: база данных закрыта.
Насколько я понимаю, это означает, что невозможно создать соединение с базой данных.
Эта ошибка соответствует ошибке, которую я получаю при локальном запуске кода с любого компьютера, на котором нет был добавлен его IP-адрес как авторизованная сеть из экземпляра postgreSQL.
* 10 47 * Формализованный вопрос:
С учетом вышеизложенного, какой код, параметры, настройки и т. Д. c. мне нужно добавить или изменить, чтобы успешно подключиться из гибкого развертывания движка приложения к облаку SQL db?
Если бы у меня был доступ к проекту, где находится экземпляр postgres Cloud SQL , есть ли что-нибудь в c, что я мог бы сделать для обеспечения соединения?
Спасибо.