google-bigquery - 我可以从 bigquery 导出到使用不同凭据访问的存储桶吗?
问题描述
我一直在阅读BigQuery > 文档 > 导出表数据 > 导出表数据,现在了解到我可以将数据从 bigquery 表导出到 GCS 存储桶中。此处提供的示例 Python 代码演示了在使用相同凭据访问 bigquery 表和存储桶时如何执行此操作:
destination_uri = 'gs://{}/{}'.format(bucket_name, 'shakespeare.csv')
dataset_ref = client.dataset(dataset_id, project=project)
table_ref = dataset_ref.table(table_id)
extract_job = client.extract_table(
table_ref,
destination_uri,
# Location must match that of the source table.
location='US') # API request
extract_job.result() # Waits for job to complete.
我想知道当使用不同的凭据访问 bigquery 表和存储桶时是否可以完成此操作。在我的实际情况中,我想做的是从 projectA 中的 bigquery 导出数据并将其存储在 projectB 拥有的存储桶中。使用不同的凭据访问 projectA 和 projectB。ProjectA 归第 3 方所有,我只能访问 bigquery,而不是任何存储桶。
这可能吗?如果可以,怎么做?我怀疑答案是否定的,但只是想我会问。
解决方案
如果您无权访问第 3 方存储桶,则无法执行此操作。正如Mikhail所指出的,如果您可以在未经许可的情况下上传到任何存储桶,那将是一个很大的安全漏洞。
目前,您可以提取查询并将它们保存在您的存储桶中,一旦您拥有权限,您就可以使用 Cloud Storage API或gsutil 命令将文件传输到第 3 方存储桶。