我的应用程序有一些先决条件,这意味着从需求安装将不会工作,直到几个脚本运行。
我一直在阅读关于自定义Python容器的文档,但是它不能完全清楚如何控制.ebextensions中的脚本何时运行,以及我所做的所有testing都表明它在部署应用程序后发生,或者至less在使用pip安装来自requirements.txt的包之后。
AWS论坛上的这篇文章build议创build一个脚本文件名,将其插入到hooks文件夹中,但这并不是build议的:
将文件直接放入钩子目录是有风险的,因为这不是logging的方法,在一些容器中是不同的,并且可能在将来会改变。
我想知道是否有人已经成功地build立了脚本在requirements.txt文件之前运行,如果是的话,我可能会做错了什么。
这是我的.ebextensions文件:
packages: yum: # packages needed for my app files: "/home/ec2-user/setup-script.sh": mode: "00755" owner: ec2-user group: ec2-user encoding: plain content: | #!/bin/bash echo $(date -u) >> /tmp/debug.log echo "Running as $(whoami)" >> /tmp/debug.log # rest of script commands: 01-setup-script: command: "sh -x /home/ec2-user/setup-script.sh"
部署在安装需求的过程中停止,似乎不运行脚本,或更新脚本,因为它存在于用户文件夹中。
好吧,事实certificate,脚本的确在其他方面运行。 看起来像脚本本身有错误,这意味着它没有正确运行,这就是它没有正确设置实例的原因!
我通过查看/var/log/eb-activity.log的输出发现了这一点
所以我总是仔细检查脚本的输出! 如果在脚本的顶部添加set -e ,那么在遇到错误时会停止执行。