Условные команды container_commands Elastic Beanstalk не работают

У меня есть два сервера Elastic Beanstalk для одной и той же кодовой базы. Один постановочный, другой постановочный.

Я пытаюсь использовать условное container_command для создания crontab, который будет работать только в рабочей среде. Эти условные операторы отлично работают для обычных commands, но, кажется, всегда оценивается как true для container_commands. Однако, согласно другим сообщениям и примерам 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 — это переменная Elastic Beanstalk, установленная в моих конфигурациях 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; однако, как я уже сказал ранее, все в Интернете указывает на то, что это должно работать, поэтому я в тупике.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
249
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В соответствии с Документы AWS вы можете использовать только один из test и leader_only, и если вы используете оба, leader_only выиграет:

A command can be leader-only or have a test, but not both (leader_only takes precedence).

Я бы еще раз подумал, нужен ли вам leader_only в вашем конкретном случае использования.

Вау, хорошая находка, ты прав. Мне не обязательно нужен leader_only прямо сейчас, поэтому я могу удалить его, но я буду помнить об этом.

Mike S 10.04.2019 17:23

Другие вопросы по теме