本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在无法访问的实例上运行 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 与命令行配合使用中的抢救操作。
Linux 和 macOS:一些适用于 Linux 的 EC2Rescue 模块会检测并尝试修复问题。有关更多信息,请参阅上每个模块的aws-ec2rescue-linux
工作方式
如下文所示,使用自动化和 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 角色和策略
-
下载
AWSSupport-EC2RescueRole.zip
文件并将AWSSupport-EC2RescueRole.json
解压到本地计算机上的目录。 -
如果您 Amazon Web Services 账户 位于特殊分区中,请编辑模板以将 ARN 值更改为分区的 ARN 值。
例如,对于中国地区,将出现的所有
arn:aws
更改为arn:aws-cn
。 登录 Amazon Web Services Management Console 并打开 Amazon CloudFormation 控制台,网址为 https://console.aws.amazon.com/cloudformation
。 -
依次选择创建堆栈和使用新资源(标准)。
-
在创建堆栈页面上,对于先决条件 - 准备模板,选择模板已就绪。
-
对于指定模板,选择上传模板文件。
-
选择选择文件,然后进行浏览并从您解压缩
AWSSupport-EC2RescueRole.json
文件的目录中选择此文件。 -
选择下一步。
-
在指定堆栈详细信息页上,对于堆栈名称字段,输入用于标识此堆栈的名称,然后选择下一步。
-
(可选)在标签 区域,将一个或多个标签键名称/值对应用到堆栈。
标签是您分配给资源的可选元数据。标签可让您按各种标准(如用途、所有者或环境)对资源进行分类。例如,您可能需要对堆栈进行标记,以确定其运行的任务类型、涉及的目标或其他资源的类型以及其运行的环境。
-
选择 Next(下一步)
-
在 “查看” 页面上,查看堆栈详细信息,然后向下滚动并选择 “我确认 Amazon CloudFormation 可能会创建 IAM 资源” 选项。
-
选择创建堆栈。
Amazon CloudFormation 显示几分钟的 CREATE_IN_PROGR ESS 状态。创建堆栈后,状态将变为 CREATE_COMPLETE。您还可以选择刷新图标来检查创建过程的状态。
-
在堆栈列表中,选择您刚刚创建的堆栈的选项按钮,然后选择输出选项卡。
-
记下值。这是 ARN 的。 AssumeRole在下一个过程 运行自动化 中运行自动化时指定此 ARN。
运行自动化
重要
以下自动化将停止无法访问的实例。停止实例可能导致附加的实例存储卷(如果存在)上的数据丢失。如果未关联弹性 IP,停止实例也可能导致公有 IP 更改。
运行 AWSSupport-ExecuteEC2Rescue
自动化
打开 Amazon Systems Manager 控制台,网址为 https://console.aws.amazon.com/systems-manager/
。 在左侧导航窗格中,选择自动化。
–或者–
如果首先打开 Amazon Systems Manager 主页,请选择菜单图标 ( ) 以打开导航窗格,然后选择自动化。
-
选择执行自动化。
-
在自动化文档部分中,从列表中选择 Amazon 所拥有。
-
在运行手册列表中,选择卡片中的
AWSSupport-ExecuteEC2Rescue
,然后选择下一步。 -
在执行自动化文档页面上,选择简单执行。
-
在文档详细信息部分中,验证文档版本 是否设置为最高默认版本。例如,$DEFAULT 或 3 (默认值))。
-
在输入参数部分中,指定以下参数:
-
对于 UnreachableInstanceId,请指定无法访问的实例的 ID。
-
(可选)对于 EC2 RescueInstanceType,请为 EC2Rescue 实例指定实例类型。默认的实例类型为
t2.medium
。 -
对于 AutomationAssumeRole,如果您使用本主题前面介绍的 Amazon CloudFormation 步骤为此自动化创建了角色,请选择您在控制台中创建的 ARN。 AssumeRole Amazon CloudFormation
-
(可选)对于 LogDestination,如果您想在排除实例故障时收集操作系统级别的日志,请指定 S3 存储桶。日志会自动上传到此指定存储桶。
-
对于 SubnetId,在现有 VPC 中指定一个子网,该子网与无法访问的实例位于同一个可用区。默认情况下,Systems Manager 会新建一个 VPC,但您可以根据需要指定现有 VPC 中的某个子网。
注意
如果未看到指定存储桶或子网 ID 的选项,请确认使用的是不是运行手册的最新默认版本。
-
-
(可选)在标签区域,应用一个或多个标签键名称/值对以帮助识别自动化,例如
Key=Purpose,Value=EC2Rescue
。 -
选择执行。
运行手册创建一个备份 AMI,作为自动化的一部分。自动化创建的所有其他资源都会自动删除,但此 AMI 将保留在您的账户中。此 AMI 遵从以下命名约定:
Backup AMI: AWSSupport-ec2Rescue:UnreachableInstanceId
在 Amazon EC2 控制台中,可以通过搜索自动化执行 ID 查找此 AMI。