

# 使用 cron 安排金丝雀运行
<a name="CloudWatch_Synthetics_Canaries_cron"></a>

当您安排金丝雀时，使用 cron 表达式可以让您灵活地安排计划。Cron 表达式包含五或六个按下表所列顺序排列的字段。这些字段采用空格分隔。语法根据您创建金丝雀使用的是 CloudWatch 控制台还是 AWS CLI 或 AWS SDK 而有所不同。若您使用控制台，则只能指定前五个字段。若使用 AWS CLI 或 AWS SDK，则可以指定所有六个字段，而且必须为 `Year` 字段指定 `*`。


|  **字段**  |  **允许的值**  |  **允许的特殊字符**  | 
| --- | --- | --- | 
|  Minutes  |  0-59  |  , - \$1 /  | 
|  Hours  |  0-23  |  , - \$1 /  | 
|  Day-of-month  |  1-31  |  , - \$1 ? / L W  | 
|  Month  |  1-12 或 JAN-DEC  |  , - \$1 /  | 
|  Day-of-week  |  1-7 或 SUN-SAT  |  , - \$1 ? L \$1  | 
|  Year  |  \$1  |    | 

**特殊字符**
+ **,**（逗号）在字段的表达式中包含多个值。例如，在“Month（月份）”字段中，JAN、FEB 和 MAR 将包含 January、February 和 March。
+ **-**（破折号）特殊字符用于指定范围。在“日”字段中，1-15 将包含指定月份的 1 - 15 日。
+ **\$1**（星号）特殊字符包含该字段中的所有值。在“Hours（小时）”字段中，**\$1** 包括每个小时。您不能在同一个表达式的“日期”和“星期几”字段中同时使用 **\$1**。如果您在一个中使用它，则必须在另一个中使用 **?** 。
+ **/**（正斜杠）用于指定增量。在“Minutes（分钟）”字段中，您可以输入 1/10 以指定从一个小时的第一分钟开始的每个第十分钟（例如，第 11 分钟、第 21 分钟和第 31 分钟，依此类推）。
+ **?**（问号）用于指定一个或另一个。在“日期”字段中，您可以输入 **7**，如果您不介意第 7 日是星期几，则可以在“星期几”字段中输入 **?**。
+ “Day-of-month”或“Day-of-week”字段中的 **L** 通配符用于指定月或周的最后一天。
+ “Day-of-month”字段中的 **W** 通配符用于指定工作日。在“Day-of-month”字段中，**3W** 用于指定最靠近当月的第三周的日。
+ “Day-of-week”字段中的 **\$1** 通配符用于指定一个月内所指定星期几的特定实例。例如，3\$12 指该月的第二个星期二。3 指的是星期二，因为它是每周的第三天，2 是指该月内该类型的第二天。

**限制**
+ 您无法在同一 Cron 表达式中为日期和星期几字段同时指定值。如果您在其中一个字段中指定值或 `*`（星号），则必须在另一个字段中使用 **?**（问号）。
+ 不支持产生的速率快于一分钟的 Cron 表达式。
+ 您不能将金丝雀设置为等待一年以上才能运行，因此 `Year` 字段中只能指定为 `*`。

**示例**  
创建金丝雀时，您可以参考以下示例 cron 字符串。以下示例展示了使用 AWS CLI 或 AWS SDK 创建或更新金丝雀的正确语法。如果您使用的是 CloudWatch 控制台，请省略每个示例末尾的 `*`。


| Expression | 含义 | 
| --- | --- | 
|   `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/10 * ? * MON-SAT *`   |  每周星期一到星期六每 10 分钟运行一次  | 
|   `0/5 8-17 ? * MON-FRI *`   |  星期一到星期五的上午 8:00 和下午 5:55 (UTC) 之间，每 5 分钟运行一次   | 