Доступ из заданий gcloud ml-engine к Big Query - PullRequest
0 голосов
/ 07 января 2019

У меня есть процесс Python ML, который подключается к BigQuery с использованием локального json файла, на который указывает переменная env GOOGLE_APPLICATION_CREDENTIALS (Файл содержит мои ключи, предоставленные Google, см. Проверка подлинности, начало работы )

При локальном запуске он прекрасно работает.

Я сейчас собираюсь развернуть мою модель с помощью движка Google Ml , в частности, используя команду оболочки gcloud ml-engine jobs submit training.

Однако после того, как я запустил свой процесс и просмотрел журналы в console.cloud.google.com/logs/viewer, я увидел, что gcloud не может получить доступ Bigquery, и я получаю следующую ошибку:

 google.auth.exceptions.DefaultCredentialsError: File:
 /Users/yehoshaphatschellekens/Desktop/google_cloud_xgboost/....-.....json was not found.

В настоящее время я не думаю, что gcloud ml-engine jobs submit training берет файл Json с собой (я думал, что gcloud автоматически имеет доступ к BigQuery, я думаю, нет)

Один необязательный обходной путь - сохранить мой личный .json в моих зависимостях python в другой папке подпакета (см. package-trainer ) и импортировать его.

Является ли это решение возможным / безопасным?

Есть ли другой способ обойти эту проблему?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

В конечном итоге я загрузил json в хранилище gcloud, а затем загружал его в свой проект каждый раз, когда запускаю процесс поезда ML-engine:

os.system('gsutil cp gs://secured_bucket.json .')
os.environ[ "GOOGLE_APPLICATION_CREDENTIALS"] = "......json"
0 голосов
/ 07 января 2019

путь должен быть абсолютным и с обратной косой чертой в Windows:

GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\[FILE_NAME].json"

установите это так в вашем коде Python:

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "C:\PATH.JSON"

Пример с Google Translate API здесь .

...