View a markdown version of this page

AWSSupport-TroubleshootEC2InstanceConnect - AWS Systems Manager 自动化运行手册参考

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

AWSSupport-TroubleshootEC2InstanceConnect

描述

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

如何工作?

该运行手册采用 IAM 角色或用户遇到亚马逊 EC2 实例连接问题的亚马逊 EC2 实例 ID、用户名、连接模式、源 IP CIDR、SSH 端口和亚马逊资源名称 (ARN)。然后,它会检查使用亚马逊 EC2 实例连接连接到 Amazon EC2 实例的先决条件

  • 该实例正在运行并处于健康状态。

  • 该实例位于 Amazon EC2 实例连接支持的 AWS 区域。

  • 亚马逊 EC2 实例连接支持该实例的 AMI。

  • 该实例可以访问实例元数据服务 (IMDSv2)。

  • Amazon EC2 实例连接包已在操作系统级别正确安装和配置。

  • 网络配置(安全组、网络 ACL 和路由表规则)允许通过 Amazon EC2 实例连接连接到实例。

  • 用于利用亚马逊 EC2 实例连接的 IAM 角色或用户有权将密钥推送到亚马逊 EC2 实例。

重要
  • 要检查实例 AMI、IMDSv2 的可访问性和 Amazon EC2 实例连接包的安装情况,该实例必须由 SSM 管理。否则,它会跳过这些步骤。有关更多信息,请参阅为什么我的 Amazon EC2 实例未显示为托管节点。

  • 只有在提供 SourceIp CIDR 作为输入参数时,网络检查才会检测安全组和网络 ACL 规则是否阻止流量。否则,它只会显示 SSH-related 规则。

  • 本运行手册中未对使用 Amazon EC2 实例连接终端节点的连接进行验证。

  • 对于私有连接,自动化不会检查 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中导航到。

  2. 选择 Execute automation(执行自动化)。

  3. 对于输入参数,输入以下内容:

    • 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 实例连接故障排除的输入参数表单,其中包含多个字段。
  4. 选择执行。

  5. 自动化启动。

  6. 文档将执行以下步骤:

    • 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:

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

  7. 完成后,请查看 输出” 部分,了解详细的执行结果:

    在目标实例具有所有必需先决条件的情况下执行:

    EC2 实例连接先决条件检查结果显示各种配置的成功验证。

    在不支持目标实例的 AMI 的情况下执行:

    错误消息表明 EC2 实例连接不支持指定的 AMI 版本。

参考

Systems Manager Automation

AWS 服务文档