AWS Elastic Beanstalk 无法使用 requirements.txt Git Pip 安装 Python 包

Chr*_*Yao 6 python git pip amazon-elastic-beanstalk

我尝试使用eb deploy但失败在 AWS Elastic Beanstalk 上部署 Flask 应用程序。

requirements.txt在app目录下有:

Flask==0.12.2
numpy==1.13.3
pandas==0.21.1
requests==2.18.4
scipy==1.0.0
Werkzeug==0.12.2
-e git+http://github.com/hensing/PyDDE#egg=PyDDE
Run Code Online (Sandbox Code Playgroud)

python.config目录下的.ebextensions文件:

packages:
  yum:
    git: []
    gcc-c++: []
    make: []
Run Code Online (Sandbox Code Playgroud)

错误信息是:

信息:环境更新正在开始。

信息:将新版本部署到实例。

错误:您的 requirements.txt 无效。快照您的日志以获取详细信息。

错误:[实例:i-03e92fa3c58b6e010] 命令在实例上失败。返回码:1 输出:(TRUNCATED)...)

check_call 中的文件“/usr/lib64/python2.7/subprocess.py”,第 541 行

引发 CalledProcessError(retcode, cmd)

CalledProcessError: 命令 '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements .txt' 返回非零退出状态 2。

挂钩 /opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py 失败。有关更多详细信息,请使用控制台或 EB CLI 检查 /var/log/eb-activity.log。

信息:命令在所有实例上执行完毕。摘要:[成功:0,失败:1]。

错误:对实例 ID 'i-03e92fa3c58b6e010' 的命令执行失败。中止操作。

错误:无法部署应用程序。

/var/log/eb-activity.log显示:

2018-01-19 04:26:53,878 错误安装依赖项时出错:命令“/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt”返回非零退出状态 2

回溯(最近一次调用最后一次):

文件“/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py”,第 22 行,在主目录中

install_dependencies()

install_dependencies 中的文件“/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py”,第 18 行

check_call('%s install -r %s' % (os.path.join(APP_VIRTUAL_ENV, 'bin', 'pip'), requirements_file), shell=True)

check_call 中的文件“/usr/lib64/python2.7/subprocess.py”,第 541 行

引发 CalledProcessError(retcode, cmd)

CalledProcessError: 命令 '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requiremen ts.txt' 返回非零退出状态 2 (Executor::NonZeroExitStatus)

这个问题似乎是因为-e git+AWS Elastic Beanstalk 不支持安装?

Chr*_*Yao 5

这个问题已经解决。

这不是因为安装了 PyDDE。

实际原因是安装 Scipy 需要 > 40MB 内存,而默认 EC2 实例 t1.micro 没有足够的内存来安装它。可以通过使用更大的 EC2 实例来解决。我最终选择了 t2.medium。

另外,要安装 Pandas,它需要 gcc。我.ebextensions\[env_name].config用这个修改了文件:(我使用的是 python 2.7,来自:elasticbeanstalk gcc 和 python-devel 安装

packages:
  yum:
    git: []
    gcc-c++: []
    python27-devel: []
Run Code Online (Sandbox Code Playgroud)