2011-06-18 10 views
2

私はS3バケットに(おそらく何百万という)オブジェクトを保存するアプリを書いています。私のアプリは、最新のオブジェクト(大まかに)を取り出して処理し、同じバケットに書き戻します。キーにアクセスして新しいオブジェクトに名前を付ける方法が必要なので、アプリケーションは簡単に最新のオブジェクトにアクセスできます。最新のS3キーを先に取得

メタデータをSimpleDBに入れることでこれを正しく行うことができますが、固い一貫性は必要ありません。もしアプリケーションが最新ではないオブジェクトをつかんでも大丈夫です。私はちょうど古いものの代わりに新しいアイ・キーをつかむ傾向があるアプリを必要とする。だから、私はS3だけを使って簡単にしています。

S3メタデータにアクセスして並べ替える方法はありますか?あるいは、S3がキーを辞書順にリストし、botoがページングを処理できることを知っているので、必要なものを得るためのオブジェクトの命名規則があるかもしれません。

答えて

1

s3バージョン管理が本当に役立ちます。これらが本当に同じものであれば、バケツのバージョニングをオンにしたり、キーからデータを取得したり、変更したり、同じキーに戻したりすることができます。

この機能は、ページングを処理しませんが、あなただけの最初のインデックスを取得することができ、あなたが持っているので、あなたは、あなたが最初に最新バージョンアウトを、取得のbotoの

bucket.get_all_versions(prefix='yourkeynamehere') 

使用する必要があります最新のバージョン。

さらに前に戻ってページングが必要な場合、botoは接頭辞も取るlist_versions()関数を提供しています。これを心配することなくすべてのバージョンを繰り返し処理する結果セットを提供します。

これらのオブジェクトが実際には「同じ」オブジェクトでない場合、s3はdiffを格納しないため、実際には問題になりません。複数のタイプのオブジェクトがある場合は、最新のものを取り出すことができる複数のバージョンセットを持つことができます。

私はバージョニングを使用していて、とても満足しています。

関連する問題