Кёртис Спенсер (Curtis Spencer) с коллегами из компании Spool разработали легковесный сервер Fake S3, который ведёт себя как настоящий Amazon S3 и помогает тестировать проекты, не гоняя данные в настоящее облако и не тратя деньги на трафик. К тому же, для тестирования Fake S3 надёжнее, потому что работает локально. Спенсер говорит, что благодаря Fake S3 они сэкономили около $1000 за последний месяц на одной только оплате трафика.
Установка
gem install fakes3
Для запуска сервера нужно указать хост и порт.
fakes3 -r /mnt/fakes3_root -p 4567
Пример клиентского кода
require 'rubygems'
require 'aws/s3'
include AWS::S3
AWS::S3::Base.establish_connection!(:access_key_id => "123",
:secret_access_key => "abc",
:server => "localhost",
:port => "10001")
Bucket.create('mystuff')
('a'..'z').each do |filename|
S3Object.store(filename, 'Hello World', 'mystuff')
end
bucket = Bucket.find('mystuff')
bucket.objects.each do |s3_obj|
puts "#{s3_obj.key}:#{s3_obj.value}"
end
Bucket.delete("mystuff",:force => true) # Delete your bucket and all its keys
Есть даже возможность эмулировать сетевые условия, например, максимальную скорость канала.
fakes3 -r ~/fakes3_root -p 10001 --limit=50K
Эта команда органичит пропускную способность для запросов GET полосой 50K/s на каждый запрос.
Разработчики подчёркивают, что их сервер предназначен именно для тестирования проектов, а не для замены S3. Если вы хотите сделать замену S3, то они рекомендуют использовать для этого другие инструменты: Ceph, ParkPlace (поддерживает bitorrent), Boardwalk (интерфейс S3 перед MongoDB) и RiakCS.
Автор: alizar