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

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

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

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

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

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

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

工作方式

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

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

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

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

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

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

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

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

开始前的准备工作

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

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

  • (可选) 收集无法访问实例所在可用区中子网的 ID。EC2Rescue 实例将在此子网中创建。如果您未指定子网,则 Automation 会在您的中创建一个新的临时 VPC Amazon Web Services 账户。确认您至少 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 托管策略,则还必须将 A mazonSSM AutomationRole 托管策略附加到该策略,以便您的实例可以与 Systems Manager API 通信。

AWSSupport-ec2Rescue 的 IAM 政策

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

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:account ID: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::account ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::account ID: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*" ], "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 值。

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

  3. 登录 Amazon Web Services Management Console 并打开 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_PROGR ESS 状态。创建堆栈后,状态将变为 CREATE_COMPLETE。您还可以选择刷新图标来检查创建过程的状态。

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

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

运行自动化

重要

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

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

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

    –或者–

    如果首先打开 Amazon Systems Manager 主页,请选择菜单图标 ( 
    The menu icon
  ) 以打开导航窗格,然后选择自动化

  3. 选择执行自动化

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

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

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

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

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

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

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

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

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

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

      注意

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

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

  10. 选择执行

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

Backup AMI: AWSSupport-ec2Rescue:UnreachableInstanceId

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