Колба на GAE - Соединиться с Google API - Не могу использовать файл JSON
Я довольно плохо знаком с Flask, GAE и использованием API. Я пытаюсь создать базовое веб-приложение, которое может подключаться к одному из API Google.
Моя структура папок выглядит так (я сохранил ее для основных файлов):
приложение-webemotions:
-app.yaml
-main.py
-lib
--sentimentanalysis.py
-static
--credential.json
Все работает, кроме предоставления файла JSON для учетных данных. Насколько я понимаю, есть несколько способов сделать это:
1) Настройка переменной среды GOOGLE_APPLICATION_CREDENTIALS для места назначения моего файла в app.yaml
2) Запрос файла через мой скрипт (sentimentanalysis.py)
К сожалению, я не смог сделать ни одну из этих работ.
Опция 1):
В app.yaml у меня есть строка:
env_variables:
GOOGLE_APPLICATION_CREDENTIALS: static/key/credentials.json
Затем я запускаю свой код через dev_appserver.py . и получите следующую ошибку:
ApplicationDefaultCredentialsError: File static/key/credentials.json (pointed by GOOGLE_APPLICATION_CREDENTIALS environment variable) does not exist!
Вариант 2): у меня есть строка кода в моем скрипте sentimentanalysis.py:
scope = ['https://www.googleapis.com/auth/cloud-platform']
credentials = ServiceAccountCredentials.from_json_keyfile_name('/static/credentials.json', scope)
И при запуске кода я получаю следующую ошибку:
raise IOError(errno.EACCES, 'file not accessible', filename)
IOError: [Errno 13] file not accessible: '/static/credentials.json'
INFO 2016-08-06 04:10:51,678 module.py:788] default: "POST /Sentiment-analysis HTTP/1.1" 500 -
Вопрос:
Таким образом, похоже, что независимо от метода, который я использую, я не могу предоставить правильный путь к файлу JSON
Мой вопрос заключается в том, чтобы сначала узнать, является ли какой-либо из перечисленных выше вариантов правильным, и если да, что я делаю неправильно? Если они не являются правильными вариантами, что бы вы порекомендовали?
Извиняюсь, если об этом уже спрашивали, я пытался найти ответ в течение нескольких часов и не смог его взломать...
Спасибо!
2 ответа
Если вы работаете в Google App Engine, ваш код автоматически получает необходимые учетные данные. Не устанавливайте GOOGLE_APPLICATION_CREDENTIALS и не вызывайте.from_json_keyfile_name. Вместо этого позвоните:
credentials = GoogleCredentials.get_application_default()
Как показано здесь: https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/bigquery/api/getting_started.py
set GOOGLE_APPLICATION_CREDENTIALS=credentials.json используйте эту команду, если вы используете cmd