0

Boto を使用して S3 からオブジェクトを取得するには、次のようなものを呼び出す必要があります (少なくとも、これは私が見つけることができる唯一の文書化された方法です)。

key = bucket.get_key(some_id)
data = key.get_contents_as_string()

ただし、get_keyHEAD をget_contents_as_string実行してから GET を実行します。これは非常に非効率的です。私が S3 に要求しているものはほとんど常に存在することを私は知っています (結果整合性はさておき、そことほとんどの比率は非常に大きく、数百万:1 です)。呼び出しの明白な boto 要件をバイパスしget_keyて、「この ID に関連付けられたデータを取得する」ためにまっすぐジャンプする方法はありますか?

4

2 に答える 2

1

もちろん。

キーがそこにあることがわかっている場合は、次のように Key オブジェクトを簡単に作成できます。

key = bucket.new_key(some_id)
data = key.get_contents_as_string()

これにより、キーの存在を確認するための HEAD リクエストをスキップできます。もちろん、キーが実際に存在しない場合は、404 エラーが発生します。

于 2013-05-11T00:27:41.757 に答える
1

API は、Key オブジェクトを直接インスタンス化するために使用されるクラスを示しています。

key = Key(bucket=bucket, name=my_key_id)
data = key.get_contents_as_string()

これまでの boto の使用法では、ドキュメントが有用な紹介であることがわかりましたが、生成された API ドキュメントと比較すると非常に不完全です。

于 2013-05-11T00:36:28.553 に答える