1

我正在尝试设置一个调用云功能的云任务。我能够设置云任务并且我已经设置了一些云功能,但我似乎无法让云任务调用云功能。

我正在使用此代码从本地主机创建任务

const serviceAccount = require('./serviceAccount.json');
const {CloudTasksClient} = require('@google-cloud/tasks');
const client = new CloudTasksClient({
    credentials: serviceAccount
});
const parent = client.queuePath("my-firebase-app-name-is-here", "us-central1", "matchmaking-queue-cleanup");
const task = {
    appEngineHttpRequest: {
        httpMethod: 'POST',
        relativeUri: '/leave-queue'
    },
};
task.appEngineHttpRequest.body = Buffer.from(JSON.stringify({
    id: "test"
})).toString('base64');
task.scheduleTime = {
    minutes: 13
};
const request = {parent, task};
client.createTask(request).then((response) => {
    console.log(`created task ${response.name}`);
}).catch(console.log);

这会导致任务显示在我的控制台中的云任务下。

云任务

任务不断失败并重试。我没有看到来自云功能端的任何日志。

这是云功能的样子。 在此处输入图像描述

在此处输入图像描述

知道我需要做什么才能让云任务调用云功能吗?

4

2 回答 2

2

要触发 Cloud Function,您必须使用HTTP 目标,而不是App Engine 目标。对于 App Engine 目标,任务是尝试找到通往 App Engine 应用程序的特殊路由。你可以在你的任务对象中改变它:

const task = {
    httpRequest: {
        httpMethod: 'POST',
        url: <URL_FOR_FUNCTION>
    },
};

这是有关如何将Cloud Tasks 与 Cloud Functions一起使用的教程。

于 2020-01-10T16:34:16.987 回答
-1

您是否启用了 App Engine API?Cloud Function 需要启用此 API。

于 2020-01-10T10:34:09.297 回答