将服务帐户与Google云数据流配合使用

时间:2017-03-01 15:08:51

标签: java google-cloud-dataflow

我正在尝试使用服务帐户运行Dataflow作业。 我正在使用GcpOptions标志:

--serviceAccountKeyfile="dataflow-service-account.p12" --serviceAccountName="dataflow"

我收到以下错误:

Unable to verify that GCS bucket exists.com.google.cloud.dataflow.sdk.util.DataflowPathValidator.verifyPathIsAccessible(DataflowPathValidator.java:84)
com.google.cloud.dataflow.sdk.util.DataflowPathValidator.validateOutputFilePrefixSupported(DataflowPathValidator.java:63)
com.google.cloud.dataflow.sdk.runners.DataflowPipelineRunner.fromOptions(DataflowPipelineRunner.java:274)

我想针对应用程序默认凭据使用服务帐户凭据。

2 个答案:

答案 0 :(得分:1)

serviceAccountName 可以是服务帐户的完整电子邮件地址。这通常是在谷歌API中识别它们的方式。通常类似于: name@project.iam.gserviceaccount.com

此外,您需要根据the docs.

在IAM中添加一系列角色

我需要:

  1. Compute Instance Admin
  2. Dataflow Developer
  3. Dataflow Worker
  4. Logs Writer
  5. 服务帐户主管
  6. 存储对象管理

答案 1 :(得分:0)

我发布关于这个问题的更新,因为参数名称已更改。

参数现在在 Java 中为 --serviceAccount,在 Python 中为 --service_account_email

指定的 SA 应具有以下形式:my-service-account-name@<project-id>.iam.gserviceaccount.com

设置这个值会改变worker service account,完整的解释可以在here找到。