AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

参考:Systems Manager 的 Cron 和 Rate 表达式

在创建 AWS Systems Manager Maintenance Window或 状态管理器 关联时,您指定一个有关该时段或关联应何时运行的计划。您能够以基于时间的条目 (也称为 cron 表达式) 或基于频率的条目 (也称为 rate 表达式) 的形式指定计划。对于Maintenance Windows,您还可以在创建Maintenance Window时以协调世界时 (UTC) 格式指定时间戳,从而使其在指定时间运行一次。

在以编程方式或使用命令行工具(如 AWS CLI)创建任一类型的资源时,必须使用有效的 cron 或 rate 表达式(对于Maintenance Windows为时间戳)以正确的格式指定计划参数。

使用 AWS Systems Manager 控制台创建Maintenance Window或关联时,可以使用有效的 cron 或 rate 表达式指定计划。也可以使用用户界面中的工具,这些工具简化了创建计划的过程。

Maintenance Window 示例

要使用 AWS CLI 创建Maintenance Windows,您可以使用 cron 或 rate 表达式或者时间戳包含 --schedule 参数。例如:

aws ssm create-maintenance-window --name "My-Cron-Maintenance-Window" --schedule "cron(0 16 ? * TUE *)" --schedule-timezone "America/Los_Angeles" --start-date 2019-01-01T00:00:00-08:00 --end-date 2019-06-30T00:00:00-08:00 --duration 4 --cutoff 1
aws ssm create-maintenance-window --name "My-Rate-Maintenance-Window" --schedule "rate(7 days)" --duration 4 --schedule-timezone "America/Los_Angeles" --cutoff 1
aws ssm create-maintenance-window --name "My-TimeStamp-Maintenance-Window" --schedule "at(2019-07-07T13:15:30)" --duration 4 --schedule-timezone "America/Los_Angeles" --cutoff 1

关联示例

要使用 AWS CLI 创建状态管理器关联,您可以使用 cron 或 rate 表达式包含 --schedule-expression 参数。例如:

aws ssm create-association --association-name "My-Cron-Association" --schedule-expression "cron(0 0 2 ? * SUN *)" --targets Key=tag:ServerRole,Values=WebServer --name AWS-UpdateSSMAgent
aws ssm create-association --association-name "My-Rate-Association" --schedule-expression "rate(7 days)" --targets Key=tag:ServerRole,Values=WebServer --name AWS-UpdateSSMAgent

有关 Cron 和 Rate 表达式的一般信息

适用于 Systems Manager 的 Cron 表达式有六个必需字段。第七个字段 Seconds(cron 表达式中的第一个字段)是可选的。这些字段用空格分隔。

Cron 表达式示例

分钟 小时 日期 星期几 意义
0 10 * * ? * 每天上午的 10:00 (UTC) 运行
15 12 * * ? * 每天下午 12:15 (UTC) 运行
0 18 ? * MON-FRI * 每星期一到星期五下午 6:00 (UTC) 运行
0 8 1 * ? * 每月第 1 天上午 8:00 (UTC) 运行
0/15 * * * ? * 每 15 分钟运行一次
0/10 * ? * MON-FRI * 从星期一到星期五,每 10 分钟运行一次
0/5 8-17 ? * MON-FRI * 在每星期一到星期五的上午 8:00 到下午 5:55 (UTC) 之间,每 5 分钟运行一次

支持的值

下表列出了必需的 cron 条目支持的值。

注意

关联的 cron 表达式不支持所有这些值。有关信息,请参阅 适用于关联的 Cron 和 Rate 表达式

cron 表达式支持的值

字段 通配符
分钟 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W
1-12 或 JAN-DEC , - * /
星期几 1-7 或 SUN-SAT , - * ? / L
1970-2199 , - * /

注意

您无法在同一 cron 表达式中的“日期”和“星期几”字段中指定值。如果您在其中一个字段中指定了值,则必须在另一个字段中使用 ?(问号)。

通配符

下表列出了 cron 表达式支持的通配符值。

cron 表达式支持的通配符

通配符 说明
, , (逗号) 通配符包含其他值。在“月份”字段中,JAN、FEB 和 MAR 将包含 January、February 和 March。
- - (破折号) 通配符用于指定范围。在“日”字段中,1-15 将包含指定月份的 1 - 15 日。
* * (星号) 通配符包含该字段中的所有值。在“小时”字段中,* 将包含每个小时。
/ / (正斜杠) 通配符用于指定增量。在“分钟”字段中,您可以输入 1/10 以指定从一个小时的第一分钟开始的每个第十分钟。因此,1/10 指定第 1、第 11、第 21 和第 31 分钟,依此类推。
? ?(问号)通配符用于指定一个或另一个。在“日期”字段中,您可以输入 7,如果您不介意 7 日是星期几,则可以在“星期几”字段中输入“?”。
L “日期”或“星期几”字段中的 L 通配符用于指定月或周的最后一天。
W “日期”字段中的 W 通配符用于指定工作日。在“日期”字段中,3W 用于指定最靠近当月的第三周的日。

注意

不支持产生的速率快于五 (5) 分钟的 cron 表达式。对指定星期几值和日期值的支持不完整。您目前必须为这两个字段之一使用问号 (?) 字符。

有关 cron 表达式的更多信息,请参阅 Wikipedia 网站上的 CRON 表达式

Rate 表达式

Rate 表达式有以下两个必需字段。这些字段用空格分隔。

rate 表达式的必需字段

字段

正数,如 115

单位

minute

minutes

hour

hours

day

days

如果值等于 1,则单位必须为单数。同样,对于大于 1 的值,单位必须为复数。例如,rate(1 hours)rate(5 hour) 无效,但 rate(1 hour)rate(5 hours) 有效。

适用于关联的 Cron 和 Rate 表达式

此部分包括适用于 状态管理器 关联的 cron 和 rate 表达式的示例。在您创建这些表达式之前,请注意以下限制。

  • 关联仅支持以下 cron 表达式:每 1/2、1、2、4、8 或 12 个小时;每天或每周的特定时间。

  • 关联仅支持以下 rate 表达式:30 分钟的时间间隔或大于和小于 31 天。

  • 如果指定可选的 Seconds 字段,其值只能为 0(零)。例如:cron(0 */30 * * * ? *)

下表提供使用六个必需字段的关联的 cron 示例。

适用于关联的 Cron 示例

示例 详细信息

cron(0/30 * * * ? *)

每 30 分钟

cron(0 0/1 * * ? *)

每小时

cron(0 0/2 * * ? *)

每 2 小时

cron(0 0/4 * * ? *)

每 4 小时

cron(0 0/8 * * ? *)

每 8 小时

cron(0 0/12 * * ? *)

每 12 小时

cron(15 13 ? * * *)

每天下午 1:15

cron(15 13 ? * MON *)

每星期一下午 1:15

以下是一些适用于关联的 rate 示例。

适用于关联的 Rate 示例

示例 详细信息

rate(30 minutes)

每 30 分钟

rate(1 hour)

每小时

rate(5 hours)

每 5 小时

rate(15 days)

每 15 天

适用于 Maintenance Windows 的 Cron 和 Rate 表达式

本节包含适用于Maintenance Windows关联的 cron 和 rate 表达式的示例。

与 状态管理器 关联不同,Maintenance Windows支持所有 cron 和 rate 表达式,包括 seconds 字段为非 0(零)值的情况。

例如,下面的 6 字段 cron 表达式在每天上午 9:30 运行Maintenance Window:

cron(30 09 ? * * *)

通过向 Seconds 字段添加一个值,下面的 7 字段 cron 表达式在每天上午 9:30:24 运行Maintenance Window:

cron(24 30 09 ? * * *)

下表提供了更多适用于Maintenance Windows的 6 字段 cron 示例。

适用于 Maintenance Windows 的 Cron 示例

示例 详细信息

cron(0 2 ? * THU#3 *)

每月第三个星期四凌晨 2:00

cron(15 10 ? * * *)

每天上午 10:15

cron(15 10 ? * MON-FRI *)

星期一到星期五每天上午 10:15

cron(0 2 L * ? *)

每月最后一天凌晨 2:00

cron(15 10 ? * 6L *)

每月最后一个星期五上午 10:15

下表提供了适用于Maintenance Windows的 rate 示例。

适用于 Maintenance Windows 的 Rate 示例

示例 详细信息

rate(30 minutes)

每 30 分钟

rate(1 hour)

每小时

rate(5 hours)

每 5 小时

rate(25 days)

每 25 天