Как издеваться над Amazon S3 в интеграционном тесте

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

Я думал, что mocks3 будет идеальным, так как я мог бы получить причал в моих тестах jUnit. Проблема заключается в том, что mocks3 не позволяет записывать. Даже не ставить его, насколько я могу судить.

Итак, как это делают другие?

Ответ 2

Существует также инструмент s3mock, написанный именно для этой цели. Он высмеивает основные части AWS S3 API поверх локальной файловой системы:

S3Mock api = S3Mock.create(8001, "/tmp/s3");
api.start();

AmazonS3Client client = new AmazonS3Client(new AnonymousAWSCredentials());
// use local API mock, not the AWS one
client.setEndpoint("http://127.0.0.1:8001");
client.createBucket("testbucket");
client.putObject("testbucket", "file/name", "contents");

Он также легко встраивается и не имеет конфигурации.

Ответ 3

Другой вариант S3 ninja - эмулирует S3 API для целей разработки и тестирования.

Ответ 4

Вы можете использовать scalt s3server, который может запускаться на вашем компьютере либо с помощью node.js, либо через докер, и он дает локальный экземпляр службы S3. Это открытый исходный код под лицензией BSD github.com/scality/s3

Ответ 5

Один из вариантов - отказаться от сервера причала и использовать Apache VFS и Плагин S3. При этом вы можете использовать реализации хранилища на основе файлов или файлов для тестирования интеграции.