如何在启动时在Elastic Beanstalk上运行一次python脚本

时间:2016-11-02 04:29:10

标签: python amazon-web-services deployment elastic-beanstalk

我想无限期地运行一个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服务器并且已提取应用程序版本存档之后,但在部署应用程序版本之前,将运行容器命令。

如何运行部署后脚本?

1 个答案:

答案 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"