委托人(用户或服务帐户)缺少资源的 IAM 权限“cloudtasks.tasks.create”

Nic*_*Dao 9 google-api google-cloud-platform google-iam

当我尝试将任务添加到队列时,会抛出上述错误消息。这是我的设置和有关此问题的信息:

  • 项目编号:my-project
  • 服务帐户 ID:my-service-account
  • 任务队列名称:my-queue
  • 任务队列位置:asia-northeast1(Cloud Task 目前处于测试阶段的少数位置之一)

另外,让我们确认以上所有内容都存在并且正在运行。

当我通过发布到来检查我的服务帐户角色时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"
            ]
        }]
    }
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,my-service-account有以下2个角色:

  1. 角色/cloudtasks.admin
  2. 角色/cloudtasks.enqueuer

这两个角色都具有cloudtasks.tasks.create内置的权限。

当我尝试使用以下命令将任务添加到云任务时:

POST 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"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这真让我困惑。

有人知道我可能做错了什么吗?

Nic*_*Dao 0

我不知道为什么会起作用,但我删除了所有角色,然后再次添加它们,然后它就起作用了。似乎是 Google Cloud Platform 上的一个错误。