Я использую инстанс EC2 и хочу связать свой веб-сайт PHP с корзиной Amazon S3. Я уже видел API для PHP здесь: 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
Все правильно установилось, но что дальше? Где я должен объявить учетные данные и как я могу использовать эту интеграцию в своем проекте?
2-е ОБНОВЛЕНИЕ
Я создал файл с именем .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
3-е ОБНОВЛЕНИЕ
Как и было предложено, я запускаю этот 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
Любое другое предложение?
4-е ОБНОВЛЕНИЕ 18 апреля 2015 г.
По предложению из консоли я запускаю 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
?