如何在AWS Elastic Beanstalk中包含非pip依赖项

时间:2017-10-16 12:27:02

标签: python amazon-web-services

我正在尝试在Elastic Beanstalk上部署Flask应用,但是当我运行eb create时出现以下错误:

ERROR: Your requirements.txt is invalid. Snapshot your logs for details.
ERROR: [Instance: i-04837a6167d3738a3] Command failed on instance. Return code: 1 Output: (TRUNCATED)...)
   File "/usr/lib64/python2.7/subprocess.py", line 541, in check_call
     raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status 1. 
Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.

问题似乎来自应用程序使用的文章提取库(http://newspaper.readthedocs.io/en/latest/index.html),该库具有sudo apt-get install libxml2-dev libxslt-devsudo apt-get install libjpeg-dev zlib1g-dev libpng12-dev等依赖关系。

如何在Elastic Beanstalk上安装这些依赖项?

1 个答案:

答案 0 :(得分:0)

你有几个选择。

您可以安装所有必需的软件包,然后在安装软件包的情况下创建服务器的映像。然后,您可以在启动任何新实例时使用该AMI,并且这些包将可用。

您还可以使用.ebextensions在代码中管理它。您可以使用它来安装服务器启动时所需的任何软件包。

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html

这是如何工作的一个示例是我将bean替换为nginx用于beanstalk应用程序:https://github.com/ricktbaker/beanstalk-nginx-php-fpm

或者您可以创建自定义平台。这可能对您的需求有点过分,但这是一个选择:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platforms.html