

• AWS Systems Manager CloudWatch 控制面板在 2026 年 4 月 30 日之后将不再可用。客户可以像现在一样继续使用 Amazon CloudWatch 控制台来查看、创建和管理其 Amazon CloudWatch 控制面板。有关更多信息，请参阅 [Amazon CloudWatch 控制面板文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

# 使用维护时段发送返回状态通知的命令
<a name="monitoring-sns-mw-register"></a>

以下过程显示了如何使用 AWS Systems Manager 控制台或 AWS Command Line Interface（AWS CLI）将 Run Command 任务注册到维护时段。Run Command 是 AWS Systems Manager 中的一项工具。这些过程还介绍了如何将 Run Command 任务配置为返回状态通知。

**开始前的准备工作**  
如果您尚未创建维护时段或注册目标，请参阅 [使用控制台创建和管理维护时段](sysman-maintenance-working.md)，了解有关如何创建维护时段和注册目标的步骤。

要接收来自 Amazon Simple Notification Service (Amazon SNS) 服务的通知，请将 `iam:PassRole` 策略附加到在已注册的任务中指定的 Maintenance Windows 服务角色。如果您尚未向 Maintenance Windows 服务角色添加 `iam:PassRole` 权限，请参阅 [任务 5：将 iam:PassRole 策略附加到您的维护时段角色](monitoring-sns-notifications.md#monitoring-sns-passpolicy-mw)。

## 将返回通知的 Run Command 任务注册到维护时段（控制台）
<a name="monitoring-sns-mw-register-console"></a>

可以使用以下过程，借助 Systems Manager 控制台将配置为返回状态通知的 Run Command 任务注册到您的维护时段。

**将返回通知的 Run Command 任务注册到维护时段（控制台）**

1. 访问 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)，打开 AWS Systems Manager 控制台。

1. 在导航窗格中，请选择 **Maintenance Windows**。

1. 选择您要为其注册配置为发送 Amazon Simple Notification Service (Amazon SNS) 通知的 Run Command 任务的维护时段。

1. 选择 **Actions (操作)**，然后选择 **Register Run command task (注册运行命令任务)**。

1. （可选）在 **Name (名称)** 字段中，输入任务的名称。

1. （可选）在 **Description (描述)** 字段中，输入描述。

1. 对于 **Command document**（命令文档），选择一个命令文档。

1. 对于 **Task priority (任务优先级)**，指定此任务的优先级。零 (`0`) 表示最高优先级。维护时段内的任务按优先级顺序计划。具有相同优先级的任务则并行计划。

1. 在 **Targets (目标)** 部分中，选择已注册的目标组或选择未注册的目标。

1. 对于 **Rate control（速率控制）**：
   + 对于 **Concurrency**（并发），请指定要同时运行该命令的托管式节点的数量或百分比。
**注意**  
如果您通过指定应用于托管式节点的标签或指定 AWS Resource Groups 来选择目标，但不确定有多少个托管式节点已被设为目标，则可通过指定百分比来限制可同时运行该文档的目标的数量。
   + 对于 **Error threshold**（错误阈值），请指定当命令在一定数量或百分比的节点上失败后，何时在其他托管式节点上停止运行该命令。例如，如果您指定三个错误，Systems Manager 将在收到第四个错误时停止发送该命令。仍在处理该命令的托管式节点也可能发送错误。

1. 在 **IAM service role (IAM 服务角色)** 区域中，选择对 SNS 角色具有 `iam:PassRole` 权限的 Maintenance Windows 服务角色。
**注意**  
将 `iam:PassRole` 权限添加到 Maintenance Windows 角色，以允许 Systems Manager 将 SNS 角色传递给 Amazon SNS。如果您尚未添加 `iam:PassRole` 权限，请参阅主题[使用 Amazon SNS 通知监控 Systems Manager 状态更改](monitoring-sns-notifications.md)中的“任务 5”。

1. （可选）对于 **Output options (输出选项)**，要将命令输出保存到文件，请选中 **Enable writing output to S3 (启用将输出写入 S3)** 方框。在方框中输入存储桶和前缀（文件夹）名称。
**注意**  
授予将数据写入 S3 存储桶的能力的 S3 权限，是分配给托管式节点的实例配置文件的权限，而不是执行此任务的 IAM 用户的权限。有关更多信息，请参阅[配置 Systems Manager 所需的实例权限](setup-instance-permissions.md)或[为混合环境创建 IAM 服务角色](hybrid-multicloud-service-role.md)。此外，如果指定的 S3 存储桶位于不同的 AWS 账户 中，请确认与该托管式节点关联的实例配置文件或 IAM 服务角色具有写入该存储桶的所需权限。

1. 在 **SNS notifications (SNS 通知)** 部分中，执行以下操作：
   + 选择 **Enable SNS Notifications (启用 SNS 通知)**。
   + 对于 **IAM role (IAM 角色)**，请选择您在[使用 Amazon SNS 通知监控 Systems Manager 状态更改](monitoring-sns-notifications.md)的“任务 3”中创建的 Amazon SNS IAM 角色 Amazon Resource Name (ARN)，以启动 Amazon SNS。
   + 对于 **SNS topic (SNS 主题)**，请输入要使用的 Amazon SNS 主题 ARN。
   + 对于 **Event type (事件类型)**，请选择要针对其接收通知的事件。
   + 对于 **Notification type**（通知类型），请选择针对发送给多个节点（调用）或命令摘要的命令的每个副本接收通知。

1. 在 **Parameters (参数)** 部分中，根据您选择的命令文档输入所需的参数。

1. 选择**注册运行命令任务**。

1. 在下次运行维护时段后，检查您的电子邮件以查找来自 Amazon SNS 的邮件，然后打开该电子邮件。Amazon SNS 可能需要几分钟来发送该电子邮件。

## 将返回通知的 Run Command 任务注册到维护时段 (CLI)
<a name="monitoring-sns-mw-register-cli"></a>

可以使用以下过程，借助 AWS CLI 将配置为返回状态通知的 Run Command 任务注册到维护时段。

**将返回通知的 Run Command 任务注册到维护时段 (CLI)**
**注意**  
为了更好地管理您的任务选项，此过程使用命令选项 `--cli-input-json`，其选项值存储在 JSON 文件中。

1. 在您的本地计算机上，创建一个名为 `RunCommandTask.json` 的文件。

1. 将以下内容粘贴到该文件中。

   ```
   {
       "Name": "{{Name}}",
       "Description": "{{Description}}",
       "WindowId": "{{mw-0c50858d01EXAMPLE}}",
       "ServiceRoleArn": "arn:aws:iam::{{account-id}}:role/{{MaintenanceWindowIAMRole}}",
       "MaxConcurrency": "{{1}}",
       "MaxErrors": "{{1}}",
       "Priority": {{3}},
       "Targets": [
           {
               "Key": "WindowTargetIds",
               "Values": [
                   "{{e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE}}"
               ]
           }
       ],
       "TaskType": "RUN_COMMAND",
       "TaskArn": "{{CommandDocumentName}}",
       "TaskInvocationParameters": {
           "RunCommand": {
               "Comment": "{{Comment}}",
               "TimeoutSeconds": {{3600}},
               "NotificationConfig": {
                   "NotificationArn": "arn:aws:sns:{{region}}:{{account-id}}:{{SNSTopicName}}",
                   "NotificationEvents": [
                       "{{All}}"
                   ],
                   "NotificationType": "{{Command}}"
               },
               "ServiceRoleArn": "arn:aws:iam::{{account-id}}:role/{{SNSIAMRole}}"
           }
       }
   }
   ```

1. 将示例值替换为有关您自己的资源的信息。

   如果您想使用本示例中略去的选项，您也可以恢复它们。例如，您可以将命令输出保存到 S3 存储桶。

   有关更多信息，请参阅《AWS CLI 命令参考》**中的 [https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html)。

1. 保存该文件。

1. 在您的本地计算机上保存该文件的目录中，运行以下命令。

   ```
   aws ssm register-task-with-maintenance-window --cli-input-json file://RunCommandTask.json
   ```
**重要**  
务必在文件名前包含 `file://`。此命令中需要该项。

   如果成功，该命令将返回类似以下内容的信息。

   ```
   {
       "WindowTaskId": "j2l8d5b5c-mw66-tk4d-r3g9-1d4d1EXAMPLE"
   }
   ```

1. 在下次执行维护时段后，检查您的电子邮件以查找来自 Amazon SNS 的邮件，然后打开该电子邮件。Amazon SNS 可能需要几分钟来发送该电子邮件。

有关从命令行为维护时段注册任务的更多信息，请参阅[将任务注册到维护时段](mw-cli-tutorial-tasks.md)。