首页 > 解决方案 > 在多个 ec2 实例上运行相同的 github python 代码的最佳实践是什么?

问题描述

我在 github 上将 venv 用于我的 python 存储库,并希望在 10 多个 ec2 实例上运行相同的代码(每个实例将有一个 cronjob,它只在相同的时间表上运行相同的代码)

关于如何最好地实现这一点的任何建议 + 继续确保所有实例都在 github 上获得最新版本的分支?我想尝试自动化我需要做的任何配置,所以我不这样做:

  1. 创建一个ec2实例,设置我需要的所有配置,比如下载最新的python版本等。然后git clone,使用venv设置我需要的所有python包。验证代码在此实例上有效。

  2. 对剩余的 10 多个 ec2 实例重复此操作

  3. 每当有人发布一个新的主分支时,我必须 ssh 进入每个 ec2 实例,git pull 到正确的分支,重新更新我需要的任何新配置,对所有剩余的 10 多个 ec2 实例重复。

理想情况下,我可以运行一些脚本来推送使代码在所有 ec2 实例上工作所需的一切。我对这类事情几乎没有经验,但通过阅读这是我正在考虑的一种方法。我在正确的轨道上吗?:

标签: pythonamazon-web-servicesdockeramazon-ec2python-venv

解决方案


根据您的应用程序和要求(EC2 100% 是否必要?)我可以推荐以下内容:

  1. 如果您的舰队是静态的并且您需要快速部署,则可以使用类似 Capistrano 的 SSH 部署 ( https://github.com/dlapiduz/fabistrano )。不是最佳实践,也不是非常安全,但您在帖子中提到了类似的方案

  2. 使用 AWS Image Builder ( https://aws.amazon.com/image-builder/ ) 或 Packer ( https://www.packer.io/ ) 构建新的发布映像,然后在您的 EC2 自动缩放中将旧映像替换为新映像团体

  3. 构建应用程序的 docker 映像并使用 ECS 或 EKS 托管它。如果您不喜欢直接在 EC2 主机上运行代码,我会推荐这种方法。


推荐阅读