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

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

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

EC2Rescue 可以帮助您诊断并解 Elastic Compute Cloud (Amazon EC2) 有关 Linux 和Windows Server。您可以手动运行工具,如使用适用于 Linux Server 的 EC2Rescue使用适用于 Windows Server 的 EC2Rescue。或者,您可以使用 Systems Manager Automation 和AWSSupport-ExecuteEC2Rescue运行手册。自动化是Amazon Web Services Systems Manager。这些区域有:AWSSupport-ExecuteEC2Rescuerunbook 旨在执行 Systems Manager 操作的组合,Amazon CloudFormation操作以及 Lambda 函数,从而将使用 EC2Rescue 通常所需的步骤自动化。

您可以使用AWSSupport-ExecuteEC2Rescuerunbook 来进行故障排除和潜在修复不同类型的操作系统 (OS) 问题。有关完整列表,请参阅以下主题:

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

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

工作原理

使用 Automation 和AWSSupport-ExecuteEC2RescueRunbook 的工作原理如下:

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

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

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

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

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

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

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

开始前的准备工作

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

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

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

  • 或者,您可以为 Automation 创建并指定一个 AWS Identity and Access Management (IAM) 角色。如果您不指定此角色,则自动化将在运行自动化的用户的环境中运行。有关为自动化创建角色的更多信息,请参阅使用 IAM 服务角色运行 Automation

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

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

使用 IAM 策略授予权限

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

注意

如果创建新的 IAM 托管策略,则还必须将AmazonSSMAutomationRole托管策略添加到它,以便实例与 Systems Manager API 通信。

适用于 AWSSupport-EC2Rescue 的 IAM 策略

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:aws-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::aws-account-id:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::aws-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 角色和策略的过程。使用,通过以下过程为 EC2Rescue Automation 创建所需的 IAM 角色和策略。Amazon CloudFormation。

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

  1. 下载 AWSSupport-EC2RescueRole.zip 文件并将 AWSSupport-EC2RescueRole.json 解压到本地计算机上的目录。

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

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

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

  4. 依次选择 Create stack (创建堆栈)With new resources (standard) (使用新资源(标准))

  5. Create stack (创建堆栈) 页面上,对于 Prerequisite - Prepare template (先决条件 - 准备模板),选择 Template is ready (模板已就绪)

  6. 对于 Specify template (指定模板),选择 Upload a template file (上传模板文件)

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

  8. 选择 Next

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

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

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

  11. 选择 Next (下一步)

  12. 在存储库的审核页面上,查看堆栈详细信息,然后向下滚动并选择我承认Amazon CloudFormation可能会创建 IAM 资源选项。

  13. 选择创建堆栈

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

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

  15. 记下 Value (值)。这是 AssumeRole 的 ARN。在下一个过程运行 Automation中运行 Automation 时指定此 ARN。

运行 Automation

重要

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

运行AWSSupport-ExecuteEC2Rescue自动化

  1. 打开Amazon Web Services Systems Manager控制台https://console.aws.amazon.com/systems-manager/

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

    -或者-

    如果Amazon Web Services Systems Manager首先打开主页,选择菜单图标( ) 以打开导航窗格中的,然后选择。自动化

  3. 选择执行自动化

  4. Automation document (Automation 文档) 部分中,从列表中选择 Owned by Amazon (Amazon 所拥有)

  5. 在 Runbook 列表中,选择AWSSupport-ExecuteEC2Rescue,然后选择下一步

  6. Execute automation document (执行 Automation 文档) 页面上,选择 Simple execution (简单执行)

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

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

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

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

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

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

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

      注意

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

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

  10. 选择 Execute (执行)

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

备份 AMI:AWSSupport-EC2Rescue:UnreachableInstanceId

您可以在找到AMI在 Amazon EC2 控制台中,方法是搜索 Automation 执行 ID。