当用户托管员工服务帐户和数据流作业处于不同的项目中时,运行数据流时出错
我得到的错误是:
{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "CREDENTIALS_MISSING",
"domain": "googleapis.com",
"metadata": {
"method": "google.dataflow.v1beta3.JobsV1Beta3.ListJobs",
"service": "dataflow.googleapis.com"
}
}
]
}
}
在“数据流代码”中,用户管理的员工服务帐户的权限为:
数据流管理
数据流工人
服务帐户用户
仓储管理
当用户管理的员工服务帐户和数据流作业在同一个项目中时,没有出现错误.
有办法解决这个问题吗?
发布于 2022-10-18 10:50:40
为了解决您的问题,项目A的服务帐户需要具有项目B的权限(在项目B的IAM
中,添加项目A给出的服务帐户的权限)。
还需要将以下程序参数传递给Dataflow
作业:
对于Beam
Python
:
--service_account_email
—-service_account_email=my-service-account-name@<project-id>.iam.gserviceaccount.com
对于Beam
Java
:
--serviceAccount
—-serviceAccount=my-service-account-name@<project-id>.iam.gserviceaccount.com
发布于 2022-10-18 10:55:56
你所犯的错误与你的问题不相符。
您所收到的错误是因为请求没有任何身份验证标头。没有google ServiceAccount或用户相关联的请求,因此它不能继续。这是对GCP的匿名请求。
查看发起请求的位置以及它为什么没有身份验证信息:https://cloud.google.com/docs/authentication
当用户被识别,但它没有权限执行该操作时,您将收到未经授权的错误消息。
https://stackoverflow.com/questions/74107076
复制相似问题