从Cloud Tasks触发HTTP Cloud Function时出现PERMISSION_DENIED 403错误

问题描述

我正在尝试Using Cloud Tasks to trigger 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对其进行访问。 我可以使用云功能控制台测试触发该功能,而没有任何错误。

我想念什么?有什么想法吗?

解决方法

我刚刚弄清楚了。我使用ingress-settings=internal-only部署了该功能。认为云任务将被视为内部服务。我必须将其更改为默认的all,然后它才起作用。 internal-and-gclb也不起作用。

,

转到IAM页面,找到Cloud Task Service代理服务帐户:service-<projectNumber>@gcp-sa-cloudtasks.iam.gserviceaccount.com并为其授予角色roles/iam.serviceAccountTokenCreator

您的教程中未提及。我想你没有这么做。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...