AWS SSM 会话管理器和 Nat 网关

AWS SSM Session Manager and Nat Gatway

我在私有子网中创建了一个 EC2 实例(即路由 table 没有附加互联网网关)。

附加到私有子网的路由 table 将 0.0.0.0/0 路由到 NAT 网关。

EC2 实例具有正确的 SSM 角色并出现在 SSM 托管实例列表中。

我可以通过会话管理器在实例上启动会话。

然而,当我从路由 table 中删除 NAT 网关映射时,会话连接未连接。

我的理解是 NAT 仅用于传出流量。所以我假设 Session Manager 连接是通过内部 AWS 网络而不是 public 互联网路由的,因为实例无法访问。但是我不明白为什么该实例试图通过 public 互联网路由流量。我原以为要将自己注册为 SSM 的托管实例,实例上的 SSM 代理可能需要访问互联网。但是我不明白为什么 Session Manager 会要求实例可以访问互联网?

谢谢。

But I do not understand why Session Manager would require the instance to have internet access?

SSM 使用public endpoints to connect to the SSM service. The endpoints are used to“以编程方式连接到 AWS 服务”。访问它们(没有 VPC 接口端点)的唯一方法是使用 Internet。

SSM 代理也可以与本地实例或 VM 一起使用。因此它也需要互联网访问才能与 SSM 服务通信。

SSM 必须与 SSM 服务保持持续联系。否则它不会很有用。没有互联网你将无法,例如执行 Run Commands,通过 State Manager 将您的实例保持在每个定义的状态或收集各种实例遥测和库存。因此,一旦您断开 NAT 网关,互联网连接就会丢失,SSM 代理将无法执行其工作。

如果您不习惯通过 SSM 的 NAT 网关使用互联网,您可以设置 SSM VPC network interface。这样,私有子网中的实例将能够与 SSM 服务通信,而无需访问 Internet。所有流量都将基于内部 AWS 网络。