2013-07-29 6 views
1
  • У меня есть ведро S3 на одном из моих aws acc.
  • Я загружаю файлы в ведро, используя интерфейс s3cmd.
  • Я установил ведро s3 в экземпляр ubuntu ec2 с помощью s3fs, и я успешно выполнил его и смог перечислить экземпляр экземпляра ec2. КомандаУстановленные файлы ведра s3 недоступны через apache

    s3fs - s3fs XXXXXX-ouse_cache =/TMP/s3cache -oallow_other -opasswd_file =/и т.д./пароль-s3fs -ourl = http://s3.amazonaws.com -odefault_acl = общественное чтение/запись мнт/XXXXXXXX

  • Установлен apache2 на ec2. Изменен каталог документа на путь, установленный на пути s3 -/mnt/XXXXXXXX. Я успешно настроил то же самое и перезапустил службу apache2.

Но, когда я пытаюсь получить доступ к файлам S3 с помощью apache2, я получаю «Запрещенный У вас нет разрешения на доступ к /temp/xxxxTesting.flv на этом сервере.»

Может ли кто-нибудь помочь мне в этом вопросе. Любые возможные причины этого вопроса. Я пробовал все предложения, но все напрасно. Pls, кто-то подскажет мне, как решить эту проблему?

+0

Я использую последнюю версию s3fs - 1.71 – user1824140

ответ

0

s3fs не является блочным устройством. Под обложками он копирует файлы в ваш каталог temp при попытке получить к ним доступ. Это не работает как NFS.

Вы можете копировать файлы на s3 с s3fs, но вы не должны запускать приложение напрямую из s3fs.

+0

Любые предложения о том, как выполнить мою задачу обслуживания файлов s3 с помощью apache2. Это очень помогло бы – user1824140

-1

Хотелось бы порекомендовать взглянуть на новый проект RioFS (файловая система SFS-пространства пользователей): https://github.com/skoobe/riofs. Этот проект является альтернативой «s3fs», основными преимуществами по сравнению с «s3fs» являются: простота, скорость работы и отсутствие ошибок. В настоящее время проект находится в состоянии «тестирования», но он довольно долго работает на нескольких высоконагруженных файловых серверах.

Если у вас возникли проблемы с доступом к файлам Apache, пожалуйста, создайте билет на странице RioFS GitHub!

Надеюсь, это поможет!

1

Ваш ключ вопроса, кажется, застревает.

S3 не является блочным устройством, а не файловой системой и обслуживает файлы с использованием s3fs или любого другого эмулятора файловой системы, который никогда не даст вам оптимальной производительности.

К счастью, существует гораздо более простое решение.

Мои файлы с изображениями находятся в/var/content/images.

Если вы извлекаете файл из my-web-site.com/images/any/path/here.jpg .jpeg или .gif, то мой локальный сервер Apache проверяет, есть ли/var/content/images/any/path/here.jpg - это файл на локальном жестком диске. Если это так, apache обслуживает локальный файл.

Если это не локальный файл, то apache извлекает файл ([P] для прокси) из ведра S3 с использованием HTTP, который, конечно же, является родным интерфейсом S3 и что-то вроде apache обрабатывает довольно эффективно.

Если файл не находится в S3, apache возвращает страницу ошибки, которую возвращает ведро S3, когда мы пытаемся извлечь файл из него. Совершено в по существу 3 строки конфигурации:

RewriteEngine on 
RewriteCond /var/content%{REQUEST_FILENAME} !-f 
RewriteRule ^/images/(.*[gif|jpe?g])$ http://my-bucket-name.s3-website-us-east-1.amazonaws.com/images/$1 [P] 

Этот подход, мне кажется, гораздо проще, чем пытаться взломать ту же функциональность с s3fs.

Обратите внимание, что в некоторых из моих систем мне нужно добавить физический путь до% {REQUEST_FILENAME}, а некоторые - нет. Я не изучил особенности того, почему это так, но помните, что в разных средах может потребоваться несколько другая настройка. Вам также необходимо иметь соответствующие модули, а регулярное выражение в примере работает только с именами файлов, заканчивающимися gif jpeg и jpg.

+0

его медиафайлу, который составляет около 700-800 МБ каждый. И я хочу иметь механизм аутентификации URL. Соответствует ли это решение таким требованиям. – user1824140

+0

Вы можете обслуживать личные файлы непосредственно из s3/cloudfront с помощью подписанных URL-адресов. – datasage

+0

cloudfront - это то, что я уже пробовал. Но мое приложение теряет контроль над файлами, которые подаются с облачного интерфейса. Я хочу контролировать показ решений, которые принимает мое приложение. – user1824140

Смежные вопросы