Как использовать условную конфигурацию .ebextensions(AWS Elastic Beanstalk)

Мне бы хотелось использовать условную конфигурацию .ebextensions, но я не знаю, как ее использовать, мой текущий случай:

Один из компонентов конфигурации .ebextensions создает папку, на самом деле папку, которая должна быть создана только один раз, потому что, если я развертываю приложение во второй раз или более, у меня есть ошибка, и ошибка говорит "папка уже существуют".

Итак, мне нужно дать условное значение, если папка уже существует, не нужно снова запускать команду для создания папки.

Если у кого-то есть какие-либо идеи или указания относительно того, как это может быть достигнуто, я был бы очень признателен. Спасибо!

Ответ 1

Я думаю, что единственный способ сделать это - с условиями оболочки:

commands:
  make-directory:
    command: |
      if [ ! -f "${DIR}" ]; then
        mkdir "${DIR}"
      fi

См. более крупный пример в jcabi-beanstalk-maven-plugin.

Ответ 2

Файлы конфигурации .ebextensions позволяют выполнять условную команду с помощью директивы test: по команде. Затем команда запускается только в том случае, если тест верен (возвращает 0).

Пример .ebextensions/create_dir.config file:

commands:
  01_create_dir:
    test: test ! -d "${DIR}"
    command: mkdir "${DIR}"

Другой пример (фактически протестированный на EB) для условного запуска script, если каталог отсутствует:

commands:
  01_intall_foo:
    test: test ! -d /home/ec2-user/foo
    command: "/home/ec2-user/install-foo.sh"
    cwd: "/home/ec2-user/"

Редкая документация от AWS находится здесь:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-commands

PS. Если вам просто нужно условно создать каталог, вы можете сделать это без условностей, используя параметр -p для mkdir, чтобы условно создать каталог следующим образом:

commands:
  01_create_dir:
    command: mkdir -p "${DIR}"