AWS Codedeploy没有此类文件或目录

时间:2019-11-25 17:58:29

标签: amazon-web-services

通过AWS CodeDeploy部署时遇到两个问题。 我正在尝试将CodeCommit的代码部署到EC2 ubuntu实例。

在appspec.yml

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

在启动pm2之前,需要将几个配置文件放置在应用程序中的正确位置。我还假设,因为我在appspec.yml中将runas设置为ubuntu,所以bash脚本将位于/ home / ubuntu。

我的/ home / ubuntu有

config/ backend/ frontend/ 

看起来像代码部署不会覆盖以前的部署,因此如果我在目录中有backend /和frontend /文件夹,它将在安装阶段失败。

在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

在ApplicationStart阶段,它给了我以下错误。

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

我在/ home / ubuntu上运行相同的bash文件。工作正常。

问题1。  -如何在没有错误的情况下运行BeforeInstall.sh?是否存在路径问题或我尝试做的其他事情,但我不应该做?

问题2。  -当目录(/ home / ubuntu)中已经有应用程序文件夹时,如何让代码部署覆盖以前的部署?  -是否在安装前阶段手动删除目录?

1 个答案:

答案 0 :(得分:1)

您在bin/bash的{​​{1}}之前缺少斜杠。

应为#!bin/bash