AWS Systems Manager
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

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

EC2Rescue 可以帮助您诊断并解决有关 Amazon EC2 Windows Server 实例的问题。您可以手动运行该工具 (如将 EC2Rescue 用于 Windows Server 中所述),您也可以使用 Systems Manager Automation 和 AWSSupport-ExecuteEC2Rescue 文档自动运行该工具。AWSSupport-ExecuteEC2Rescue 文档旨在执行 Systems Manager 操作、AWS CloudFormation 操作和 Lambda 函数的组合,从而将使用 EC2Rescue 通常所需的步骤自动化。

注意

AWSSupport-ExecuteEC2Rescue 文档目前不受 Linux 实例支持。如果您对某个 Linux 实例执行自动化,自动化将会失败,但不会对您的实例进行更改。

您可以通过 AWSSupport-ExecuteEC2Rescue 使用自动化,对以下问题进行故障排除和潜在修复:

  • 错误配置的网络适配器 (例如,不正确的静态 IP、DHCP 禁用和 DHCP 客户端禁用)

  • 远程桌面协议 (RDP) 服务问题 (例如,禁用服务或使用非默认配置来配置服务时)

  • Windows 防火墙问题 (例如,防火墙阻止 RDP 流量)

如何使用

使用自动化和 AWSSupport-ExecuteEC2Rescue 文档对实例进行故障排除的工作原理如下:

  • 您为无法访问的实例指定 ID 并执行自动化工作流程。

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

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

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

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

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

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

开始前的准备工作

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

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

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

  • 或者,您可以为自动化创建并指定一个 AWS Identity and Access Management (IAM) 角色。如果您不指定此角色,则自动化将在执行自动化的用户的环境中运行。有关为自动化创建角色的更多信息,请参阅快速入门第 2 步:通过使用 IAM 服务角色执行 Automation 工作流程

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

在自动化执行期间,EC2Rescue 需要权限才能在您的实例上执行一系列操作。这些操作调用 AWS Lambda、IAM 和 Amazon EC2 服务,安全地尝试修复您的实例的问题。如果您在 AWS 账户和/或 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:*:An-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::An-AWS-Account-ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::An-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" } ] }

使用 AWS CloudFormation 模板授予权限

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

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

  1. 选择 Launch Stack 按钮。该按钮会打开 AWS CloudFormation 控制台并用 EC2Rescue 模板的 URL 填充 Specify an Amazon S3 template URL 字段。

    注意

    选择 View 以查看模板。

    查看 启动

    查看

  2. 选择 Next

  3. Specify Details 页面上的 Stack Name 字段中,选择保留默认值或指定您自己的值。选择 Next

  4. Options 页面上,您无需进行任何选择。选择 Next

  5. Review 页面上,向下滚动并选择 I acknowledge that AWS CloudFormation might create IAM resources 选项。

  6. 选择 Create

    大约三分钟左右,AWS CloudFormation 会显示 CREATE_IN_PROGRESS 状态。创建堆栈后,状态将变为 CREATE_COMPLETE

  7. 在堆栈列表中,选择您刚刚创建的堆栈旁边的选项,然后选择 Outputs 选项卡。

  8. 复制 Value。这是 AssumeRole 的 ARN。在执行自动化时,您将指定此 ARN。

执行自动化

以下过程描述了您在 Amazon EC2 控制中执行的步骤。您也可以在新的 AWS Systems Manager 控制台中执行这些步骤。新控制台中的步骤将不同于下面的步骤。

重要

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

执行 AWSSupport-ExecuteEC2Rescue 自动化 ()

  1. https://console.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

  2. 选择执行自动化

  3. 自动化文档部分中,选择列表中的我或 Amazon 所拥有

  4. 在文档列表中,选择 AWSSupport-ExecuteEC2Rescue。文档所有者是 Amazon。

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

  6. 执行模式部分中,选择一次执行整个自动化

  7. 保留目标和速率控制选项为禁用状态。

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

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

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

    3. 对于 EC2RescueInstanceType,为 EC2Rescue 实例指定实例类型。默认实例类型为 t2.small。

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

      注意

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

    5. 对于 AssumeRole,如果是使用本主题前面介绍的 CloudFormation 过程为此自动化创建的角色,则指定从 CloudFormation 控制台复制的 AssumeRole ARN。

  9. 选择执行自动化

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

备份 AMI:AWSSupport-EC2Rescue:UnreachableInstanceId

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