2016-12-06 17 views
0

Dockerでハンドルを取得しようとしています。クエリのCSVファイルをS3にCSV(using the tinys3 package)をアップロード Docker ContainerからS3へのアップロード

  • をもたらし書く

    1. クエリデータベース
    2. :私は単純なPythonスクリプトを実行し、非常に基本的なコンテナのセットアップを持っています。

    ホストからスクリプトを実行すると、すべてが意図どおりに動作します。クエリが実行され、csvが作成され、完全にアップロードされます。私は私のドッカーコンテナ内からそれを実行したときしかし、tinys3は、次のエラーで失敗します。その前に

    requests.exceptions.ConnectionError: HTTPSConnectionPool(host='my-s3-bucket', port=443): Max retries exceeded with url: /bucket.s3.amazonaws.com/test.csv (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f4f17cf7790>: Failed to establish a new connection: [Errno -2] Name or service not known',)) 
    

    すべてが(クエリおよびCSVの作成)を動作します。 This answer suggests that there's an incorrect endpoint。しかし、それは正しくないようです。私のホストからスクリプトを実行してもエラーにはならないからです。

    私の質問は次のとおりです。明白なものがありませんか?これはtinys3モジュールの問題ですか?コンテナに何かをセットして「呼び出す」必要がありますか?それとももっと良い方法がありますか?

  • +0

    私は...それを解決しました。バケツ/ファイル名の名前に若干の相違があります。 '/subbucket/file.csv'をファイルとしてアップロードできますが、 'file.csv'を 'bucket/subbucket'にアップロードすることはできません。 –

    +0

    この問題をどうやって解決しましたか?私の要求はエラーメッセージなしでタイムアウトしています –

    +0

    これは重要なエラーでした。バケツを 'bucket/stuff/test /'に設定するのではなく、 'file.py'としてバケットを設定する必要がありました。バケットを 'bucket'に、ファイル名を '/stuff/test/file.py'に設定する必要がありました'奇妙なことに、前者はローカルでは動作しましたが、私のサーバーでは動作しませんでした。あなたが似ているかどうかわからない奇妙な問題。 –

    答えて

    0

    また、minio-pyクライアントライブラリを使用することもできます。

    fput_object.py

    from minio import Minio 
    from minio.error import ResponseError 
    
    client = Minio('s3.amazonaws.com', 
           access_key='YOUR-ACCESSKEYID', 
           secret_key='YOUR-SECRETACCESSKEY') 
    # Put on object 'my-objectname-csv' with contents from 
    # 'my-filepath.csv' as 'application/csv'. 
    try: 
        client.fput_object('my-bucketname', 'my-objectname-csv', 
             'my-filepath.csv', content_type='application/csv') 
    except ResponseError as err: 
        print(err) 
    

    のためのサンプルコードを見つけてください、それがお役に立てば幸いです。

    免責事項私はMinio

    関連する問題