【问题标题】:Running Python Script in an existing EC2 instance on AWS在 AWS 上的现有 EC2 实例中运行 Python 脚本
【发布时间】:2020-01-13 18:10:42
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    所以,问题真的变成了:如何在远程计算机上运行命令?

    执行此操作的典型方法包括:

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

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

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

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

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

    AWS Systems Manager Run Command 可以由 API 调用触发,例如使用 boto3 的程序。

    【讨论】:

      【解决方案2】:

      除非您在该机器上运行了允许您修改上述文件的特定服务。我会尝试通过网络登录到任何其他机器的 EC2 实例。

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2018-08-30
          • 1970-01-01
          • 1970-01-01
          • 2020-06-19
          • 2020-09-29
          • 1970-01-01
          • 2017-04-04
          • 1970-01-01
          • 2018-04-07
          相关资源
          最近更新 更多