为什么aws代码部署抛出“用户'ec2-user'没有passwd条目”错误,尽管以root身份运行所有内容?

时间:2017-03-14 15:04:43

标签: node.js amazon-web-services amazon-ec2 sudo aws-code-deploy

以下是错误消息:

enter image description here enter image description here

以下是相关文件:

stop.sh

#!/bin/bash
pkill -f node

appspec.yml

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/
permissions:
  - object: /var/www/
    owner: root
    mode: 777
hooks:
  BeforeInstall:
    - location: scripts/install.sh
      timeout: 300
      runas: root
  AfterInstall:
    - location: scripts/post_install.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - location: scripts/run.sh
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop.sh
      timeout: 300
      runas: root
  ValidateService:
    - location: scripts/validate.sh
      timeout: 300
      runas: root

以下是操作系统详细信息:

ubuntu@ip-172-31-2-33:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:    14.04
Codename:   trusty

我尝试将所有挂钩作为ec2-user'ubuntu'运行,结果是一样的。

2 个答案:

答案 0 :(得分:0)

ec2-user只是默认的实例用户。在所有linux中,如果没有第一个问题sudo

,就无法执行任何系统命令

修复:

#!/bin/bash
sudo pkill -f node

答案 1 :(得分:0)

如果您之前在实例中成功部署了sam应用程序,那么应用程序停止脚本实际上是从上次成功修订运行的,您是否可以在上一次成功修订中检查应用程序停止脚本并且它包含您期望的所有内容?

如果ApplicationStop不在上次成功修订中,您可能需要设置--ignore-application-stop-failures选项。你