【问题标题】:Elastic Beanstalk conditional container_commands not workingElastic Beanstalk 条件 container_commands 不起作用
【发布时间】:2019-04-10 23:23:15
【问题描述】:

我有两个 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 是我的 beanstalk 配置中设置的 Elastic Beanstalk 变量,我已确认 echo $BEANSTALK_ENVIRONMENT 分别输出“production”和“staging”。

我也试过这个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 部分中插入条件语句来破解/修复此问题;然而,正如我之前所说,网上的一切都表明这应该可以工作,所以我很难过。

【问题讨论】:

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


    【解决方案1】:

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

    一个命令可以是leader-only或有一个测试,但不能同时是leader_only(leader_only优先)。

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

    【讨论】:

    • 哇,很好的发现,你是对的。我现在不一定需要leader_only,所以我可以删除它,但我会记住这一点。
    猜你喜欢
    • 2015-06-29
    • 2015-03-13
    • 2016-08-02
    • 2015-02-18
    • 2013-03-17
    • 2018-04-21
    • 2016-04-17
    • 1970-01-01
    • 2021-04-16
    相关资源
    最近更新 更多