Elastic Beanstalk: Как бы я выполнил команду ebextension только на рабочем уровне?
У меня есть эластичное приложение beanstalk, которое использует и веб-уровень и рабочий уровень. Задания выгружаются на рабочий уровень с веб-уровня через SQS, чтобы обеспечить высокую скорость работы веб-серверов. Обе среды используют одну и ту же кодовую базу и используют под ними экземпляр RDS.
Мне нужно запустить задание cron на сервере-лидере рабочего уровня. Я создал папку .ebextensions с файлом с именемcrontab
в нем следующее (это веб-приложение Laravel):
* * * * * root php /var/www/html/artisan do:something:with:database
Затем я создал файл с именем01cronjobs.config
, который обновляет среды crontab под root следующим образом:
container_commands:
01_remove_old_cron_jobs:
command: "crontab -r || exit 0"
02_cronjobs:
command: "cat .ebextensions/crontab | crontab"
leader_only: true
.. все хорошо. Теперь я хочу развернуть это в EB, используяeb deploy
команда. Однако я хочу, чтобы рабочий уровень выполнял задачу cron, так как у нас может быть только один сервер, который запускает cron по всей группе.
Есть ли способ указать файл конфигурации ebextensionsтолько запустить команду config на рабочем уровне? Что-то вродеworker_only: true
было бы здорово здесь, но, кажется, не существует.
Кто-нибудь может дать некоторое представление о том, как мне этого добиться? Благодарю.