服务帐户执行批处理数据流作业

Posted

技术标签:

【中文标题】服务帐户执行批处理数据流作业【英文标题】:service account execution batch dataflow job 【发布时间】:2020-05-18 05:57:38 【问题描述】:

我需要使用服务帐户执行数据流作业,我正在关注同一平台本身提供的一个非常简单且基本的示例字数。

奇怪的是我得到的错误:

据此,GCP 需要具有 Dataflow 工作人员权限的服务帐户才能执行我的工作。即使我已经设置了所需的权限,当错误继续出现时,堰的部分就出现了:

有人可以解释这种奇怪的行为吗?非常感谢

【问题讨论】:

【参考方案1】:

要运行 Dataflow 作业,项目必须启用结算功能和以下 Google Cloud Platform API:

谷歌云数据流 API 计算引擎 API(谷歌计算引擎) 谷歌云记录 API 谷歌云存储 谷歌云存储 JSON API BigQuery API 谷歌云发布/订阅 谷歌云数据存储 API

您还应该在项目中为您在 Dataflow 作业中使用的任何一种 API 提供足够的配额。

我建议您创建一个之前未使用过其名称的新服务帐户,然后将roles/dataflow.worker 授予此新服务帐户。请记住,Cloud IAM 传播需要不到 60 秒,最多 7 分钟,因此请在 IAM 更改和 Dataflow 作业创建之间留出几分钟时间。

另一种可能的解决方法是删除 Dataflow 工作人员权限并重新添加。删除帐户后,权限仍然存在,指向其旧 ID。在明确删除角色之前,不得刷新此 ID。

我鼓励您访问Dataflow IAM 角色,了解角色描述和权限文档。

【讨论】:

以上是关于服务帐户执行批处理数据流作业的主要内容,如果未能解决你的问题,请参考以下文章

如何使用弹簧批处理集成从远程服务器(主服务器)在工作服务器的多个节点上运行/执行作业?

查询以包括 spring 批处理作业参数值以及作业执行数据

SQL Server作业失败 - 帐户被锁定

通过MSSQl作业定时执行批处理BAT文件

创建作业(JOB)

如何在 Spring 数据流服务器中将包含 10 个 Spring 批处理作业的应用程序拆分为 10 个任务?