Ryu
Ryu

Reputation: 71

AWS Codedeploy No such file or directory

I have two problems deploying via AWS CodeDeploy. I'm trying to deploy CodeCommit's code to an EC2 ubuntu instance.

At appspec.yml

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu
hooks:
  ApplicationStart:
    - location: scripts/ApplicationStart.sh
      timeout: 300
      runas: ubuntu

There are several config files that I need to place at the right place in the application before starting pm2. I also assume since I set runas in appspec.yml as ubuntu, the bash script will at /home/ubuntu.

The my /home/ubuntu has

config/ backend/ frontend/ 

Looks like Code deploy won't overwrite the previous deployment so if I have backend/ and frontend/ folder at the directory, it will fail at Install stage.

In the ApplicationStart.sh

#!bin/bash

sudo cp config/config1.json backend/config/config1.json
sudo cp config/config2.json backend/config/environments/development/config2.json
sudo cp config/config3.json frontend/config3.json
sudo pm2 kill

cd backend
sudo npm install
sudo pm2 start "strapi start" --name backend


cd ../frontend
sudo npm install
sudo pm2 start "npm start" --name frontend

While the ApplicationStart stage, it gives me the following error.

LifecycleEvent - ApplicationStart
Script - scripts/ApplicationStart.sh
[stderr]bash: /opt/codedeploy-agent/path/to/deployment/scripts/ApplicationStart.sh: bin/bash: 
bad interpreter: No such file or directory

I run the same bash file at the /home/ubuntu. It works fine.

Question 1. - how to run BeforeInstall.sh without the error? Is there the path problems or something else I try to do but I am not supposed to do?

Question 2. - How can I let code deploy to overwrite the previous deployment when there are already application folders in the directory (/home/ubuntu)? - Do I manually delete the directory at BeforeInstall stage?

Upvotes: 1

Views: 3460

Answers (1)

jweyrich
jweyrich

Reputation: 32240

You're missing a slash before bin/bash in #!bin/bash.

It should be #!/bin/bash.

Upvotes: 3

Related Questions