如何在crontab多环境中使用.ebextensions配置中的条件(AWS Elastic Beanstalk)

问题描述 投票:1回答:2

我想在cron.config文件中添加一个条件。我需要检查ENV_ID(环境ID)如果环境ID与生产服务器匹配,那么cron将在crontab中设置,否则cron将不会设置检查。

cron.config

container_commands:
  01_remove_crontab:
    command: "crontab -r || exit 0"
  02_test:
    command: |
      ENV_ID=`{"Ref": "AWSEBEnvironmentId" }`
      ENV_NAME=`{"Ref": "AWSEBEnvironmentName" }`
  03_add_crontab:
    test:  [ $ENV_ID == "e-r19pphhp78l" ]
    command: "cat .ebextensions/crontab | crontab"
    leader_only: true

crontab中

* * * * * wget https://example.com/cronrun.php >> /dev/null

另外,我检查是否有条件但没有工作。

container_commands:
  01_remove_crontab:
    command: "crontab -r || exit 0"
  02_test:
    command: |
      ENV_ID=`{"Ref": "AWSEBEnvironmentId" }`
      ENV_NAME=`{"Ref": "AWSEBEnvironmentName" }`
      ENV_MYID="e-r19pphhp78l"
  03_add_crontab:
    command: |
      if [ $ENV_ID == $ENV_MYID ] then
        "cat .ebextensions/crontab | crontab"
      fi
    leader_only: true

我无法找到丢失的内容以及错误的脚本。

amazon-web-services deployment cron environment-variables ebextensions
2个回答
1
投票

我找到了解决这个问题的方法。我在Elastic Beanstalk中设置了所有环境值。以下是设置

AWS console =>打开Elastic Beanstalk。选择应用程序并转到其中一个环境。在那里我们可以看到所有环境名称,因为我们需要进入Configuration“,之后转到软件部分并单击修改。查找环境特定的ENV_TYPE值,它指定它是开发,阶段,演示还是以下示例使用ENV_TYPE进行说明。您可以根据需要创建变量并命名。

现在我们需要在cron.config文件夹中打开.ebextensions文件并添加条件。

container_commands:
  01_remove_crontab:
    command: "crontab -r || exit 0"
  02_add_crontab:
    command: 'if [ "$ENV_TYPE" == "production" ]; then sudo cat .ebextensions/crontab | crontab; fi'
    command: 'if [ "$ENV_TYPE" == "development" ]; then cat .ebextensions/crontabdev | crontab; fi'
    command: 'if [ "$ENV_TYPE" == "staging" ]; then cat .ebextensions/crontabstag | crontab; fi'
    leader_only: true

有关详细信息,请查看此链接: - http://www.smalldaytech.com/conditional-aws-elastic-beanstack-cron-job-for-multiple-environments/


0
投票

你不能在test中同时使用leader_onlycontainer_commands,如果你这样做,leader_only优先。

elastic beanstalk docs on container_commands

命令可以是仅限领导者或具有测试,但不是两者(leader_only优先)。

© www.soinside.com 2019 - 2024. All rights reserved.