如何解决“RequestError: send request failed caused by: Post https://ssm.RegionID.amazonaws.com/: dial tcp IP:443: i/o timeout”SSM 代理日志错误?
上次更新日期:2021 年 5 月 7 日
我试图通过 AWS Systems Manager 将我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例注册为托管实例。但是,该实例无法注册,并且我收到类似于以下内容的 TCP 超时错误消息:
“RequestError: send request failed caused by: Post https://ssm.RegionId.amazonaws.com/: dial tcp IP:443: i/o timeout”
为什么会注册失败,我该如何解决此错误?
简短描述
TCP 超时错误表明,以下问题之一阻碍了实例的注册:
- 该实例位于私有子网中,并使用 Systems Manager Virtual Private Cloud (VPC) 终端节点和自定义 DNS 服务器。
- 该实例位于私有子网中,并且无法访问互联网或 Systems Manager 终端节点。
- 该实例位于公有子网中。VPC 安全组和网络访问控制列表(网络 ACL)未配置为允许端口 443 上与 Systems Manager 终端节点的出站连接。
- 实例位于代理后方,但 SSM 代理未配置为通过 HTTP 代理进行通信,也无法连接到实例元数据服务器。
您可以在以下路径的实例上的 SSM 代理日志中查看 TCP 超时错误:
Linux 和 macOS
/var/log/amazon/ssm/amazon-ssm-agent.log
/var/log/amazon/ssm/errors.log
Windows
%PROGRAMDATA%\Amazon\SSM\Logs\amazon-ssm-agent.log
%PROGRAMDATA%\Amazon\SSM\Logs\errors.log
解决方法
私有子网中使用 Systems Manager 终端节点和自定义 DNS 的实例
VPC 终端节点仅通过 Amazon Route 53 支持 Amazon 提供的 DNS。要使用您自己的 DNS 服务器,请尝试以下操作之一:
- 使用自定义 DNS 服务器中的条件转发器,将有关 Amazaws.com 域的任何查询转发给默认的 VPC DNS 解析器。有关更多信息,请参阅 DHCP 选项集。
- 设置 Route 53 解析器,以解析 VPC 和您网络之间的 DNS 查询 。
实例无法连接到 Systems Manager 终端节点
-或者-
VPC 安全组和网络 ACL 未配置为允许端口 443 上的出站连接
-或者-
实例位于代理后方,并且无法连接到实例元数据服务
有关故障排除步骤,请参阅为何我的 EC2 实例未能显示在 Systems Manager 控制台中的托管实例项下?