【发布时间】:2021-01-10 17:38:33
【问题描述】:
我可以将 json 文件从 Project_A 推送/加载到 Project_B 的 BigQuery 吗?如果是怎么办? 我试过的代码
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = key_file_of_proj_B
client = bigquery.Client()
client.load_table_from_file(
source_json_file,table_ref_of_proj_B,location="US",
job_config=job_config)
现在,当我在 project_A 中运行它时,CloudFunction 开始抛出错误,因为它找不到 table_ref_of_proj_B(因为它在 Proj A 中搜索)。
我还尝试过使用 Service_Credentials,例如在 Proj_A 中使用 os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = proj_B_key_file 设置 Proj_B 的服务凭据,但不知何故它没有帮助。 有什么想法吗?
用例:我有一些服务,例如从一堆平台中提取数据,然后根据需要将数据填充回客户端的 BigQuery 表中。
【问题讨论】:
-
您的流程的真正目的是什么?我问它是因为您可能正在尝试一些低效的东西,我想确保为您提供正确的见解。
-
作为一个快速答案,您不需要将项目 B 中的专用密钥文件作为函数的标识。而是在项目 B 的 IAM 权限中向您的云函数声明关联的服务帐户,并对其设置正确的权限。 {bigquery.tables.create,bigquery.tables.updateData,bigquery.jobs.create}。并且参考应该遵循模式; PROJECT_ID:DATASET.TABLE
-
感谢@chaiyachaiya 的回复 - 添加了用例。
标签: google-cloud-platform google-bigquery google-cloud-functions