我在 EC2 实例上,我希望将我的 PHP 网站与我的 Amazon S3 存储桶连接起来,我已经在这里看到了 PHP 的 API:http: //aws.amazon.com/sdkforphp/但不清楚。
这是我需要在控制器中编辑的代码行:
thisFu['original_img']='/uploads/fufu/'.$_POST['cat'].'/original_'.uniqid('fu_').'.jpg';
我需要连接到 Amazon S3 并能够像这样更改代码:
$thisFu['original_img']='my_s3_bucket/uploads/fufu/'.$_POST['cat'].'/original_'.uniqid('fu_').'.jpg';
我已经为此目的配置了一个 IAM 用户,但我不知道完成这项工作所需的所有步骤。
如何连接 Amazon S3 并与之交互以上传和检索公共图像?
更新
我决定按照建议尝试使用 s3fs,所以我按照这里的描述安装了它(我的操作系统是 Ubuntu 14.04)
我从控制台运行:
sudo apt-get install build-essential git libfuse-dev libcurl4-openssl-dev libxml2-dev mime-support automake libtool
sudo apt-get install pkg-config libssl-dev
git clone https://github.com/s3fs-fuse/s3fs-fuse
cd s3fs-fuse/
./autogen.sh
./configure --prefix=/usr --with-openssl
make
sudo make install
一切都已正确安装,但下一步是什么?我应该在哪里声明凭据以及如何在我的项目中使用此集成?
第二次更新
.passwd-s3fs
我使用我的 IAM 凭证创建了一个使用单个代码行调用的文件accessKeyId:secretAccessKey
。
我将它放入我的home/ubuntu
目录并授予它 600 权限chmod 600 ~/.passwd-s3fs
接下来从控制台运行/usr/bin/s3fs My_S3bucket /uploads/fufu
现在里面/uploads/fufu
有我所有的存储桶文件夹。但是,当我尝试此命令时:
s3fs -o nonempty allow_other My_S3bucket /uploads/fufu
我收到此错误消息:
s3fs: unable to access MOUNTPOINT My_S3bucket : No such file or directory
第三次更新
正如我建议的那样,我运行了这个fusermount -u /uploads/fufu
,之后我检查了 fufu 文件夹并且按预期是空的。之后我再次尝试了这个命令(再加一个-o):
s3fs -o nonempty -o allow_other My_S3bucket /uploads/fufu
并收到此错误消息:
fusermount: failed to open /etc/fuse.conf: Permission denied
fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf
还有什么建议吗?
第四次更新18/04/15
根据控制台的建议,我运行sudo usermod -a -G fuse ubuntu
并sudo vim /etc/fuse.conf
取消注释 mount_max = 1000 和 user_allow_other
比我运行 s3fs -o nonempty -o allow_other My_S3bucket /uploads/fufu
乍一看没有错误,所以我认为一切都很好,但事实恰恰相反。
我现在有点沮丧,因为我不知道发生了什么,但我的文件夹/uploads/fufu
被隐藏了,使用ls -Al
我只看到这个
d????????? ? ? ? ? ? fufu
我不能,或者sudo rm -r
它说-rf
mv -r
/uploads/fufu is a directory
我试过了reboot exit and mount -a
,但没有。
我尝试卸载使用fusermount
,错误消息是fusermount: entry for /uploads/fufu not found in /etc/mtab
但是我尝试了 sudo vim /etc/mtab 并找到了这一行:s3fs /uploads/fufu fuse.s3fs rw,nosuid,nodev,allow_other 0 0
有人可以告诉我如何卸载并最终删除此文件夹/uploads/fufu
吗?