AWS Cloudwatch事件 - 如何为不同的时区触发?

14
我有一堆 AWS Lambda 函数,想在每天的特定时间触发它们,但这些时间来自不同的时区。例如,我可能希望事件在以下时间触发:
  • 悉尼时间下午4:55
  • 芝加哥时间晚上6:30
  • 芝加哥时间晚上9点
使用 Cloudwatch 事件,无论我使用哪个 AWS 区域,似乎只能指定 UTC 时间(即伦敦时间)触发事件。对于今天来说,这没问题,我可以计算伦敦和悉尼以及伦敦和芝加哥之间的时差等等,但是夏令时在不同城市的生效日期不同,当它生效时,我的 Lambdas 将在错误的时间触发。
是否有一种方法可以使用非 UTC 时间设置触发这些 Cloudwatch 事件?或者,除了 Cloudwatch 之外,是否有其他机制可以在特定时间对 Lambda 函数进行触发,并且可以指定所需时区的时间?
提前感谢。

1
请注意 - 伦敦目前处于UTC时区,但从3月26日开始,他们将进入英国夏令时BST。 - stdunbar
1个回答

10

请注意 - 截至2017年2月6日,伦敦目前处于UTC时区,但从2017年3月26日开始,伦敦将进入英国夏令时(BST),即UTC + 1。换句话说,伦敦时间不一定是UTC时间。

对我来说,最好的选择是使用另一个lambda根据已知的时区更改更新cloudwatch触发器的时间。您没有展示您的实现语言,但以Java为例,您可以查看这篇文章。在UTC零时刻每天运行此Lambda,并相应地更新cloudwatch规则时间。


3
很不幸,目前还没有比这更好的解决方案,自你回答以来已经有五年了,但仍未找到更好的解决方案。这种解决方案存在许多可能出现问题的情况,例如如果需要在时区转换附近运行作业,而更新规则的脚本尚未完成运行。 - Jon Jenkins
@JonJenkins 好消息!AWS 现在提供了一种跨不同时区调度的方式,通过其新的(截至2022年11月)EventBridge调度程序:https://docs.aws.amazon.com/eventbridge/latest/userguide/scheduler.html https://aws.amazon.com/blogs/compute/introducing-amazon-eventbridge-scheduler/ - Asker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接