2015-02-10 54 views
3

我有一個利用web層和worker層的彈性beanstalk應用程序。作業通過SQS從Web層卸載到工作層,以保持面向網絡的服務器的速度。兩種環境都使用完全相同的代碼庫,並在其下使用RDS實例。Elastic Beanstalk:我如何僅在工作層上運行ebextension命令?

我需要在工作層的引導服務器上運行cron作業。我創建了一個.ebextensions用它叫做crontab文件,如下所示(這是一個Laravel Web應用程序)文件夾:

* * * * * root php /var/www/html/artisan do:something:with:database 

然後,我創建了一個名爲01cronjobs.config,這下根更新了環境的crontab如下:

container_commands: 
    01_remove_old_cron_jobs: 
    command: "crontab -r || exit 0" 
    02_cronjobs: 
    command: "cat .ebextensions/crontab | crontab" 
    leader_only: true 

..都不錯。現在,我想使用eb deploy命令將其部署到EB。但是,我只希望工作層承擔cron工作,因爲我們只能有一臺服務器在整個組中運行cron。

有沒有辦法告訴ebextensions配置文件只有在工作層上運行配置命令?像worker_only: true就像這裏很棒,但它似乎並不存在。

任何人都可以提供一些見解我如何實現這一目標?謝謝。

回答

4
  • 設置環境屬性,如「tier = worker」。 Elastic Beanstalk - >應用程序 - >環境 - >配置 - >軟件配置。
  • 使用「command」鍵的「test」屬性來測試這個屬性,所以只有在設置了環境屬性時才執行該命令。

樣品從AWS DOC:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

commands: 
    python_install: 
    command: myscript.py 
    cwd: /home/ec2-user 
    env: 
     myvarname: myvarvalue 
    test: '[ ! /usr/bin/python ] && echo "python not installed"' 
+0

會是什麼檢查的環境屬性是準確的測試?這將使這個答案更有幫助:-) – mikhuang 2018-02-05 21:37:18

相關問題