Как добавить разрешение chmod +x для ловушки платформы AWS Elastic Beanstalk?

Контекст

Я использую Elastic Beanstalk для развертывания очень простого тестового приложения. У меня есть несколько пакетов, которые я хочу установить с помощью apt. Я включил01_installations.sh скрипт с установками в .platform/hooks/prebuildкаталог. Когда я архивирую свое приложение и развертываю его на Elastic Beanstalk, журналы подтверждают, что сценарий предварительной сборки выполняется, но у него нет разрешений.

2020/08/12 21:03:46.674234 [INFO] Executing instruction: RunAppDeployPreBuildHooks
2020/08/12 21:03:46.674256 [INFO] Executing platform hooks in .platform/hooks/prebuild/
2020/08/12 21:03:46.674296 [INFO] Following platform hooks will be executed in order: [01_installations.sh]
2020/08/12 21:03:46.674302 [INFO] Running platform hook: .platform/hooks/prebuild/01_installations.sh
2020/08/12 21:03:46.674482 [ERROR] An error occurred during execution of command [app-deploy] - [RunAppDeployPreBuildHooks]. Stop running the command. Error: Command .platform/hooks/prebuild/01_installations.sh failed with error fork/exec .platform/hooks/prebuild/01_installations.sh: permission denied  

Вопрос

Насколько я понимаю, в разрешениях было отказано, потому что я не добавил chmod +xчтобы сделать файл.sh исполняемым. Как говорится в документации AWS по хукам платформы: "Используйте chmod +x, чтобы установить права на выполнение для ваших файлов ловушек". (https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-linux-extend.html). У меня вопрос: как мне это сделать?

У меня просто есть файл.sh в каталоге. Я не звоню ниоткуда. Мне не хватает простого шага? Документация AWS делает вид, что это должно быть просто.

Предыдущие попытки

Вещи, которые я пробовал:

  1. Добавление расширений.ebextensions
    • Попытка: создать .config файл в .ebextensions каталог с помощью следующей команды, которая должна выполнить файл.sh с разрешениями chmod +x.
    • Результат: Возникает та же ошибка. Журналы Elastic Beanstalk не указывают, что.config обрабатывался вообще.
container_commands:
    01_chmod1:
        command: "chmod +x .platform/hooks/prebuild/01_installations.sh"
  1. Изменение имени файла.sh
    • Попытка: измените файл.sh на "chmod +x 01_installations.sh", как предложено пользователем AWS (ссылка на форумы ниже). Удалите расширение.ebextensions
    • Результат: Возникает та же ошибка.
[RunAppDeployPreBuildHooks]. Stop running the command. Error: Command .platform/hooks/prebuild/chmod +x 01_installations.sh failed with error fork/exec .platform/hooks/prebuild/chmod +x 01_installations.sh: permission denied 

Я рассмотрел здесь идеи, но ни одна из них не содержит достаточно полных примеров, чтобы следовать:

3 ответа

Решение

Обычно вы устанавливаете разрешения на своей локальной рабочей станции перед архивированием пакета развертывания.

Однако, если вы хотите сделать это на экземпляре EB, вы не можете использовать container_commandsдля этого. Причина в том, чтоcontainer_commandsвыполнить после prebuild. Вместо этого вам следует попробовать использоватьcommands:

Файлы предварительной сборки запускаются после выполнения команд, найденных в разделе команд любого файла конфигурации, и перед запуском команд Buildfile.

Убедитесь, что ваш файл исполняемый в git

git update-index --chmod=+x path/to/file

ссылка из Как добавить разрешения chmod к файлу в GIT?

Это сработало для меня после обновления разрешения, чтобы зафиксировать изменения.

Также команды в .config файл не будет работать, поскольку эти команды будут запускаться перед развертыванием и, следовательно, не смогут найти путь к .sh файл.

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