Я хотел бы позвонить BigQuery V2 jobs.get API с python и служебной учетной записью.
В целях разработки я создал служебную учетную запись с разрешениями Owner + BigQuery Admin и загрузил файл локально.Области для вызовов были получены с сайта API Explorer *1006*.
from apiclient.discovery import build
from google.oauth2 import service_account
job_id = "df976258-aa9c-4fd1-ae8d-7604abc6d6e7"
key_path = "/path/to/sa/file/sa-key-file.json"
credentials = service_account.Credentials.from_service_account_file(key_path)
scoped_credentials = credentials.with_scopes(
['https://www.googleapis.com/auth/bigquery',
'https://www.googleapis.com/auth/bigquery.readonly'
'https://www.googleapis.com/auth/cloud-platform'
'https://www.googleapis.com/auth/cloud-platform.read-only'])
service = build('bigquery', 'v2', credentials=scoped_credentials)
Локальная отладка этого кода приводит меня к неверной авторизации:
service._http.credentials.valid # returns False
Следующий вопрос:
Если аутентификация работает, как мне вызвать метод jobs.get?Я пробовал несколько комбинаций, но всегда получаю ошибку:
service.jobs().get() # {TypeError}Missing required parameter "jobId"
service.jobs().get(project-id, job_id) # {TypeError}method() takes 1 positional argument but 3 were given
service.jobs(job_id).get(project-id) # {TypeError}methodResource() takes 1 positional argument but 2 were given
service.jobs(project_id).get(job_id) # {TypeError}methodResource() takes 1 positional argument but 2 were given
service.jobs().get(job_id) # {TypeError}methodResource() takes 1 positional argument but 2 were given