Elastic Beanstalk部署失败,权限被拒绝,mkdir

时间:2018-04-21 00:32:37

标签: node.js amazon-web-services amazon-ec2 elastic-beanstalk grpc

我正在尝试将GRPC依赖项添加到节点弹性beanstalk应用程序,并且我的所有部署都失败了。从我的package.json部署工作中删除GRPC依赖项后。

错误是

ERROR: Failed to run npm install.  
> grpc@1.10.1 install /tmp/deployment/application/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp ERR! Pre-built binaries not installable for grpc@1.10.1 
and node@8.9.3 (node-v57 ABI, glibc) (falling back to source compile 
with node-gyp) 
node-pre-gyp ERR! Hit error EACCES: permission denied, mkdir 
'/tmp/deployment/application/node_modules/grpc/src/node' 
gyp ERR! configure error 
gyp ERR! stack Error: EACCES: permission denied

我在另一个节点应用上遇到此问题,并且能够通过运行npm --save-dev eb-fix-npm来解决此问题,但它无法使用此应用。我有时也会得到一个错误:`无法创建符号链接,文件已经存在(释义)。

我也设置了此文件以尝试解决此问题。

 files:
   "/opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh" :
     mode: "000775"
     owner: root
     group: root
     content: |
       #!/bin/bash          
       function error_exit

       {
         eventHelper.py --msg "$1" --severity ERROR
         exit $2
       }

       export HOME=/home/ec2-user

       OUT=$(/opt/elasticbeanstalk/containerfiles/ebnode.py --action npm-install 2>&1) || error_exit "Failed to run npm install.  $OUT" $?
       echo $OUT

感谢您的帮助

5 个答案:

答案 0 :(得分:3)

在我的情况下,使用.ebextensions/00_dir_permission.config的解决方案不起作用(仍然给我带来错误),但是在unsafe-perm=true文件中使用.npmrc的解决方案却起作用了。参见https://stackoverflow.com/a/46001517/769726

PS:在Node.js版本上运行:在64位Amazon Linux / 4.5.4上为8.11.4

答案 1 :(得分:2)

我能够通过以下文件解决这个问题 - > .ebextensions/00_dir_permission.config。希望这有助于其他人

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/00_set_tmp_permissions.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      chown -R ec2-user /tmp
      chown -R $USER:$(id -gn $USER) /tmp/.config
      chown -R nodejs:nodejs /tmp/.npm

答案 2 :(得分:1)

适用于在项目中使用bcrypt库的任何人。

如果尝试使用Elastic Beanstalk部署代码,则会出现此错误。

只需删除bcrypt并开始使用bycryptjs

为此,我的头撞了2个星期。

也将bcrypt降级为3.0.0对此无济于事。

答案 3 :(得分:1)

我通过添加一个.npmrc文件来解决此问题

unsafe-perm=true

但是不能将.npmrc添加到根应用程序文件夹中。您必须在EB配置文件中指定它。检出https://stackoverflow.com/a/24993093

答案 4 :(得分:0)

将名为.npmrc的文件添加到应用程序中,内容如下:

unsafe-perm=true

现在在将其推送到ElasticBeanStalk之前使用以下命令:

git add .npmrc
git commit -m"EB issue fix"

现在部署您的代码。应该可以。