Cloud Functions / Cloud Tasks UNAUTHENTICATED 错误

Cloud Functions / Cloud Tasks UNAUTHENTICATED error

我正在尝试获取 Cloud Functions 来创建将调用 Cloud Functions 的 Cloud Task。简单。

流程和用例非常接近to the official tutorial here

我还查看了 at this article by Doug Stevenson,尤其是它的安全部分。

运气不好,我在 Cloud Task 中一直遇到 16 (UNAUTHENTICATED) 错误。

如果我可以相信我在控制台中看到的内容,那么 Cloud Task 似乎没有将 OIDC 令牌附加到请求:

然而,在我的代码中我确实有 oidcToken 对象:

const { v2beta3, protos } = require("@google-cloud/tasks");
import {
  PROJECT_ID,
  EMAIL_QUEUE,
  LOCATION,
  EMAIL_SERVICE_ACCOUNT,
  EMAIL_HANDLER,
} from "./../config/cloudFunctions";


export const createHttpTaskWithToken = async function (
  payload: {
    to_email: string;
    templateId: string;
    uid: string;
    dynamicData?: Record<string, any>;
  },
  {
    project = PROJECT_ID,
    queue = EMAIL_QUEUE, 
    location = LOCATION, 
    url = EMAIL_HANDLER, 
    email = EMAIL_SERVICE_ACCOUNT,
  } = {}
) {
  const client = new v2beta3.CloudTasksClient();
  const parent = client.queuePath(project, location, queue);

  // Convert message to buffer.
  const convertedPayload = JSON.stringify(payload);
  const body = Buffer.from(convertedPayload).toString("base64");

  const task = {
    httpRequest: {
      httpMethod: protos.google.cloud.tasks.v2.HttpMethod.POST,
      url,
      oidcToken: {
        serviceAccountEmail: email,
        audience: new URL(url).origin,
      },
      headers: {
        "Content-Type": "application/json",
      },
      body,
    },
  };


  try {
    // Send create task request.
    const request = { parent: parent, task: task };
    const [response] = await client.createTask(request);
    console.log(`Created task ${response.name}`);
    return response.name;
  } catch (error) {
    if (error instanceof Error) console.error(Error(error.message));
    return;
  }
};

当在 Cloud Logging 中记录上述代码中的 task 对象时,我可以看到服务帐户是我为此目的创建的帐户,以及 Cloud Tasks已成功创建。

我是:

以及Cloud Task需要调用的函数:

理论上一切似乎都存在。

关于我会遗漏什么的任何建议?

谢谢,

您的听众不正确。它必须以函数名结尾。在这里,您只有区域和项目 https://<region>-<projectID>.cloudfunction.net/。使用完整的云功能 URL.