我正在尝试使用 boto3 send_command 函数,现在它已经可以工作了,但我注意到基本工作目录和我的一些 conda 设置与我通过 EC2 实例连接命令行界面进行连接时不同.
当我在其中任何一个中使用“who”命令时,他们会告诉我我是同一个用户。但这些设置还是不同的。
有什么方法可以让我的环境通过 SSM 与 EC2 实例连接 CLI 中的环境完全相同?
更新:我发现当我使用“whoami”而不是who时,它们将返回不同的用户(分别为“ubuntu”和“root”)
我是这样解决的:
我发现,即使它使用“who”命令将我列为同一用户,但如果我使用“whoami”,我会注意到我的 ssh 客户端位于用户“root”而不是 ubuntu 中。
因此,在 EC2 实例连接命令行上,我使用“sudo su root”切换到 root 用户,并在那里正确设置环境。
现在我的 python 脚本在通过 SSM 调用时运行
您可以使用以下命令作为不同网络用户运行命令:
f"runuser -l ubuntu -c '{cmd}'"
您还可以选择为 ssm 会话设置工作目录:
'Parameters': {
'commands': commands,
'workingDirectory': ['/home/user'],
}