Я ответил на тот же вопрос о переполнении стека .
s3fs - действительно разумное решение, и в моем случае я связал его с proftpd с отличными результатами, несмотря на теоретические / потенциальные проблемы.
В то время, когда я писал ответ, я настроил это только для одного из моих клиентов-консультантов ... но с тех пор я также начал пить свою собственную помощь по курсу и использую ее в производстве на своей повседневной работе. Компании, которыми мы обмениваемся данными с загрузкой и загрузкой файлов в течение всего дня на моем сервере sftp, который хранит все непосредственно на S3. В качестве бонуса моя система экспорта отчетов, которая записывает таблицы Excel непосредственно на S3, может экспортировать отчеты «на FTP-сервер», просто помещая их непосредственно в корзину ftp-сервера с соответствующими метаданными для отображения uid, gid и режим каждого файла. (s3fs использует заголовки x-amz-meta-uid, -gid и -mode для эмуляции разрешений файловой системы). Когда клиент входит на сервер, файлы отчетов просто ... там.
Я действительно думаю, что идеальным решением, вероятно, будет sftp к сервису шлюза S3, но я до сих пор не удосужился спроектировать его, так как это решение работает очень хорошо ... с некоторыми оговорками, конечно:
Не все значения по умолчанию для s3fs являются нормальными. Возможно, вы захотите указать эти параметры:
-o enable_noobj_cache # s3fs has a huge performance hit for large directories without this enabled
-o stat_cache_expire=30 # the ideal time will vary according to your usage
-o enable_content_md5 # it's beyond me why this safety check is disabled by default
Вероятно, лучше использовать регион, отличный от стандарта США, потому что это единственный регион, который не обеспечивает согласованность чтения-после-записи для новых объектов. (Или, если вам нужно использовать US-Standard, вы можете использовать почти недокументированное имя хоста your-bucket.s3-external-1.amazonaws.com
из региона us-east-1, чтобы предотвратить географическую маршрутизацию ваших запросов, что может улучшить согласованность.)
В корзине включено управление версиями объектов, о которых s3fs совершенно не знает. Преимущество этого состоит в том, что даже если файл должен быть «растоптан», я всегда могу перейти к ведению версий для восстановления «перезаписанного» файла. Управление версиями объектов в S3 было блестяще спроектировано таким образом, что клиенты S3, которые не знают о версиях, ни в коем случае не отключены и не перепутаны, потому что, если вы не делаете REST-вызовы с поддержкой контроля версий, ответы, возвращаемые S3, совместимы с клиентами, которые имеют нет концепции управления версиями.
Также обратите внимание, что передача данных в S3 бесплатна . Вы платите только цену за запрос. Передача данных из S3 в EC2 в пределах региона также бесплатна. Только при переводе из S3 в Интернет, в Cloudfront или в другой регион AWS вы оплачиваете перевод. Если вы хотите использовать более дешевое хранилище с уменьшенной избыточностью, s3fs поддерживает это с -o use_rrs
.
Как забавно, вы всегда будете чувствовать себя нечетко, когда увидите 256 терабайт свободного пространства (и 0 использованных, поскольку реальный расчет размеров нецелесообразен из-за того, что S3 является хранилищем объектов, а не файловой системой). ).
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.9G 1.4G 6.2G 18% /
s3fs 256T 0 256T 0% /srv/s3fs/example-bucket
Конечно, вы можете установить ведро в любом месте. У меня просто так получилось в / srv / s3fs.