我正在构建一个使用go sdk管理多个ec2实例的应用程序。我想以自动的方式在这些实例上运行脚本。
我怎么才能做到呢?我不认为os.command =>ssh =比;将原始脚本作为字符串存储在代码中是最佳实践。有什么干净利落的方法可以做到这一点吗?由于
有什么干净的方法可以做到这一点吗?
要引导实例,需要创建UserData脚本。该脚本只运行一次,就在您的实例启动之后。
对于其他远程执行命令,您可以使用SSM Run Command在单个或多个实例上运行命令。
您建议的方法实际上是有效且可行的。我同意你的观点,但这也不是我的第一选择。我要么使用标准库中的golang.org/x/crypto/ssh
包,要么使用外部解决方案,如github.com/appleboy/easyssh-proxy。
我倾向于使用默认库,但如果您没有偏好,那么后一个包的Scp函数可能会让您特别感兴趣。您可以在项目的自述文件中找到相关示例。
编辑:看了Marcin的回答后,我认为我的答案更像是普通的SSH答案,独立于AWS。要了解AWS的惯用答案,请务必查看他建议的解决方案!安全复制协议(SCP)是一种在本地主机和远程主机之间或两个远程主机之间安全地传输计算机文件的方法。它基于SSH (Secure Shell)协议。