【发布时间】:2020-05-27 00:23:09
【问题描述】:
我正在尝试使用 Python 和 google-cloud-bigquery-datatransfer 在 BigQuery 中创建一个新数据传输作业,但我遇到了错误:
google.api_core.exceptions.PermissionDenied: 403 用户没有足够的权限:项目 PROJECT_ID 需要 bigquery.transfers.update
我在下面包含了我的代码,这并不是很有趣。我在设置GOOGLE_APPLICATION_CREDENTIALS=/path/to/secrets/service-account.json 时运行它。此服务帐户具有 Owner 状态,因为我认为提高其权限可能会让我摆脱权限错误。
现在我开始认为这个 API 根本不能用于服务帐户,还是我疯了?我在文档中看到了authorization_code 和CheckValidAuth,但它说它们是可选的。
Google BigQuery Data Transfer API 是否适用于服务帐号?
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)
问题是
【问题讨论】:
-
您能否确保此服务帐户已授予
bigquery.transfers.update和bigquery.transfers.get权限? -
是的,我什至应用了 Owner 角色,该角色包括对 BigQuery 中所有内容的完全权限。