Сценарий Python BigQuery bigquery.jobs.create ошибка

Я пытаюсь выполнить простой запрос в Google BigQuery с помощью сценария Python, но получаю сообщение об ошибке ниже, что отсутствует в моей учетной записи службы bigquery.jobs.create разрешение.

Моя учетная запись службы имеет следующие роли:

  • владелец
  • BigQuery Admin
  • BigQuery Job User

Я также попытался создать пользовательскую роль с bigquery.jobs.create и применяя это к учетной записи службы, но все равно последовательно получаю эту ошибку. Что я делаю неправильно?

from google.cloud import bigquery
from google.oauth2 import service_account

project_id = "my-test-project"
credentials = service_account.Credentials.from_service_account_file("credentials.json")

client = bigquery.Client(
    credentials=credentials,
    project=project_id
)

print(client.project) # returns "my-test-project"
query = client.query("select 1 as test;")

Доступ запрещен: проект my-test-project: пользователь my-service-account @ my-test-project. iam.gserviceaccount.com не имеет разрешения bigquery.jobs.create в проекте my-test-project.

1 ответ

Решение

Аутентификация клиента с использованием client = bigquery.Client.from_service_account_json("credentials.json") является предпочтительным методом, чтобы избежать ошибок "Отказано в доступе". По той или иной причине (я не уверен, почему, поскольку bigquery использует токены доступа oauth 2.0 для авторизации запросов), установка учетных данных осуществляется через google.oauth2.service_account может привести к проблемам с разрешением.

Другие вопросы по тегам