我在私有(private)子网中创建了一个 EC2 实例(即路由表没有附加 Internet 网关)。
附加到私有(private)子网的路由表将 0.0.0.0/0 路由到 NAT 网关。
EC2 实例具有正确的 SSM 角色并显示在 SSM 托管实例列表中。
我可以通过 session 管理器在实例上启动 session 。
但是,当我从路由表中删除 NAT 网关映射时, session 连接不会连接。
我的理解是 NAT 仅用于传出流量。所以我假设 session 管理器连接是通过内部 AWS 网络而不是公共(public)互联网路由的,因为实例不可访问。但是我不明白为什么实例试图通过公共(public)互联网路由流量。我本来预计可能会使用 SSM 将自己注册为托管实例,实例上的 SSM 代理需要访问 Internet。但我不明白为什么 session 管理器会要求实例访问互联网?
谢谢。
最佳答案
But I do not understand why Session Manager would require the instance to have internet access?
SSM 使用 public endponts连接到 SSM 服务。端点是 used to “以编程方式连接到 AWS 服务”。访问它们的唯一方法(没有 VPC 接口(interface)端点)是使用 Internet。
此外,SSM 代理可以与本地实例或 VM 一起使用。因此,它还需要访问 Internet 才能与 SSM 服务进行通信。
SSM 必须始终与 SSM 服务保持联系。否则它不会真正有用。没有互联网,您将无法,例如通过执行
Run Commands
,通过 State Manger
使您的实例处于每个定义的状态或收集各种实例遥测和库存。因此,一旦您断开 NAT 网关,互联网连接就会丢失,SSM 代理将无法完成其工作。如果您不习惯通过 NAT 网关为 SSM 使用 Internet,您可以设置 SSM VPC network interlace .这样,您在私有(private)子网中的实例将能够与 SSM 服务进行通信,而无需访问 Internet。所有流量都将基于内部 AWS 网络。
关于amazon-web-services - AWS SSM session 管理器和 Nat 网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61339106/