尝试在EC2实例上使用Node.js打开文件时,收到错误:
{
"errno": -13,
"code": "EACCES",
"syscall": "open",
"path": "/tmp/uploads/50a4386c-5cdf-44ec-acb9-5d064b4be96a.jpeg"
}
根据node docs EACCES在“尝试以文件访问权限禁止的方式访问文件”时发生。这表明运行Node.js应用程序的用户无权访问/tmp
。我也尝试写入/var/app/current
,这是Elastic Beanstalk部署Node.js应用程序源的地方。这两个位置都不可写。
如何写入Elastic Beanstalk部署的Amazon Linux EC2实例的本地磁盘?
相关实例信息:
EBS-optimized: False
Root device type: ebs
Root device: /dev/sda1
Block devices: /dev/sda1
已应用的政策:
AmazonEC2FullAccess
AWSElasticBeanstalkFullAccess
/tmp
属性:
drwxrwxrwt 20 root root 4096 Dec 30 03:50 tmp
答案 0 :(得分:1)
原来里面的uploads
目录是使用
mkdirp('/tmp/uploads', { mode : 0o777 })
(docs)
拥有权限:
drwxr-xr-x 2 root root 4096 Dec 30 01:37 uploads
奇怪的是,创建目录的用户(运行节点进程的用户)仍然无法访问该目录。 chmod 777 /tmp/uploads
解决了这个问题。