

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

# `AWSSupport-TroubleshootEC2InstanceConnect`
<a name="automation-troubleshoot-ec2-instance-connect"></a>

 **描述** 

 `AWSSupport-TroubleshootEC2InstanceConnect`自动化有助于分析和检测阻止使用[亚马逊 EC2 实例连接与亚马逊弹性计算云 (亚马逊 EC2) 实例连接的错误](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-eic.html)。它可识别由不支持的亚马逊系统映像 (AMI)、缺少 OS-level 软件包安装或配置、缺少 AWS Identity and Access Management (IAM) 权限或网络配置问题导致的问题。

 **如何工作？** 

 该运行手册采用 IAM 角色或用户遇到亚马逊 EC2 实例连接问题的亚马逊 EC2 实例 ID、用户名、连接模式、源 IP CIDR、SSH 端口和亚马逊资源名称 (ARN)。然后，它会检查使用亚马逊 EC2 实例连接连接到 Amazon EC2 实例的[先决条件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-prerequisites.html)：
+ 该实例正在运行并处于健康状态。
+ 该实例位于 Amazon EC2 实例连接支持的 AWS 区域。
+ 亚马逊 EC2 实例连接支持该实例的 AMI。
+ 该实例可以访问实例元数据服务 (IMDSv2)。
+ Amazon EC2 实例连接包已在操作系统级别正确安装和配置。
+ 网络配置（安全组、网络 ACL 和路由表规则）允许通过 Amazon EC2 实例连接连接到实例。
+ 用于利用亚马逊 EC2 实例连接的 IAM 角色或用户有权将密钥推送到亚马逊 EC2 实例。

**重要**  
要检查实例 AMI、IMDSv2 的可访问性和 Amazon EC2 实例连接包的安装情况，该实例必须由 SSM 管理。否则，它会跳过这些步骤。有关更多信息，请参阅[为什么我的 Amazon EC2 实例未显示为托管节点。](https://repost.aws/knowledge-center/systems-manager-ec2-instance-not-appear)
只有在提供 SourceIp CIDR 作为输入参数时，网络检查才会检测安全组和网络 ACL 规则是否阻止流量。否则，它只会显示 SSH-related 规则。
本运行手册中未对使用 [ Amazon EC2 实例连接终端节点](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-using-eice.html)的连接进行验证。
对于私有连接，自动化不会检查 SSH 客户端是否安装在源计算机上，以及它是否可以访问实例的私有 IP 地址。

**文档类型**

自动化

**所有者**

Amazon

**平台**

Linux

**参数**

**所需的 IAM 权限**

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。
+ `ec2:DescribeInstances`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeNetworkAcls`
+ `ec2:DescribeRouteTables`
+ `ec2:DescribeInternetGateways`
+ `iam:SimulatePrincipalPolicy`
+ `ssm:DescribeInstanceInformation`
+ `ssm:ListCommands`
+ `ssm:ListCommandInvocations`
+ `ssm:SendCommand`

 **说明** 

按照这些步骤对自动化进行配置：

1. 在 AWS Systems Manager 控制台[`AWSSupport-TroubleshootEC2InstanceConnect`](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEC2InstanceConnect/description)中导航到。

1. 选择 Execute automation（执行自动化）。

1. 对于输入参数，输入以下内容：
   + **InstanceId （必填）：**

     您无法使用亚马逊 EC2 实例连接连接的目标亚马逊 EC2 实例的 ID。
   + **AutomationAssumeRole （可选）：**

     允许系统管理员自动化代表您执行操作的 IAM 角色的 ARN。如果未指定任何角色，系统管理员自动化将使用启动本运行手册的用户的权限。
   + **用户名（必填）：**

     用于使用亚马逊 EC2 实例连接连接亚马逊 EC2 实例的用户名。它用于评估是否向该特定用户授予了 IAM 访问权限。
   + **EC2InstanceConnectRoleOrUser（必填）：**

     利用 Amazon EC2 实例连接向实例推送密钥的 IAM 角色或用户的 ARN。
   + **SSHport（可选）：**

     在亚马逊 EC2 实例上配置的 SSH 端口。默认值为 `22`。端口号必须介于`1-65535`。
   + **SourceNetworkType （可选）：**

     亚马逊 EC2 实例的网络访问方法：
     + **浏览器：**您可以从 AWS 管理控制台进行连接。
     + **公共：**您可以通过互联网（例如，您的本地计算机）连接到位于公有子网中的实例。
     + **私有：**您通过实例的私有 IP 地址进行连接。
   + **SourceIpCIDR（可选）：**

     源 CIDR，包括您将使用 Amazon EC2 实例连接登录的设备（例如您的本地计算机）的 IP 地址。示例：172.31.48。6/32。如果公共或私有访问模式未提供任何值，则运行手册将不评估 Amazon EC2 实例安全组和网络 ACL 规则是否允许 SSH 流量。它将改为显示 SSH-related 规则。  
![用于 EC2 实例连接故障排除的输入参数表单，其中包含多个字段。](https://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-ec2-instance-connect_input_parameters.png)

1. 选择执行。

1. 自动化启动。

1. 文档将执行以下步骤：
   + **AssertInitialState:**

     确保 Amazon EC2 实例状态为正在运行。否则，自动化将结束。
   + **GetInstanceProperties:**

     获取当前 Amazon EC2 实例属性（PlatformDetails PublicIpAddress VpcId、、 SubnetId 和 MetadataHttpEndpoint）。
   + **GatherInstanceInformationFromSSM:**

     如果该实例由 SSM 管理，则获取系统管理器实例的 ping 状态和操作系统详细信息。
   + **CheckIfAWSRegionSupported:**

     检查亚马逊 EC2 实例是否位于 Amazon EC2 实例连接支持的 AWS 区域。
   + **BranchOnIfAWSRegionSupported:**

     如果 Amazon EC2 实例连接支持 AWS 该区域，则继续执行。否则，它会创建输出并退出自动化。
   + **CheckIfInstanceAMIIsSupported:**

     检查与该实例关联的 AMI 是否受 Amazon EC2 实例连接的支持。
   + **BranchOnIfInstanceAMIIsSupported:**

     如果支持实例 AMI，它将执行 OS-level 检查，例如元数据可访问性以及 Amazon EC2 实例连接包的安装和配置。否则，它会检查 HTTP 元数据是否已使用 AWS API 启用，然后进入网络检查步骤。
   + **CheckIMDSReachabilityFromOs:**

     在目标 Amazon EC2 Linux 实例上运行 Bash 脚本，以检查其是否能够到达 IMDSv2。
   + **CheckEICPackageInstallation:**

     在目标亚马逊 EC2 Linux 实例上运行 Bash 脚本，以检查亚马逊 EC2 实例连接包是否已正确安装和配置。
   + **CheckSSHConfigFromOs:**

     在目标 Amazon EC2 Linux 实例上运行 Bash 脚本，检查配置的 SSH 端口是否与输入参数 `sshPort 相匹配。`
   + **CheckMetadataHTTPEndpointIsEnabled:**

     检查实例元数据服务 HTTP 端点是否已启用。
   + **CheckEICNetworkAccess:**

     检查网络配置（安全组、网络 ACL 和路由表规则）是否允许通过 Amazon EC2 实例连接连接到实例。
   + **CheckIAMRoleOrUserPermissions:**

     检查用于利用亚马逊 EC2 实例连接的 IAM 角色或用户是否有权使用提供的用户名将密钥推送到亚马逊 EC2 实例。
   + **MakeFinalOutput:**

     合并所有先前步骤的输出。

1. 完成后，请查看 ** “**输出” 部分，了解详细的执行结果：

   在目标实例具有所有必需先决条件的情况下执行：  
![EC2 实例连接先决条件检查结果显示各种配置的成功验证。](https://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-ec2-instance-connect_outputs_all_requirements_found.png)

   在不支持目标实例的 AMI 的情况下执行：  
![错误消息表明 EC2 实例连接不支持指定的 AMI 版本。](https://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-ec2-instance-connect_outputs_all_requirements_not_found.png)

 **参考** 

Systems Manager Automation
+ [运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEC2InstanceConnect/description)
+ [运行自动化](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-working-executing.html)
+ [设置自动化](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-setup.html)
+ [支持自动化工作流登录页面](https://aws.amazon.com/premiumsupport/technology/saw/)

AWS 服务文档
+ [如何解决使用亚马逊 EC2 实例连接连接到我的 Amazon EC2 实例的问题？](https://repost.aws/knowledge-center/ec2-instance-connect-troubleshooting)