Доступ к хранилищу данных BigQuery Project1 из Python Облачная функция в проекте 2 с использованием учетной записи службы Json Ключ проекта 1 - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть 2 разных проекта в GCP.

Мне нужен доступ к BigQuery DataStore Project-1 . Создана необходимая служебная учетная запись Json Key.

Написана Python Облачная функция в Project-2 . Мне нужно получить доступ к хранилищу данных BigQuery Project-1. как я понимаю, мне нужно получить учетные данные из файла ключа json учетной записи службы (из Project-1). Загрузили файл ключа служебной учетной записи json в хранилище Project-2.

Я пытаюсь получить учетные данные из этого Json файла ключа. Пробовал использовать следующие методы:
credentials = service_account.Credentials.from_service_account_file (имя файла, scopes = 'https://www.googleapis.com/auth/cloud-platform') или client = bigquery.Client.from_service_account_ json (имя файла) или client = bigquery.Client.from_service_account_file (имя файла) или учетные данные = service_account.Credentials.from_service_account_info (service_account_info)

и я продолжаю получать ошибку,

[Errno 2] Нет такого файла или каталог: имя файла

Я пытался указать имя файла в качестве URL или LinkURL или Publi c URL файла Json.

Пожалуйста посоветуйте, как мы можем получить доступ к BigQuery Project-1 из облачной функции Project-2, и у меня есть служебная учетная запись Json ключ от Project-1.

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

#client = bigquery.Client.from_service_account_json(filetest)

из Python Cloud Function в проекте 2 с использованием служебной учетной записи Json ключ проекта 1

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

У служебных учетных записей есть почтовые адреса, такие как учетные записи пользователей.

Таким образом, вы можете предоставить необходимые разрешения для user@project2.iam.gserviceaccount.com для project1 набора данных / таблиц? Вам действительно нужна другая служебная учетная запись на project2 ?

0 голосов
/ 12 апреля 2020

Мне нужно сначала уточнить:

  1. Я заметил, что вы храните учетную запись службы в проекте 2 как передать это в свою облачную функцию? Используете ли вы какой-либо клиент gcs для чтения содержимого учетной записи службы, а затем задаете ее как GOOGLE_APPLICATIONS_CREDENTIALS переменная среды?
  2. Если вы уже создали учетную запись службы и загрузили ключ из project 1 тогда вам нужно только убедиться, что вы можете запрашивать данные, получив необходимый доступ, например, просмотрщик BigQuery, если вам нужно только запросить данные. После этого передайте учетные данные, и вы можете перейти к шагу, который вы уже упоминали ранее.
...