2016-10-31 5 views
1

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を渡す方法を

    1. 図:オプションは、私が考えることができます.aws/configまたはboto.cfg
    2. で(それはあらゆる手段)SubdomainCallingFormatであることを起こるbotoが使用するデフォルトcalling_formatを受け入れるようにFakeS3を作るのいずれか。

    これを修正する方法についてのご意見はありますか?

  • 答えて

    1

    あなたはS3Clientのkwargsとしてコンストラクタに渡すことはできませんか?

    +0

    このコード行は私のコードではなく、私のコードにあります。回避策はluigiにパッチを当てていますが、Luigiの新しいバージョン – tonicebrian

    +0

    で壊れてしまいます。あなたのコードで 'S3Target'をインスタンス化していませんか?上の 'S3Client'をクライアントパラメータとして' S3Target'コンストラクタに渡すことができます。 – MattMcKnight

    +0

    私はS3Targetをインスタンス化していますが、LuigiパイプラインがFakeS3用のS3Clientと生産用のデフォルトのS3Clientを注入するためのエレガントな方法を見つけることができません。どのようにパイプラインのすべてのコードを汚染することなく、この依存性注入を行うためのアイデア? – tonicebrian

    0

    fotoS3にboto3 connectを使用しても問題は発生しませんでした。

    import boto3 
    s3 = boto3.client(
        "s3", region_name="fakes3", 
        use_ssl=False, 
        aws_access_key_id="", 
        aws_secret_access_key="", 
        endpoint_url="http://localhost:4567" 
    ) 
    

    特別な呼び出し方法は必要ありません。あなたがcalling_formatパラメータでそれを設定することができます https://github.com/boto/boto3/issues/334

    +0

    問題はLuigi + FakeS3の組み合わせです – tonicebrian

    0

    おそらく、私は私のコードは動作しない場合は、上のgithubのトピックboto3サポートを通過してください、あなたが本当にOrdinaryCallingFormatが必要であることを間違っています。以下は、fake-s3の設定例です。

    [s3] 
    aws_access_key_id=123 
    aws_secret_access_key=abc 
    host=fake-s3 
    port=4569 
    is_secure=0 
    calling_format=boto.s3.connection.OrdinaryCallingFormat 
    
    関連する問題