Dataproc 操作失败:INVALID_ARGUMENT:用户无权充当服务帐户
Dataproc operation failure: INVALID_ARGUMENT: User not authorized to act as service account
我正在尝试 运行 来自 Cloud Data Fusion 的管道,但我收到以下错误:
io.cdap.cdap.runtime.spi.provisioner.dataproc.DataprocRuntimeException: Dataproc operation failure: INVALID_ARGUMENT: User not authorized to act as service account 'XXXXXXXX-compute@developer.gserviceaccount.com'. To act as a service account, user must have one of [Owner, Editor, Service Account Actor] roles. See https://cloud.google.com/iam/docs/understanding-service-accounts for additional details.
有人遇到过这个错误吗?
此错误与缺少 服务帐户用户角色 (roles/iam.serviceAccountUser
) 关联到 user/service 用于 运行 DataProc 作业的帐户。
为了克服此错误,您需要转到 IAM 策略控制台并将 Service Account User role, as described here 提供给您当前使用的 user/service 帐户以 运行 作业.如下图所示:
- 转到 IAM 和管理控制台
- 点击 IAM
- Select 您正在使用的会员运行 您的工作
- 点击会员信息右侧的笔图标
- 添加服务帐户用户角色
指出一些重要主题,服务帐户用于通过服务帐户本身或其中的委托用户进行授权 API 调用。此外,关于模拟服务帐户,具有特定权限的用户可以充当具有执行特定作业所需权限的另一个服务帐户。
注意:在第 3 步中,您还可以通过单击 [=36= 向特定用户(电子邮件)提供 roles/iam.serviceAccountUser
] +ADD (在控制台顶部)。然后,编写电子邮件并选择权限。不过,我必须强调,此权限将在项目级别授予。因此,此用户将能够模拟任何现有的服务帐户。
我想补充一点,服务帐户用户角色应该添加到启用 API 时 Data Fusion 自动生成的 Cloud Data Fusion 服务帐户。
在我的例子中,成员的名称类似于:
service-############@gcp-sa-datafusion.iam.gserviceaccount.com
它的名字是:
云数据融合服务帐号
就我而言,该错误具有误导性。尽管错误表明问题是缺少“XXXXXXXX-compute@developer.gserviceaccount.com”用户的权限,但实际问题仅在我授予角色后才得到解决service-############@gcp-sa-datafusion.iam.gserviceaccount.com 用户。我按照@Alexandre Moraes 提供的步骤授予对云数据融合服务帐户的正确访问级别。
是的,错误消息指向错误的服务帐户(即 5086XXXX8XXX-compute@developer.gserviceaccount.com')。实际上,运行 过程中的服务帐户是不同的。可以从日志或日志中请求的 authorizationInfo 属性中找到(如附图所示):
CreateCluster
us-west1:cdap-getmember-xxxxxxx-2fff-11eb-98ba-6a77bxxxx9dc
service-5086XXXX8XXX@gcp-sa-datafusion.iam.gserviceaccount.com
您需要向此帐户添加角色(OWNER、EDITOR、SERVICE ACCOUNT 中的任何一个)(即 service-5086XXXX8XXX@gcp-sa-datafusion.iam.gserviceaccount.com)。
我 运行 遇到了同样的问题。以上回复非常有帮助。我不得不使用一些额外的资源来解决这个问题:
- Granting service account user permission
- 我很难找到 DataFusion 用于 Dataproc 集群的服务帐户。我必须选中右上角的“包括 Google 提供的角色授权”复选框才能显示。
我正在尝试 运行 来自 Cloud Data Fusion 的管道,但我收到以下错误:
io.cdap.cdap.runtime.spi.provisioner.dataproc.DataprocRuntimeException: Dataproc operation failure: INVALID_ARGUMENT: User not authorized to act as service account 'XXXXXXXX-compute@developer.gserviceaccount.com'. To act as a service account, user must have one of [Owner, Editor, Service Account Actor] roles. See https://cloud.google.com/iam/docs/understanding-service-accounts for additional details.
有人遇到过这个错误吗?
此错误与缺少 服务帐户用户角色 (roles/iam.serviceAccountUser
) 关联到 user/service 用于 运行 DataProc 作业的帐户。
为了克服此错误,您需要转到 IAM 策略控制台并将 Service Account User role, as described here 提供给您当前使用的 user/service 帐户以 运行 作业.如下图所示:
- 转到 IAM 和管理控制台
- 点击 IAM
- Select 您正在使用的会员运行 您的工作
- 点击会员信息右侧的笔图标
- 添加服务帐户用户角色
指出一些重要主题,服务帐户用于通过服务帐户本身或其中的委托用户进行授权 API 调用。此外,关于模拟服务帐户,具有特定权限的用户可以充当具有执行特定作业所需权限的另一个服务帐户。
注意:在第 3 步中,您还可以通过单击 [=36= 向特定用户(电子邮件)提供 roles/iam.serviceAccountUser
] +ADD (在控制台顶部)。然后,编写电子邮件并选择权限。不过,我必须强调,此权限将在项目级别授予。因此,此用户将能够模拟任何现有的服务帐户。
我想补充一点,服务帐户用户角色应该添加到启用 API 时 Data Fusion 自动生成的 Cloud Data Fusion 服务帐户。
在我的例子中,成员的名称类似于:
service-############@gcp-sa-datafusion.iam.gserviceaccount.com
它的名字是: 云数据融合服务帐号
就我而言,该错误具有误导性。尽管错误表明问题是缺少“XXXXXXXX-compute@developer.gserviceaccount.com”用户的权限,但实际问题仅在我授予角色后才得到解决service-############@gcp-sa-datafusion.iam.gserviceaccount.com 用户。我按照@Alexandre Moraes 提供的步骤授予对云数据融合服务帐户的正确访问级别。
是的,错误消息指向错误的服务帐户(即 5086XXXX8XXX-compute@developer.gserviceaccount.com')。实际上,运行 过程中的服务帐户是不同的。可以从日志或日志中请求的 authorizationInfo 属性中找到(如附图所示):
CreateCluster
us-west1:cdap-getmember-xxxxxxx-2fff-11eb-98ba-6a77bxxxx9dc
service-5086XXXX8XXX@gcp-sa-datafusion.iam.gserviceaccount.com
您需要向此帐户添加角色(OWNER、EDITOR、SERVICE ACCOUNT 中的任何一个)(即 service-5086XXXX8XXX@gcp-sa-datafusion.iam.gserviceaccount.com)。
我 运行 遇到了同样的问题。以上回复非常有帮助。我不得不使用一些额外的资源来解决这个问题:
- Granting service account user permission
- 我很难找到 DataFusion 用于 Dataproc 集群的服务帐户。我必须选中右上角的“包括 Google 提供的角色授权”复选框才能显示。