【问题标题】:Using Service Account with google cloud dataflow将服务帐户与谷歌云数据流一起使用
【发布时间】:2017-03-01 15:08:50
【问题描述】:

我正在尝试使用服务帐户运行 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)

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

【问题讨论】:

  • 这最常见的问题是 (1) 路径不存在或 (2) 指定的服务帐户实际上没有对给定路径的权限。
  • 如果我为 serviceAccountName 标志提供以下值,它会起作用:--serviceAccountName="dataflow@my-project.gserviceaccount.com" 文档具有误导性,我们实际上是在为 serviceAccountName 提供“服务帐户 ID”值标记而不是“服务帐户名称”。

标签: java google-cloud-dataflow


【解决方案1】:

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

此外,您需要按照the docs. 在 IAM 中添加一些角色

我需要:

  1. 计算实例管理员
  2. 数据流开发人员
  3. 数据流工作者
  4. 日志编写器
  5. 服务帐户参与者
  6. 存储对象管理

【讨论】:

    【解决方案2】:

    由于参数名称已更改,因此我正在发布有关此问题的更新。

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-28
      • 2015-08-15
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      相关资源
      最近更新 更多