2

我正在尝试使用 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。我可以使用云功能控制台测试触发功能而不会出现任何错误。

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

4

2 回答 2

3

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

于 2020-09-11T08:24:32.450 回答
1

进入 IAM 页面,找到 Cloud task service agent service account:service-<projectNumber>@gcp-sa-cloudtasks.iam.gserviceaccount.com并授予其角色roles/iam.serviceAccountTokenCreator

你的教程中没有提到。我猜你没有这样做。

于 2020-09-11T07:48:05.823 回答