Elastic Beanstalk条件容器_命令不起作用

时间:2019-04-07 07:16:00

标签: amazon-web-services amazon-elastic-beanstalk

我有两个用于相同代码库的Elastic Beanstalk服务器。一种是生产,一种是演出。

我正在尝试使用条件container_command来创建仅在生产环境中运行的crontab。这些条件语句对于常规commands可以正常工作,但是对于container_commands来说,始终评估为true。但是,根据其他SO帖子和示例,它们对于两种类型的命令应该都相同。

这就是我想要做的:

container_commands:
  01_activate_cronjob:
    test: '[ "${BEANSTALK_ENVIRONMENT}" == "production" ]'
    command: "cat .ebextensions/my_cron_file > /etc/cron.d/my_cron_file && chmod 644 /etc/cron.d/my_cron_file"
    leader_only: true

BEANSTALK_ENVIRONMENT是在我的beantalk配置中设置的Elastic Beanstalk变量,并且我已经确认echo $BEANSTALK_ENVIRONMENT分别输出“生产”和“登台”。

我也尝试过此test行:

test: test $BEANSTALK_ENVIRONMENT == production

此外,我已经在终端中验证了这些测试命令的正确性。

test $BEANSTALK_ENVIRONMENT == production && echo yes || echo no
# outputs "yes" on the production server and "no" on the staging server

我知道我可以通过在command部分内插入条件语句来破解/修复此错误;但是,正如我之前所说,所有在线内容都表明该方法可以正常工作,所以我很沮丧。

1 个答案:

答案 0 :(得分:1)

根据AWS docs,您只能使用testleader_only中的一个 ,如果同时使用,leader_only将获胜:

  

命令可以是仅领导者的命令,也可以具有测试的命令,但不能同时具有两者(leader_only优先)。

如果您确实需要在特定用例中使用leader_only,我会重新考虑。