在使用BigQuery Python客户端时,如遇到写入结果出现permission denied错误,可能是因为Google Cloud Storage存储桶权限设置不正确,需要为该存储桶授权给BigQuery服务账号。可以参考以下代码示例,将存储桶的访问权限设置为authorized_viewers,确保BigQuery服务账号被授权访问。
from google.cloud import storage
# set storage client
storage_client = storage.Client()
# set bucket
bucket = storage_client.bucket('your-bucket-name')
# set bucket IAM policy
policy = bucket.get_iam_policy(requested_policy_version=3)
# add bigquery service account as an authorized viewer
policy.bindings.append({
"role": "roles/storage.objectViewer",
"members": {"serviceAccount": "bigquery-{project-id}@bigquery-encryption.iam.gserviceaccount.com"}
})
# set bucket IAM policy
bucket.set_iam_policy(policy)
需要注意的是,your-bucket-name应该替换为您自己的存储桶名称,bigquery-{project-id}@bigquery-encryption.iam.gserviceaccount.com应该替换为您自己的BigQuery服务账号ID。