Я запускаю несколько проектов, использующих один и тот же исходный код (python) в GAE. В настоящее время я пытаюсь включить функциональность BigQuery в эти проекты. Я включил BigQuery API во всех проектах, успешно импортировал некоторые данные в BigQuery из GCS с помощью новой консоли разработчика. Я могу делать запросы из приложения GAE, используя AppAssertionCredentials из некоторых проектов, но получаю сообщение 403 "Доступ не настроен. API (BigQuery API) не включен для вашего проекта. Для обновления используйте консоль разработчиков Google. ваша конфигурация." ошибка для других.
tl;dr AppAssertionCredentials с BigQuery не работает для некоторых проектов, но не для других (тот же исходный код)
Во всех проектах включен API BigQuery и выставление счетов. Я выполнил все шаги из приложения Google. Авторизация Engine для Google BigQuery
Единственная разница между проектами заключается в том, как они были созданы.
- Original project:
- project_id: project_A
- service_account: [email protected]
- Second project:
- project_id: project_B
- service_account: [email protected]
- Third project (cloned from poject_A):
- project_id: project_C
- service_account: [email protected]
Третий проект project_C был создан с использованием функции клонирования старой консоли appengine, поэтому он использует тот же адрес электронной почты сервисного аккаунта. Это проект, для которого AppAssertionCredentials не работает при попытке запроса BigQuery (хотя все работает нормально при аутентификации в GCS с теми же учетными данными).
Я добавил [email protected] в список разрешений project_C с разрешениями «Изменить» - это не помогло. Код обнаружения службы:
from googleapiclient.discovery import build
from oauth2client.appengine import AppAssertionCredentials
credentials = AppAssertionCredentials('https://www.googleapis.com/auth/bigquery')
return build('bigquery', 'v2', credentials=credentials)
Есть ли обходной путь этой проблемы или, может быть, что-то еще, что мне нужно проверить? Я действительно хотел бы избежать использования любого другого метода авторизации, кроме AppAssertionCredentials.