Порядок развертывания AWS Elastic Beanstalk

Я развертываю код в среде AWS EB веб-сервера с одним экземпляром, которая будет обеспечивать / обновлять мою подключенную базу данных RDS. У меня есть файл.ebextensions, который вызывает код развертывания:

---
container_commands:
  01deploydb:
    command: /var/www/html/php/cli/deploy-db.php
    leader_only: true

В том же развертывании я удалил файл deploy-db.php обратно на один каталог в /cli/, По развертыванию я получаю ERROR: [Instance: i-*****] Command failed on instance. Return code: 127 Output: /bin/sh: /var/www/html/php/cli/deploy-db.php: No such file or directory. container_command 01deploydb in .ebextensions/01_db.config failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.

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

У меня вопрос: есть ли задокументированный порядок / последовательность того, как AWS обновляет среду? Я ожидал бы, что моя новая версия будет полностью развернута (и установлен файл.php) до вызова container_commands.

1 ответ

Решение

Секция команды: запускается до того, как файлы проекта будут помещены на место. Здесь вы можете установить серверные пакеты, например.

Секция container_commands: выполняется в промежуточном каталоге до того, как файлы помещаются в конечный пункт назначения. Здесь вы можете изменить ваши файлы, если вам нужно. Текущий путь - это промежуточный каталог, так что вы можете запустить его следующим образом (я могу ошибиться в каталоге приложения, возможно, это должно быть php/cli/deploy-db.php)

container_commands:
  01deploydb:
    command: cli/deploy-db.php
    leader_only: true

Ссылка для выше: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

Вы также можете запустить сценарии после развертывания. Это не очень хорошо задокументировано (по крайней мере, не было). Вы можете сделать что-то вроде этого (хотя это будет не только лидер, но вы можете поместить файл в этот каталог через container_commands:):

files:
    "/opt/elasticbeanstalk/hooks/appdeploy/post/99_deploy.sh":
        mode: "000755"
        owner: root
        group: root
        content: |
            #!/usr/bin/env bash
            /var/www/html/php/cli/deploy-db.php
Другие вопросы по тегам