排查 Amazon EC2 托管实例可用性的问题 - AWS Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

排查 Amazon EC2 托管实例可用性的问题

对于多个 Systems Manager 操作,您可以选择手动选择将在其上运行操作的实例。示例包括运行 Run Command 命令、指定维护时段目标、安装 Distributor 软件包以及使用 Session Manager 连接到实例。在这种情况下,在您指定希望 手动选择实例之后,将显示一个列表,其中包含您可以选择在其上运行操作的托管实例。

本主题提供的信息可帮助您诊断 Amazon Elastic Compute Cloud (Amazon EC2) 实例已确认正在运行的Systems Manager为什么不显示在 的托管实例列表中。

为了让 EC2 实例由 Systems Manager 管理并可用于托管实例列表中,它必须满足三个主要要求:

  • SSM 代理 必须在具有受支持的操作系统的实例上安装并运行。

    注意

    某些 Amazon 系统映像 (AMI) 配置为使用预安装的 SSM 代理 启动实例。(您也可以配置自定义 AMI 来预安装 SSM 代理。)

    SSM 代理默认情况下, 预先安装在以下 Amazon 系统映像 (AMI) 上:

    • Amazon Linux

    • Amazon Linux 2

    • Amazon Linux 2 经 ECS 优化的 AMIs

    • macOS 10.14.x (Mojave) 和 10.15.x (Catalina)

    • Ubuntu Server 16.04、18.04 和 20.04

    • 2016 年 11 月或以后发布的 Windows Server 2008-2012 R2 AMI

    • Windows Server 2016 和 2019

    注意

    SSM 代理 未安装在基于 Amazon Linux 或 Amazon Linux 2 的所有 AMIs 上。例如,SSM 代理 未预安装在基于 Amazon Linux 2 的经 EKS 优化的 AMI 上。

  • 必须将提供实例与 AWS Identity and Access Management 服务通信所需权限的 IAM (Systems Manager) 实例配置文件附加到实例。

  • SSM 代理 必须能够连接到 Systems Manager 终端节点,以便自行注册到服务。然后,实例必须可供服务使用,该服务每五分钟发送一个信号以检查实例的运行状况。

在确认 EC2 实例正在运行后,您可以使用以下命令来检查其中一个实例类型上的 SSM 代理 是否已成功向 Systems Manager 服务注册了自身。在成功注册完成之前,此命令不会返回结果。

Linux
aws ssm describe-instance-associations-status \ --instance-id instance-id
Windows
aws ssm describe-instance-associations-status ^ --instance-id instance-id
PowerShell
Get-SSMInstanceAssociationsStatus ` -InstanceId instance-id

如果注册成功并且实例现在可用于 Systems Manager 操作,则该命令返回的结果类似于以下内容。

{
    "InstanceAssociationStatusInfos": [
        {
            "AssociationId": "fa262de1-6150-4a90-8f53-d7eb5EXAMPLE",
            "Name": "AWS-GatherSoftwareInventory",
            "DocumentVersion": "1",
            "AssociationVersion": "1",
            "InstanceId": "i-02573cafcfEXAMPLE",
            "Status": "Pending",
            "DetailedStatus": "Associated"
        },
        {
            "AssociationId": "f9ec7a0f-6104-4273-8975-82e34EXAMPLE",
            "Name": "AWS-RunPatchBaseline",
            "DocumentVersion": "1",
            "AssociationVersion": "1",
            "InstanceId": "i-02573cafcfEXAMPLE",
            "Status": "Queued",
            "AssociationName": "SystemAssociationForScanningPatches"
        }
    ]
}

如果注册未完成或失败,则命令返回类似于以下内容的结果:

{
    "InstanceAssociationStatusInfos": []
}

如果此命令在 5 分钟后未返回结果,请使用以下信息可帮助您排查托管实例的问题。

解决方案 1:验证 SSM 代理 是否已在实例上安装并运行

确保已在实例上安装并运行最新版本的 SSM 代理。

要检查 SSM 代理 是否已安装并在 EC2 实例上运行,请参阅检查 SSM 代理 状态并启动代理

要在 EC2 实例上安装或重新安装 SSM 代理,请参阅以下主题:

解决方案 2:验证是否已为实例指定 IAM 实例角色

验证实例是否配置了支持实例与 AWS Identity and Access Management API 进行通信的 IAM (Systems Manager) 角色。此外,还验证您的用户账户是否具有一个允许您的账户与 IAM API 通信的 Systems Manager 用户信任策略。

检查是否将具有必要权限的实例配置文件附加到实例

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Instances.

  3. 选择要检查实例配置文件的实例。

  4. 在底部窗格中的 Description (描述) 选项卡上,找到 IAM role (IAM 角色) 并选择角色的名称。

  5. 在实例配置文件的角色 Summary (摘要) 页面上的 Permissions (权限) 选项卡上,确保 AmazonSSMManagedInstanceCore 已在 Permissions policies (权限策略) 下列出。

    如果改用自定义策略,请确保它提供与 AmazonSSMManagedInstanceCore 相同的权限。

    在控制台中打开AmazonSSMManagedInstanceCore

    有关可附加到 Systems Manager 实例配置文件的其他策略的信息,请参阅 为 Systems Manager 创建 IAM 实例配置文件

创建实例配置文件并将其附加到新 EC2 实例

将具有必要权限的现有实例配置文件附加到现有 EC2 实例

解决方案 3:验证服务终端节点连接

验证实例是否具有到 Systems Manager 服务终端节点的连接。通过创建和配置 VPC 终端节点 Systems Manager,或者允许 HTTPS(端口 443)出站流量传输到服务终端节点来提供此连接。

在许多情况下,当您创建 EC2 实例时,实例用于注册实例的 Systems Manager 区域的 AWS 服务终端节点。但是,如果您使用的是 Virtual Private Cloud (VPC),并且已在私有子网中创建 EC2 实例,则不会自动提供服务终端节点。您必须为 VPC 配置接口终端节点。

有关更多信息,请参阅 (可选)创建 Virtual Private Cloud 终端节点

解决方案 4:验证目标操作系统支持

验证您是否可以在预计列出的实例类型上运行您选择的操作。某些 Systems Manager 操作只能以 Windows 实例或 Linux 实例为目标。例如,Systems Manager (SSM) 文档 AWS-InstallPowerShellModuleAWS-ConfigureCloudWatch 只能在 Windows 实例上运行。在 Run a command (运行命令) 页面中,如果您选择其中任一文档并选择 Choose instances manually (手动选择实例),则只会列出您的 Windows 实例并且可供选择。

解决方案 5:验证您是否在与 EC2 实例相同的 AWS 区域中工作

EC2 实例在特定 AWS 区域创建和可用,例如 美国东部(俄亥俄)区域 (us-east-2) 或 欧洲(爱尔兰)区域 (eu-west-1)。确保在与要使用的 EC2 实例相同的 AWS 区域中工作。有关更多信息,请参阅 https://docs.amazonaws.cn/awsconsolehelpdocs/latest/gsg/getting-started.html#select-region 中的选择区域开始使用 AWS 管理控制台。

解决方案 6:验证您应用于实例上的 SSM 代理 的代理配置

验证您应用到 EC2 实例上的 SSM 代理 的代理配置是否正确。如果代理配置不正确,则实例无法连接到所需的服务终端节点,或者 Systems Manager 可能会错误地标识实例的操作系统。有关更多信息,请参阅 配置 SSM 代理 以使用代理 (Linux)配置 SSM 代理以使用 Windows Server 实例的代理.