AWS SSM 屏幕会话不会持续存在

AWS SSM screen sessions do not persist

我正在使用 Javascript AWS-SDK 制作一个脚本,该脚本将命令发送到 EC2 实例以创建一个屏幕,然后在所述屏幕中执行一个进程。一段时间后,SSM 应该会恢复之前创建的屏幕并停止该过程。但是,经过一些测试,使用以下命令序列时,屏幕似乎不会持续存在。

// First command batch

cd /home/ec2-user/
screen -S server
run process

// Second command batch

cd /home/ec2-user/
screen -S server -X "stop process"

使用第二批命令时,SSM returns 出现错误,提示没有屏幕或“必须连接到终端”。我不知所措。为什么我不能使用屏幕?

AWS Systems Manager 会话管理器使用 'Agent' 连接到实例。您键入的命令会发送到代理,代理会执行命令并 returns 响应。

它没有使用普通的 SSH 连接或 'terminal' -- 这有点作弊,但非常有用,因为它允许连接到私有子网中的 EC2 实例,甚至可以连接到阻止所有传入连接的实例(因为代理通过传出连接进行连接)。

如果您需要做更多花哨的事情,您可以使用 Port Forwarding Using AWS System Manager Session Manager,它允许您通过 SSM 连接建立其他连接(例如 SSH 会话或端口转发 Web 服务)。这将允许您使用正常的 'terminal' 类型功能进行连接。