AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

设置 Python 开发环境

AWS Elastic Beanstalk 为部署 Python 应用程序提供了一致的界面,因此无论您所使用的应用程序框架如何,或者您是否在使用其中之一,都可以采取相同的步骤。

常见先决条件

对于所有您将使用 Elastic Beanstalk 部署的 Python 应用程序,这些先决条件都是常见的:

  1. Python 2.7 或 3.4

  2. pip 实用程序与您的 Python 版本匹配。它用于安装并列出项目的依赖项,以便 Elastic Beanstalk 了解如何设置应用程序环境。

  3. The virtualenv 程序包。该程序包用于创建开发和测试应用程序时使用的环境,这样您就无需安装应用程序所需的其他程序包,即可通过 Elastic Beanstalk 复制这一环境。

  4. The awsebcli 程序包。该程序包用于使用随 Elastic Beanstalk 部署所需的文件初始化应用程序。

  5. 可工作的 ssh 安装。这用于在您需要检查或调试部署时连接运行的实例。

有关 Python、pip 和 EB CLI 的说明,请参阅安装 Elastic Beanstalk 命令行界面 (EB CLI)

设置虚拟 Python 环境

在安装先决条件软件后,使用 virtualenv 设置虚拟环境以安装您的应用程序的依赖项。通过使用虚拟环境,您可以确切地识别哪些程序包是您的应用程序所必需的,以便在运行应用程序的 EC2 实例上安装所需的数据包。

设置虚拟环境

  1. 打开命令行窗口并键入:

    virtualenv -p python2.7 /tmp/eb_python_app

    使用对您的应用程序有意义的名称替换 eb_python_app (使用您的应用程序的名称或目录名称是一个不错的方法)。virtualenv 命令为您创建虚拟环境并输出其操作的结果:

    Running virtualenv with interpreter /usr/bin/python2.7 New python executable in /tmp/eb_python_app/bin/python2.7 Also creating executable in /tmp/eb_python_app/bin/python Installing setuptools, pip...done.
  2. 一旦您的虚拟环境准备就绪,请通过运行位于环境 bin 目录中的 activate 脚本启动它。例如,要启动在上一步骤中创建的 eb_python_app 环境,您需要键入:

    . /tmp/eb_python_app/bin/activate

    虚拟环境在各个命令提示符的开头输出其名称 (例如:(eb_python_app)),提醒您处于虚拟 Python 环境中。

注意

创建之后,您可以随时通过重新运行虚拟环境的 activate 脚本来重新启动它。

为 Elastic Beanstalk 配置 python 项目

您可使用 Elastic Beanstalk CLI 来准备 Python 应用程序,以便随 Elastic Beanstalk 一起部署。

将 Python 应用程序配置为随 Elastic Beanstalk 一起部署

  1. 从您的虚拟环境中,返回项目目录树的顶层 (python_eb_app),然后键入:

    pip freeze >requirements.txt

    此命令将已安装到您虚拟环境中的程序包的名称和版本复制到 requirements.txt。例如,如果虚拟系统上安装了 PyYAML 程序包版本 3.11,则文件将包含以下行:

    PyYAML==3.11

    这使得 Elastic Beanstalk 可以使用您在开发和测试应用程序时使用的相同程序包和相同版本来复制应用程序的 Python 环境。

  2. 使用 eb init 命令配置 EB CLI 存储库。按照提示选择区域、平台和其他选项。有关详细说明,请参阅 使用 EB CLI 管理 Elastic Beanstalk 环境

默认情况下,Elastic Beanstalk 会查找名为 application.py 的文件来启动应用程序。如果这不在您创建的 Python 项目中,则必须对您的应用程序环境做出一些调整。您还需要设置环境变量,以便可以加载您的应用程序模块。参阅 使用 AWS Elastic Beanstalk Python 平台 了解更多信息。