google-api - 委托(delegate)人(用户或服务帐户)缺少资源的 IAM 权限 "cloudtasks.tasks.create"

标签 google-api google-cloud-platform google-iam

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

  • 项目编号:my-project
  • 服务帐号 ID: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.admin
  • 角色/cloudtasks.enqueuer

  • 这两个角色都有 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/

    相关文章:

    google-cloud-platform - Google Cloud Platform IAM,我没有收到成员(member)邀请函

    python-3.x - 为什么调用 Google Slides API 返回错误?

    kubernetes - 如何获取谷歌云平台服务的DNS名称?

    Google Cloud Platform 上的 Wordpress 永久链接不起作用

    google-cloud-platform - 谷歌CP : Compute Engine Default Service Account missing

    google-cloud-platform - 我不想为我想与之共享 bigquery 数据集的外部用户生成服务帐户 - 这会产生什么影响?

    javascript - 您无权执行此操作。无效的访问 token DialogFlow v2

    java - Google API v3 检索所有联系人

    javascript - 将纬度和经度传递给我的 map 脚本

    python - Google Cloud Platform 配额监控(警报)