使用谷歌云数据流的服务账号

3

我正在尝试使用服务账户运行数据流作业。 我正在使用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) 指定的服务账户实际上没有给定路径的权限所导致的问题。 - Ben Chambers
如果我将以下值赋给serviceAccountName标志,则可以工作: --serviceAccountName="dataflow@my-project.gserviceaccount.com"文档有误导性,实际上我们向serviceAccountName标志提供的是“服务帐户ID”值,而不是“服务帐户名称”。 - chans
2个回答

4

我更新这个问题是因为参数名称已经更改。

Java中的参数现在是--serviceAccount,而在Python中是--service_account_email

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

设置此值将更改worker service account,详细解释可以在此处找到。


2
serviceAccountName 是服务账户的完整电子邮件地址。通常在Google API中用此方式进行标识。通常是这样的:name@project.iam.gserviceaccount.com 另外,您需要根据文档添加一些IAM角色。
我需要:
  1. 计算实例管理员
  2. Dataflow开发者
  3. Dataflow工作人员
  4. 日志编写器
  5. 服务账户操作者
  6. 存储对象管理员

请注意保留HTML标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接