安排 Google 个云任务来调用 Firebase 函数
Schedule Google Cloud Tasks to Invoke Firebase Function
我正在尝试设置调用云函数的云任务。我能够设置云任务并且设置了一些云函数,但我似乎无法让云任务调用云函数。
我正在使用此代码从我的本地主机创建任务
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);
这会导致任务显示在我的控制台中的云任务下。
任务一直失败并重试。我没有看到来自云功能端的任何日志。
这是云函数的样子。
知道我需要做什么才能让云任务调用云函数吗?
您是否启用了 App Engine API?
Cloud Function 需要此 API 启用。
要触发云函数,您必须使用 HTTP targets, not App Engine targets。使用 App Engine 目标时,任务是尝试找到通往 App Engine 应用程序的特殊路径。您将在您的任务对象中更改它:
const task = {
httpRequest: {
httpMethod: 'POST',
url: <URL_FOR_FUNCTION>
},
};
这里有一个关于如何使用 Cloud Tasks with Cloud Functions 的教程。
我正在尝试设置调用云函数的云任务。我能够设置云任务并且设置了一些云函数,但我似乎无法让云任务调用云函数。
我正在使用此代码从我的本地主机创建任务
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);
这会导致任务显示在我的控制台中的云任务下。
任务一直失败并重试。我没有看到来自云功能端的任何日志。
这是云函数的样子。
知道我需要做什么才能让云任务调用云函数吗?
您是否启用了 App Engine API? Cloud Function 需要此 API 启用。
要触发云函数,您必须使用 HTTP targets, not App Engine targets。使用 App Engine 目标时,任务是尝试找到通往 App Engine 应用程序的特殊路径。您将在您的任务对象中更改它:
const task = {
httpRequest: {
httpMethod: 'POST',
url: <URL_FOR_FUNCTION>
},
};
这里有一个关于如何使用 Cloud Tasks with Cloud Functions 的教程。