

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

# 自动在 EC2 实例上运行操作以响应中的事件 AWS Health
<a name="automating-instance-actions"></a>

您可以针对 Amazon EC2 实例，通过自动化操作来响应新的计划事件。当 AWS Health 向您的 AWS 账户发送事件时，您的 EventBridge 规则可以调用目标（例如 Automati AWS Systems Manager on 文档）来代表您自动执行操作。

例如，当为亚马逊弹性区块存储 (Amazon EBS) Elastic Block Store 支持的 EC2 实例安排亚马逊EC2实例停用活动时 AWS Health ，会将事件类型发送到您的控制`AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED`面板。 AWS Health 当规则检测到此事件类型后，您可以自动停止和启动实例。这样，将不必手动执行这些操作。

**注意**  
为自动执行 Amazon EC2 实例操作，必须通过 Systems Manager 管理这些实例。

有关更多信息，请参阅《[亚马逊 EC2 用户指南》 EventBridge中的 “自动化](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/automating_with_cloudwatch_events.html) *Amazon EC2*”。

## 先决条件
<a name="prerequisites-automation-ec2-instances"></a>

在创建规则之前，您必须创建 AWS Identity and Access Management (IAM) 策略、创建 IAM 角色并更新该角色的信任策略。

### 创建 IAM policy
<a name="create-iam-role-for-ssm-automation"></a>

按照此步骤为您的角色创建客户管理型策略。此策略授予角色代表您执行操作的权限。此过程使用 IAM 控制台中的 JSON 策略编辑器。

**创建 IAM policy**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**策略**。

1. 选择**创建策略**。

1. 选择 **JSON** 选项卡。

1. 复制以下 JSON，然后替换编辑器中的默认 JSON。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "ec2:StartInstances",
           "ec2:StopInstances",
           "ec2:DescribeInstanceStatus"
         ],
         "Resource": [
           "*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "ssm:*"
         ],
         "Resource": [
           "*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "sns:Publish"
         ],
         "Resource": [
           "arn:aws:sns:*:*:Automation*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "iam:PassRole"
         ],
         "Resource": "arn:aws:iam::123456789012:role/AutomationEVRole"
       }
     ]
   }
   ```

------

   1. 在`Resource`参数中，在亚马逊资源名称 (ARN) 中，输入您的 AWS 账户 ID。

   1. 您也可以替换角色名称或使用默认名称。此示例使用 *AutomationEVRole*。

1. 选择**下一步：标签**。

1. （可选）您可以使用标签作为键值对将元数据添加到策略。

1. 选择**下一步：审核**。

1. 在 “**查看策略**” 页面上，输入**名称**（例如）*AutomationEVRolePolicy*和可选的**描述**。

1. 查看 **Summary**（摘要）页面，以查看策略允许的权限。如果您对策略感到满意，请选择 **创建策略**。

此策略定义角色可以执行的操作。有关更多信息，请参阅《IAM 用户指南》中的[创建 IAM policy（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

### 创建一个 IAM 角色
<a name="creating-an-iam-role-for-ssm-automation"></a>

创建策略后，您必须创建 IAM 角色，并将策略附加到此角色。

**为 AWS 服务创建角色**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

1. 对于**Select type of trusted entity（选择受信任实体的类型）**，选择 **AWS service（服务）**。

1. 对于您希望允许其承担此角色的服务，选择 **EC2**。

1. 选择**下一步: 权限**。

1. 输入您创建的策略名称，例如*AutomationEVRolePolicy*，然后选中策略旁边的复选框。

1. 选择**下一步：标签**。

1. （可选）您可以使用标签作为键值对将元数据添加到角色。

1. 请选择**下一步：审核**。

1. 对于 **Role name（角色名称）**，输入 *AutomationEVRole*。此名称必须与您创建的 IAM policy 的 ARN 中显示的名称相同。

1. （可选）对于 **Role description**(角色描述)，输入角色的描述。

1. 检查角色，然后选择**创建角色**。

有关更多信息，请参阅 *IAM 用户指南*中的[为 AWS 服务创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)。

### 更新信任策略
<a name="modify-trust-policy"></a>

最后，您可以更新所创建角色的信任策略。您必须完成此过程，才能在 EventBridge 控制台中选择此角色。

**要更新该角色的信任策略**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**角色**。

1. 在您 AWS 账户中的角色列表中，选择您创建的角色的名称，例如*AutomationEVRole*。

1. 选择 **信任关系** 选项卡，然后选择 **编辑信任关系**。

1. 对于 **Policy Document**，复制以下 JSON，删除默认策略，然后将复制的 JSON 粘贴到所在位置。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "ssm.amazonaws.com",
                       "events.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. 选择**更新信任策略**。

有关更多信息，请参阅 *IAM 用户指南*中的[修改角色信任策略（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy)。

## 为以下各项创建规则 EventBridge
<a name="create-rule-for-ssm-automation"></a>

按照此过程在 EventBridge 控制台中创建规则，这样您就可以自动停止和启动计划停用的 EC2 实例。

**为 Systems EventBridge Manager 自动操作创建规则**

1. 打开 Amazon EventBridge 控制台，网址为[https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)。

1. 在导航窗格中的 **Events**（事件）下，选择 **Rules**（规则）。

1. 在 **创建规则**页面上，输入规则的 **名称** 和 **描述**。

1. 在 **Define pattern**（定义模式）下，选择 **Event pattern**（事件模式），然后选择 **Pre-defined pattern by service**（按服务预定义的模式）。

1. 对于 **Service provider**（服务提供商），选择 **AWS**。

1. 对于 **服务名称**，选择 **运行状况**。

1. 对于 **事件类型**，选择 **特定运行状况事件**。

1. 选择 **特定服务**，然后选择 **EC2**。

1. 选择 **特定事件类型类别**，然后选择 **scheduledChange**。

1. 选择 **特定事件类型代码**，然后选择事件类型代码。

   例如，对于由 Amazon EC2 EBS 支持的实例，选择 **`AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED`**。对于由 Amazon EC2 实例存储支持的实例，选择 **`AWS_EC2_INSTANCE_RETIREMENT_SCHEDULED`**。

1. 选择 **Any resource（任何资源）**。

   您的 **事件模式**类似于以下示例。  
**Example**  

   ```
   {
     "source": [
       "aws.health"
     ],
     "detail-type": [
       "AWS Health Event"
     ],
     "detail": {
       "service": [
         "EC2"
       ],
       "eventTypeCategory": [
         "scheduledChange"
       ],
       "eventTypeCode": [
         "AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED"
       ]
     }
   }
   ```

1. 添加 Systems Manager Automation 文档目标。在 **选择目标**下，对于 **目标**，选择 **SSM Automation**。

1. 对于 **Document**（文档），选择 `AWS-RestartEC2Instance`。

1. 展开 **配置自动化参数**，然后选择 **输入转换器**。

1. 在 **输入路径**字段中输入 **`{"Instances":"$.resources"}`**。

1. 对于第二个字段，输入 **`{"InstanceId": <Instances>}`**。

1. 选择**使用现有角色**，然后选择您创建的 IAM 角色，例如*AutomationEVRole*。

   您的目标应类似于以下示例。  
![\[EventBridge 控制台中 “SSM 自动化” 示例的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/health/latest/ug/images/event-bridge-event-pattern-ssm-automation.png)
**注意**  
如果没有具备所需 EC2 和 Systems Manager 权限以及信任关系的现有 IAM 角色，则角色将不会显示在列表中。有关更多信息，请参阅 [先决条件](#prerequisites-automation-ec2-instances)。

1. 选择**创建**。

   如果您的账户中发生了符合您规则的事件，则 EventBridge 会将该事件发送给您的指定目标。