Порядок развертывания 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.

0

Решение

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

Секция 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
2

Другие решения

Других решений пока нет …