如何为美国市场时间编写Cron时间表

时间:2019-03-31 18:36:05

标签: amazon-web-services cron amazon-cloudwatch

我希望使用CloudWatch在AWS上安排Lambda函数,以在美国市场时段(美国东部时间上午9:30-下午4点)每分钟触发一次。

我相信实现此目标的唯一方法是使用cron,而且我对cron及其不同的风格并不十分熟悉(AWS似乎允许使用一些MON-FRI之类的非标准功能)。

到目前为止,我已经得出结论:

cron(0/1 14-21 ? * MON-FRI *)

似乎可以在上午9点至下午4点工作(假设我使用的是伦敦时区,其中包括5小时时差)。

如何让它从美国东部时间上午9:30开始? cron是否有办法自动保持夏令时变化的最新状态?

2 个答案:

答案 0 :(得分:1)

  

如何让它从美国东部时间上午8:30开始?

不可能使用标准cron语法(包括CloudWatch Events中的时间)来表示8:30-4pm。

要解决此限制,您可以使用两个表达式

30-59 14 ? * MON-FRI *
* 15-21 ? * MON-FRI *

或者您可以解释代码中的逻辑。

  

cron是否有办法自动与夏令时更改保持同步?

Cron在确定何时运行作业时将使用本地系统时间。例如。如果在Linux上使用cron,它将使用/etc/timezone(debian)所说的内容。时区文件(如provided by IANA)已编码了时间更改信息。使用CloudWatch Events,all times are UTC。您需要更正代码中的时区/时间更改,或者在具有EST / EDT偏移量的操作系统上使用cron。

答案 1 :(得分:0)

您可以根据需要使用CloudWatch Events触发lambda函数。

它还支持scheduled expressions,它支持cron语法,并且位于UTC时区。