我想无限期地运行一个python脚本'在EB实例上,一旦部署就自动(我不想在SSH中)。要做到这一点,我想我应该运行
source /opt/python/run/venv/bin/activate && nohup python myscriptname.py &
在部署Elastic Beanstalk实例之后。但是,我在哪里将上述命令自动运行此部署后?
我看过How do I install a Python script on Amazon's Elastic Beanstalk?,但我不认为一个cron工作适合我。
之前我使用过container_commands
,但他们似乎在部署前运行。
在设置应用程序和Web服务器并且已提取应用程序版本存档之后,但在部署应用程序版本之前,将运行容器命令。
如何运行部署后脚本?
答案 0 :(得分:1)
与往常一样,在AWS中有几种方法可以做到这一点。您可以启动实例,自定义,然后从此图像创建AMI。然后,您可以告诉beanstalk使用此custom AMI
或者可以使用ebextensions在创建和应用重启时自定义您的实例。我正在使用它来安装(如果尚未安装)logstash并在我的应用程序启动时下载最新的GeoLiteCity数据库。
以下是文档中的示例
container_commands:
collectstatic:
command: "django-admin.py collectstatic --noinput"
01syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
02migrate:
command: "django-admin.py migrate"
leader_only: true
99customize:
command: "scripts/customize.sh"