Как загрузить данные из корзины одного проекта в таблицу другого проекта на python? - PullRequest
0 голосов
/ 08 июня 2018

У меня есть два проекта.Я храню данные в project_A и строю таблицы в project_B.Я создал service_account.json для них обоих, но я не знаю, как использовать оба файла одновременно, когда мне нужно загрузить данные из project_A и построить таблицы в project_B.

Данные хранятся в URI:

gs://project_A//*

Таблица будет жить в project_B имя таблицы huge_table

from google import storage, bigquery

proj_a_client =  storage.Client.from_service_account_json(service_acct_A.json)
proj_b_client = bigquery.Client.from_service_account_json(service_acct_B.json)

dest_table = proj_b_client.dataset('DS_B').table('huge_table')
uri = 'gs://project_A//*'

job_config = bigquery.LoadJobConfig()
load_job = proj_b_client.load_table_from_uri(uri,
                                         dest_table,
                                         job_config=job_config)

Но я получаю ошибку:

google.api_core.exceptions.Forbidden: 403 Доступ запрещен: Файл gs: // project_A /: Доступ запрещен

1 Ответ

0 голосов
/ 09 июня 2018

Необходимо убедиться, что service_acct_B имеет доступ к хранилищу для project_A:

В project_A,

  • перейдите к IAM & admin
  • добавьте члена service_acct_B с (как минимум) Storage Object Viewer ролью

На самом деле, вы не используете / не нуждаетесь в service_acct_A здесь, поэтому proj_a_client = storage.Client.from_service_account_json(service_acct_A.json) является избыточным.

...