Amazon S3 スタンドアロン スタブ サーバー
-
01-07-2019 - |
質問
単体テストなどのために独自のサーバーで実行できる Amazon S3 互換のテストサーバーについて読んだことを思い出したようです。しかし、私は Google と AWS の両方でこれを探すのに忍耐力を使い果たしました。そんなものは存在するのでしょうか?そうでなかったら、書こうと思います。
注記:Amazon EC2 (クラウド コンピューティング) ではなく、Amazon S3 (ストレージ システム) について質問しています。
他のヒント
モトだと思います(https://github.com/splec/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
ユーカリ http://eucalyptus.cs.ucsb.edu/
ユーカリ - プログラムを有用なシステムにリンクするための弾性ユーティリティコンピューティングアーキテクチャ - クラスターに「クラウドコンピューティング」を実装するためのオープンソースソフトウェアインフラストラクチャです。ユーカリへの現在のインターフェイスは、AmazonのEC2インターフェイスと互換性がありますが、インフラストラクチャは複数のクライアント側インターフェイスをサポートするように設計されています。
ドキュメントによると、Eucalypus には EC2 インターフェイスだけでなく S3 ストレージ システムの再実装も含まれていることに注意してください。そのストレージ コンポーネントは Walrus と呼ばれます。(http://open.eucalyptus.com/wiki/EucalyptusUserGuide_v1.5.2)
偽S3 S3 の最新の再実装であり、特にテストでの使用を目的として設計されているようです。
S3 ベースのコードをローカルでテストするという問題に遭遇し、実際に S3 オブジェクト API をエミュレートする小さな Java サーバーを実装しました。他の人にとっても役立つかもしれないので、小さな Web サイトとともに github リポジトリをセットアップします。 http://s3ninja.net - すべては MIT ライセンスに基づくオープンソースです。
非常に小さくてシンプルで、数分でセットアップできます。( シリウス ベースのアプリケーションの場合、中程度のサーバーでの起動には 1 秒もかかりません)。
Amazon は Xen を使用しているため、おそらく独自の Xen インストールで AMI を実行することができます。ただし、インスタンスを起動してそこでテストを実行するだけです。費用はそれほどかからず、通常はローカルで開発し、システム上で頻繁にテストすることは問題ありません。