Elastic Beanstalk platform hook fails with "permission denied"

Viewed 1686

When deploying an Elastic Beanstalk application, one of my hooks fails with "permission denied". I get the following in /var/log/eb-engine.log:

[INFO] Running platform hook: .platform/hooks/predeploy/collectstatic.sh

[ERROR] An error occurred during execution of command [app-deploy] - [RunAppDeployPreDeployHooks]. Stop running the command. Error: Command .platform/hooks/predeploy/predeploy.sh failed with error fork/exec .platform/hooks/predeploy/predeploy.sh: permission denied

How do I fix this?

2 Answers

According to the docs, Platform hooks need to be executable. Of note, this means they need to be executable according to git, because that's what Elastic Beanstalk uses to deploy.

You can check if they are executable via git ls-files -s .platform; you should see 100755 before any shell files in the output of this command. If you see 100644 before any of your shell files, run git add --chmod=+x -- .platform/*/*/*.sh to make them executable.

Create a file under .ebextensions folder with the right order and name it something like: 001_chmod.config

  # This command finds all the files within hooks folder with extension .sh and makes them executable.
container_commands:
  01_chmod1:
    command: find .platform/hooks/ -type f -iname "*.sh" -exec chmod +x {} \;

Source: https://www.barot.us/running-sidekiq-on-amazon-linux-2/

Related