2017-02-03 13 views
0

私はイメージのS3バケットURLを持っています。私はこのイメージをurllibまたはwgetを使ってダウンロードしようとしていますが、どちらの場合でもコードは正常に実行されますが、破損したイメージがダウンロードされます。私が壊れていると言うとき、私は2MBの画像の場合、200kbのみがダウンロードされることを意味します。ラインの後半部分ではイメージフォームS3バケットをダウンロードできません

urllib.urlretrieve(str(sys.argv[1]), "data/img"+str(randomword(10))+".jpg")

、私はダウンロードするイメージの名前としてランダムな文字列を追加しています。

Pls help

+0

回答を確認しましたか?保存されたイメージは実際にはaws xmlの応答で、アクセス権などによって失敗したということがあります。テキストエディタで画像を開いてみてください。 – davidejones

+0

はい、私はこの – Guru

+0

を言ってXML応答を受けていますアクセスが可能です。多分ここの情報の一部が役立ちます。https://aws.amazon.com/articles/5050 – Guru

答えて

1

最初に認証してダウンロードすることでファイルを取得できます。私はamazon Webサービスを扱うためにpython botoライブラリを使うことをお勧めします。あなたがした場合、あなたが本当にのbotoを使用しない場合のコードは、この

import boto 

# set your AWS creds on your environment path or hardcode it 
AWS_ACCESS_KEY_ID = os.getenv("AWS_KEY_ID") 
AWS_ACCESS_SECRET_KEY = os.getenv("AWS_ACCESS_KEY") 

conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_ACCESS_SECRET_KEY) 

bucket = conn.get_bucket("my_bucket_name") 

key = bucket.get_key('file_on_s3.txt') 
key.get_contents_to_filename('where_file_goes_locally.txt') 

ようになりますことを、手動でそれを一緒にピースと本質的のbotoがあなたのAWSから右のリクエストヘッダを構築何を行うことができます信用私はこれをサーバーのbashスクリプトを使って行います。これは正しい方向(https://gist.github.com/davidejones/d05f51df75e659111227)でこれをPythonリクエストまたはurllibで書き直したい場合には、あなたにも指摘する必要があります。

関連する問題