単体テストなどのために独自のサーバーで実行できる Amazon S3 互換のテスト サーバーについて読んだことを思い出したようです。ただし、Google と AWS の両方でこれを探すのに忍耐を使い果たしました。そのようなものは存在しますか?そうでなければ、私はそれを書くと思います。
注: Amazon EC2 (クラウド コンピューティング) ではなく、Amazon S3 (ストレージ システム) について質問しています。
単体テストなどのために独自のサーバーで実行できる Amazon S3 互換のテスト サーバーについて読んだことを思い出したようです。ただし、Google と AWS の両方でこれを探すのに忍耐を使い果たしました。そのようなものは存在しますか?そうでなければ、私はそれを書くと思います。
注: Amazon EC2 (クラウド コンピューティング) ではなく、Amazon S3 (ストレージ システム) について質問しています。
moto ( https://github.com/spulec/moto ) は単体テストに最適なツールだと思います。Moto は、S3、SQS などへのすべてのアクセスをモックし、Web サーバーを使用して任意のプログラミング言語で使用できます。
セットアップは簡単で、軽量で高速です。
moto の 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'
Park Place は github に移動しました: http://github.com/technoweenie/parkplace
偽の S3は、特にテスト用に設計された S3 の最新の再実装のようです。
ユーカリ http://eucalyptus.cs.ucsb.edu/
EUCALYPTUS - プログラムを有用なシステムにリンクするための Elastic Utility Computing Architecture - は、クラスターに「クラウド コンピューティング」を実装するためのオープンソース ソフトウェア インフラストラクチャです。EUCALYPTUS への現在のインターフェイスは Amazon の EC2 インターフェイスと互換性がありますが、インフラストラクチャは複数のクライアント側インターフェイスをサポートするように設計されています。
ドキュメントによると、Eucalypus には EC2 インターフェイスだけでなく、S3 ストレージ システムの再実装も含まれていることに注意してください。そのストレージ コンポーネントは Walrus と呼ばれます。( http://open.eucalyptus.com/wiki/EucalyptusUserGuide_v1.5.2 )
S3 ベースのコードをローカルでテストする際に問題が発生し、S3 オブジェクト API をエミュレートする小さな Java サーバーを実際に実装しました。他の人にとって役立つかもしれないので、小さなウェブサイトと一緒に github リポジトリをセットアップします: http://s3ninja.net - すべて MIT ライセンスの下でオープンソースです。
非常に小さくてシンプルで、数分でセットアップできます。( SIRIUSベースのアプリケーションであるため、中程度のサーバーでの起動には 1 秒もかかりません)。
Amazon は Xen を使用しているため、おそらく独自の Xen インストールで AMI を実行できます。ただし、インスタンスを起動してそこでテストを実行するだけです。それほど費用はかからず、通常はローカルで開発し、システムでまれにテストするだけで問題ありません。