在 Dataflow 中创建作业时出错(当前用户不能充当服务帐户)

Posted

技术标签:

【中文标题】在 Dataflow 中创建作业时出错(当前用户不能充当服务帐户)【英文标题】:Error when creating a Job in Dataflow (Current user cannot act as service account) 【发布时间】:2021-09-24 11:23:25 【问题描述】:

我正在尝试在 Dataflow 中创建一个作业,以将发布到 pub/sub 主题的数据导出到文本文件。保存配置时,我收到“作业创建失败”消息,指定“当前用户无法充当服务帐户 ...-compute@developer.gserviceaccount.com”,如 attached picture 所示。

按照 Google 的 documentation,我为这个项目的用户添加了以下角色(除了我已经拥有的所有者角色):

计算查看器 数据流管理员 数据流开发人员 存储对象管理 服务帐号用户

但是,消息中提到的控制器服务帐户似乎不存在于该项目的帐户服务列表中(IAM & Admin > Account Services)。我在这里有什么遗漏吗?

已检查的其他要求:

我已经启用了 Compute Engine API 作为所有者,我拥有 iam.serviceAccounts.actAs 权限

【问题讨论】:

默认情况下,worker 使用您项目的 Compute Engine 默认服务帐号作为控制器服务帐号。 [链接] (cloud.google.com/dataflow/docs/concepts/…) @SakshiGatyan 如何找到 Compute Engine 的默认服务帐号?我刚刚将 dataflow.worker 和 storage.objectAdmin 角色添加到我在项目中拥有的现有服务帐户中,但它们似乎都不是我正在寻找的默认服务帐户。 -compute@developer.gserviceaccount.com 是计算引擎默认服务账号,在开启计算引擎API时自动创建 按照此处的快速入门指南之一开始可能会更容易:cloud.google.com/dataflow/docs/quickstarts 感谢@chamikara,我按照指南中的步骤操作,设置作业时收到的消息是相同的。过去我们在这个项目上正确运行了一些数据流作业,所以我的下一个假设是服务帐户 xxx-compute@developer.gserviceaccount.com 可能在某个时候被意外删除。我已尝试禁用 Compute Engine API 并再次启用它,但问题仍然存在。 【参考方案1】:

您最好的选择是在 IAM 中创建一个自定义服务帐户并使用它来构建/运行您的工作。如果您使用云构建来部署和运行您的模板,则需要设置您的日志记录位置。

更多详情请点击以下链接:

Using custom service accounts in cloud build Setting logging location in cloud build YAML

【讨论】:

以上是关于在 Dataflow 中创建作业时出错(当前用户不能充当服务帐户)的主要内容,如果未能解决你的问题,请参考以下文章

我可以将 Dataflow 作业配置为单线程吗?

在 CouchDB 1.0 中创建用户时出错

django 3.2-在 sqlite3 中创建超级用户时出错

在 SQL Server 中创建数据库用户时使用 pymssql 出错

无法在 DataFlow Apache Beam 中创建通用日期转换类

在Rails 5中创建Model的新记录时出错