将 Python 解决方案部署到 AWS 的最佳方法

将 Python 解决方案部署到 AWS 的最佳方法

我有一个部署到 AWS 的 Python 解决方案,我当前的部署方法感觉非常过时。每次更新服务时,我都会遵循以下步骤:

  1. 将更改过的 python 文件解压到 tar 中
  2. 将 tar 复制到实例上的 /tmp 目录中
  3. 在新的 setup.py 文件中运行 sudo python setup.py install
  4. 重启supervisord

服务器永远不会存在多个版本,如果存在不向后兼容的变化,则客户端上会有强制更新机制。

我如何使用最新技术来改进这一过程?

答案1

尝试使用以下编排工具Ansible。从免费开源版本开始。您也可以尝试SaltStack、Chef 或 Puppet,但我认为 Ansible 是其中最简单的,它不需要服务器组件。而且由于它基于 Python,所以应该很适合你。

对于关键任务部署我建议蓝绿战略。

答案2

另一个解决方案可能是:AWS Elastic Beanstalk

AWS Elastic Beanstalk 支持许多平台,包括 Python。目前,对于 Python,它们支持:

  • 运行 Python 3.4 的 64 位 Amazon Linux 2015.03 v1.4.3
  • 运行 Python 2.7 的 64 位 Amazon Linux 2015.03 v1.4.3
  • 运行 Python 2.6 的 64 位 Amazon Linux 2015.03 v1.4.3
  • 运行 Python 3.4 的 64 位 Debian jessie v1.4.3(预配置 - Docker)

如果上面的环境不适合你,你也可以通过 Docker 配置自己的环境。完整环境请参见这里

AWS Elastic Beanstalk 处理很多事情:

  • Auto Scaling 组
  • 负载均衡器
  • 应用程序版本控制
  • 通知
  • 自定义资源(例如:RDS、ElastiCache 等)

您还可以使用.ebextensions脚本扩展您的环境。例如,您想要配置 SSL 或添加额外的 EBS 卷。

它还支持蓝绿部署策略交换 CNAME

相关内容