我现在正在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) => {
///省略
});
先谢谢你。
4条答案
按热度按时间yvt65v4c1#
我也遇到过同样的问题。还有一个类似的问题问here和解决方案降级
firebase-tools
工程为我。rt4zxlrg2#
这可能与您的CLI版本有关,请确保它已更新,如果您仍然遇到问题,您应该联系firebase支持提交错误请求HERE。
另一个解决方案是在
Google Cloud Platform (GCP) resource location
中将该区域设置为未定义。* 请注意,除非您知道自己在做什么,并且希望设置所有默认位置,否则不建议设置GCP位置。*参考:默认云位置
gr8qqesn3#
看起来
firebase-tools
的9.12版本中有一个bug,强制所有云函数都部署在太平洋时区,而不管您在代码中设置的时区。升级到9.12.1版本应该可以解决这个问题。关于这个问题的更多细节,请参见Github repo上的issue。
qoefvg9y4#
您可以在firebase函数中更改时区
exports.scheduledFunctionCrontab = functions.pubsub.时间表('5 11***').时区('美国/纽约').onRun((上下文)=〉{ console.log('这将在每天东部时间上午11:05运行!');返回空值。});
用户可以选择时区-默认为“洛杉矶”。