amazon-web-services - 如何在 .ebextensions 配置中为 crontab 多个环境使用条件 (AWS Elastic Beanstalk)

标签 amazon-web-services deployment cron environment-variables ebextensions

我想在 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

定时任务

* * * * * 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

我无法找到缺少的内容以及错误的脚本。

最佳答案

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

AWS 控制台 =>打开Elastic Beanstalk。选择应用程序并转到环境之一。在那里我们可以看到所有环境名称,因为我们需要进入配置”,然后转到软件部分并单击修改。查找特定于环境的ENV_TYPE value,指定是dev、stage、demo还是prod等。下面的例子使用ENV_TYPE进行说明。您可以根据需要创建变量并命名。

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

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/

关于amazon-web-services - 如何在 .ebextensions 配置中为 crontab 多个环境使用条件 (AWS Elastic Beanstalk),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55624842/

相关文章:

java - 从Java中部署的服务器(即我的Web应用程序)访问用户本地计算机的文件

node.js - 使用 PM2,如何将我的 node.js 应用程序部署到同一服务器上的多个环境和端口?

.net - VS2010 嵌套的 msi 安装程序

php - 给定日期的预定数据库更新 - MySQL 和 PHP

php - 定期执行 PHP 脚本的最佳方式?

database - 使用一个 RDS 的快照将数据库恢复到另一个现有 RDS

amazon-web-services - 云信息 : User-data in EC2 as well as in Launch Template

amazon-web-services - 如何在 CloudFormation 中定义 CloudFront 原始组?

.net - 如何与 .NET 3.5 SP1 Bootstrap 通信

ruby - 从命令行运行时,反引号在 ruby​​ 脚本中工作,但不是从 Crontab