Firebase调度程序的云函数时区未更改

iszxjhcz  于 2023-03-13  发布在  其他
关注(0)|答案(4)|浏览(144)

我现在正在Cloud Functions for Firebase调度器中创建并部署一个定期执行的函数,如下所示。关键是我希望它每天在日本时间0:05以.timeZone('Asia/Tokyo')的格式执行。
部署本身工作正常,但当我查看GCP的Cloud Scheduler中的内容时,时区设置为(美国/洛杉矶),如下图所示,实际执行时间与日本时间不同。
我在Cloud Scheduler功能管理屏幕中手动将时区更改为日本时间,并确认达到了预期行为,但当我再次部署该功能时,它仍然设置为(America/LosAngeles)。
我想可能是GCP本身的区域影响,需要修改GCP的区域,但是我还没有找到可以从哪里修改,但是我想应该可以从代码中为每个函数指定.timeZone,我不知所措。
我不知道如何解决这个问题,我想知道是否有人能帮助我。

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

先谢谢你。

yvt65v4c

yvt65v4c1#

我也遇到过同样的问题。还有一个类似的问题问here和解决方案降级firebase-tools工程为我。

rt4zxlrg

rt4zxlrg2#

这可能与您的CLI版本有关,请确保它已更新,如果您仍然遇到问题,您应该联系firebase支持提交错误请求HERE
另一个解决方案是在Google Cloud Platform (GCP) resource location中将该区域设置为未定义。* 请注意,除非您知道自己在做什么,并且希望设置所有默认位置,否则不建议设置GCP位置。*
参考:默认云位置

gr8qqesn

gr8qqesn3#

  • 这里是火战士 *

看起来firebase-tools的9.12版本中有一个bug,强制所有云函数都部署在太平洋时区,而不管您在代码中设置的时区。
升级到9.12.1版本应该可以解决这个问题。关于这个问题的更多细节,请参见Github repo上的issue

qoefvg9y

qoefvg9y4#

您可以在firebase函数中更改时区
exports.scheduledFunctionCrontab = functions.pubsub.时间表('5 11***').时区('美国/纽约').onRun((上下文)=〉{ console.log('这将在每天东部时间上午11:05运行!');返回空值。});
用户可以选择时区-默认为“洛杉矶”。

相关问题