我有两个用于相同代码库的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
部分内插入条件语句来破解/修复此错误;但是,正如我之前所说,所有在线内容都表明该方法可以正常工作,所以我很沮丧。
答案 0 :(得分:1)
根据AWS docs,您只能使用test
和leader_only
中的一个 ,如果同时使用,leader_only
将获胜:
命令可以是仅领导者的命令,也可以具有测试的命令,但不能同时具有两者(leader_only优先)。
如果您确实需要在特定用例中使用leader_only
,我会重新考虑。