在AWS上的现有EC2实例中运行Python脚本

时间:2019-09-11 21:24:36

标签: python amazon-web-services amazon-ec2 boto3

我有一个API(使用python),必须更改已经在运行的EC2实例中的文件。我正在搜索boto3文档,但只能找到启动新EC2实例的功能,而不能连接到已经存在的实例。

我目前正在考虑复制API函数以更改EC2实例内部脚本中的文件,并让API可以通过使用某种SSH库访问EC2实例来简单地启动该脚本。

这将是正确的方法吗?或者是否有一些boto3函数(或在其他一些Amazon / AWS库中)允许我在现有实例中启动脚本?

3 个答案:

答案 0 :(得分:2)

除非您在该计算机上运行了特定的服务,该服务允许您修改提到的文件。我将尝试通过网络登录到EC2实例以及其他任何计算机上。

您可以使用paramiko或pexpect库通过ssh访问EC2机器。

答案 1 :(得分:1)

如果要在现有EC2实例中使用执行脚本-您可以在此处使用现有答案中的引用:Boto Execute shell command on ec2 instance

IMO,为了能够在EC2内启动脚本,该脚本应位于EC2上。

答案 2 :(得分:1)

Amazon EC2实例就像Internet上的任何计算机一样。它运行的是操作系统(例如Linux或Windows),并且具有内置的标准安全性。它是Amazon EC2实例这一事实没有影响。

因此,问题实际上变成了: 我如何在远程计算机上运行命令?

典型的方法包括:

  • 连接到计算机(例如通过SSH)并运行命令
  • 在侦听特定端口的计算机上运行服务(例如,响应API请求)
  • 使用远程shell命令在另一台计算机上运行操作

幸运的是,AWS提供了一个附加选项:使用AWS Systems Manager Run Command

  

AWS Systems Manager运行命令使您可以远程安全地管理托管实例的配置。受管实例是混合环境中已为Systems Manager配置的任何Amazon EC2实例或本地计算机。通过运行命令,您可以自动执行常见的管理任务并大规模执行临时配置更改。您可以从AWS控制台,AWS命令行界面,适用于Windows PowerShell的AWS工具或AWS开发工具包使用运行命令。免费提供运行命令。

     

管理员使用“运行命令”在其托管实例上执行以下类型的任务:安装或引导应用程序,构建部署管道,在实例从Auto Scaling组终止时捕获日志文件,并将实例加入Windows域,仅举几例。

基本上,它是安装在实例上的代理(或为此,在Internet上的任何计算机上),并且可以将命令发送到由代理执行的计算机。实际上,如果需要,可以将同一命令发送到数百台计算机。

可以通过API调用触发AWS Systems Manager运行命令,例如使用boto3的程序。