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

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

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

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

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

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

    注意

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

  • 对于 Amazon Elastic Compute Cloud (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 服务角色而不是实例配置文件。有关更多信息,请参阅在混合和多云环境中创建 Systems Manager 所需的 IAM 服务角色

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

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

  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 实例,如果 Virtual Private Cloud (VPC) 配置允许出站流量,则 Amazon Web Services 区域 的 Systems Manager 服务终端节点可用于注册该实例。但是,如果启动实例的 VPC 配置不允许出站流量,并且您无法更改此配置以允许连接到公有服务终端节点,则必须改成为 VPC 配置接口端点。

有关更多信息,请参阅使用适用于 Systems Manager 的 VPC 端点提高 EC2 实例的安全性

解决方案 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 证书

必须在与 Amazon Systems Manager 结合使用的每个托管式实例上安装传输层安全性协议(TLS)证书。Amazon Web Services 服务 使用这些证书来加密对其他 Amazon Web Services 服务的调用。

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

要验证实例上是否已安装所需的证书,请根据实例的操作系统运行以下命令。务必将 URL 的 region 部分替换为托管式实例所在的 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 提供的 AMIs 创建的实例上或您自己的本地服务器和虚拟机上,则必须安装并允许来自 Amazon Trust Services 的证书,或使用 Amazon Certificate Manager (ACM) 为受支持的集成服务创建和管理证书。

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

  • Amazon Root CA 1

  • Starfield Services Root Certificate Authority – G2

  • Starfield Class 2 Certificate Authority

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

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

有关 Amazon Root 和 Starfield 证书的更多信息,请参阅博客文章 How to Prepare for Amazon’s Move to Its Own Certificate Authority