为什么 Systems Manager 控制台的托管实例下未显示我的 EC2 实例?

上次更新时间:2020 年 3 月 6 日

AWS Systems Manager 控制台的托管实例下未显示我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。

简短描述

托管实例是一种 EC2 实例,配置为与 Systems Manager 一起使用。托管实例可以使用 Systems Manager 服务,例如 Run Command、Patch Manager 和 Automation 工作流程。

要成为托管实例,实例必须满足以下先决条件:

  • 已安装并运行 AWS Systems Manager 代理(SSM 代理)。
  • 已使用 SSM 代理与 Systems Manager 终端节点建立连接。
  • 已附加正确的 AWS Identity and Access Management (IAM) 角色。
  • 已与实例元数据服务建立连接

注意:对于混合实例,请参阅为混合环境设置 AWS Systems Manager

解决方法

注意:在开始实施此解决方法之前,请务必选择您的实例所在的区域。

验证实例是否满足以下先决条件:

已在实例上安装并运行 SSM 代理

确保 Systems Manager 支持您的操作系统。 有关支持的操作系统的列表,请参阅支持的操作系统

某些 Windows 和 Linux 操作系统已预安装 SSM 代理。 有关已预安装 SSM 代理的操作系统的列表,请参阅使用 SSM 代理

如果未预安装 SSM 代理,请手动安装它。

Linux:在适用于 Linux 的 EC2 实例上安装和配置 SSM 代理

Windows:在适用于 Windows Server 的 EC2 实例上安装和配置 SSM 代理

要检查 SSM 代理的状态,请使用以下命令:

Amazon Linux 1、RHEL 6(或类似发行版):

$ sudo status amazon-ssm-agent

Amazon Linux 2、Ubuntu、RHEL 7(或类似发行版):

$ sudo systemctl status amazon-ssm-agent

使用 snap 的最新 Ubuntu 18.04 系统:

$ sudo snap services amazon-ssm-agent    
Service                            Startup  Current  Notes
amazon-ssm-agent.amazon-ssm-agent  enabled  active   -

Windows:

$ Get-Service AmazonSSMAgent

在端口 443 上验证与 Systems Manager 终端节点的连接

有关按区域划分的 Systems Manager 终端节点的列表,请参阅 AWS Systems Manager 终端节点和配额

要测试从端口 443 到终端节点的连接,请使用 telnet 命令。以下示例显示了在 us-east-1 区域中如何测试与终端节点的连接。

telnet ssm.us-east-1.amazonaws.com 443
telnet ec2messages.us-east-1.amazonaws.com 443
telnet ssmmessages.us-east-1.amazonaws.com 443

注意:只有 AWS Systems Manager Session Manager 需要 ssmmessages 终端节点。

如果连接未正常运行,请确认已将 VPC 的路由表安全组网络访问控制列表 (ACL) 配置为允许端口 443 上的出站连接。Systems Manager 终端节点为公有终端节点。这表明必须使用互联网网关或 NAT 从实例访问互联网。

如果您的实例位于私有子网中,则可以配置 VPC 终端节点,以连接到 Systems Manager 终端节点。这样,您可以使用私有 IP 地址来私密访问 Amazon EC2 和Systems Manager API。有关更多信息,请参阅如何创建 VPC 终端节点,以便使用 Systems Manager 在无法连接互联网的情况下管理私有 EC2 实例?

注意:每个接口终端节点都会在所提供的子网中创建一个弹性网络接口。附加到弹性网络接口的安全组要求端口 443 允许入站流量。

验证是否已将正确的 IAM 角色附加到实例

要使用 API 调用 Systems Manager 终端节点,必须将正确的 IAM 角色附加到实例。确认 IAM 角色已附加 AWS 托管策略 AmazonSSMManagedInstanceCore。如果您使用的是自定义 IAM 策略,请确认您的自定义策略使用了 AmazonSSMManagedInstanceCore 下的权限。另外,请确认 IAM 角色的信任策略允许 ec2.amazonaws.com 担任此角色。

有关更多信息,请参阅向 Systems Manager 实例配置文件添加权限(控制台)

验证是否已连接实例元数据服务

SSM 代理必须与实例元数据服务进行通信,才能获取有关实例的必要信息。要测试此连接,请使用 telnet 命令。

telnet 169.254.169.254 80

如果您在实例上使用代理,则代理可能会阻止与元数据 URL 的连接。确认已将 SSM 代理配置为与代理一起使用。使用以下链接配置 SSM 代理,以便使用代理。

Windows: 配置 SSM 代理以对 Windows Server 实例使用代理

Linux:配置 SSM 代理以使用代理

如果您验证了上述所有先决条件,但在 Systems Manager 控制台中实例仍然未显示为托管实例,请参阅 SSM 代理日志:

Windows:Windows 的 SSM 代理日志位于 %PROGRAMDATA%\Amazon\SSM\Logs

Linux:Linux 的 SSM 代理日志位于 /var/log/amazon/ssm


这篇文章对您有帮助吗?


您是否需要账单或技术支持?