FakeS3を使用して、迷惑メールマシン内のLuigiパイプラインをテストして、S3エンドポイントをシミュレートしようとしています。 botoのために接続がOrdinaryCallingFormat
のようにして設定する必要がありFakeS3と対話することができるようにする:FakeS3でLuigiをテストするには?
from boto.s3.connection import S3Connection, OrdinaryCallingFormat
conn = S3Connection('XXX', 'XXX', is_secure=False,
port=4567, host='localhost',
calling_format=OrdinaryCallingFormat())
が、ルイージを使用している場合、この接続はs3 moduleに埋設されています。私は私のluigi.cfg
を変更し、
[s3]
host=127.0.0.1
port=4567
aws_access_key_id=XXX
aws_secret_access_key=XXXXXX
is_secure=0
のようにS3のセクションを追加することにより、オプションのほとんどを渡すことができましたが、私はcalling_format
のために必要なオブジェクトを渡す方法がわかりません。
今、私は立ち往生しており、進める方法がわかりません。いつも私には未知のオプションを設定することで、私のベイグラントのマシンでこの呼び出し形式を使用するboto
を強制的にどのようにluigi.cfg
S3Connection
からOrdinaryCallingFormat
を渡す方法を
- 図:オプションは、私が考えることができます
.aws/config
またはboto.cfg
- で(それはあらゆる手段)
SubdomainCallingFormat
であることを起こるboto
が使用するデフォルトcalling_format
を受け入れるようにFakeS3
を作るのいずれか。
これを修正する方法についてのご意見はありますか?
このコード行は私のコードではなく、私のコードにあります。回避策はluigiにパッチを当てていますが、Luigiの新しいバージョン – tonicebrian
で壊れてしまいます。あなたのコードで 'S3Target'をインスタンス化していませんか?上の 'S3Client'をクライアントパラメータとして' S3Target'コンストラクタに渡すことができます。 – MattMcKnight
私はS3Targetをインスタンス化していますが、LuigiパイプラインがFakeS3用のS3Clientと生産用のデフォルトのS3Clientを注入するためのエレガントな方法を見つけることができません。どのようにパイプラインのすべてのコードを汚染することなく、この依存性注入を行うためのアイデア? – tonicebrian