

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 操作员指南
<a name="operator-guide"></a>

本指南面向该解决方案的用户和操作员，其中包含有关如何[配置计划](#configure-schedules)和[监控解决方案的](monitor-the-solution.md)详细信息。

## 配置计划
<a name="configure-schedules"></a>

**重要**  
计划配置不当可能会导致实例持续运行并产生意外成本。在将计划应用于您的资源之前，请验证以下各项：  
资源标签中的计划名称与配置表中定义的计划完全匹配。计划名称拼写错误或不存在将导致`UnknownSchedule`错误，并且调度程序不会停止该实例。检查您的资源上的`IS-Error`标签以识别这种情况。
如果设置`stop_new_instances`为`false`，则在首次标记的计划时间段之外运行的实例要等到下一次定时停止过渡时才会停止。这可能会导致实例的运行时间超过预期。
如果设置`retain_running`为`true`，则在运行期开始之前手动启动的实例不会在该周期结束时停止。这是设计使然，但如果不进行监控，可能会导致实例无限期运行。
使用`enforced: false`（默认）时，调度程序不会重启在运行期间手动停止的实例，也不会停止在初始停止过渡后在运行期之外手动启动的实例。
我们建议启用[信息标记](monitor-the-solution.md#informational-tags)（默认启用），并定期查看资源上的`IS-Error`和`IS-LastAction`标签，以确认计划按预期运行。

在成功部署解决方案后，您可以开始配置计划。AWS 实例计划程序支持两种计划管理方法，如下所述。

**注意**  
该解决方案可支持任意数量的计划，每个计划可包含一个或多个时段，这些时段用于定义受该计划控制的实例应在何时运行。有关更多信息，请参阅[计划](scheduler-cli.md)和[时段](period-reference.md)。

### 使用基础设施即代码（推荐）
<a name="using-infrastructure-as-code-recommended"></a>

AWS 上的实例调度器提供了 AWS CloudFormation CustomResource ，您可以使用它来使用基础设施即代码 (IaC) 来管理您的日程安排和周期。

有关如何使用 IaC 管理计划的信息，请参阅[使用基础设施即代码（IaC）管理计划](manage-schedules-using-infrastructure-as-code-iac.md)。

### 使用 Amazon DynamoDB 控制台和 AWS 实例计划程序 CLI
<a name="using-the-amazon-dynamodb-console-and-instance-scheduler-on-aws-cli"></a>

**重要**  
如果您已使用自定义资源通过 IaC 管理任何计划，则不得使用 DynamoDB 控制台或计划程序 CLI 来删除或修改这些计划或其周期。如果这样做，则会在中存储的参数 CloudFormation 和表中的值之间造成冲突。此外，请勿 CloudFormation 在使用 DynamoDB 控制台或计划程序 CLI 创建的计划中使用由管理的时段。

在部署 AWS 实例计划程序中心堆栈时，该解决方案创建了一个 Amazon DynamoDB 表，其中包含多个示例时段和计划，您可将其作为参考来创建自己的自定义时段和计划。要在 DynamoDB 中创建计划，请修改配置表中的一个计划 ConfigTable () 或创建一个新的计划。要使用 CLI 创建计划，请先[安装计划程序 CLI](scheduler-cli-4.md#install-the-scheduler-cli)，然后使用[可用命令](scheduler-cli-4.md#available-commands)。

**注意**  
[有关如何使用 IaC、DynamoDB 和 InstanceScheduler CLI 创建多个示例计划的示例，请参阅示例计划。](sample-schedules.md)

此部分提供有关如何使用、监控和更新解决方案的说明与参考，以及问题排查和支持信息。

## 为实例添加计划标签
<a name="tag-instances-for-scheduling"></a>

在部署 AWS CloudFormation 模板时，您定义了解决方案的*自定义标签的名称（标签*密钥）。要让 AWS 实例计划程序识别 Amazon EC2 或 Amazon RDS 实例，该实例上的标签键必须与此自定义标签键匹配。因此，请务必统一且正确地将标签应用于所有适用实例。在使用该解决方案时，您仍可对实例使用现有的[标签最佳实践](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html)。有关更多信息，请参阅[标记 Amazon EC2 资源](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)和[为 Amazon RDS 资源添加标签](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)。

在 AWS 管理控制台上，可使用[标签编辑器](https://console.aws.amazon.com/resource-groups/tag-editor/)一次性为多个资源应用或修改标签。您也可以在控制台中手动应用和修改标签。

标记资源后不久，实例调度器将对该资源应用一个 IS ManagedBy 标记，以表示该资源现在由调度器管理。您可以查找此标签以确认资源已正确注册以进行计划。

### 设置标签值
<a name="setting-the-tag-value"></a>

将标签应用于实例时，请使用您在初始配置期间定义的标签键（默认情况下，标签键为 Schedule），并将标签值设置为需应用于实例的计划的名称。如果您想更改标签键，可以通过[更新解决方案参数](update-the-solution.md)来实现。

**注意**  
对于 Amazon RDS 实例，标签值的长度可以在 1 到 256 个 Unicode 字符之间，并且不能带有前缀 aws:。该字符串只能包含 Unicode 字母、数字、空格、“\$1”、“.”、“/”、“=”、“''”、“-”的集合（Java 正则表达式：“^([\$1\$1p\$1L\$1\$1\$1p\$1Z\$1\$1\$1p\$1N\$1\$1.:/=\$1\$1-]\$1)\$1”)。有关更多信息，请参阅[为 Amazon RDS 资源添加标签](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)。

### 带加密的 EBS 卷的 EC2 实例
<a name="ec2-instances-with-encrypted-ebs-volumes"></a>

如果您的 EC2 数据库实例使用客户管理的 KMS 密钥加密的 EBS 卷，则必须向实例调度器角色授予 KMS: CreateGrant 权限才能启动这些实例。有关更多信息，请参阅[加密的 EC2 EBS 卷](security-1.md#encrypted-ec2-ebs-volumes)。

### 在 License Manager 中管理的 EC2 实例
<a name="ec2-instances-managed-in-license-manager"></a>

如果您的 EC2 实例是在 AWS License Manager 中管理的，则必须向实例计划员角色授予相应的许可证管理器权限，以便能够启动和停止这些实例。有关更多信息，请参阅 [EC2 License Manager](security-1.md#ec2-license-manager)。

# 计划推理
<a name="schedule-reference"></a>

计划可指定带有该计划标签的实例应何时运行。每个计划都必须有一个唯一的名称，该名称将用作标签*值*来标识要应用于已标记的资源的计划。

## 时间段
<a name="periods"></a>

每个计划必须包含至少一个时段，该时段用于定义实例应运行的时间。一个计划可包含多个时段。当一个计划中使用了多个时段时，AWS 实例计划程序将在满足至少一个时段的条件时应用对应的启动操作。有关更多信息，请参阅[时段参考](period-reference.md)。

## 时区
<a name="time-zone"></a>

您也可以为计划指定时区。如果未指定时区，则计划将使用您在启动解决方案时指定的默认时区。有关可接受的时区值的列表，请参阅 [List of TZ database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 的 **TZ** 列。

## “停止新实例” 字段
<a name="stop-new-instances-field"></a>

stop\$1new\$1instances 字段用于控制如果实例当前在运行期之外运行，则实例调度器是否应在首次标记为计划时将其停止。默认情况下，此字段设置为 true。

设置为 true 时，如果您标记的正在运行的实例已超出其预定运行时间，则实例计划程序将立即停止该实例。当设置为 false 时，实例调度器将使实例保持运行状态，直到下一个预定的停止时间。

## 休眠字段
<a name="hibernate-field"></a>

hibernate 字段可让您对已停止的 Amazon EC2 实例使用休眠。如果将此字段设置为 true，您的 EC2 实例必须使用支持休眠的亚马逊机器映像（AMI）。有关更多信息，请参阅 *Amazon EC2 用户指南 AMIs*中的 “[支持的 Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html#hibernation-prereqs-supported-amis)”。休眠会将实例内存（RAM）中的内容保存到您的 Amazon Elastic Block Store（Amazon EBS）根卷。如果将此字段设置为 true，当解决方案停止实例时，实例将进入休眠状态而不是直接停止。

如果您将解决方案设置为使用休眠，但未为实例[配置休眠](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enabling-hibernation.html)或实例未达到[休眠先决条件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html)，则解决方案会记录一条警告，并且实例将直接停止，而不进入休眠状态。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[将您的按需型实例或竞价型实例休眠](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)。

## 强制执行字段
<a name="enforced-field"></a>

计划包含一个 enforced 字段，该字段可让您防止实例在运行时段之外被手动启动，或在运行时段内被手动停止。如果将此字段设置为 true，当用户在运行时段之外手动启动实例时，解决方案将停止实例。如果将此字段设置为 true，当实例在运行时段内被手动停止时，解决方案还会重启实例。

## 保持运行字段
<a name="retain-running-field"></a>

如果实例在运行时段开始前已被手动启动，retain\$1running 字段可防止解决方案在运行时段结束时停止实例。例如，如果某个实例的运行时段为上午 9 点至下午 5 点，该实例在上午 9 点前被手动启动，则解决方案将不会在下午 5 点停止该实例。

## Systems Manager 维护时段字段（仅适用于 EC2 实例）
<a name="systems-manager-maintenance-window-field-only-applies-to-ec2-instances"></a>

该 ssm-maintenance-window字段允许您自动将 AWS Systems Manager 维护时段作为运行时段添加到计划中。当您指定与 Amazon EC2 实例位于同一账户和 AWS 区域的维护时段的名称时，该解决方案会在维护时段开始前至少 10 分钟启动实例；如果没有其他运行时段指定该实例应保持运行，该解决方案会在维护时段结束时停止实例。

一旦创建 SSM 维护时段，且计划中配置了该 SSM 维护时段的名称，Lambda 将在下次按计划运行时获取这些更改。例如，如果您为计划程序 Lambda 选择了 5 分钟的运行频率，该 Lambda 会在下一个 5 分钟间隔内获取维护时段的更改。

AWS 实例计划程序将确保您的实例在维护时段开始前至少 10 分钟启动。根据您为**计划间隔** AWS CloudFormation 参数设置的值，这可能会导致您的实例在维护时段开始前 10 分钟以上启动间隔，以保证实例至少提前 10 分钟启动。例如，如果您将计划间隔设置为 30 分钟，计划程序将在维护时段开始前的 10 至 40 分钟之间启动实例。

**注意**  
要使用此功能，必须将解决方案中心堆栈中的启用 EC2 SSM 维护 Windows CloudFormation 参数设置为`yes`。

有关更多信息，请参阅《AWS Systems Manager 用户指南》**中的 [AWS Systems Manager Maintenance Windows](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html)。

## 实例类型
<a name="instance-type"></a>

仅对于 Amazon EC2 实例，计划允许您为计划中的每个时段指定一个可选的所需实例类型。当您在时段内指定实例类型时，解决方案将自动调整 EC2 实例的大小，使其与请求的实例类型匹配。

要指定实例类型，请使用语法 *<period-name>@<instance-type>*。例如 `weekends@t2.nano`。请注意，如果您为同时计划 Amazon EC2 实例和 Amazon RDS 实例的时段指定一个实例类型，该实例类型将对 Amazon RDS 实例不生效。

如果正在运行的实例的实例类型与为该时段指定的实例类型不同，解决方案将停止正在运行的实例，并使用指定的实例类型重新启动实例。有关更多信息，请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》**中的[更改实例类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html#resize-limitations)。

## 计划定义
<a name="schedule-definitions"></a>

Amazon DynamoDB 中的 AWS 实例计划程序配置表包含计划定义。计划定义可包含以下字段：


| 字段 | 说明 | 
| --- | --- | 
|   `description`   |  计划的可选描述。  | 
|   `hibernate`   |  选择是否将运行 Amazon Linux 的 Amazon EC2 实例休眠。当此字段设置为 true 时，计划程序将在停止实例时将其休眠。请注意，您的实例必须[启用休眠](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#enabling-hibernation)且必须满足[休眠先决条件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites)。  | 
|   `enforced`   |  选择是否强制实施计划。当此字段设置为 true 时，如果在运行时段之外手动启动正在运行的实例，则计划程序将停止该实例；而如果实例在运行时段内手动停止，计划程序将启动该实例。  | 
|   `name`   |  用于标识计划的名称。此名称必须是唯一的，并且仅包含字母数字、连字符（-）和下划线（\$1）。  | 
|   `periods`   |  此计划中使用的时段的名称。请严格按照时段名称字段中显示的内容输入一个或多个名称。 您也可以使用语法 *<period-name>@<instance-type>* 为时段指定实例类型。例如 `weekdays@t2.large`。  | 
|   `retain_running`   |  选择是否阻止解决方案在运行时段结束时停止实例（如果实例已是在该运行时段开始前被手动启动）。  | 
|   `use_maintenance_window`   |  选择是将 Amazon RDS 维护时段作为运行时段纳入 Amazon RDS 实例计划，还是将 AWS Systems Manager 维护时段作为运行时段纳入 Amazon EC2 实例计划。该字段默认处于启用状态，将其值设为“false”即可禁用。  | 
|   `ssm_maintenance_window`   |  选择是否将 AWS Systems Manager 维护时段作为额外运行时段添加到此计划中。接受维护 StringSet 时段名称，该名称将与计划的 EC2 实例中的窗口名称相匹配。 account/region   **注意：**此功能仅适用于 EC2 实例。  | 
|   `stop_new_instances`   |  选择是否在首次标记实例时将其停止（如果实例在运行时段之外运行）。默认情况下，此字段设置为 true。  | 
|   `timezone`   |  计划将使用的时区。如果未指定时区，则使用默认时区（UTC）。有关可接受的时区值的列表，请参阅 [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 的 **TZ** 列。  | 
|   `use_metrics`   |  选择是否在计划级别开启 CloudWatch 指标。此字段会覆盖您在部署时指定的 CloudWatch 指标设置。  **注意：**启用此功能将产生费用，标准为每个计划或计划服务每月 0.90 美元。  | 

# 时段参考
<a name="period-reference"></a>

时段包含相关条件，您可通过这些条件设置实例的具体运行时长（以小时、天和月为单位）。一个时段可包含多个条件，但仅在满足所有条件时，AWS 实例计划程序才会应用相应的启动或停止操作。

## 启动时间和停止时间
<a name="start-and-stop-times"></a>

`begintime` 和 `endtime` 字段用于定义 AWS 实例计划程序启动和停止实例的时间。如果您仅指定启动时间，则必须手动停止实例。请注意，如果您在 [weekdays](#days-of-the-week) 字段中指定一个值，解决方案将使用该值来确定实例的停止时间。例如，如果您将 `begintime` 设为上午 9 点且未设置 `endtime`，同时将 weekdays 值设为星期一至星期五，除非您已计划相邻时段，否则实例将在星期五晚上 11:59 停止。

同样地，如果您仅指定停止时间，则必须手动启动实例。如果您未指定任一时间，则此解决方案将使用一周中的某几天、一月中的某天或几个月的规则来根据需要在每天 beginning/end 的某一天开始和停止实例。

时段的 `begintime` 和 `endtime` 值必须在计划中指定的时区内。如果未在计划中指定时区，此解决方案将使用您启动它时指定的时区。

如果您的计划包含多个时段，建议您始终在时段中同时指定 `begintime` 和 `endtime`。

如果您在指定的启动时间之前启动实例，该实例将一直运行，直到运行时段结束。例如，用户可以定义一个时段，让实例每天上午 9 点启动，并在下午 5 点停止。

 **计划的启动时间为上午 9 点，停止时间为下午 5 点** 

![\[image6\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/instance-scheduler-on-aws/images/image6.png)


如果您在凌晨 5 点手动启动实例，解决方案将在下午 5 点停止实例。如果您使用[保持运行字段](schedule-reference.md#retain-running-field)，解决方案将不会在下午 5 点停止实例。

 **计划的停止时间为凌晨 5 点** 

![\[image7\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/instance-scheduler-on-aws/images/image7.png)


如果您在指定的停止时间之前停止实例，实例将不会运行，直到下一个运行时段开始。延续前面的示例，如果用户在星期三下午 1 点停止实例，解决方案要到星期四上午 9 点才会启动实例。

 **时间线显示计划的启动时间为上午 9 点，手动停止时间为下午 1 点，计划的停止时间为下午 5 点。**

![\[image8\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/instance-scheduler-on-aws/images/image8.png)


### 相邻时段
<a name="adjacent-periods"></a>

如果计划包含两个相邻的运行时段，解决方案将不会停止正在运行的实例。例如，如果计划中的一个时段的 `endtime` 为晚上 11:59，另一个时段的 `begintime` 为第二天的午夜，则解决方案将不会停止正在运行的实例（如果没有用来停止实例的 `weekdays`、`monthdays` 或 `months` 规则）。

要实施从星期一上午 9 点至星期五下午 5 点运行实例的计划，解决方案需要配置三个时段。第一个时段：适用的实例从星期一上午 9 点运行至晚上 11:59。第二个时段：实例从星期二午夜运行至星期四晚上 11:59。第三个时段：实例从星期五午夜运行至下午 5 点。有关更多信息，请参阅[示例计划](sample-schedules.md)。

## 星期几
<a name="days-of-the-week"></a>

`weekdays` 字段用于定义实例每周运行的具体日期。您可以指定日期列表、日期范围、某个日期在一个月内的第 N 次出现，或某个日期在一个月内的最后一次出现。该解决方案支持缩写的日期名称（Mon）和数字（0）。

## 月中日期
<a name="days-of-the-month"></a>

`monthdays` 字段用于定义实例每月运行的具体日期。您可以指定日期列表、日期范围、每月的第 N 天、每月的最后一天，或某个特定日期的最近工作日。

## 月份
<a name="months"></a>

`months` 字段用于定义实例运行的具体月份。您可以指定月份列表、月份范围，或每 N 个月。该解决方案支持缩写的月份名称（Jan）和数字（1）。

## 时段定义
<a name="period-definitions"></a>

Amazon DynamoDB 中的 AWS 实例计划程序配置表包含时段定义。一个时段定义可包含以下字段。请注意，某些字段支持 [Cron 非标准字符](https://en.wikipedia.org/wiki/Cron#Non-Standard_Characters)。

**重要**  
您必须指定以下至少一个项：begintime、endtime、weekdays、months 或 monthdays。


| 字段 | 说明 | 
| --- | --- | 
|   `begintime`   |  实例的启动时间（采用 **HH:MM** 格式）。  | 
|   `description`   |  时段的可选描述。  | 
|   `endtime`   |  实例的停止时间（采用 **HH:MM** 格式）。  | 
|   `months`   |  输入实例将运行的月份的逗号分隔列表，或用连字符连接的月份范围。例如，输入 `jan, feb, mar` 或 `1, 2, 3` 可在这些月份内运行实例。或者，您可以输入 `jan-mar` 或 `1-3`。 您也可以将实例设置为每 N 个月运行一次，或在某个月份范围内每 N 个月运行一次。例如，输入 `Jan/3` 或 `1/3` 可从 1 月开始每 3 个月运行一次实例。输入 `Jan-Jul/2` 可在 1 月到 7 月期间每隔 1 个月运行一次实例。  | 
|   `monthdays`   |  输入实例将运行的每月日期的逗号分隔列表，或用连字符连接的日期范围。例如，输入 `1, 2, 3` 或 `1-3` 可在每月的前三天运行实例。您也可以输入多个范围。例如，输入 `1-3`、`7-9` 可在每月 1 日至 3 日以及 7 日至 9 日运行实例。 您还可以将实例设置为每月的第 N 天运行，或在某个日期范围内每月的第 N 天运行。例如，输入 `1/7` 可从 1 日开始每 7 天运行一次实例。输入 `1-15/2` 可在 1 日至 15 日期间每隔 1 天运行一次实例。 输入 `L` 可在每月的最后一天运行实例。输入日期和 W 可在该指定日期的最近工作日运行实例。例如，输入 `15W` 可在每月 15 日的最近工作日运行实例。  | 
|   `name`   |  用于标识时段的名称。此名称必须是唯一的，并且仅包含字母数字、连字符（-）和下划线（\$1）。  | 
|   `weekdays`   |  输入实例将运行的星期几的逗号分隔列表，或星期几范围。例如，输入 `0, 1, 2` 或 `0-2` 可在星期一至星期三运行实例。您也可以输入多个范围。例如，输入 `0-2`、`4-6` 可每天（星期四除外）运行实例。 您还可以将实例设置为在每月的第 N 个指定星期几运行。例如，输入 `Mon#1` 或 `0#1` 可在每月的第一个星期一运行实例。 输入某个星期几和 L 可在每月该星期几的最后一次出现时运行实例。例如，输入 `friL` 或 `4L` 可在每月的最后一个星期五运行实例。  | 

当一个时段包含多个条件时，请注意，只有满足所有条件后，AWS 实例计划程序才会应用相应的操作。例如，`weekdays` 字段值为 `Mon#1` 且 months 字段值为 `Jan/3` 的时段将在每个季度的第一个星期一应用操作。

# 示例计划
<a name="sample-schedules"></a>

AWS 实例计划程序可让您自动启动和停止 Amazon Elastic Compute Cloud（Amazon EC2）与 Amazon Relational Database Service（Amazon RDS）实例。以下部分提供了一些示例计划，这些计划可进行调整以用于多种常见使用案例。

## 标准的 9-5 工作时段
<a name="standard-9-5-working-hours"></a>

此计划展示了如何在伦敦的工作日上午 9 点至下午 5 点运行实例。

### 时间段
<a name="periods-1"></a>

此时段将在工作日（周一至周五）上午 9 点启动实例，并在下午 5 点停止实例。


| 字段 | Type | 值 | 
| --- | --- | --- | 
|   `begintime`   |   `String`   |   `09:00`   | 
|   `endtime`   |   `String`   |   `16:59`   | 
|   `name`   |   `String`   |   `weekdays-9-5`   | 
|   `weekdays`   |   `StringSet`   |   `mon-fri`   | 

### Schedule
<a name="schedule"></a>

计划名称提供了必须应用于实例的标签值以及将使用的时区。


| 字段 | Type | 值 | 
| --- | --- | --- | 
|   `name`   |   `String`   |   `london-working-hours`   | 
|   `periods`   |   `StringSet`   |   `weekdays-9-5`   | 
|   `timezone`   |   `String`   |   `Europe/London`   | 

### 实例标签
<a name="instance-tag"></a>

要将此计划应用于实例，您必须为实例添加 `Schedule=london-working-hours` 标签。如果您在 AWS CloudFormation **实例计划程序标签名称参数中更改默认标签名称**，则标签将有所不同。例如，如果您输入 `Sked` 作为标签名称，则您的标签将是 `Sked=london-working-hours`。有关更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》**中的[标记资源](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-ec2-resources-table)。

### 计划程序 CLI
<a name="scheduler-cli-1"></a>

要使用[实例计划程序 CLI](scheduler-cli-4.md) 配置上述计划，请使用以下命令：

```
scheduler-cli create-period --stack <stackname> --name weekdays-9-5 --weekdays mon-fri --begintime 9:00 --endtime 16:59

scheduler-cli create-schedule --stack <stackname> --name london-working-hours --periods weekdays-9-5 --timezone Europe/London

Europe/London
```

### 自定义资源
<a name="custom-resource"></a>

以下 CloudFormation 模板将使用计划[自定义资源创建上述时间表](manage-schedules-using-infrastructure-as-code-iac.md)。

**要部署此模板，您需要提供可在 AWS CloudFormation 控制台中找到的 **ServiceInstanceScheduleServiceToken**ARN，方法是选择[之前部署的实例调度器中心堆栈](step-1-launch-the-instance-scheduler-hub-stack.md)，然后选择输出。**

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  ServiceInstanceScheduleServiceTokenARN:
    Type: String
    Description: (Required) service token arn taken from InstanceScheduler outputs
Metadata:
  'AWS::CloudFormation::Designer': {}
Resources:
  LondonWorkingWeek:
    Type: 'Custom::ServiceInstanceSchedule'
    Properties:
      NoStackPrefix: 'True'
      Name: london-working-hours
      Description: run instances from 9am to 5pm in London on weekdays
      ServiceToken: !Ref ServiceInstanceScheduleServiceTokenARN
      Timezone: Europe/London
      Periods:
     - Description: 9am to 5pm on weekdays
        BeginTime: '09:00'
        EndTime: '16:59'
        WeekDays: mon-fri
```

## 在下午 5 点之后停止实例
<a name="stop-instances-after-5-pm"></a>

实例可在一天中的任何时间随意启动，此计划将确保在每天下午 5 点（ET）自动向实例发送停止命令。

### 时间段
<a name="periods-2"></a>

此时段将在每天下午 5 点停止实例。


| 字段 | Type | 值 | 
| --- | --- | --- | 
|   `endtime`   |   `String`   |   `16:59`   | 
|   `name`   |   `String`   |   `stop-at-5`   | 

### Schedule
<a name="schedule-1"></a>

计划名称提供了必须应用于实例的标签值以及将使用的时区。


| Field |  | Value | 
| --- | --- | --- | 
|   `name`   |   `String`   |   `stop-at-5-new-york`   | 
|   `periods`   |   `StringSet`   |   `stop-at-5`   | 
|   `timezone`   |   `String`   |   `America/New York`   | 

### 实例标签
<a name="instance-tag-1"></a>

要将此计划应用于实例，您必须为实例添加 `Schedule=stop-at-5-new-york` 标签。如果您更改了 AWS CloudFormation **实例计划程序标签名称参数中的默认标签名称**，则您的标签将有所不同。例如，如果您输入 `Sked` 作为标签名称，则您的标签将是 `Sked=stop-at-5-new-york`。有关更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》**中的[标记资源](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-ec2-resources-table)。

### 计划程序 CLI
<a name="scheduler-cli-2"></a>

要使用[实例计划程序 CLI](scheduler-cli-4.md) 配置上述计划，请使用以下命令：

```
scheduler-cli create-period --stack <stackname> --name stop-at-5 --endtime 16:59

scheduler-cli create-schedule --stack <stackname> --name stop-at-5-new-york --periods stop-at-5 --timezone America/New_York
```

### 自定义资源
<a name="custom-resource-1"></a>

以下 CloudFormation 模板将使用计划[自定义资源创建上述时间表](manage-schedules-using-infrastructure-as-code-iac.md)。

**要部署此模板，您需要提供可在 AWS CloudFormation 控制台中找到的 **ServiceInstanceScheduleServiceToken**ARN，方法是单击[之前部署的实例调度器中心堆栈](step-1-launch-the-instance-scheduler-hub-stack.md)并选择输出。**

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  ServiceInstanceScheduleServiceTokenARN:
    Type: String
    Description: (Required) service token arn taken from InstanceScheduler outputs
Metadata:
  'AWS::CloudFormation::Designer': {}
Resources:
  StopAfter5:
    Type: 'Custom::ServiceInstanceSchedule'
    Properties:
      NoStackPrefix: 'True'
      Name: stop-at-5-new-york
      Description: stop instances at 5pm ET every day
      ServiceToken: !Ref ServiceInstanceScheduleServiceTokenARN
      Timezone: America/New_York
      Periods:
      - Description: stop at 5pm
        EndTime: '16:59'
```

## 在周末停止实例
<a name="stop-instances-over-the-weekend"></a>

此计划展示了如何让实例从星期一上午 9 点（ET）运行至星期五下午 5 点（ET）。由于星期一和星期五并非完整天数，该计划包含三个时段以分别对应星期一、星期二至星期四、星期五。

### 时间段
<a name="periods-3"></a>

第一个时段会在星期一上午 9 点启动已标记的实例，并在午夜停止实例。此时段包含以下字段和值。


| 字段 | Type | 值 | 
| --- | --- | --- | 
|   `begintime`   |   `String`   |   `09:00`   | 
|   `endtime`   |   `String`   |   `23:59`   | 
|   `name`   |   `String`   |   `mon-start-9am`   | 
|   `weekdays`   |   `StringSet`   |   `mon`   | 

第二个时段会让已标记的实例在周二至周四全天运行。此时段包含以下字段和值。


| Field |  | Value | 
| --- | --- | --- | 
|   `name`   |   `String`   |   `tue-thu-full-day`   | 
|   `weekdays`   |   `StringSet`   |   `tue-thu`   | 

第三个时段会在星期五下午 5 点停止已标记的实例。此时段包含以下字段和值。


| Field |  | Value | 
| --- | --- | --- | 
|   `begintime`   |   `String`   |   `00:00`   | 
|   `endtime`   |   `String`   |   `16:59`   | 
|   `name`   |   `String`   |   `fri-stop-5pm`   | 
|   `weekdays`   |   `StringSet`   |   `fri`   | 

### Schedule
<a name="schedule-2"></a>

此计划将这三个时段整合，形成适用于已标记实例的计划。该计划包含以下字段和值。


| Field |  | Value | 
| --- | --- | --- | 
|   `name`   |   `String`   |  mon-9am-fri-5pm  | 
|   `periods`   |   `StringSet`   |  周一开始-上午9点，，星期五-stop-下午5点 tue-thu-full-day  | 
|   `timezone`   |   `String`   |  America/New\$1York  | 

### 实例标签
<a name="instance-tag-2"></a>

要将此计划应用于实例，您必须为实例添加 `Schedule=mon-9am-fri-5pm` 标签。请注意，如果您更改了 AWS CloudFormation **实例计划程序标签名称参数中的默认标签名称**，则您的标签将有所不同。例如，如果您输入 Sked 作为标签名称，则您的标签将是 `Sked=mon-9am-fri-5pm`。有关更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》**中的[标记资源](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-ec2-resources-table)。

### 计划程序 CLI
<a name="scheduler-cli-3"></a>

要使用[实例计划程序 CLI](scheduler-cli-4.md) 配置上述计划，请使用以下命令：

```
scheduler-cli create-period --stack <stackname> --name
mon-start-9am --weekdays mon --begintime 9:00 --endtime 23:59
scheduler-cli create-period --stack <stackname> --name
tue-thu-full-day --weekdays tue-thu
scheduler-cli create-period --stack <stackname> --namefri-stop-5pm --weekdays fri --begintime 0:00 --endtime 17:00

scheduler-cli create-schedule --stack <stackname> --name
mon-9am-fri-5pm --periods
mon-start-9am,tue-thu-full-day,fri-stop-5pm -timezone
America/New_York
```

### 自定义资源
<a name="custom-resource-2"></a>

以下 CloudFormation 模板将使用计划[自定义资源创建上述时间表](manage-schedules-using-infrastructure-as-code-iac.md)。

**要部署此模板，您需要提供可在 AWS CloudFormation 控制台中找到的 **ServiceInstanceScheduleServiceToken**ARN，方法是选择[之前部署的实例调度器中心堆栈](step-1-launch-the-instance-scheduler-hub-stack.md)，然后选择输出。**

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  ServiceInstanceScheduleServiceTokenARN:
    Type: String
    Description: (Required) service token arn taken from InstanceScheduler outputs
Metadata:
  'AWS::CloudFormation::Designer': {}
Resources:
  StopOnWeekends:
    Type: 'Custom::ServiceInstanceSchedule'
    Properties:
      NoStackPrefix: 'True'
      Name: mon-9am-fri-5pm
      Description: start instances at 9am on monday and stop them at 5pm on friday
      ServiceToken: !Ref ServiceInstanceScheduleServiceTokenARN
      Timezone: America/New_York
      Periods:
      - Description: 9am monday start
        BeginTime: '09:00'
        EndTime: '23:59'
        WeekDays: mon
      - Description: all day tuesday-thursday
        WeekDays: tue-thu
      - Description: 5pm friday stop
        BeginTime: '00:00'
        EndTime: '16:59'
        WeekDays: fri
```

## 解决方案资源
<a name="solution-resources"></a>

以下资源作为 AWS 实例计划程序堆栈的一部分创建。


| 资源名称 | Type | 说明 | 
| --- | --- | --- | 
|   **Main**   |   `AWS::Lambda::Function`   |  AWS 实例计划程序 Lambda 函数。  | 
|   **计划程序配置帮助程序**   |   `Custom::ServiceSetup`   |  将全局配置设置存储在 Amazon DynamoDB 中。  | 
|   **计划程序调用权限**   |   `AWS::Lambda::Permission`   |  允许亚马逊 CloudWatch 事件调用实例计划程序的 AWS Lambda 函数。  | 
|   **计划程序日志**   |   `AWS::Logs::LogGroup`   |  CloudWatch 实例调度程序的日志组。  | 
|   **计划程序策略**   |   `AWS::IAM::Policy`   |  允许计划程序执行启动和停止操作、更改 Amazon EC2 实例属性、设置标签和访问计划程序资源的策略。  | 
|   **计划程序规则**   |   `AWS::Events::Rule`   |  调用计划程序的 Lambda 函数的亚马逊 EventBridge 事件规则。  | 
|   **配置指标事件规则**   |   `AWS::Events::Rule`   |  定期调用配置描述匿名指标函数的 Amazon EventBridge 事件规则。当匿名指标处于禁用状态时，此事件规则也会被禁用。  | 
|   **状态表**   |   `AWS::DynamamoDB::Table`   |  用于存储实例上次所需状态的 DynamoDB 表。  | 
|   **配置表**   |   `AWS::DynamamoDB::Table`   |  用于存储全局配置、计划和时段数据的 DynamoDB 表。  | 
|   **实例计划程序 SNS 主题**   |   `AWS::SNS::Topic`   |  用于向订阅的电子邮件地址发送警告和错误消息。  | 

# 计划程序 CLI
<a name="scheduler-cli-4"></a>

利用 AWS 实例计划程序命令行界面（CLI），您可以配置计划和时段，并估算给定计划的成本节省。

## 先决条件
<a name="prerequisites"></a>

此解决方案中的 CLI 需要 Python 3.8\$1 及最新版本的 boto3。

## 凭据
<a name="credentials"></a>

要使用计划程序 CLI，您必须拥有 AWS CLI 的凭证。有关更多信息，请参阅《AWS CLI 用户指南》**中的[配置和凭证文件设置](https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html)。

您的凭证必须具备以下权限：
+  `lambda:InvokeFunction`-在调度程序堆栈中调用该 InstanceSchedulerMain 函数，并从命令行更新计划程序配置数据库中的计划和周期信息
+  `cloudformation:DescribeStackResource`：用于从堆栈中检索 AWS Lambda 函数的物理资源 ID 以处理 CLI 请求

计划程序 CLI 发出的请求以及对应的响应将记录在 `AdminCliRequestHandler-yyyymmdd` 日志流中。

**注意**  
如果您使用 profile-name 参数指定一个配置文件，则所指定的该配置文件必须具备这些权限。有关 profile-name 参数的更多信息，请参阅[常见参数](#common-arguments)。

## 安装计划程序 CLI
<a name="install-the-scheduler-cli"></a>

1.  [下载](https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance_scheduler_cli.zip)计划程序 CLI 包***（instance\$1scheduler\$1cli.zip）***，并将其放置在计算机上的某个目录中。
**重要**  
如果您未将该文件放入独立目录，再从该目录执行安装操作，安装过程将失败。

1. 将 zip 存档文件解压缩到其专属目录（instance\$1scheduler\$1cli）中。

1. 在存放解压后 CLI 包的同一目录中，将 scheduler-cli 安装到您的环境中：
**注意**  
Scheduler-CLI 需要 Python 3.8 或更高版本以及最新版本的 pip 和 boto3。如果您的本地计算机上尚未安装所有这些软件，请在尝试安装 Scheduler-CLI 之前，参考 [pip 的官方文档](https://pip.pypa.io/en/stable/getting-started/)以获取安装说明。

   ```
   pip install --no-index --find-links=instance_scheduler_cli instance_scheduler_cli
   ```

1. 使用以下命令验证是否已成功安装：

   ```
   scheduler-cli --help
   ```

**注意**  
如果您倾向于使用 [sdist of the CLI](https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance_scheduler_cli-3.0.0.tar.gz)，也可通过上述相同流程安装它。

## 命令结构
<a name="command-structure"></a>

计划程序 CLI 在命令行中使用多部分结构。下一部分用于指定计划程序 CLI python 脚本。计划程序 CLI 包含用于指定要对时段和计划执行的操作的命令。可以通过命令行按任意顺序指定操作的特定参数。

```
scheduler-cli <command> <arguments>
```

## 常见参数
<a name="common-arguments"></a>

计划程序 CLI 支持以下参数，所有命令都可使用这些参数：


| 参数 | 说明 | 
| --- | --- | 
|   `--stack [replaceable]<stackname>`   |  计划程序堆栈的名称。  **重要提示：**所有命令都需要使用此参数。  | 
|   `--region [replaceable]<regionname>`   |  将计划程序堆栈部署到的区域的名称。  **注意：**当默认配置文件和凭证文件未安装到解决方案堆栈所在的同一区域时，您必须使用此参数。  | 
|   `--profile-name [replaceable] <profilename>`   |  用于运行命令的配置文件的名称。如果未指定配置文件名称，将使用默认配置文件。  | 
|   `--query`   |  控制命令输出的 JMESPath 表达式。有关控制输出的更多信息，请参阅《AWS CLI 用户指南》**中的[在 AWS CLI 中控制命令输出](https://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html)。  | 
|   `--help`   |  显示计划程序 CLI 的有效命令和参数。在将此参数与特定命令结合使用时，将显示该命令的有效子命令和参数。  | 
|   `--version`   |  显示计划程序 CLI 的版本号。  | 

## 可用命令
<a name="available-commands"></a>
+  [create-period](#create-period) 
+  [create-schedule](#create-schedule) 
+  [delete-period](#delete-period) 
+  [delete-schedule](#delete-schedule) 
+  [describe-periods](#describe-periods) 
+  [describe-schedules](#describe-schedules) 
+  [describe-schedule-usage](#describe-schedule-usage) 
+  [update-period](#update-period) 
+  [update-schedule](#update-schedule) 
+  [help](#help) 

## create-period
<a name="create-period"></a>

### 说明
<a name="create-period-description"></a>

创建时段。时段必须包含至少以下一个项目：`begintime`、`endtime`、`weekdays`、`months` 或 `monthdays`。

### 参数
<a name="create-period-arguments"></a>

 `--name`   
+ 时段的名称

  类型：字符串

  是否必需：是

 `--description`   
+ 时段的描述

  类型：字符串

  必需：否

 `--begintime`   
+ 运行时段的开始时间。如果未指定 `begintime` 和 `endtime`，则运行时段为 00:00-23:59。

  类型：字符串

  限制：`H:MM` 或 `HH:MM` 格式

  必需：否

 `--endtime`   
+ 运行时段的停止时间。如果未指定 `begintime` 和 `endtime`，则运行时段为 00:00-23:59。

  类型：字符串

  限制：`H:MM` 或 `HH:MM` 格式

  必需：否

 `--weekdays`   
+ 时段对应的星期几

  类型：字符串

  限制：缩写日期名称（mon）或数字（0）的逗号分隔列表。使用 - 指定范围。使用 / 指定每周的第 n 天。

  必需：否

 `--months`   
+ 时段的月份

  类型：字符串

  限制：缩写月份名称（jan）或数字（1）的逗号分隔列表。使用 - 指定范围。使用 / 指定每隔 n 个月。

  必需：否

 `--monthdays`   
+ 时段对应的月份日期

  类型：字符串

  限制：缩写月份名称（jan）或数字（1）的逗号分隔列表。使用 - 指定范围。使用 / 指定每月的第 n 天。

  必需：否

### 示例
<a name="create-period-example"></a>

```
$ scheduler-cli create-period --name "weekdays" --begintime 09:00 --endtime 18:00 --weekdays mon-fri --stack Scheduler
{
   "Period": {
      "Name": "weekdays",
      "Endtime": "18:00",
      "Type": "period",
      "Begintime": "09:00",
      "Weekdays": [
         "mon-fri"
      ]
   }
    }
```

## create-schedule
<a name="create-schedule"></a>

### 说明
<a name="create-schedule-description"></a>

创建计划。

### 参数
<a name="create-schedule-arguments"></a>

 `--name`   
+ 计划的名称

  类型：字符串

  是否必需：是

 `--description`   
+ 计划的描述

  类型：字符串

  必需：否

 `--enforced`   
+ 强制实施实例的计划状态

  必需：否

 `--use-metrics`   
+ 收集亚马逊 CloudWatch 指标

  必需：否

 `--periods`   
+ 计划的运行时段列表。如果指定了多个时段，则只要某个时段的条件判定为 `true`，解决方案就会启动实例。

  类型：字符串

  限制：时段的逗号分隔列表。使用 `<period-name>@[replaceable]<instance type>` 可指定时段的实例类型。例如 `weekdays@t2.large`。

  是否必需：是

 `--retain-running`   
+ 阻止解决方案在运行时段结束时停止实例（如果实例已在该运行时段开始前被手动启动）。

  必需：否

 `--ssm-maintenance-window`   
+ 将 AWS Systems Manager 维护时段作为运行时段添加到 Amazon EC2 实例计划中。

  类型：字符串

  必需：否

 `--do-not-stop-new-instances`   
+ 不在首次标记实例时将其停止（如果实例在运行时段之外运行）

  必需：否

 `--timezone`   
+ 计划将使用的时区

  类型：字符串数组

  必需：否（如果不使用此参数，则使用主解决方案堆栈中的默认时区。）

 `--use-maintenance-window`   
+ 将 Amazon RDS 维护时段作为运行时段添加到 Amazon RDS 实例计划，或将 AWS Systems Manager 维护时段作为运行时段添加到 Amazon EC2 实例计划

  类型：true/false

  必需：否（默认为 true）

### 示例
<a name="create-schedule-example"></a>

```
$ scheduler-cli create-schedule --name LondonOfficeHours --periods weekdays,weekends --timezone Europe/London --stack Scheduler
{
   "Schedule": {
      "Enforced": false,
      "Name": "LondonOfficeHours",
      "StopNewInstances": true,
      "Periods": [
         "weekends",
         "weekdays"
      ],
      "Timezone": "Europe/London",
      "Type": "schedule"
   }
}
```

## delete-period
<a name="delete-period"></a>

 `--name`   
+ 适用时段的名称

  类型：字符串

  是否必需：是

**重要**  
如果该时段已用于现有计划中，则必须先从这些计划中移除该时段，*然后* 才能将其删除。

 **示例** 

```
$ scheduler-cli delete-period --name weekdays --stack Scheduler
{
   "Period": "weekdays"
}
```

## delete-schedule
<a name="delete-schedule"></a>

### 说明
<a name="delete-schedule-description"></a>

删除现有计划

### 参数
<a name="delete-schedule-arguments"></a>

 `--name`   
+ 适用计划的名称

  类型：字符串

  是否必需：是

### 示例
<a name="delete-schedule-example"></a>

```
$ scheduler-cli delete-schedule --name LondonOfficeHours --stack Scheduler
{
   "Schedule": "LondonOfficeHours"
}
```

## describe-periods
<a name="describe-periods"></a>

### 说明
<a name="describe-periods-description"></a>

列出已为实例计划程序堆栈配置的时段

### 参数
<a name="describe-periods-arguments"></a>

 `--name`   
+ 要描述的特定时段的名称

  类型：字符串

  必需：否

### 示例
<a name="describe-periods-example"></a>

```
$ scheduler-cli describe-periods --stack Scheduler
{
   "Periods": [
      {
         "Name": "first-monday-in-quarter",
         "Months": [
            "jan/3"
         ],
         "Type": "period",
         "Weekdays": [
            "mon#1"
         ],
         "Description": "Every first Monday of each quarter"
      },
      {
         "Description": "Office hours",
         "Weekdays": [
            "mon-fri"
         ],
         "Begintime": "09:00",
         "Endtime": "17:00",
         "Type": "period",
         "Name": "office-hours"
      },

      {
         "Name": "weekdays",
         "Endtime": "18:00",
         "Type": "period",
         "Weekdays": [
            "mon-fri"
         ],
         "Begintime": "09:00"
      },
      {
         "Name": "weekends",
         "Type": "period",
         "Weekdays": [
            "sat-sun"
         ],
         "Description": "Days in weekend"
      }
   ]
}
```

## describe-schedules
<a name="describe-schedules"></a>

### 说明
<a name="describe-schedules-description"></a>

列出已为实例计划程序堆栈配置的计划。

### 参数
<a name="describe-schedules-arguments"></a>

 `--name`   
+ 要描述的特定计划的名称

  类型：字符串

  必需：否

### 示例
<a name="describe-schedules-example"></a>

```
$ scheduler-cli describe-schedules --stack Scheduler

{
   "Schedules": [
      {
         "OverrideStatus": "running",
         "Type": "schedule",
         "Name": "Running",
         "UseMetrics": false
      },
      {
         "Timezone": "UTC",
         "Type": "schedule",
         "Periods": [
            "working-days@t2.micro",
            "weekends@t2.nano"
         ],
         "Name": "scale-up-down"
      },
      {
         "Timezone": "US/Pacific",
         "Type": "schedule",
         "Periods": [
            "office-hours"
         ],
         "Name": "seattle-office-hours"
      },
      {
         "OverrideStatus": "stopped",
         "Type": "schedule",
         "Name": "stopped",
         "UseMetrics": true
      }
   ]
}
```

## describe-schedule-usage
<a name="describe-schedule-usage"></a>

### 说明
<a name="describe-schedule-usage-description"></a>

列出计划内运行的所有时段，并计算实例的计费时长（以小时为单位）。使用此命令可模拟计划以计算潜在的成本节省，以及创建或更新计划后的运行时段。

### 参数
<a name="describe-schedule-usage-arguments"></a>

 `--name`   
+ 适用计划的名称

  类型：字符串

  是否必需：是

 `--startdate`   
+ 用于计算的时段的开始日期。默认日期为当前日期。

  类型：字符串

  必需：否

 `--enddate`   
+ 用于计算的时段的结束日期。默认日期为当前日期。

  类型：字符串

  必需：否

### 示例
<a name="describe-schedule-usage-example"></a>

```
$ scheduler-cli describe-schedule-usage --stack InstanceScheduler --name seattle-office-hours
{
   "Usage": {
      "2017-12-04": {
         "BillingHours": 8,
         "RunningPeriods": {
            "Office-hours": {
               "Begin": "12/04/17 09:00:00",
               "End": "12/04/17 17:00:00",
               "BillingHours": 8,
               "BillingSeconds": 28800
            }
         },
         "BillingSeconds": 28800
      }
   },
   "Schedule": "seattle-office-hours"
```

## update-period
<a name="update-period"></a>

### 说明
<a name="update-period-description"></a>

更新现有时段

### 参数
<a name="update-period-arguments"></a>

`update-period` 命令支持与 `create-period` 命令相同的参数。有关参数的更多信息，请参阅 [create period 命令](#create-period)。

**重要**  
如果您未指定参数，则将从时段中移除该参数。

## update-schedule
<a name="update-schedule"></a>

### 说明
<a name="update-schedule-description"></a>

删除现有计划

### 参数
<a name="update-schedule-arguments"></a>

`update-schedule` 命令支持与 `create-schedule` 命令相同的参数。有关参数的更多信息，请参阅 [create schedule 命令](#create-schedule)。

**重要**  
如果您未指定参数，则将从计划中移除该参数。

## help
<a name="help"></a>

### 说明
<a name="help-description"></a>

显示计划程序 CLI 的有效命令和参数的列表。

### 示例
<a name="help-example"></a>

```
$ scheduler-cli --help
usage: scheduler-cli [-h] [--version]
                     {create-period,create-schedule,delete-period,delete-schedule,describe-periods,describe-schedule-usage,describe-schedules,update-period,update-schedule}
                     ...

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit

subcommands:
  Valid subcommands

  {create-period,create-schedule,delete-period,delete-schedule,describe-periods,describe-schedule-usage,describe-schedules,update-period,update-schedule}
                        Commands help
    create-period       Creates a period
    create-schedule     Creates a schedule
    delete-period       Deletes a period
    delete-schedule     Deletes a schedule
    describe-periods    Describes configured periods
    describe-schedule-usage
                        Calculates periods and billing hours in which
                        instances are running
    describe-schedules  Described configured schedules
    update-period       Updates a period
    update-schedule     Updates a schedule
```

在将 `--help` 参数与特定命令结合使用时，此参数将显示该命令的有效子命令和参数。

### 特定命令示例
<a name="help-example-specific-command"></a>

```
$ scheduler-cli describe-schedules --help
usage: scheduler-cli describe-schedules [-h] [--name NAME] [--query QUERY]
                                        [--region REGION] --stack STACK

optional arguments:
  -h, --help         show this help message and exit
  --name NAME        Name of the schedule
  --query QUERY      JMESPath query to transform or filter the result
  --region REGION    Region in which the Instance Scheduler stack is
                        deployed
  --stack STACK, -s STACK
                     Name of the Instance Scheduler stack
```

# 更新全局配置设置
<a name="update-global-configuration-settings"></a>

首次在 AWS 中部署实例调度程序的中心模板时 CloudFormation，选择了许多全局配置设置作为参数输入。这些全局配置参数可以随时在 CloudFormation 控制台中更新。

要更新实例计划程序的全局配置，请登录 account/region 包含您的中心部署的，然后转到 AWS CloudFormation 控制台。找到实例计划程序中心堆栈，然后选择***更新 → 使用现有模板***。更新您要更改的任何全局配置参数，然后选择***下一步 → 下一步 → 提交***， CloudFormation 更新相关的解决方案资源。

# 使用基础设施即代码（IaC）管理计划
<a name="manage-schedules-using-infrastructure-as-code-iac"></a>

**重要**  
在中心堆栈部署完成后，使用单独的模板部署计划。

AWS 上的实例调度器提供了自定义资源 (`ServiceInstanceSchedule`)，您可以使用该资源通过 AWS CloudFormation 配置和管理计划。自定义资源使用的 PascalCase 密钥与 Amazon DynamoDB 中的实例计划程序配置表相同（有关示例，请参阅下面的模板）。有关计划的字段的更多信息，请参阅[计划定义](schedule-reference.md#schedule-definitions)。有关时段的字段的更多信息，请参阅[时段定义](period-reference.md#period-definitions)。

在使用自定义资源创建计划时，默认情况下，该计划的名称是自定义资源的逻辑资源名称。要指定其他名称，请使用自定义资源的 Name 属性。默认情况下，该解决方案还会将堆栈名称作为前缀添加到计划名称中。如果您不想添加堆栈名称作为前缀，请使用 `NoStackPrefix` 属性。

在使用 Name 和 `NoStackPrefix` 属性时，请确保选择唯一的计划名称。如果已存在同名计划，将不会创建或更新资源。

要开始使用 IaC 管理计划，请复制并粘贴以下示例模板，然后根据需要自定义任意数量的计划。将文件另存为.template 文件（例如：`my-schedules.template`），然后使用 AWS CloudFormation 部署您的新模板。有关完整的计划模板的示例，请参阅[示例计划](period-reference.md#period-definitions)。

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  ServiceInstanceScheduleServiceTokenARN:
    Type: String
    Description: (Required) service token arn taken from InstanceScheduler outputs
Metadata:
  'AWS::CloudFormation::Designer': {}
Resources:
  SampleSchedule1:
    Type: 'Custom::ServiceInstanceSchedule'
    Properties:
      ServiceToken: !Ref ServiceInstanceScheduleServiceTokenARN #do not edit this line
      NoStackPrefix: 'False'
      Name: my-renamed-sample-schedule
      Description: a full sample template for creating cfn schedules showing all possible values
      Timezone: America/New_York
      Enforced: 'True'
      Hibernate: 'True'
      RetainRunning: 'True'
      StopNewInstances: 'True'
      UseMaintenanceWindow: 'True'
      SsmMaintenanceWindow: 'my_window_name'
      Periods:
      - Description: run from 9-5 on the first 3 days of March
        BeginTime: '9:00'
        EndTime: '17:00'
        InstanceType: 't2.micro'
        MonthDays: '1-3'
        Months: '3'
      - Description: run from 2pm-5pm on the weekends
        BeginTime: '14:00'
        EndTime: '17:00'
        InstanceType: 't2.micro'
        WeekDays: 'Sat-Sun'

  SampleSchedule2:
    Type: 'Custom::ServiceInstanceSchedule'
    Properties:
      ServiceToken: !Ref ServiceInstanceScheduleServiceTokenARN #do not edit this line
      NoStackPrefix: 'True'
      Description: a sample template for creating simple cfn schedules
      Timezone: Europe/Amsterdam
      Periods:
      - Description: stop at 5pm every day
        EndTime: '17:00'
```

部署模板时，您必须为在 AWS 上部署实例计划程序提供 ServiceToken ARN。此 ARN 可以在其中找到，方法是导航 CloudFormation 到已部署的实例调度程序堆栈，选择**输出**，然后查找 `ServiceInstanceScheduleServiceToken.` 

**重要**  
请不要使用 DynamoDB 控制台或计划程序 CLI 来删除或修改已使用自定义资源配置的计划和时段。如果您执行此操作，则会导致堆栈中存储的参数与表中的值产生冲突。此外，请不要在使用 DynamoDB 控制台或计划程序 CLI 创建的计划中使用通过自定义资源配置的时段。

在删除主实例计划程序堆栈之前，必须先删除所有其他包含已使用自定义资源创建的计划和时段的堆栈，因为自定义资源堆栈包含主堆栈的 DynamoDB 表的依赖项。

在配置 DynamoDB 表中，已通过自定义资源配置的计划和时段可由 **configured\$1in\$1stack** 属性标识。该属性包含已用于创建项目的堆栈的 Amazon 资源名称。

# 处理 EC2 容量不足错误
<a name="specifying-alternate-instance-types-for-ec2"></a>

当实例调度器由于容量不足而无法启动实例时，其默认行为是发出启动失败事件（请参阅[EventBridge 事件](monitor-the-solution.md#monitoring-eventbridge-events)），然后在下一个计划间隔内重试。或者，可以将实例调度器配置为在重试启动操作之前将您的实例调整为其他实例类型。此功能有助于提高容量受限环境中的实例可用性。

## 配置
<a name="configuration"></a>

要为 EC2 实例启用备用实例类型，请将`IS-PreferredInstanceTypes`标签添加到实例中，并按优先顺序列出以逗号分隔的实例类型列表（优先顺序排在最前面）：

```
IS-PreferredInstanceTypes: t3.medium,t3.large,m5.large
```

## 工作原理
<a name="how-it-works"></a>

备用实例类型列表按优先顺序提供，第一种类型是最受欢迎的类型。当实例调度器尝试启动 EC2 实例时：

1. 如果实例当前不是最首选的大小，则在启动之前会尝试将其大小调整为最喜欢的大小

1. 如果启动操作成功，则不再尝试其他替代操作

1. 如果由于容量不足而启动操作失败：

   1. 尝试调整为列表中下一个备用实例类型的大小

   1. 重试启动操作

   1. 如果仍然不成功，请尝试下一个替代类型

   1. 一直持续到成功或用尽所有备选方案

## 要求和限制
<a name="requirements-and-limitations"></a>

 **实例兼容性**：备用实例类型必须与实例的当前配置（AMI、子网、安全组等）兼容。有关更多信息，请参阅 *Amazon EC2 用户指南*中的[更改实例类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html#resize-limitations)。

 **标签格式**：`IS-PreferredInstanceTypes`标签值必须是以逗号分隔的有效 EC2 实例类型列表。

## 示例
<a name="example"></a>

对于最初配置为的实例`t3.small`，您可以配置：

```
Schedule: office-hours
IS-PreferredInstanceTypes: t3.small,t3.medium,t3.large,m5.large
```

如果`t3.small`实例由于容量问题而无法启动，则实例调度器将尝试调整实例大小并按原样`t3.medium`启动实例`t3.large`，`m5.large`直到成功或所有选项都用完为止。

# EC2 Auto Scaling 组计划
<a name="ec2-auto-scaling-group-scheduling"></a>

AWS 实例计划程序支持使用计划扩缩操作来计划 EC2 Auto Scaling 组（ASG）。这种计划方式与 EC2/RDS 计划的实现方式不同，此部分将进一步说明。

有关计划扩缩操作的更多信息，请参阅 [Amazon EC2 Auto Scaling 的计划扩缩](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scheduled-scaling.html)。

## ASG 计划概览
<a name="asg-scheduling-overview"></a>

ASGs 可以通过应用计划标签进行调度，如[标记实例以进行](operator-guide.md#tag-instances-for-scheduling)调度 

## for Running/Stopped 的定义 ASGs
<a name="definition-of-runningstopped-for-asgs"></a>

在配置一个 Auto Scaling 组时，用户需要为该 ASG 指定最小容量、所需容量和最大容量。实例调度器将这些值称为 ASG 的 min-desired-max或 MDM。

ASG 的***运行状态***是使用`IS-MinDesiredMax`控制标签定义的。此标签应包含所需的 MDM 值，格式为`min,desired,max`（例如：`1,3,5`）。

如果在首次标记 ASG 进行调度时未提供`IS-MinDesiredMax`标签，则将根据标记时 ASG 的当前大小自动生成该标签。

对于所有***停止状态 ASGs ***，都被定义为 0-0-0 的 MDM。

## 助理秘书长的行为 Start/Stop
<a name="asg-startstop-behavior"></a>

当实例调度器启动或停止 ASG 时，它会修改 ASG 的容量设置：

 **启动 ASG**：将最小、所需和最大容量设置为`IS-MinDesiredMax`标签中定义的值（或首次标记 ASG 时自动生成的值）。

 **停止 ASG**：将最小、所需和最大容量设置为 0-0-0，这将导致 ASG 中的所有实例终止。

### 限制
<a name="limitations"></a>

ASG 计划是通过将 AWS 实例计划程序计划转换为与 ASG 服务兼容的计划扩缩规则来执行的。这种转换方式非常适合不使用复杂的 cron 表达式的简单单时段计划。

ASG 计划不支持以下计划功能：
+ 高级计划标志，例如*强制执行*和*保持运行*。
+ 按周期表示的第 N 个工作日、最近的工作日和最后一个工作日的表达式。
+ 包含紧邻时段或重叠时段的多时段计划。
  + 在为多周期计划配置计划扩展操作时，AWS 上的 beginning/end 实例计划程序会直接将周期转换为 ASG 的 start/stop 操作，即使另一个重叠或相邻的时段通常会导致跳过该操作。

# 监控解决方案
<a name="monitor-the-solution"></a>

## 日志记录和通知
<a name="logging-and-notifications"></a>

实例计划程序使用针对 Logs Insight CloudWatch s 查询进行了优化的结构化日志记录。此解决方案将记录每个已标记实例的处理信息、实例的时段评估结果、时段内的实例所需状态、已应用的操作和调试消息。

日志按两个日志组写入 Amazon CloudWatch 日志：

 `{stackName}-{namespace}-administrative-logs`   
资源注册和注销、自定义资源操作、CLI 请求和其他管理活动的日志。

 `{stackName}-{namespace}-scheduling-logs`   
用于调度操作的日志，包括编排和请求处理程序执行。

警告和错误日志还会转发到解决方案创建的 Amazon SNS 主题，该主题可配置为向订阅的电子邮件地址发送消息。您可以在解决方案堆栈的**输出**选项卡中找到该 Amazon SNS 主题的名称。

## 信息标签
<a name="informational-tags"></a>

启用信息标记（默认）后，Instance Scheduler 会将标签直接写入托管资源，以提供对解决方案调度活动的 at-a-glance可见性。这些标签是使用 AWS Resource Groups Tagging API 应用的，并且在计划程序每次处理资源时都会更新。

您可以使用中心堆栈上的 “**启用信息标记” 参数启用**或禁用此功能。有关更多信息，请参阅[更新全局配置设置](update-global-configuration-settings.md)。

### 信息标签密钥
<a name="informational-tag-keys"></a>

以下标签写入托管资源：


| 标签键 | 说明 | 
| --- | --- | 
|   `IS-ManagedBy`   |  管理此资源的实例调度器中心堆栈的 ARN。在首次注册资源以进行计划时以及随后的每个计划操作时应用。  | 
|   `IS-LastAction`   |  上次对资源执行的调度操作以及 UTC 时间戳。例如：`Started 2025-06-15 09:00:00 UTC` 或 `Stopped 2025-06-15 17:00:00 UTC`。只有在调度器主动启动或停止资源时才会更新此标记（而不是当它评估资源并确定无需执行任何操作时）。  | 
|   `IS-Error`   |  如果调度程序在处理资源时遇到错误，则此标签包含错误代码和 UTC 时间戳。例如：`StartFailed 2025-06-15 09:00:05 UTC`。下次成功执行计划操作时，此标签会自动清除。  | 
|   `IS-ErrorMessage`   |  人类可读的错误描述。此标签仅在同时存在时`IS-Error`才会出现，并在其旁边被清除。  | 

### 错误代码
<a name="informational-tag-error-codes"></a>

`IS-Error`标签中可能出现以下错误代码：


| 错误代码 | 说明 | 
| --- | --- | 
|   `UnknownSchedule`   |  在资源的计划标签中指定的计划名称与配置表中定义的任何计划都不匹配。  | 
|   `UnsupportedResource`   |  该资源类型不支持调度（例如，另一个 RDS 实例的只读副本）。  | 
|   `IncompatibleSchedule`   |  分配给资源的计划与资源类型不兼容（例如，使用不支持的 cron 表达式的 ASG 计划）。  | 
|   `StartFailed`   |  调度器尝试启动资源，但操作失败。  | 
|   `StopFailed`   |  调度器试图停止资源，但操作失败。  | 
|   `ConfigurationFailed`   |  调度程序尝试在 Auto Scaling 组上配置定时扩展规则，但操作失败。  | 
|   `UnknownError`   |  处理资源时发生意外错误。  | 

### 标签行为
<a name="informational-tag-behavior"></a>
+ 首次注册资源进行调度时，`IS-ManagedBy`标签会立即应用。
+ 取消注册资源（移除计划标签）后，所有信息标签（、`IS-ManagedBy`、`IS-LastAction``IS-Error`、`IS-ErrorMessage`）都将从该资源中删除。
+ 如果相同的错误仍然存在并且资源上仍然存在现有标签，则不会在每个计划间隔内重写错误标签。它们只有在错误代码更改时才会更新。
+ 为了符合 AWS 的标签限制，所有标签值都被截断为 256 个字符。

### 标签治理注意事项
<a name="informational-tag-conflict-with-tag-policies"></a>

**重要**  
作为正常操作的一部分，Instance Scheduler 会在托管资源上创建和更新上面列出的标签。如果您的组织通过 AWS Config 规则、标签策略、服务控制策略或自动修复来强制执行标签管理，请确保将变更管理控制配置为允许使用以下标签密钥：  
 `IS-ManagedBy` 
 `IS-LastAction` 
 `IS-Error` 
 `IS-ErrorMessage` 
 `IS-PreferredInstanceTypes`（如果使用备用实例类型）
 `IS-MinDesiredMax`（如果安排了 Auto Scaling 群组）
如果您无法在监管策略中容纳这些标签，请在中心堆栈`No`上将 “**启用信息性标记” 参数设置为，从而禁用信息标记**。请注意，这也将禁用用于确认资源注册的`IS-ManagedBy`标签。

### 控制标签
<a name="informational-tag-control-tags"></a>

除了信息标签外，实例调度器还使用以下控制标签来实现特定功能：


| 标签键 | 说明 | 
| --- | --- | 
|   `IS-PreferredInstanceTypes`   |  由于容量不足，启动实例时要尝试的备用 EC2 实例类型的逗号分隔列表失败。有关更多信息，请参阅[处理 EC2 容量不足错误](specifying-alternate-instance-types-for-ec2.md)。  | 
|   `IS-MinDesiredMax`   |  格式为 Auto Scaling 组的最小、所需和最大容量值`min,desired,max`。有关更多信息，请参阅 [EC2 Auto Scaling 组计划](ec2-auto-scaling-group-scheduling.md)。  | 

### 标签容量
<a name="informational-tag-capacity"></a>

**重要**  
AWS 资源通常每个资源的标签上限为 50 个。实例调度器最多可以在资源上使用 6 个标签（4 个信息标签加上最多 2 个控制标签）。确保您的资源有足够的标签容量，以便在现有标记策略的同时容纳实例计划程序标签。  
如果资源达到或接近 50 个标签的限制，则信息标签写入可能会失败。调度程序会记录这些故障，但会继续安排操作。如果您怀疑存在标记问题，请查看 CloudWatch 日志。

## CloudWatch 记录见解查询
<a name="cloudwatch-logs-insights-queries"></a>

实例调度器的结构化日志格式支持使用 CloudWatch Logs Insights 进行高效查询。您可以使用 Logs Insights 来搜索、分析和可视化日志数据，以解决操作问题并监控计划活动。

Instance Scheduler 提供预格式化的日志查询，您可以从 CloudWatch 日志控制台的 “已保存查询” 部分访问这些查询：

 `SchedulingHistory`   
查询对资源执行的调度操作，包括启动和停止操作。

 `RegistrationEvents`   
查询资源注册和注销事件。

 `Errors`   
查询错误日志以解决与解决方案有关的问题。

有关 [Lo CloudWatch gs Insights 的更多信息，请参阅 *Amazon Logs 用户指南中的使用 CloudWatch CloudWatch 日志*见解分析日志数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)。

## 运营洞察控制面板
<a name="operational-insights-dashboard"></a>

Operation Insights 仪表板可让您深入了解计划实例管理带来的解决方案性能和成本节约。

要访问控制面板，请确保在中心堆栈参数中将**操作监控**设置为 “启用”。导航到导航菜单 CloudWatch 并选择 “仪表板”。仪表板名称为 *\$1 \$1stack-name\$1-Operational-Insights-D* ashboard\$1。

控制面板显示托管实例计数、节省的运行时数和 Lambda 函数性能指标。

 **运营见解仪表板概述** 

![\[OpsDashboardOverview\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/instance-scheduler-on-aws/images/OpsDashboardOverview.png)


**注意**  
这些图表中的信息取决于解决方案中心堆栈上配置的计划间隔。更新解决方案的计划间隔时，控制面板将仅显示计划间隔最近一次更新之后的计划指标。

监控 Lambda 执行时间以确保最佳性能（参见[配额](solution-quotas.md)）。如果执行时间一直接近超时阈值，请考虑增加 Lambda 大小属性或将实例调度器部署到托管区域延迟较低的区域。

 **显示持续时间和错误计数的 Lambda 指标** 

![\[OpsDashboardLambdaMetrics\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/instance-scheduler-on-aws/images/OpsDashboardLambdaMetrics.png)


### 与此功能相关的额外成本
<a name="additional-costs-associated-with-this-feature"></a>

此操作仪表板由解决方案收集的自定义 CloudWatch 指标提供支持，这将产生额外费用。可通过在解决方案中心堆栈上禁用“运营监控”来关闭此功能。此功能的额外成本为每月 3.00 美元，此外还会根据部署规模产生额外的扩展成本。具体成本如下：


| 自定义 CloudWatch 控制面板 | 3 美元 | 
| --- | --- | 
|  Per-instance-type 指标  |  每实例类型 0.90 美元\$1  | 
|  API 使用  |  每个[活跃目标大约 0.10 美元\$1\$1](cost.md#calculating-scheduling-targets)  | 

 ***\$1这些费用按服务类别 (EC2/RDS) 进行跟踪，并且仅针对实际用于调度的实例类型进行跟踪。***

 ** **\$1** 

## 监控 EventBridge 事件
<a name="monitoring-eventbridge-events"></a>

Instance Scheduler 将调度和注册事件发布到EventBridge 事件总线，以提供解决方案操作的可见性并实现与其他 AWS 服务的集成。

### 事件类型
<a name="event-types"></a>

该解决方案发布了两类主要的事件：

 **计划事件**：在实例计划程序采取措施启动、停止或配置托管资源时发布。这些事件包括有关实例、计划和所采取的操作的详细信息。启动、停止或配置托管资源。这些事件包括有关实例、时间表和所采取的操作的详细信息。

 **注册事件**：在资源注册或取消注册以进行基于标记操作的调度时发布。

### 活动目的地
<a name="event-destinations"></a>

 **IS-LocalEvents 事件总**线：`IS-LocalEvents`事件总线部署在每个成员账户（包括中心账户）的每个托管区域。每条总线都会接收用于在该区域内调度操作和资源注册的事件。

 **IS-GlobalEvents 事件总线**：中心账户中的`IS-GlobalEvents`事件总线会收到发送到任何`IS-LocalEvents`事件总线的每个事件的副本，从而对所有账户和区域进行集中监控。

### 使用 EventBridge 事件
<a name="using-eventbridge-events"></a>

您可以为以下目的创建 EventBridge 规则：
+ 监控整个基础架构的调度操作
+ 在实例启动或停止时触发通知
+ 与其他 AWS 服务集成，实现自动化工作流程
+ 实施合规性监控和警报

### 事件结构
<a name="event-structure"></a>

所有活动都使用标准 EventBridge 格式。以下示例显示了每种事件类型的结构：

 **计划事件：**

```
{
  "Source": "instance-scheduler",
  "DetailType": "Scheduling Action",
  "Resources": ["arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"],
  "Detail": {
    "account": "123456789012",
    "region": "us-east-1",
    "service": "ec2",
    "resource_id": "i-1234567890abcdef0",
    "requested_action": "Start",
    "action_taken": "Started",
    "schedule": "office-hours"
  }
}
```

 **注册活动：**

```
{
  "Source": "instance-scheduler",
  "DetailType": "Resource Registered",
  "Resources": ["arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"],
  "Detail": {
    "account": "123456789012",
    "region": "us-east-1",
    "service": "ec2",
    "resource_id": "i-1234567890abcdef0",
    "schedule": "office-hours"
  }
}
```

每个事件都包含以下关键字段：
+  `Source`-将事件源标识为 “实例调度器”
+  `DetailType`-指定事件类别：“计划操作”（例如操作）或标记事件的 “已注册资源”
+  `Resources`-包含受影响的 ARNs AWS 资源的数组
+  `Detail`-包含带有账户 ID、区域、服务类型 (ec2/rds)、资源 ID、计划名称的事件负载，对于计划事件，包括请求的操作和实际结果

调度事件的可能`requested_action`值：
+  `Start`: 用于启动实例的调度程序
+  `Stop`: 计划程序旨在停止实例
+  `Configure`: 用于配置实例的调度程序

调度事件的可能`action_taken`值：
+  `Started`: 实例已启动
+  `Stopped`: 实例已停止
+  `Hibernated`: 实例已休眠
+  `Configured`: 实例配置已修改
+  `Error`: 调度操作期间出错

### 创建 EventBridge 规则
<a name="creating-eventbridge-rules"></a>

要监控实例调度器事件，请执行以下操作：

1. 在您的 AWS 账户中导航到 EventBridge 控制台

1. 创建针对`IS-GlobalEvents`事件总线（用于集中式监视）或`IS-LocalEvents`事件总线（用于本地监控）的新规则

1. 定义事件模式以匹配实例调度器事件

1. 配置目标，例如 SNS 主题、Lambda 函数或日志 CloudWatch

有关更多信息 EventBridge，请参阅 [Amazon 是什么 EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) 在《*亚马逊 EventBridge 用户指南》*中。