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:私有包依赖项的主要内容,如果未能解决你的问题,请参考以下文章

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

AWS Elastic Beanstalk 中的 mysqlclient 安装错误

一个 AWS 账户中的 Elastic Beanstalk 能否与另一个 AWS 账户中的 RDS 通信?

如何解决 AWS Elastic Beanstalk 中的“容器命令构建失败”一般错误?

AWS Elastic Beanstalk 中的 JDBC 连接字符串

AWS Elastic Beanstalk 中的工作人员“dyno”