установка ведра s3 в ec2 и прозрачное использование в качестве точки MNT - PullRequest
4 голосов
/ 05 июня 2009

У меня есть веб-приложение (назовите его myapp.com), которое позволяет пользователям загружать файлы. Веб-приложение будет развернуто на экземпляре Amazon EC2. Я хотел бы предоставить эти файлы пользователям веб-приложений через домен на основе корзины s3 (т.е. uploads.myapp.com).

Когда пользователь загружает файлы, я легко могу поместить их в папку "site_uploads" на локальном экземпляре ec2. Однако, так как мой экземпляр ec2 имеет ограниченное хранилище, с большим количеством загрузок, файловая система ec2 заполнится быстро.

Было бы замечательно, если бы экземпляр ec2 мог монтировать и s3 bucket как каталог site_upload. Таким образом, загрузка в каталог EC2 «site_upload» автоматически заканчивается на uploads.myapp.com (и мое веб-приложение может использовать шаблоны тегов, чтобы убедиться, что ссылки для этого загруженного контента основаны на этом поддерживаемом s3 домене) , Это также дает мне масштабируемую подачу файлов, так как запрос на файлы обращается к s3, а не к моему экземпляру ec2. Кроме того, это позволяет моему веб-приложению легко выполнять масштабирование / изменение размера изображений, которые отображаются локально в "site_upload", но на самом деле находятся на s3.

Я смотрю на s3fs, но, судя по комментариям, это не похоже на полностью запеченное решение. Я ищу некоммерческое решение.

К вашему сведению, веб-приложение написано на django, не то, что слишком сильно меняет подробности.

Ответы [ 5 ]

5 голосов
/ 12 июня 2009

Я не использую EC2, но у меня постоянно установлена ​​корзина S3 на моем сервере Linux. Я сделал это с Jungledisk. Это не некоммерческое решение, но оно очень недорогое.

Сначала я настроил джунгли как обычно. Тогда я убедился, что предохранитель установлен. В основном вам просто нужно создать файл конфигурации с вашими секретными ключами и тому подобное. Затем просто добавьте строку в ваш fstab примерно так:

jungledisk /path/to/mount/at fuse noauto,allow_other,config=/path/to/jungledisk/config/file.xml 0 0

Тогда просто сядь, и все готово.

2 голосов
/ 01 декабря 2010

Это небольшой фрагмент кода, который я использую для системы Ubuntu, и я не тестировал его, поэтому его, очевидно, нужно будет адаптировать для системы M $. Вам также необходимо установить s3-simple-fuse . Если вы в конечном итоге поставите свою работу в клон, я бы порекомендовал Fabric выполнить ту же команду.

import os, subprocess

'''
Note: this is for Linux with s3cmd installed and libfuse2 installed
Run: 'fusermount -u mount_directory' to unmount
'''

def mountS3(aws_access_key_id, aws_secret_access_key, targetDir, bucketName = None):
    #######
    if bucketName is None:
        bucketName = 's3Bucket'

    mountDir = os.path.join(targetDir, bucketName)
    if not os.path.isdir(mountDir):
        os.path.mkdir(mountDir)
    subprocess.call('s3-simple-fuse %s -o AWS_ACCESS_KEY_ID=%s,AWS_SECRET_ACCESS_KEY=%s,bucket=%s'%(mountDir, aws_access_key_id, aws_secret_access_key, bucketName)
2 голосов
/ 13 июня 2009

Я использую s3fs, но нет доступных дистрибутивов. У меня есть моя сборка для тех, кто хочет это проще.

Документация по конфигурации не была доступна, поэтому я включал ее, пока не получил это в своем fstab:

s3fs # {{имя корзины}} {{/ path / to / mount / point}} предохранитель allow_other, accessKeyId = {{key}}, secretAccessKey = {{секретный ключ}} 0 0

s3fs

2 голосов
/ 05 июня 2009

Для загрузки ваши пользователи могут загрузить непосредственно на S3 , как описано здесь .

Таким образом, вам не нужно будет монтировать S3.

При обслуживании файлов вы также можете сделать это непосредственно из S3, пометив файлы как общедоступные. Я бы предпочел назвать сайт «files.mydomain.com» или «images.mydomain.com», указывая на s3.

0 голосов
/ 10 июня 2011

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

Вы можете настроить тома EBS в конфигурации RAID5 и добавлять пространство по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...