AWS Elastic Beanstalk 中的 Python:私有包依赖项

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk 中的 Python:私有包依赖项【英文标题】:Python in AWS Elastic Beasntalk: Private package dependencies 【发布时间】:2014-10-11 15:04:01 【问题描述】:

我想在 beanstalk 上部署一个 Python Flask 应用程序。

应用程序依赖于外部包(例如geopy)和内部包(例如adam_geography)。

manual

创建一个 requirements.txt 文件并将其放在***目录中 您的源包。

这可能会获取geopy 及其依赖项,但不会获取adam_geography,这可从我的 VPC 内的自定义存储库中获得。

如何在 Beanstalk 应用程序中指定/上传私有的内部 Python 包依赖项?

【问题讨论】:

【参考方案1】:

1) 将内部 Python 包复制到服务器

2) 使用 Pip 的“可编辑安装”功能安装私有包:

pip install -e path/to/SomeProject

http://pip.readthedocs.org/en/latest/reference/pip_install.html#editable-installs

【讨论】:

这适用于单个实例,但它适用于自动缩放吗? @AdamMatan 可能。自动缩放可能依赖于包含所有文件的“黄金图像”。在这种情况下,省略第 1 步——它更容易。 我可以从 Beanstalk 实例创建这样的黄金图像吗? 我不知道。向 Stack Overflow 发布另一个问题,提供更多细节。【参考方案2】:

使用 ebextensions 指定可用于在所有 EC2 实例上下载文件的自定义命令。这些 ebextensions 可用于像@shavenwarthog 在他的回答中建议的那样运行 pip。 在您的应用程序源根目录中创建一个名为 .ebextensions 的目录。在这个目录中创建一个带有.config 扩展名的文件,比如01-custom-files.config。 此文件可以包含您要在每个 EC2 实例上运行的自定义 unix 命令。 您可以在此处运行自己的脚本。

您还可以使用在 EC2 实例上解压缩应用程序源后执行的 container_commands。

在此处阅读有关命令和 container_commands 的更多信息。您还可以在此处找到示例:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-commands

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-container_commands

【讨论】:

以上是关于AWS Elastic Beanstalk 中的 Python:私有包依赖项的主要内容,如果未能解决你的问题,请参考以下文章