2016-07-03 6 views
3

完了する前に、クライアントがファイルを見ることができ、私は以下のが見つかりました:アマゾンS3は:アップロードが<a href="http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html" rel="nofollow">http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html</a>で

アマゾンS3は、部分的にオブジェクトを追加することはありません。成功の応答を受け取った場合、Amazon S3はオブジェクト全体をバケットに追加しました。

しかし、それは私が成功応答を受け取っていると話しています。 他のクライアントはバケット内のオブジェクトをリストする際にオブジェクトを見ることができます - オブジェクト全体がアップロードされるまでは保証されますか?

私は「スプール」ディレクトリとしてS3を使いたいです。そこにファイルをアップロードし、別のクライアントがファイルを定期的にリストしてダウンロードします。完全にアップロードされていないファイルをダウンロードしようとは思わない。

答えて

4

答えは、これと同じラインに沿っている:

アマゾンS3は決して「中」部分のオブジェクト

アップロードが完了するまでは、アップロードされたコンテンツは、技術的ではないが追加されていませんバケツ。

S3は、ご存知のように、階層的なファイルシステムではありません。少なくとも2つの重要なコンポーネントがあります。バッキングストアとインデックスは、典型的なファイルシステムとは異なり、別々のものです。オブジェクトを書くときは、実際にはそれを「適切な位置に」書いていません。オブジェクトをアップロードすると、オブジェクトがバッキングストアに保存されます。の場合、は、GETによって使用されるバケットのインデックスと、格納されたデータと取得のためのメタデータを取得するための他の要求を追加します。

インデックスにエントリがないため、オブジェクトにアクセスできません。だからあなたはいいよ。まだアップロードが完了していないオブジェクトをダウンロードすることは不可能です。オブジェクトは、技術的にはまだ存在しません。

同様に、オブジェクトが既に存在し、上書きを開始すると、ダウンロードを試みる人は、アップロードが完了するまでオブジェクトの「古い」コピーを取得します。バージョニングなしのバケットでも同じですenabled - 上書きは実際のオブジェクトを上書きせず、インデックスエントリを上書きします。これはアップロードが完了したときにのみ発生します。このメカニズムは、既存のオブジェクトを上書きする要求であるPUT要求に適用される最終的な一貫性モデルの原因であるように見えることに注意してください。


注、データの整合性に関して:あなたがアップロードを使用しているものは何でもするContent-MDリクエストヘッダを設定していることを確認してください。これにより、S3に送信エラーを検出し、アップロードされるコンテンツが一致しない場合には強制的に障害を発生させるメカニズムを与えることによって、アップロードが破損することを防ぎます。

関連する問題