【问题标题】:How do I run a python script once at startup on Elastic Beanstalk如何在 Elastic Beanstalk 上启动时运行一次 python 脚本
【发布时间】:2017-03-15 07:49:48
【问题描述】:

我想在 EB 实例上“无限期地”运行 python 脚本,一旦部署就会​​自动运行(我不想通过 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 服务器设置完成并且应用程序版本存档被提取之后,但在应用程序版本部署之前运行。

如何运行部署后脚本?

【问题讨论】:

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


    【解决方案1】:

    与往常一样,在 AWS 中有几种方法可以做到这一点。您可以启动一个实例,自定义,然后从此映像创建一个 AMI。然后你可以告诉 beanstalk 使用这个custom AMI

    或者可以使用ebextensions 在创建和应用重启时自定义您的实例。我目前正在使用它来安装(如果尚未安装)logstash 并在我的应用启动时下载最新的 GeoLiteCity db。

    这是来自文档的示例

    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"
    

    【讨论】:

    • 我不明白这将如何启动一个假设,cron 作业,启动应用程序后?
    • 您可以添加一个脚本来创建 cron 作业。将其添加到您的 .ebextensions 目录并从您的扩展文件之一中调用它。检查文档,有几个例子。
    猜你喜欢
    • 2017-09-15
    • 2014-04-16
    • 2018-05-09
    • 1970-01-01
    • 2018-07-19
    • 2020-03-04
    • 1970-01-01
    • 2017-03-11
    • 2013-12-07
    相关资源
    最近更新 更多