首页 > 解决方案 > 从 Cloud Tasks 触发 HTTP Cloud Function 时出现 PERMISSION_DENIED 403 错误

问题描述

我正在尝试使用 Cloud Tasks 触发 Cloud Functions教程,但是当我尝试运行创建的任务时出现错误:

Status code: 7 (PERMISSION_DENIED)
Reason for retrying: PERMISSION_DENIED(7): HTTP status code 403

我创建了一个具有该Cloud Functions Invoker角色的新服务帐户。并修改了我的代码,以便使用此服务帐户创建任务:

const task = {
    httpRequest: {
      httpMethod: protos.google.cloud.tasks.v2.HttpMethod.POST,
      url,
      oidcToken: {
        serviceAccountEmail: 'cloud-tasks-client@my-actual-project.iam.gserviceaccount.com',
      },

该任务是从云功能创建的。

我还修改了目标 Cloud Function 访问控制,以便可以使用allAuthenticatedUsers角色访问它Cloud Functions Invoker。我可以使用云功能控制台测试触发功能而不会出现任何错误。

我错过了什么?有任何想法吗?

标签: google-cloud-functionsservice-accountsgoogle-cloud-tasks

解决方案


我刚刚想通了。我用ingress-settings=internal-only. 认为 Cloud Tasks 将被视为内部服务。我不得不将其更改为默认值all,然后它就起作用了。internal-and-gclb也没有工作。


推荐阅读