Автономный сервер-заглушка Amazon S3

Кажется, я вспоминаю про чтение тестового сервера, совместимого с Amazon S3, который вы можете запускать на своем собственном сервере для модульных тестов или что-то еще. Тем не менее, я только исчерпал свое терпение, ища это как с Google, так и с AWS. Существует ли такая вещь? Если нет, я думаю, что напишу.

Примечание. Я спрашиваю об Amazon S3 (системе хранения), а не Amazon EC2 (облачные вычисления).

Ответы

Ответ 2

Я думаю, что moto (https://github.com/spulec/moto) - идеальный инструмент для ваших unittests. Moto перебирает все обращения к S3, SQS и т.д. И может использоваться на любом языке программирования с использованием своего веб-сервера.

Тривиально настроить, легко и быстро.

От мото README:

Представьте, что у вас есть следующий код, который вы хотите проверить:

import boto
from boto.s3.key import Key

class MyModel(object):
    def __init__(self, name, value):
        self.name = name
        self.value = value

    def save(self):
        conn = boto.connect_s3()
        bucket = conn.get_bucket('mybucket')
        k = Key(bucket)
        k.key = self.name
        k.set_contents_from_string(self.value)

Потратьте минутку, чтобы подумать, как бы вы протестировали это в прошлом. Теперь посмотрим, как вы можете протестировать его с помощью Moto:

import boto
from moto import mock_s3
from mymodule import MyModel

@mock_s3
def test_my_model_save():
    model_instance = MyModel('steve', 'is awesome')
    model_instance.save()

    conn = boto.connect_s3()
    assert conn.get_bucket('mybucket').get_key('steve') == 'is awesome'

Ответ 4

Eucalyptus http://eucalyptus.cs.ucsb.edu/

EUCALYPTUS - Эластичная вычислительная техника Архитектура для связывания ваших программ Полезные системы - это open-source программной инфраструктуры для внедрение "облачных вычислений" на кластеры. Текущий интерфейс к EUCALYPTUS совместим с Amazon's EC2, но инфраструктура предназначен для поддержки нескольких клиентские интерфейсы.

Обратите внимание, что в соответствии с документацией Eucalypus включает повторную реализацию не только интерфейса EC2, но и системы хранения S3. Этот компонент хранения называется Walrus. (http://open.eucalyptus.com/wiki/EucalyptusUserGuide_v1.5.2)

Ответ 5

Fake S3 является обновленной версией S3, специально разработанной для использования при тестировании.

Ответ 6

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

Он довольно маленький и простой и может быть настроен за считанные минуты. (Будучи SIRIUS, приложение statup на умеренном сервере занимает меньше секунды).

Ответ 7

Amazon использует Xen, поэтому вы можете просто запустить свой AMI в своей собственной установке Xen. Тем не менее, я просто запускаю экземпляр и запускаю тесты. Это не так дорого, и вы, как правило, должны быть хорошо развиты локально и нечасто тестируете его в своей системе.