您好需要通过 ssm 代理将文件传输到 ec2 机器。我已经在 ec2 实例中成功安装了 ssm-agent,并且从 UI 我能够通过“会话管理器”启动会话并登录到该 ec2 机器的外壳。
现在我尝试通过 boto3 并使用以下代码使其自动化,
ssm_client = boto3.client('ssm', 'us-west-2')
resp = client.send_command(
DocumentName="AWS-RunShellScript", # One of AWS' preconfigured documents
Parameters={'commands': ['echo "hello world" >> /tmp/test.txt']},
InstanceIds=['i-xxxxx'],
)
以上工作正常,我可以在远程机器上创建一个名为 test.txt 的文件,但他是通过 echo 命令而不是我需要通过 ssm 代理将文件从本地机器发送到这台删除 ec2 机器,因此我做了下列的 ,
使用代理修改了“/etc/ssh/ssh_config”,如下所示,
# SSH over Session Manager
host i-* mi-*
ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
然后在上面的代码中,我尝试用下面的代码开始一个会话,这也是成功的。
response = ssm_client.start_session(Target='i-04843lr540028e96a')
现在我不确定如何使用此会话响应或使用此 aws ssm 会话并发送文件
环境描述: 来源:在EKS集群中运行的pod dest:ec2机器(运行ssm代理)要传输的文件:重要的私钥,将由ec2机器中的某些进程使用,不同机器会有所不同
尝试的解决方案:
- 我可以将文件推送到源代码中的 s3 并执行 ssm boto3 libaray 可以从 s3 中提取并存储在远程 ec2 机器中
- 但是由于我不想存储私钥 i s3 的原因,我不想执行上述操作。所以想直接将文件从内存发送到远程ec2机器
基本上我想实现这个aws文档中提到的scp:https ://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#sessions-启动 ssh