gpt4 book ai didi

amazon-web-services - Elastic Beanstalk : How would I run an ebextension command on the worker tier only?

转载 作者:行者123 更新时间:2023-12-04 15:10:40 25 4
gpt4 key购买 nike

我有一个弹性 beantalk 应用程序,它同时使用了 web 层和工作层。作业通过 SQS 从 Web 层卸载到工作层,以保持面向 Web 的服务器的速度。两种环境都使用完全相同的代码库,并在其下使用 RDS 实例。

我需要在工作层的领导服务器上运行一个 cron 作业。我创建了一个 .ebextensions 文件夹,其中包含一个名为 crontab 的文件如下(它是一个 Laravel 网络应用程序):

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

然后,我创建了一个名为 01cronjobs.config 的文件。 ,它更新 root 下的环境 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 配置文件只在工作层上运行 config 命令?类似 worker_only: true在这里会很棒,但它似乎不存在。

任何人都可以提供一些有关我如何实现这一目标的见解吗?谢谢。

最佳答案

  • 设置环境属性,如“tier=worker”。 Elastic Beanstalk --> 应用程序 --> 环境 --> 配置 --> 软件配置。
  • 使用“command”键的“test”属性来测试这个属性,所以只有在设置环境属性时才会执行命令。

  • AWS 文档中的示例:

    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"'

    关于amazon-web-services - Elastic Beanstalk : How would I run an ebextension command on the worker tier only?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28425360/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com