我正在管理Terraform的两个GCP项目:
生产和测试。
Production上运行着一个活动工作流,它将数据写入大查询数据库。现在我想在Test上创建一个实例来处理数据。
如何从测试访问生产大查询中的数据?
该服务帐户当前具有角色roles/bigquery.dataEditor、roles/bingquery.jobUser和roles/bigquery.user,但这似乎是特定于项目的?
根据@guillaume和@Stan的建议,您可以通过在测试项目中为您的服务帐户/用户赋予适当的角色,在生产项目中提供对数据集的访问。有关详细过程,请参阅本文档。
请注意,为了能够查询数据集中的表,您需要在项目中运行查询作业的权限,这可以通过将角色/bigquery.jobUser角色分配给项目的服务帐户/用户来完成。
如果您使用服务帐户,您的初始化将如下所示:
Google::Cloud::Bigquery.new(
credentials: JSON_KEY_FROM_HOST_PROJECT,
project_id: THE_REMOTE_PROJECT_ID
)
问题是JSON_KEY来自Host Project,而Project_ID来自Remote Project。通常,人们会期望project_id是查询的一部分,而不是客户端连接,特别是因为JSON_KEY绑定到它自己的特定project_id。
这些文件没有给出好的例子。