Firebase Scheduler 的 Cloud Functions 的时区不会改变

问题描述

我目前正在创建和部署要在 Cloud Functions for Firebase 调度程序中定期执行的函数,如下所示。 关键是我希望它在日本时间每天 0:05 作为 .timeZone('Asia/Tokyo') 执行。

部署本身工作正常,但是当我查看 GCP 的 Cloud Scheduler 中的内容时,时区设置为 (America/LosAngeles),如下图所示,实际执行时间与日本时间不一致.

我在 Cloud Scheduler 功能管理屏幕中手动将时区更改为日本时间并确认实现了所需的行为,但是当我再次部署该功能时,它仍然设置为 (America/LosAngeles)。

我认为可能是受GCP本身区域的影响,我必须更改GCP的区域,但我还没有找到可以从哪里更改。 但是,我认为我应该能够从代码中为每个函数指定 .timeZone。我不知所措。

我不知道如何解决这个问题,我想知道是否有人可以帮助我。

exports.XXX = functions.pubsub
.schedule('every day 0:05')
.timeZone('Asia/Tokyo')
.onRun((context) => {
///省略
});

enter image description here

提前致谢。

解决方法

我也遇到过同样的问题。 here 还有一个类似的问题,降级 firebase-tools 的解决方案对我有用。

,

这可能与您的 CLI 版本有关,请确保它已更新,如果您一直遇到问题,您应该联系 Firebase 支持提交错误请求 HERE

另一个解决方案是可以在您的 Google Cloud Platform (GCP) resource location 中将该区域设置为未定义。 请注意,除非您知道自己在做什么并且想要设置所有默认位置,否则不建议设置 GCP 位置。

参考:default-cloud-location

,

firebaser 在这里

看起来 firebase-tools 的 9.12 版本中存在一个错误,该错误强制所有 Cloud Functions 都部署在太平洋时区,而不管您在代码中设置的时区如何。

升级到 9.12.1 版应该可以解决这个问题。有关该问题的更多详细信息,请参阅 Github 存储库上的此 issue