AWS CodeDeploy脚本以代码127退出

时间:2019-02-16 19:47:01

标签: amazon-web-services aws-code-deploy bitbucket-aws-code-deploy

这是我第一次使用AWS CodeDeploy,创建appspec.yml文件时遇到问题。

这是我得到的错误:

2019-02-16 19:28:06 ERROR [codedeploy-agent(3596)]:
InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: 
Error during perform: 
InstanceAgent::Plugins::CodeDeployPlugin::ScriptError - 
Script at specified location: deploy_scripts/install_project_dependencies 
run as user root failed with exit code 127 -
 /opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/hook_executor.rb:183:in `execute_script'

这是我的appspec.yml文件

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/html/admin_panel_backend
hooks:
  BeforeInstall:
    - location: deploy_scripts/install_dependencies
      timeout: 300
      runas: root
    - location: deploy_scripts/start_server
      timeout: 300
      runas: root
  AfterInstall:
    - location: deploy_scripts/install_project_dependencies
      timeout: 300
      runas: root
  ApplicationStop:
    - location: deploy_scripts/stop_server
      timeout: 300
      runas: root

这是我的项目结构

drwxr-xr-x    7 501  20     224 Feb  6 20:57 api
-rw-r--r--    1 501  20     501 Feb 16 16:29 appspec.yml
-rw-r--r--    1 501  20     487 Feb 14 21:54 bitbucket-pipelines.yml
-rw-r--r--    1 501  20    3716 Feb 14 20:43 codedeploy_deploy.py
drwxr-xr-x    4 501  20     128 Feb  6 20:57 config
-rw-r--r--    1 501  20    1047 Feb  4 22:56 config.yml
drwxr-xr-x    6 501  20     192 Feb 16 16:25 deploy_scripts
drwxr-xr-x  264 501  20    8448 Feb  6 17:40 node_modules
-rw-r--r--    1 501  20  101215 Feb  6 20:57 package-lock.json
-rw-r--r--    1 501  20     580 Feb  6 20:57 package.json
-rw-r--r--    1 501  20     506 Feb  4 08:50 server.js

还有deploy_scripts文件夹

-rwxr--r--  1 501  20  50 Feb 14 22:54 install_dependencies
-rwxr--r--  1 501  20  61 Feb 16 16:25 install_project_dependencies
-rwxr--r--  1 501  20  32 Feb 14 22:44 start_server
-rwxr--r--  1 501  20  31 Feb 14 22:44 stop_server

这是我的install_project_dependencies脚本

#!/bin/bash
cd /var/www/html/admin_panel_backend
npm install

所有其他脚本都可以正常运行,但是这个脚本(install_project_dependencies)。

谢谢大家

2 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题,因为npm是为EC2用户而不是root用户安装的。我通过将这一行添加到install_dependencies脚本中解决了该问题。

selected_group_1 = {'ED10':[[0,0,0],[10,0,0]], 'ED2':[[15,0,0], [10,0,0]], 'ED13':[[15,0,0], [20,0,0]], 'ED4':[[20,0,0], [25,0,0]]}
selected_group_2 = {'ED5':[[0,-10,0],[10,-10,0]], 'ED6':[[15,-10,0], [10,-10,0]], 'ED7':[[15,-10,0], [20,-10,0]], 'ED8':[[20,-10,0], [25,-10,0]]}

您可以将import math def is_equal(pnt1, pnt2): L = math.sqrt((pnt1[0]-pnt2[0]) ** 2 + (pnt1[1]-pnt2[1]) ** 2 + (pnt1[2]-pnt2[2]) ** 2) if L<1e-4: return True else: return False for i in range(len(list(edge_dict.keys()))/2): for ed, pnts in {k:v for k, v in edge_dict.items() if k not in list(selected_group_1.keys())}.items(): if (any(is_equal(selected_group_1[edge][0], pnts[0]) or any(is_equal(selected_group_1[edge][1], pnts[0]) or any(is_equal(selected_group_1[edge][0], pnts[1]) or any(is_equal(selected_group_1[edge][1], pnts[1])): selected_group_1[ed] = pnts 行替换为上面的行以作为用户安装。

答案 1 :(得分:0)

大量阅读后!我意识到我遇到了与NPM issue deploying a nodejs instance using AWS codedeploy相同的问题,但没有设置PATH变量。

因此,将start_script保留为正常工作!

#!/bin/bash
source /root/.bash_profile
cd /var/www/html/admin_panel_backend
npm install

谢谢!