Прокси Google Cloud SQL не смог найти учетные данные по умолчанию

Я пытаюсь запустить прокси Google Cloud SQL локально следующим образом:

$ ./cloud_sql_proxy -instances project-name:region-name:instance-id tcp:3306

Но он возвращает

google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for mor information.

Мой Google Cloud SDK уже установлен и зарегистрирован в Google.

Как это исправить?

Ответ 1

Две проблемы могут быть причиной вашей проблемы.

Чтобы узнать, что такое логин, используйте:

gcloud auth login

1. У вас нет учетных данных по умолчанию для приложения

Если у вас есть последняя версия gcloud, вы получите:

WARNING: `gcloud auth login` no longer writes application default credentials.

Чтобы ваше локальное приложение использовало ваши учетные данные, вам нужно сделать (ref):

gcloud auth application-default login

Если вы не видите это предупреждение, рассмотрите обновление gcloud, используя:

gcloud components update

2. Вы не определили свой проект

После входа в систему вы должны увидеть:

Your current project is [project-id].

Еще раз два решения:

а. Связать проект

Если вы этого не видите, сделайте (ref):

gcloud config set project PROJECT_ID

б. Использовать глобальный флаг --project в вызове

В вашей команде связать проект:

.\cloud_sql_proxy -instances=project-id:region-name:instance-id=tcp:3306 --project=project-id

Ответ 2

Учетные данные по умолчанию для Google Apps управляются отдельно от учетных данных gcloud.

Использование

gcloud auth application-default login

вместо этого настроить учетные данные пользователя как приложение по умолчанию. Подробнее см. reference.

Ранее gcloud auth login сделал это, но с более поздними версиями Cloud SDK это уже не так.

Обратите внимание, что изменение конфигурации gcloud или учетной записи настройки не будет обновлять учетные данные по умолчанию для приложения. Для управления ими могут использоваться только команды gcloud auth application-default.

Также, чтобы использовать учетную запись службы как учетные данные по умолчанию приложения, вы можете использовать ее напрямую, загрузив ее json-ключ из разработчика console.

Ответ 3

Если вы находитесь в среде CI/CD без доступа к браузеру:

или если вы просто хотите автоматизировать процесс.

Вместо запуска gcloud auth application-default login необходимо gcloud auth application-default login местоположение json файла учетной записи службы, используя переменную $GOOGLE_APPLICATION_CREDENTIALS

например, echo "export GOOGLE_APPLICATION_CREDENTIALS=${TF_VAR_gcp_service_account_file_loc}" >> $BASH_ENV (если вам нужно переместить переменные env между шагами/заданиями). $BASH_ENV - это специальное свойство, предоставляемое CircleCI, если вы используете другой инструмент CI/CD, вам нужно будет найти местоположение профиля bash.

или просто export GOOGLE_APPLICATION_CREDENTIALS=[path-to-service-account-json-file] для использования на том же шаге