ファイル全体をプルオーバーせずにファイルサイズ(キーサイズ)を取得する簡単な方法が必要です。 AWS S3ブラウザーのプロパティで確認できます。そして、「HEAD」リクエストの「Content-length」ヘッダーから取得できると思います。しかし、私はこれをボトで行う方法についての点をつなげていません。 標準のboto docs にあるよりも包括的な例へのリンクを投稿した場合の追加の称賛。
編集:だから、次のトリックを行うようです(ソースコードを見てから私は完全にはわからない)。
bk = conn.get_bucket('my_bucket_name')
ky = boto.s3.key.Key(bk)
ky.open_read() ## This sends a GET request.
print ky.size
今のところ、コメント、より良い解決策、または例へのポインタのために、質問を開いたままにします。
これはうまくいくでしょう:
bk = conn.get_bucket('my_bucket_name')
key = bk.lookup('my_key_name')
print key.size
ルックアップメソッドは、キー名のバケットでHEAD要求を行うため、キーのすべてのヘッダー(コンテンツの長さを含む)が返されますが、実際のコンテンツは転送されません。キー。
S3 tutoria lはこれに言及していますが、あまり明確ではなく、この正確なコンテキストではありません。見つけやすくするために、このセクションを追加します。
注:404を返すhttp://boto.cloudhackers.com/s3_tut.html
のような古いリンクごとに、"/en/latest"
の直後に".com"
を追加します:http://boto.cloudhackers.com/en/latest/s3_tut.html
。 (誰かがmod_rewriteを探索する必要があります...)
in boto:
s3.head_object
は、オブジェクトに関するメタデータを取得するためにHEAD要求も実行します。
s3 = boto3.client('s3')
response = s3.head_object(Bucket='bucketname', Key='keyname')
size = response['ContentLength']
boto3
S3リソースを使用:
boto3.resource('s3').Bucket(bucketname).Object(keyname).content_length
head_object
S3クライアントの呼び出しにより、http "403 Forbidden"が返されました。
InBoto 3:
S3 Object
を使用すると、ファイル(オブジェクト)のサイズをバイト単位で取得できます。これは、Amazon S3オブジェクトを表すリソースです。
実際、オブジェクトに関連するすべてのメタデータを取得できます。お気に入り content_length
オブジェクトサイズ、content_language
コンテンツの言語、content_encoding
、last_modified
など.
import boto3
s3 = boto3.resource('s3')
object = s3.Object('bucket_name','key')
file_size = object.content_length //size in bytes
参照 boto3 doc