我如何使用Elastic Beanstalk创build一个“tmp”目录?

我正在使用Node.js,并需要将文件保存到我的应用程序中的tmp目录。 问题是Elastic Beanstalk没有将应用程序目录设置为可被应用程序写入。 所以当我尝试创build临时目录时,我得到这个错误

fs.js:653 return binding.mkdir(pathModule._makeLong(path), ^ Error: EACCES, permission denied '/var/app/tmp/' at Object.fs.mkdirSync (fs.js:653:18) at Promise.<anonymous> (/var/app/current/routes/auth.js:116:18) at Promise.<anonymous> (/var/app/current/node_modules/mongoose/node_modules/mpromise/lib/promise.js:177:8) at Promise.emit (events.js:95:17) at Promise.emit (/var/app/current/node_modules/mongoose/node_modules/mpromise/lib/promise.js:84:38) at Promise.fulfill (/var/app/current/node_modules/mongoose/node_modules/mpromise/lib/promise.js:97:20) at /var/app/current/node_modules/mongoose/lib/query.js:1394:13 at model.Document.init (/var/app/current/node_modules/mongoose/lib/document.js:250:11) at completeOne (/var/app/current/node_modules/mongoose/lib/query.js:1392:10) at Object.cb (/var/app/current/node_modules/mongoose/lib/query.js:1151:11) 

我已经尝试了几个东西,如.ebextensions / scripts / app-setup.sh中的app-setup.sh脚本,看起来像这样

 #!/bin/bash # Check if this is the very first time that this script is running if ([ ! -f /root/.not-a-new-instance.txt ]) then newEC2Instance=true fi # Get the directory of 'this' script dirCurScript=$(dirname "${BASH_SOURCE[0]}") # Fix the line endings of all files find $dirCurScript/../../ -type f | xargs dos2unix -q -k # Get the app configuration environment variables source $dirCurScript/../../copy-to-slash/root/.elastic-beanstalk-app export ELASTICBEANSTALK_APP_DIR="/$ELASTICBEANSTALK_APP_NAME" appName="$ELASTICBEANSTALK_APP_NAME" dirApp="$ELASTICBEANSTALK_APP_DIR" dirAppExt="$ELASTICBEANSTALK_APP_DIR/.ebextensions" dirAppTmp="$ELASTICBEANSTALK_APP_DIR/tmp" dirAppData="$dirAppExt/data" dirAppScript="$dirAppExt/scripts" # Create tmp directory mkdir -p $dirApp/tmp # Set permissions chmod 777 $dirApp chmod 777 $dirApp/tmp # Ensuring all the required environment settings after all the above setup if ([ -f ~/.bash_profile ]) then source ~/.bash_profile fi # If new instance, now it is not new anymore if ([ $newEC2Instance ]) then echo -n "" > /root/.not-a-new-instance.txt fi # Print the finish time of this script echo $(date) # Always successful exit so that beanstalk does not stop creating the environment exit 0 

以及在.ebextensions内创build一个名为02_env.config的文件,如下所示

 # .ebextensions/99datadog.config container_commands: 01mkdir: command: "mkdir /var/app/tmp" 02chmod: command: "chmod 777 /var/app/tmp" 

似乎也没有工作。 如何在我的应用程序中创build一个可写的tmp目录?

我最近遇到了.NET应用程序的问题,即使在设置了权限之后,应用程序仍然无法正常写入目录。

我发现,整个.ebextensions过程完成后,最后一步是一个Web容器权限更新,最终覆盖了我的ebextensions权限更改。

为了解决这个问题,我移动了web容器之外的目录,并更新了应用程序来写入。

在你的情况下,我会build议/ tmp