Firebase pubsub 函数计划无效的计划或时区

Pri*_*ams 5 javascript firebase google-cloud-functions

当我尝试部署新创建的 Firebase PubSub 函数时,出现错误Error: Failed to create scheduler job projects/workouts-uat/locations/europe-west1/jobs/firebase-schedule-dailyTasks-eur3: HTTP Error: 400, Schedule or time zone is invalid.

我的函数声明如下:

exports.dailyTasks = functions
  .region('europe-west2')
  .pubsub
  .schedule('every 24 hours 00:00')
  .timeZone('Africa/Johannesburg')
  .onRun(...);
Run Code Online (Sandbox Code Playgroud)

根据我的研究,我发现使用的区域应该与项目设置中找到的区域相同,在我的例子中是eur3 (europe-west). 我所有现有的onCall函数都使用europe-west2这就是为什么我首先尝试使用它,但在找到我的项目设置区域后我更新为.region('eur3').region('europe-west'),但错误仍然存​​在。那么如何成功部署这个功能呢?

我在谷歌搜索错误时遇到的另一个提示是,必须创建“Google App Engine (GAE) 应用程序”才能使 pubsub 函数正常工作,但我假设这会在函数部署时自动发生,对吗?否则如何创造它?我对 GCP 的经验为零。

Pri*_*ams 8

我终于明白了这一点。正如我最初所想的那样,它与 无关.timeZone()- 这是与 的错误.schedule()。是的,我刚刚看到错误消息确实包含可能是“时间表或时区”的可能性,但出于某种原因,我认为它指的是整个函数而不是调用.schedule()

无论如何,一旦我更新到every 24 hours 00:00every day 00:00它突然部署得很好。为了清楚起见,这就是我的工作函数签名现在的样子:

exports.dailyTasks = functions
.region('europe-west2')
.pubsub
.schedule('every day 00:00')
.timeZone('Africa/Johannesburg')
Run Code Online (Sandbox Code Playgroud)

事实证明,.region()也与此无关,而且europe-west2工作得很好。

我要感谢这篇文章的作者,因为他链接了一个示例项目,该项目也在每天午夜调用 pubsub 函数,如果没有这篇文章,我永远找不到答案。