

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

# 在无法访问的实例上运行 EC2Rescue 工具
<a name="automation-ec2rescue"></a>

EC2Rescue 可以帮助您诊断有关 Linux 和 Windows Server 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例的问题并进行故障排除。您可以手动运行工具，如[使用适用于 Linux Server 的 EC2Rescue](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Linux-Server-EC2Rescue.html) 和[使用适用于 Windows Server 的 EC2Rescue](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Windows-Server-EC2Rescue.html)。或者，您也可以使用 Systems Manager 自动化和 **`AWSSupport-ExecuteEC2Rescue`** 运行手册。Automation 是 AWS Systems Manager 中的一项工具。**`AWSSupport-ExecuteEC2Rescue`** 运行手册旨在全面执行 Systems Manager 的操作、CloudFormation 的操作和 Lambda 功能，从而将使用 EC2Rescue 通常所需的步骤自动化。

您可以使用 **`AWSSupport-ExecuteEC2Rescue`** 运行手册，对不同类型的操作系统 (OS) 问题进行故障排除和潜在修复。不支持带有加密根卷的实例。有关完整列表，请参阅以下主题：

**Windows**：请参阅*将适用于 Windows Server 的 EC2Rescue 与命令行配合使用*中的[抢救操作](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-cli.html#ec2rw-rescue)。

**Linux** 和 **macOS**：一些适用于 Linux 的 EC2Rescue 模块会检测并尝试修复问题。有关更多信息，请参阅 GitHub 上各个模块的 [https://github.com/awslabs/aws-ec2rescue-linux/tree/master/docs](https://github.com/awslabs/aws-ec2rescue-linux/tree/master/docs) 文档。

## 工作原理
<a name="automation-ec2rescue-how"></a>

如下文所示，使用自动化和 **`AWSSupport-ExecuteEC2Rescue`** 运行手册对实例进行故障排除：
+ 您为无法访问的实例指定 ID 并启动运行手册。
+ 系统创建一个临时 VPC，然后运行一系列 Lambda 函数以配置该 VPC。
+ 系统在与您的原始实例相同的可用区内为您的临时 VPC 标识一个子网。
+ 系统启动一个临时的启用了 SSM 的 帮助程序实例。
+ 系统停止您的原始实例并创建备份。然后，它将原始根卷附加到帮助程序实例。
+ 系统使用 Run Command 在帮助程序实例上运行 EC2Rescue。EC2Rescue 识别并尝试修复有关已附加的原始根卷的问题。完成后，EC2Rescue 重新将根卷附加回原始实例。
+ 系统重启您的原始实例，并终止临时实例。系统也将终止临时 VPC 和在自动化开始时创建的 Lambda 函数。

## 开始前的准备工作
<a name="automation-ec2rescue-begin"></a>

运行以下自动化之前，请执行以下操作：
+ 复制无法访问的实例的实例 ID。您将在过程中指定此 ID。
+ (可选) 收集无法访问实例所在可用区中子网的 ID。EC2Rescue 实例将在此子网中创建。如果不指定子网，自动化会在您的 AWS 账户中创建新建一个临时 VPC。验证您的 AWS 账户是否至少有一个可用 VPC。默认情况下，一个区域中可以创建 5 个 VPC。如果您已在该区域中创建 5 个 VPC，自动化将会失败，但不会对您的实例进行更改。有关 Amazon VPC 配额的更多信息，请参阅 *Amazon VPC 用户指南*中的 [VPC 和子网](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-vpcs-subnets)。
+ 或者，您可以为自动化创建并指定一个 AWS Identity and Access Management (IAM) 角色。如果您不指定此角色，自动化将在运行自动化的用户的环境中运行。

### 向 `AWSSupport-EC2Rescue` 授予在您的实例上执行操作的权限
<a name="automation-ec2rescue-access"></a>

在自动化执行期间，EC2Rescue 需要权限才能在您的实例上执行一系列操作。这些操作调用 AWS Lambda、IAM 和 Amazon EC2 服务，安全地尝试修复实例的问题。如果您在 AWS 账户 和/或 VPC 中具有管理员级权限，您可能能够在不按照本部分中所述配置权限的情况下运行自动化。如果您没有管理员级权限，则您或管理员必须使用以下选项之一配置权限。
+ [使用 IAM policy 授予权限](#automation-ec2rescue-access-iam)
+ [使用 CloudFormation 模板授予权限](#automation-ec2rescue-access-cfn)

#### 使用 IAM policy 授予权限
<a name="automation-ec2rescue-access-iam"></a>

您可以将以下 IAM policy 作为内联策略附加到您的用户、组或角色；也可以创建新的 IAM 托管策略，并将其附加到您的用户、组或角色。有关将内联策略添加到您的用户、组或角色的更多信息，请参阅[使用内联策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html)。有关创建新的托管策略的更多信息，请参阅[使用托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html)。

**注意**  
如果创建新的 IAM 托管式策略，则还必须将 **AmazonSSMAutomationRole** 托管式策略附加到该策略，以便实例与 Systems Manager API 通信。

**适用于 AWSSupport-EC2Rescue 的 IAM policy**

将 *account ID* 替换为您自己的信息。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "lambda:InvokeFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction"
            ],
            "Resource": "arn:aws:lambda:*:111122223333:function:AWSSupport-EC2Rescue-*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::awssupport-ssm.*/*.template",
                "arn:aws:s3:::awssupport-ssm.*/*.zip"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:CreateRole",
                "iam:CreateInstanceProfile",
                "iam:GetRole",
                "iam:GetInstanceProfile",
                "iam:PutRolePolicy",
                "iam:DetachRolePolicy",
                "iam:AttachRolePolicy",
                "iam:PassRole",
                "iam:AddRoleToInstanceProfile",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:DeleteRole",
                "iam:DeleteRolePolicy",
                "iam:DeleteInstanceProfile"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/AWSSupport-EC2Rescue-*",
                "arn:aws:iam::111122223333:instance-profile/AWSSupport-EC2Rescue-*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "lambda:CreateFunction",
                "ec2:CreateVpc",
                "ec2:ModifyVpcAttribute",
                "ec2:DeleteVpc",
                "ec2:CreateInternetGateway",
                "ec2:AttachInternetGateway",
                "ec2:DetachInternetGateway",
                "ec2:DeleteInternetGateway",
                "ec2:CreateSubnet",
                "ec2:DeleteSubnet",
                "ec2:CreateRoute",
                "ec2:DeleteRoute",
                "ec2:CreateRouteTable",
                "ec2:AssociateRouteTable",
                "ec2:DisassociateRouteTable",
                "ec2:DeleteRouteTable",
                "ec2:CreateVpcEndpoint",
                "ec2:DeleteVpcEndpoints",
                "ec2:ModifyVpcEndpoint",
                "ec2:Describe*",
                "autoscaling:DescribeAutoScalingInstances"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

#### 使用 CloudFormation 模板授予权限
<a name="automation-ec2rescue-access-cfn"></a>

CloudFormation 使用预配置模板自动化创建 IAM 角色和策略的过程。使用 CloudFormation，通过以下过程为 EC2Rescue 自动化创建所需的 IAM 角色和策略。

**为 EC2Rescue 创建所需的 IAM 角色和策略**

1. 下载 [https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip](https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip) 文件并将 `AWSSupport-EC2RescueRole.json` 解压到本地计算机上的目录。

1. 如果您的 AWS 账户是一个特殊分区，请编辑模板以将 ARN 值更改为您的分区的值。

   例如，对于中国地区，将出现的所有 `arn:aws` 更改为 `arn:aws-cn`。

1. 登录到 AWS 管理控制台 并打开 CloudFormation 控制台 [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)。

1. 依次选择**创建堆栈**和**使用新资源（标准）**。

1. 在**创建堆栈**页面上，对于**先决条件 - 准备模板**，选择**模板已就绪**。

1. 对于**指定模板**，选择**上传模板文件**。

1. 选择**选择文件**，然后进行浏览并从您解压缩 `AWSSupport-EC2RescueRole.json` 文件的目录中选择此文件。

1. 选择**下一步**。

1. 在**指定堆栈详细信息**页上，对于**堆栈名称**字段，输入用于标识此堆栈的名称，然后选择**下一步**。

1. （可选）在**标签** 区域，将一个或多个标签键名称/值对应用到堆栈。

   标签是您分配给资源的可选元数据。标签可让您按各种标准（如用途、所有者或环境）对资源进行分类。例如，您可能需要对堆栈进行标记，以确定其运行的任务类型、涉及的目标或其他资源的类型以及其运行的环境。

1. 选择 **Next**（下一步）

1. 在**审核**页面上，审核堆栈详细信息，然后向下滚动并选择**我确认 CloudFormation 可能创建 IAM 资源**选项。

1. 选择**创建堆栈**。

   CloudFormation 将持续几分钟显示 **CREATE\$1IN\$1PROGRESS** 状态。创建堆栈后，状态将变为 **CREATE\$1COMPLETE**。您还可以选择刷新图标来检查创建过程的状态。

1. 在**堆栈**列表中，选择您刚刚创建的堆栈的选项按钮，然后选择**输出**选项卡。

1. 记下**值**。这是 AssumeRole 的 ARN。在下一个过程 [运行自动化](#automation-ec2rescue-executing) 中运行自动化时指定此 ARN。

## 运行自动化
<a name="automation-ec2rescue-executing"></a>

**重要**  
以下自动化将停止无法访问的实例。停止实例可能导致附加的实例存储卷（如果存在）上的数据丢失。如果未关联弹性 IP，停止实例也可能导致公有 IP 更改。

**运行 `AWSSupport-ExecuteEC2Rescue` 自动化**

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

1. 在导航窗格中，选择 **自动化**。

1. 选择**执行自动化**。

1. 在**自动化文档**部分中，从列表中选择 **Amazon 所拥有**。

1. 在运行手册列表中，选择卡片中的 `AWSSupport-ExecuteEC2Rescue`，然后选择**下一步**。

1. 在**执行自动化文档**页面上，选择**简单执行**。

1. 在**文档详细信息**部分中，验证**文档版本** 是否设置为最高默认版本。例如，**\$1DEFAULT** 或 **3 (默认值))**。

1. 在**输入参数**部分中，指定以下参数：

   1. 对于 **UnreachableInstanceId**，指定无法访问实例的 ID。

   1. （可选）对于 **EC2RescueInstanceType**，为 EC2Rescue 实例指定实例类型。默认的实例类型为 `t2.medium`。

   1. 对于 **AutomationAssumeRole**，如果您通过使用本主题前面介绍的 CloudFormation 过程为此自动化创建了角色，则选择您在 CloudFormation 控制台中创建的 AssumeRole 的 ARN。

   1. （可选）如果在排查实例故障时需要收集操作系统级别的日志，请为 **LogDestination** 指定 S3 存储桶。日志会自动上传到此指定存储桶。

   1. 对于 **SubnetId**，指定无法访问实例所在可用区中某个现有 VPC 的子网。默认情况下，Systems Manager 会新建一个 VPC，但您可以根据需要指定现有 VPC 中的某个子网。
**注意**  
如果未看到指定存储桶或子网 ID 的选项，请确认使用的是不是运行手册的最新**默认**版本。

1. （可选）在**标签**区域，应用一个或多个标签键名称/值对以帮助识别自动化，例如 `Key=Purpose,Value=EC2Rescue`。

1. 选择**执行**。

运行手册创建一个备份 AMI，作为自动化的一部分。自动化创建的所有其他资源都会自动删除，但此 AMI 将保留在您的账户中。此 AMI 遵从以下命名约定：

备份 AMI：AWSSupport-EC2Rescue:*UnreachableInstanceId*

在 Amazon EC2 控制台中，可以通过搜索自动化执行 ID 查找此 AMI。