当我尝试将任务添加到队列时,会抛出上述错误消息。这是我的设置和有关此问题的信息:
my-project
my-service-account
my-queue
asia-northeast1
(Cloud Task 目前处于测试阶段的少数几个位置之一)另外,让我们确认以上所有内容都存在并正在运行。
当我通过 POSTING 到
https://cloudresourcemanager.googleapis.com/v1/projects/my-project:getIamPolicy
检查我的服务帐户角色时我收到类似于以下内容的回复:
{
"status": 200,
"data":
{
"version": 1,
"etag": "BwV6nNWJg4E=",
"bindings": [
{
"role": "roles/cloudtasks.admin",
"members": [
"serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
]
},
{
"role": "roles/cloudtasks.enqueuer",
"members": [
"serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
]
}]
}
}
如您所见,
my-service-account
有以下2个角色:这两个角色都有
cloudtasks.tasks.create
获得许可。当我尝试使用以下方法将任务添加到 Cloud Task 时:
发帖
https://cloudtasks.googleapis.com/v2beta3/projects/my-project/locations/asia-northeast1/queues/my-queue/tasks
+ 任务有效载荷我收到以下错误消息:
{
"status": 403,
"data":
{
"error":
{
"code": 403,
"message": "The principal (user or service account) lacks IAM permission \"cloudtasks.tasks.create\" for the resource \"projects/my-project/locations/asia-northeast1/queues/my-queue\" (or the resource may not exist).",
"status": "PERMISSION_DENIED"
}
}
}
这真的让我很困惑。
有没有人知道我可能做错了什么?
最佳答案
首先检查哪个服务帐户用于调用API。看起来 API 调用使用的默认服务帐户可能没有适当的权限。
有时,如果您在 API 调用中省略 wchich 服务帐户必须是用户,则将使用默认帐户,您可能会收到 authenticated with credentials这不会让你创建任务。
我建议使用 API keys to authenticate排除与正在验证哪个服务帐户的任何混淆。
讨论(并解决)非常相似的案例here .
关于google-api - 委托(delegate)人(用户或服务帐户)缺少资源的 IAM 权限 "cloudtasks.tasks.create",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53309804/