在无法访问的实例上运行 EC2Rescue 工具 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Systems Manager Change Manager 不再向新客户开放。现有客户可以继续正常使用该服务。有关更多信息,请参阅 Amazon Systems Manager Change Manager 可用性变更

在无法访问的实例上运行 EC2Rescue 工具

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

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

Windows:请参阅将适用于 Windows Server 的 EC2Rescue 与命令行配合使用中的抢救操作

LinuxmacOS:一些适用于 Linux 的 EC2Rescue 模块会检测并尝试修复问题。有关更多信息,请参阅 GitHub 上各个模块的 aws-ec2rescue-linux 文档。

工作方式

如下文所示,使用自动化和 AWSSupport-ExecuteEC2Rescue 运行手册对实例进行故障排除:

  • 您为无法访问的实例指定 ID 并启动运行手册。

  • 系统创建一个临时 VPC,然后运行一系列 Lambda 函数以配置该 VPC。

  • 系统在与您的原始实例相同的可用区内为您的临时 VPC 标识一个子网。

  • 系统启动一个临时的启用了 SSM 的 帮助程序实例。

  • 系统停止您的原始实例并创建备份。然后,它将原始根卷附加到帮助程序实例。

  • 系统使用 Run Command 在帮助程序实例上运行 EC2Rescue。EC2Rescue 识别并尝试修复有关已附加的原始根卷的问题。完成后,EC2Rescue 重新将根卷附加回原始实例。

  • 系统重启您的原始实例,并终止临时实例。系统也将终止临时 VPC 和在自动化开始时创建的 Lambda 函数。

开始前的准备工作

运行以下自动化之前,请执行以下操作:

  • 复制无法访问的实例的实例 ID。您将在过程中指定此 ID。

  • (可选) 收集无法访问实例所在可用区中子网的 ID。EC2Rescue 实例将在此子网中创建。如果不指定子网,自动化会在您的 Amazon Web Services 账户中创建新建一个临时 VPC。验证您的 Amazon Web Services 账户是否至少有一个可用 VPC。默认情况下,一个区域中可以创建 5 个 VPC。如果您已在该区域中创建 5 个 VPC,自动化将会失败,但不会对您的实例进行更改。有关 Amazon VPC 配额的更多信息,请参阅 Amazon VPC 用户指南中的 VPC 和子网

  • 或者,您可以为自动化创建并指定一个 Amazon Identity and Access Management (IAM) 角色。如果您不指定此角色,自动化将在运行自动化的用户的环境中运行。

AWSSupport-EC2Rescue 授予在您的实例上执行操作的权限

在自动化执行期间,EC2Rescue 需要权限才能在您的实例上执行一系列操作。这些操作调用 Amazon Lambda、IAM 和 Amazon EC2 服务,安全地尝试修复实例的问题。如果您在 Amazon Web Services 账户 和/或 VPC 中具有管理员级权限,您可能能够在不按照本部分中所述配置权限的情况下运行自动化。如果您没有管理员级权限,则您或管理员必须使用以下选项之一配置权限。

使用 IAM policy 授予权限

您可以将以下 IAM policy 作为内联策略附加到您的用户、组或角色;也可以创建新的 IAM 托管策略,并将其附加到您的用户、组或角色。有关将内联策略添加到您的用户、组或角色的更多信息,请参阅使用内联策略。有关创建新的托管策略的更多信息,请参阅使用托管策略

注意

如果创建新的 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" } ] }

使用 Amazon CloudFormation 模板授予权限

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

为 EC2Rescue 创建所需的 IAM 角色和策略
  1. 下载 AWSSupport-EC2RescueRole.zip 文件并将 AWSSupport-EC2RescueRole.json 解压到本地计算机上的目录。

  2. 如果您的 Amazon Web Services 账户是一个特殊分区,请编辑模板以将 ARN 值更改为您的分区的值。

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

  3. 登录到 Amazon Web Services 管理控制台 并打开 Amazon CloudFormation 控制台 https://console.aws.amazon.com/cloudformation

  4. 依次选择创建堆栈使用新资源(标准)

  5. 创建堆栈页面上,对于先决条件 - 准备模板,选择模板已就绪

  6. 对于指定模板,选择上传模板文件

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

  8. 选择下一步

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

  10. (可选)在标签 区域,将一个或多个标签键名称/值对应用到堆栈。

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

  11. 选择 Next(下一步)

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

  13. 选择创建堆栈

    Amazon CloudFormation 将持续几分钟显示 CREATE_IN_PROGRESS 状态。创建堆栈后,状态将变为 CREATE_COMPLETE。您还可以选择刷新图标来检查创建过程的状态。

  14. 堆栈列表中,选择您刚刚创建的堆栈的选项按钮,然后选择输出选项卡。

  15. 记下。这是 AssumeRole 的 ARN。在下一个过程 运行自动化 中运行自动化时指定此 ARN。

运行自动化

重要

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

运行 AWSSupport-ExecuteEC2Rescue 自动化
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 自动化

  3. 选择执行自动化

  4. 自动化文档部分中,从列表中选择 Amazon 所拥有

  5. 在运行手册列表中,选择卡片中的 AWSSupport-ExecuteEC2Rescue,然后选择下一步

  6. 执行自动化文档页面上,选择简单执行

  7. 文档详细信息部分中,验证文档版本 是否设置为最高默认版本。例如,$DEFAULT3 (默认值))

  8. 输入参数部分中,指定以下参数:

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

    2. (可选)对于 EC2RescueInstanceType,为 EC2Rescue 实例指定实例类型。默认的实例类型为 t2.medium

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

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

    5. 对于 SubnetId,指定无法访问实例所在可用区中某个现有 VPC 的子网。默认情况下,Systems Manager 会新建一个 VPC,但您可以根据需要指定现有 VPC 中的某个子网。

      注意

      如果未看到指定存储桶或子网 ID 的选项,请确认使用的是不是运行手册的最新默认版本。

  9. (可选)在标签区域,应用一个或多个标签键名称/值对以帮助识别自动化,例如 Key=Purpose,Value=EC2Rescue

  10. 选择执行

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

备份 AMI:AWSSupport-EC2Rescue:UnreachableInstanceId

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