Сервер AWS S3 для тестирования интеграции

У меня есть код, который загружает и загружает файлы с помощью AWS S3 (с использованием Java AWS SDK). Я хочу, чтобы иметь возможность написать несколько тестов для этого, мне было интересно, есть ли у кого-нибудь хорошие варианты. В идеале я бы хотел, чтобы легкий сервер S3, который запускался локально, можно запускать быстро и не требует никакой конфигурации системы (тесты должны выполняться Jenkins).

Некоторые параметры, на которые я смотрел:

  • FakeS3 - Практически точно, что я ищу, при использовании Java AWS SDK вы должны отредактировать свой файл /etc/hosts и перезагружать сети, а не что-то, что я могу сделать в Jenkins. Кроме того, при попытке его использования появляется ошибка с неправильным форматированием поля даты создания, что заставляет мой клиент вызывать исключение, что не внушает мне большой уверенности в проекте.
  • Ceph - реализует S3 API, но занимает несколько минут, чтобы установить

Ответ 1

Вы можете попробовать установить сервер minio на свой ноутбук/систему с открытым исходным кодом и одним статическим двоичным файлом. Сервер совместим с S3. Затем вы можете попробовать клиентскую библиотеку minio-java для всех операций, ниже приведен пример базовых операций.

Установка сервера Minio [GNU/Linux]

$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio
$ chmod 755 minio
$ ./minio --help  

Надеюсь, это поможет Отказ от ответственности: я работаю на Minio

Ответ 2

Поздний ответ будет полезен, в основном, для пользователей Docker. Там есть большое программное обеспечение для хранения S3, называемое Riak CS, и docker-riak-cs, что позволяет быстро запустить сервер.

Я использую его почти 2 года для локального развития и тестирования интеграции с большим успехом. У него есть некоторые ограничения, но ничего существенного в этом нет, см. Документацию api/compatible .

Если вам нужно решение Docker-less, вы можете настроить его локально для каждой сборки, все сценарии настройки и конфигурации доступны в репозитории docker-riak-cs.

Ответ 3

Вы можете попробовать localstack, представляющий собой локальный облачный стек AWS с открытым исходным кодом, созданный для тестирования. Он обеспечивает реализацию нескольких сервисов AWS, включая S3.

Похоже, довольно популярный проект с более чем 180 участниками и более 19 000 звезд на GitHub.

Ответ 4

Я начал проект API S3 Server для Ladon, он содержит простой репозиторий файловой системы. Его проект Java и содержит загрузочный стартер Spring для простого тестирования. Не все функции API S3 поддерживаются, но я добавлю их по запросу. Его на Github: сервер Ladon S3

Ответ 5

findify/s3mock - сервер S-процесса in-process, предназначенный для тестирования. Не тестировал - просто наткнулся на него. Не нужен докер, что может быть преимуществом. НТН!:)

Ответ 6

Я создал разные ведра для использования в разных вариантах использования. Например: my-dev-bucket и my-prod-bucket. Я не знаю, соответствует ли это вашим критериям использования, но вы можете подумать об этом. Боковое преимущество заключается в том, что ваш предпроизводственный и производственный код следует точно таким же потокам.