Java 谷歌云数据流服务帐户未传播到工作人员?
我们有多个Google云数据流作业(用Java/Kotlin编写),它们可以以两种不同的方式运行:Java 谷歌云数据流服务帐户未传播到工作人员?,java,google-bigquery,google-cloud-dataflow,Java,Google Bigquery,Google Cloud Dataflow,我们有多个Google云数据流作业(用Java/Kotlin编写),它们可以以两种不同的方式运行: 从用户的Google云帐户启动 从serviceaccount启动(具有所需的策略和权限) 从用户帐户运行数据流作业时,数据流向工作人员提供数据流。它不向工人提供授权用户 当从serviceaccount运行数据流作业时,我设想使用设置的serviceaccount将传播到数据流在后台使用的工作虚拟机。他们没有提到任何这些,但他们确实提到凭据用于对GCP服务进行身份验证 在数据流的大多数用例中,我
选项。如所示,setServiceAccount
,但没有添加IAM权限。这导致数据流日志中出现以下错误:
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : " Current user cannot act as service account dataflow@project.iam.gserviceaccount.com. Causes: Current user cannot act as service account dataflow@project.iam.gserviceaccount.com..",
"reason" : "forbidden"
} ],
"message" : " Current user cannot act as service account dataflow@project.iam.gserviceaccount.com.. Causes: Current user cannot act as service account dataflow@project.iam.gserviceaccount.com.",
"status" : "PERMISSION_DENIED"
}
之后,我们尝试将角色/iam.serviceAccountUser
添加到此服务帐户。不幸的是,这导致了同样的错误。此serviceaccount已具有IAM角色Dataflow worker和BigQuery作业用户。
默认的计算引擎控制器serviceaccount
123456-compute@developer.gserviceaccount.com
只有编辑器角色,我们没有添加任何其他IAM角色/权限 我认为您也需要设置控制器服务帐户。您可以使用选项。setServiceAccount(“hereYourControllerServiceAccount@yourProject.iam.gserviceaccount.com“”在数据流管道选项中
您需要添加一些其他权限:
- 对于控制器:数据流工作者和存储对象管理员
- 对于执行者:服务帐户用户
更多信息:您好,感谢您的回复!你回答的最后一部分可能是我们面临的问题。对于第一部分,关于在管道选项中设置serviceaccount,这是我们已经尝试过的。虽然该操作失败,但出现了“无法代表serviceaccount行事…”这样的消息,您是否在IAM中为服务帐户设置了适当的角色?或者您可以显示更多日志吗?我想我应该添加默认的控制器服务帐户(所以当您没有指定它时)是默认的计算引擎服务帐户。我已经用我们遇到的错误的更多信息更新了OP。正如我从您的更新中看到的dataflow@project.iam.gserviceaccount.com将成为新控制器此控制器应具有Dataflow Worker和Storage Object Admin角色,以及您在setGcpCredentials中使用的角色,因此,您当前的用户应该具有服务帐户用户。您是如何解决此问题的?