Я пытаюсь создать новое задание передачи данных в BigQuery, используя Python и google-cloud-bigquery-datatransfer , но у меня возникает ошибка:
google.api_core.exceptions.PermissionDenied: 403 У пользователя недостаточно прав: bigquery.transfers.update требуется для проекта PROJECT_ID
Я добавил свой код ниже, который не ужасно интересно. Я использую это при установке GOOGLE_APPLICATION_CREDENTIALS=/path/to/secrets/service-account.json
. У этой учетной записи службы есть статус Владелец , потому что я думал, что повышение ее привилегий может помочь мне преодолеть ошибку разрешений.
Теперь я начинаю думать, что этот API вообще не работает с сервисный аккаунт, или я с ума сошел? Я вижу authorization_code
и CheckValidAuth
в документации, но там указано, что они необязательны.
Работает ли API передачи данных Google BigQuery со служебными аккаунтами?
import os
import boto3
from google.cloud import bigquery_datatransfer_v1
import google.protobuf.json_format
client = bigquery_datatransfer_v1.DataTransferServiceClient()
parent = client.project_path('PROJECT_ID')
transfer_config = {
"destination_dataset_id": "neilo",
"display_name": "NeilO Data Transfer Test",
"data_source_id": "amazon_s3",
"params": {
"destination_table_name_template": "test_table",
"data_path": "s3://bucket/path/to/files/*.csv.gz",
"access_key_id": os.environ['AWS_ACCESS_KEY_ID'],
"secret_access_key": os.environ['AWS_SECRET_ACCESS_KEY'],
"file_format": "CSV"
},
"schedule": "daily"
}
transfer_config = google.protobuf.json_format.ParseDict(
transfer_config, bigquery_datatransfer_v1.types.TransferConfig())
response = client.create_transfer_config(parent, transfer_config)
Проблема