我们可以使用 GCP 中项目 A 的项目 B 模板触发数据流作业(Apache Beam)吗

Can we trigger Dataflow job(Apache beam) using template of project B from project A in GCP

我遇到了一个问题,需要帮助。它与 GCP 数据流 (Apache Beam) 有关。

我在项目 B 中创建了一个数据流模板,如果我 运行 使用个人电子邮件或服务帐户,一切正常。

我正在使用项目 A (sa-A@PROJECT-A) 中定义的服务帐户从其他项目 A 中寻找 运行 项目 B 的数据流模板的解决方案。 sa-A@PROJECT-A 已经在项目 B 中拥有必要的权限。

我已经尝试使用下面的 gcloud 命令

gcloud dataflow jobs run BigQueryToBigQuery \
    --gcs-location gs://{GCS bucket}/templates/BigQueryToBigQuery \
    --parameters query=bigQueryTableName={projectID}:{dataset}.{table} \
    --region=us-east1

其中使用的 gcs-location 是项目 B 中存在的模板的位置。

当我使用项目 A 的服务帐户时,它会触发项目 A 中的作业,但不会触发项目 B 中的作业。当我 运行 使用项目 B 的服务帐户时,会引发错误 Current user cannot act as service account...

我们将不胜感激。

我找到了解决方案,只是想在这里 post 这样对其他人也有帮助。

如果我们需要从项目 A 触发数据流作业并在项目 B 上 运行 它,则必须使用带有 --project 标志的上述命令。完整的命令是:

gcloud dataflow jobs run BigQueryToBigQuery \
    --gcs-location gs://{GCS_bucket}/templates/BigQueryToBigQuery \
    --parameters query=bigQueryTableName={projectA_ID}:{dataset}.{table} \
    --region=us-east1 \
    --project=projectB_ID