AWS Elastic Beanstalk:特定环境的.ebextensions

Luc*_*nto 11 amazon-web-services

我有两个环境AWS Elastic Beanstalk:DevelopmentProduction.

我希望这.ebextensions/app.config只能在Production环境中运行.有什么办法吗?


的app.config:

container_commands:
  01-command:
    command: "crontab .ebextensions/cronjob"
    leader_only: true
Run Code Online (Sandbox Code Playgroud)

Luc*_*nto 15

根据TNICHOLS想法,我找到了一个解决方案:


将环境PARAM1变量值更改为MyAppEnv-Production(或您想要的).

的app.config:

container_commands:
  command-01:
    command: "/bin/bash .ebextensions/crontab.sh"
    leader_only: true
Run Code Online (Sandbox Code Playgroud)

crontab.sh:

if [ "$PARAM1" == "MyAppEnv-Production" ]; then
  crontab -l > /tmp/cronjob

  #CRONJOB RULES
  echo "00 00 * * * /usr/bin/wget http://localhost/cronexecute > /dev/null 2>&1" >> /tmp/cronjob

  crontab /tmp/cronjob
  rm /tmp/cronjob
  echo 'Script successful executed, crontab updated.'
else
  echo 'This script is only executed in the production environment.'
fi
Run Code Online (Sandbox Code Playgroud)

  • AWS为容器命令添加了"测试"选项,因此crontab.sh中的if语句可以在leader_only之后移动到app.config中:`test:'["$ PARAM1"=="MyAppEnv-Production"]'` (8认同)