我有一个利用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
就像这里很棒,但它似乎并不存在。
任何人都可以提供一些见解我如何实现这一目标?谢谢。
会是什么检查的环境属性是准确的测试?这将使这个答案更有帮助:-) – mikhuang 2018-02-05 21:37:18