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

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

Amazon EC2 托管实例可用性疑难解答

对于几个Amazon Web Services Systems Manager操作,您可以选择手动选择要在其中运行操作的实例。示例包括运行 “运行命令” 命令、指定维护窗口目标、安装分发服务器软件包以及使用会话管理器连接到实例(Amazon Web Services Systems Manager。在这种情况下,在指定要手动选择实例后,将显示一个列表,您可以从中选择要对其运行操作的托管实例。

本主题提供了有助于诊断 Amazon Elastic Compute Cloud (Amazon EC2) 实例的原因您已确认正在运行不会出现在 Systems Manager 中的托管实例列表中。

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

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

    注意

    一段时间Amazon Machine Images(AMIs)配置为启动具有SSM 代理预装。(您也可以配置自定义AMI以预安装 SSM 代理

    默认情况下,SSM 代理预先安装在以下Amazon Machine Images(AMIs):

    • Amazon Linux

    • Amazon Linux 2

    • 亚马逊 Linux 2 云服务器优化基础AMIs

    • macOS10.14.x (莫哈韦) 和 10.15.x (卡塔利娜)

    • Ubuntu 16.04、18.04 和 20.04

    • Windows Server2008-2012 年AMIs2016 年 11 月或之后发布

    • Windows Server2016 和 2019

    注意

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

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

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

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

Linux & macOS
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 Agent。

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

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

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

验证实例是否配置了 AWS Identity and Access Management (IAM) 角色,使得此实例能够与 Systems Manager API 通信。此外,还验证您的用户账户是否具有 IAM 用户信任策略,使您的账户能够与 Systems Manager API 通信。

确定具有必要权限的实例配置文件是否附加到实例

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

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

  4. 在存储库的说明选项卡,在底部窗格中,找到IAM 角色,然后选择角色的名称。

  5. 关于角色摘要页面上的Permissions (权限)选项卡上,确保AmazonSSMManagedInstanceCore列在权限策略

    如果改为使用自定义策略,请确保其提供的权限与AmazonSSMManagedInstanceCore

    打开AmazonSSMManagedInstanceCore在控制台中

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

创建具有必要权限的实例配置文件并将其附加到新 EC2 实例

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

解决方案 3:验证服务终端连通性

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

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

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

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

验证您选择的操作是否可以在您希望看到列出的实例类型上运行。某些 Systems Manager 操作只能针对 Windows 实例,也可以仅针对 Linux 实例。例如,Systems Manager (SSM) 文档AWS-InstallPowerShellModuleAWS-ConfigureCloudWatch只能在 Windows 实例上运行。在运行命令页面上,如果您选择这些文档中的任何一个,然后选择手动选择实例,则仅列出您的 Windows 实例并可供选择。

解决方案 5:验证您正在使用相同的Amazon Web Services 区域作为 EC2 实例

EC2 实例是创建的,并在特定的Amazon Web Services 区域,例如美国东部(俄亥俄)区域(us-east-2)或欧洲(爱尔兰)区域(eu-west-1)。确保您正在同一Amazon Web Services 区域作为要使用的 EC2 实例。有关更多信息,请参阅 。选择区域入门Amazon Web Services Management Console

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

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