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 中的“容器命令构建失败”一般错误?