

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

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


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

**特殊字符**
+ **,**（逗号）在字段的表达式中包含多个值。例如，在“Month（月份）”字段中，JAN、FEB 和 MAR 将包含 January、February 和 March。
+ **-**（破折号）特殊字符用于指定范围。在“日”字段中，1-15 将包含指定月份的 1 - 15 日。
+ **\***（星号）特殊字符包含该字段中的所有值。在“Hours（小时）”字段中，**\*** 包括每个小时。您不能在同一个表达式的“日期”和“星期几”字段中同时使用 **\***。如果您在一个中使用它，则必须在另一个中使用 **?** 。
+ **/**（正斜杠）用于指定增量。在“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”字段中的 **\#** 通配符用于指定一个月内所指定星期几的特定实例。例如，3\#2 指该月的第二个星期二。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 分钟运行一次  | 