排除托管式节点可用性的问题 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

排除托管式节点可用性的问题

对于Run CommandDistributor、和等多种 Amazon Systems Manager 功能Session Manager,您可以选择手动选择要在其上运行操作的托管节点。在这种情况下,指定要手动选择节点后,系统会显示托管式节点列表,您可以在其中运行该操作。

本主题提供的信息可帮助您诊断您已确认正在运行的托管式节点未包含在 Systems Manager 中的托管式节点列表中的原因。

为使节点能由 Systems Manager 管理,并在托管式节点列表中列出,它必须满足三个要求:

  • SSM Agent 必须在具有受支持的操作系统的节点上安装和运行。

    注意

    某些 Amazon 托管 Amazon Machine Images (AMIs) 配置为启动SSM Agent预安装的实例。(您还可以配置自定义 AMI 以预安装 SSM Agent。) 有关更多信息,请参阅 预安装了 SSM Agent 的 Amazon Machine Images(AMIs)

  • 对于亚马逊弹性计算云 (Amazon EC2) 实例,您必须将 Amazon Identity and Access Management 一个 (IAM) 实例配置文件附加到该实例。实例配置文件让实例能够与 Systems Manager 服务进行通信。如果您没有为实例分配实例配置文件,则可以使用混合激活进行注册,但这不是常见用例。

  • SSM Agent 必须能够连接到 Systems Manager 端点,以便将其自身注册到服务中。此后,托管式节点必须可用于服务,这一点将通过以下方法来确认:服务每五分钟发送一个信号,以检查实例的运行状况。

  • 在托管节点的状态保持 Connection Lost 至少 30 天后,该节点可能不再会在 Fleet Manager 控制台中列出。必须首先解决导致连接中断的问题,然后才能将其恢复到列表中。

在确认某个托管节点正在运行后,您可以使用以下命令来检查 SSM Agent 是否已成功注册到 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 Agent 已安装在托管式节点上,并且正在运行

确保最新版本的 SSM Agent 已安装在托管式节点上,并且正在运行。

要确定 SSM Agent 是否已安装在托管式节点上并且正在运行,请参阅 正在检查 SSM Agent 状态并启动代理

要在托管式节点上安装或重新安装 SSM Agent,请参阅以下主题:

解决方案 2:确认已为实例(仅限 EC2 实例)指定 IAM 实例配置文件

对于 Amazon Elastic Compute Cloud (Amazon EC2) 实例,确认实例已配置有允许实例与 Systems Manager API 通信的 Amazon Identity and Access Management (IAM) 实例配置文件。此外,还要验证并确保您的用户具有 IAM 信任策略,允许您的用户与 Systems Manager API 通信。

注意

本地服务器、边缘设备和虚拟机 (VM) 使用 IAM 服务角色而不是实例配置文件。有关更多信息,请参阅为混合环境创建 IAM 服务角色

确定拥有所需权限的实例配置文件是否附加到 EC2 实例
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

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

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

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

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

    在控制台中打开 AmazonSSMManagedInstanceCore

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

解决方案 3:验证并确保服务终端节点的连接性

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

对于 Amazon EC2 实例,如果您的虚拟私有云 (VPC) 配置允许出站流量,则使用该实例的 Systems Manager 服务终端节点注册实例。 Amazon Web Services 区域 但是,如果启动实例的 VPC 配置不允许出站流量,并且您无法更改此配置以允许连接到公有服务终端节点,则必须改成为 VPC 配置接口端点。

有关更多信息,请参阅创建 VPC 端点

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

确认您选择的操作可在您希望看到列出的托管式节点类型上运行。某些 Systems Manager 操作既可仅以 Windows 实例作为目标,也可仅以 Linux 实例作为目标。例如,Systems Manager (SSM) 文档 AWS-InstallPowerShellModuleAWS-ConfigureCloudWatch 只能在 Windows 实例上运行。在 Run a command (运行命令) 页面上,如果选择这些文档之一,并选择 Choose instances manually (手动选择实例),将仅列出您的 Windows 实例,并且仅有它们可供选择。

解决方案 5:确认您的工作方式与 Amazon EC2 实例 Amazon Web Services 区域 相同

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

解决方案 6:验证应用于托管节点上 SSM Agent 的代理配置

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

解决方案 7:在托管式实例上安装 TLS 证书

在您使用的每个托管实例上都必须安装传输层安全 (TLS) 证书 Amazon Systems Manager。 Amazon Web Services 使用这些证书对其他人的呼叫进行加密 Amazon Web Services。

默认情况下,从任何 Amazon Machine Image (AMI) 创建的每个 Amazon EC2 实例上都已安装 TLS 证书。大多数现代操作系统在其信任存储中包含来自 Amazon Trust Services CA 的所需 TLS 证书。

要验证实例上是否已安装所需的证书,请根据实例的操作系统运行以下命令。请务必将 URL 的区域部分替换为托管实例所在 Amazon Web Services 区域 的位置。

Linux & macOS
curl -L https://ssm.region.amazonaws.com
Windows
Invoke-WebRequest -Uri https://ssm.region.amazonaws.com

命令应返回 UnknownOperationException 错误。如果您收到 SSL/TLS 错误消息,可能未安装所需的证书。

如果您发现所需的 Amazon Trust Services CA 证书未安装在您的基本操作系统上、由亚马逊创建的不是由亚马逊提供的实例上,或者您自己的本地服务器和虚拟机上,则必须安装并允许来自亚马逊信任服务的证书,或者使用 Amazon Certificate Manager (ACM) 为支持的集成服务创建和管理证书。AMIs

每个托管实例都必须安装以下传输层安全性 (TLS) 证书之一。

  • Amazon Root CA 1

  • Starfield Services Root Certificate Authority – G2

  • Starfield Class 2 Certificate Authority

有关使用 ACM 的信息,请参阅 《Amazon Certificate Manager 用户指南》

如果您的计算环境中的证书由组策略对象 (GPO) 进行托管,则您可能需要将组策略配置为包含其中一个证书。

有关 Amazon Root 和 Starfield 证书的更多信息,请参阅博客文章 “如何为 Amazon迁移到自己的证书颁发机构做好准备”。