我可以 运行 项目之间的数据流作业吗?

Can I run dataflowjob between projects?

我想将项目 A 中的 Cloud Spanner 中的数据作为 AVRO 导出到项目 B 中的 GCS。 如果我在项目 B 中的服务帐户在项目 A 中获得 spanner.read 访问权限,我可以 运行 来自项目 B 的数据流作业,模板为:Cloud_Spanner_to_GCS_Avro 并写入项目 B 中的 GCS 吗?

我已经在控制台和以下命令中进行了尝试:

gcloud dataflow jobs run my_job_name 
--gcs-location='gs://dataflow-emplates/latest/Cloud_Spanner_to_GCS_Avro' 
--region=my_region 
--parameters='instanceId=name_of_instance,databaseId=databaseid,outputDir=my_bucket_url 
--service-account-email=my_serviceaccount_email

我不确定如何指定 Spanner 实例的 projectId。 使用项目 B 中的此命令,它会在项目 B:s Spanner 中查找,但找不到实例和数据库。

我试过设置:instanceId=projects/id_of_project_A/instances/ name_of_instance 但它不是有效输入

可以,您必须在 dataflow service account

上授予正确的授权

我建议您使用 "user-managed service account"。默认是 Compute Engine 默认服务帐户,在宿主项目上具有 editor 角色,授权过多....

所以答案似乎是某些模板是可能的,或者如果您编写自定义模板,但不是我想要使用的模板,则可以从 Spanner 批量导出到 GCS Avro 文件。 并且它可能会在将来更新模板时添加。