2017-02-28 8 views
0

Amazon AWS SDKを使用してバージョン管理されたバケットにオブジェクトをアップロードし、このオブジェクトにカスタムバージョンを設定したい(目標はすべてのオブジェクトに同じバージョンを設定するすぐに)カスタムバージョンIDを使用してAmazon S3にオブジェクトをアップロード

PutObjectResult por = amazonS3Client.putObject(...); 
por.setVersionId("custom_version"); 

アップロードされたオブジェクトにバージョンを設定するのは正しい方法ですか?

このコードは2つの別々のAmazonへのリクエストにつながりますか?

por.setVersionId(..)の呼び出し中にインターネットが壊れた場合はどうなりますか?

なぜ、このメソッドが実際にAmazonサーバーでバージョンIDを設定しようとしている場合、por.setVersionId(..)がSdkClientExceptionなどの例外をスローしないのですか?

答えて

3

setVersionIdは、SDKライブラリ自体が、オブジェクトの作成時にサービスから返されたversionIdを生成するために使用されるものであるため、それが何であるかを知りたい場合に取得できます。

S3のバージョンIDは、オブジェクトの特定のバージョンを一意に識別するシステム生成の不透明な文字列です。それらを割り当てることはできません。

documentationは、実際のバージョンIDと似ていない "111111"や "222222"のような不幸な例を使用しています。

ユニークなバージョンIDは、1024バイト以下のUnicode、UTF-8エンコード、URL対応、不透明な文字列がランダムに生成されます。バージョンIDの例は3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo.

バージョンIDのみが生成されます。

これらは編集できません。

ここでエラーは発生しません。このメソッドはすべて、アップロード完了後にPutObjectResultオブジェクト内のVersionIdをローカルメモリに設定するため、エラーは発生しません。成功しますが、目的はありません。

リリース/バージョンIDなどのオブジェクトでユーザー定義のメタデータを保存するには、オブジェクトメタデータ(x-amz-meta-*)またはS3の新しいオブジェクトタグ機能を使用する必要があります。

関連する問題