Zags
Zags

Reputation: 41328

Elastic Beanstalk platform hook fails with "permission denied"

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?

Upvotes: 5

Views: 3480

Answers (2)

Ash
Ash

Reputation: 1

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/

Upvotes: -1

Zags
Zags

Reputation: 41328

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.

Upvotes: 11

Related Questions