Подтвердить что ты не робот

Есть ли сервер, который предоставляет API стиля Amazon S3 локально?

Мы делаем дистрибутивное программное обеспечение, которое хранит некоторые данные (вложения) в a) базу данных или b) Amazon S3. База данных используется, потому что она не требует другой конфигурации. Amazon S3 - лучший вариант.

То, что мы хотим сейчас, - это решение для клиентов, которые не хотят использовать Amazon S3. Очевидно, что мы просто используем файловую систему, но это может быть проблематично, если есть несколько веб-серверов и файлы должны быть реплицированы; это также требует от нас написать дополнительный код для обработки различных проблем, которые могут возникнуть.

Что мы предпочли бы, было бы, если бы была часть серверного программного обеспечения, которое по существу реплицирует Amazon S3 API. Таким образом, наши клиенты могут установить сервер на ящик; и нам не нужно менять какой-либо код. Итак... есть ли там такое программное обеспечение?

4b9b3361

Ответ 1

Это возможно через хранилище объектов OpenStack (под кодовым названием Swift), которое представляет собой программное обеспечение с открытым исходным кодом для создания избыточного масштабируемого хранилища объектов с использованием кластеров стандартизированных серверов, в частности недавно добавленный (необязательный) уровень S3 API, который эмулирует API SEST REST поверх хранилища объектов.

См. Конфигурирование хранилища объектов с помощью API S3 для официальной документации - более проницательный и иллюстрированный небольшой учебник по всей установке доступен в S3 API на OpenStack Swift (который основывается на более сложном установке кластера OpenStack Swift на EC2, хотя).


Update

Примечательной альтернативой является Ceph, которая представляет собой унифицированную распределенную систему хранения, предназначенную для отличной производительности, надежности и масштабируемости. Интересно, что она обеспечивает все три общие модели хранения, т.е. Хранилище объектов, Блокировать хранилище и Файловая система, а шлюз RADOS обеспечивает совместимые интерфейсы Amazon S3 и OpenStack Swift в хранилище объектов RADOS [акцент мой ], см. RADOS S3 API для получения подробной информации о поддерживаемых в настоящее время функциях API S3.

Ответ 2

Minio будет полезен для этого. Написан на Go и прост в развертывании.

Двоичные загрузки здесь: https://min.io/download

Чтобы работать как сервер S3:

minio server path/to/disk/storage

Ключ доступа и секрет будут выведены на консоль.

Ответ 3

Мы столкнулись с проблемой локального тестирования нашего кода на базе S3 и фактически реализовали небольшой сервер Java, который эмулирует API-интерфейс объекта S3. Поскольку это может быть полезно другим, мы настраиваем репозиторий github вместе с небольшим веб-сайтом: http://s3ninja.net - все OpenSource под лицензией MIT.

Будучи довольно простым и минималистичным, этот инструмент идеально подходит для тестирования и разработки. Однако для использования в производстве можно добавить некоторую безопасность (хотя хеши AWS уже проверены в API - только GUI полностью незащищен). Кроме того, он не выполняет никакой репликации или масштабирования. Таким образом, это не будет хорошим выбором для больших настроек.

Ответ 4

Вы посмотрели Cloudian? Мы используем его внутри нашей компании для разработки нашего приложения S3. Я использую Community Edition, который является бесплатным для хранения до 10 ТБ. Он получил довольно хороший охват S3 или, по крайней мере, охватывает большинство вещей, которые использует мое приложение (я использую управление версиями и многостраничные загрузки, поэтому я думаю, что мое приложение продвинуто). Идентификаторы версий и идентификаторы multipart и т.д., Которые он генерирует, отличаются от тех, которые вы получаете от AWS, но у boto пока нет претензий. Он также работает с s3fs и другими браузерами s3 bucket, которые я пробовал.

По-моему, это хороший инструмент для разработки против AWS S3 API и должен соответствовать вашим требованиям. Вы можете указать свое приложение на своем локальном сервере Cloudian, а затем, когда вы будете готовы к производству, вы можете указать его на Amazon. Ваш пробег может отличаться... Удачи.

Ответ 5

Недавно я начал использовать Skylable для своих потребностей S3, бесплатно (GPL). Их хранилище объектов поддерживает репликацию, HA и дедупликацию и полностью совместимо с S3. Вы можете запускать свое программное обеспечение на одном сервере (железо, виртуальная машина или контейнер), если вам не нужна избыточность, или вы можете использовать больше узлов, если вам нужна HA.

Количество реплик может быть выбрано за ведро, как и у Swift. Я начал с 2 узлов в реплике 2 и добавил больше узлов, так как наша база пользователей начала расти, чтобы справиться с дополнительным сетевым трафиком и требованиями к пространству.

Добавление большего количества узлов очень просто и может быть выполнено в реальном кластере.

По моему опыту Skylable оказался быстрее и надежнее, чем Swift. Он написан на C и OCaml, он не интерпретируется. Объем памяти очень низкий, поэтому я могу запустить node даже на некоторых дешевых VPS.

Недавно они объявили о работе над API Swift, очевидно, их целью является замена Swift.

Ответ 6

Как уже упоминалось: вы можете использовать Swift как альтернативу Amazon S3. Взгляните на файловую систему SwiftFS, она позволяет монтировать контейнер OpenStack, хранящийся в Swift как локальную файловую систему.

Ответ 7

В то время как исходный вопрос касается совместимого с S3 программного обеспечения для (что кажется) производственного использования, многие заинтересованы в одном и том же программном обеспечении, но для локальной разработки и тестирования.

В отношении готового к выпуску решения существует большое программное обеспечение для хранения S3, называемое Riak CS, оно прочное и доказанное на протяжении многих лет, один недостаток - это не просто настроить. Есть некоторые ограничения, но ничего существенного, что мешает, см. Документацию api/compatible .

Уже несколько отличных ответов для разработки и тестирования, это будет полезно для пользователей Docker - там docker-riak-cs, что позволяет быстро запустить Случай Riak CS. Я использую его почти 2 года для локального развития и тестирования интеграции с большим успехом.

Ответ 8

Если вы хотите иметь S3-подобный API-интерфейс, но размещать данные сами, то упоминание о minio вполне уместно.

Если вы хотите написать сервисы, которые взаимодействуют с S3, но хотите проверить их локально на скорость, вы можете использовать Localstack, который, как я думаю, я здесь не упоминал. Он эмулирует не только S3, но и многие другие сервисы AWS. Я бы не рекомендовал использовать его для файлов реальных клиентов, поскольку это хранилище данных в памяти только для тестирования.

https://github.com/localstack/localstack

https://bluesock.org/~willkg/blog/dev/using_localstack_for_s3.html