2016-06-28 7 views
0

アップロードされたファイルの範囲4-1523)?これを達成するためにマルチパートアップロードを利用する必要がありますか?またはHTTPヘッダーで指定された範囲でREST呼び出しを起動しますか?置き換えるバイト

アドバイスをお待ちしています。

+1

マルチパートのアップロードは大きなファイルをアップロードするように設計されています(小さなファイルでも同様に動作します)。ファイルの '部分'を変更するようには設計されていません。私が知る限り、S3上のファイルを変更する唯一の方法は、更新されたバージョンを完全に再アップロードすることです。 – Arnauld

答えて

1

S3のオブジェクトは不変です。

小さなオブジェクトの場合は、オブジェクト全体を再度アップロードする必要があります。

サイズが5MBを超えるオブジェクトの場合、マルチパートアップロードAPIの変更されたアプローチを使用して、ファイルに「パッチを当てる」ための回避策があります。

背景:

ご存知のように、マルチパートアップロードは、あなたが最小部品サイズの5メガバイトと最大部品数万と「部品」にファイルをアップロードすることができます。

しかし、マルチパートの「アップロード」は、S3の一部またはすべてが既に存在する場合に、すべてのデータを再度アップロードする必要があるとは限りません。

PUT part/copyを使用すると、既存のオブジェクトにオクテット範囲を指定することによって、個々の部分を「アップロード」することができます。または複数のオブジェクト。

アップロードはアトミックであるため、実際にマルチパートアップロードを完了するまでは、「元のオブジェクト」は上書き処理中のオブジェクトになる可能性があります。

しかし、実際にアップロードするのを避け、通常のPUT partリクエストを使用して、必要なパーツをアップロードすることを避けるために、コピー機能を使用して、同じパーツにデータを提供することを妨げるものはありません異なる内容。

したがって、1オクテットのレベルに細分化されたバイトレンジパッチではありませんが、これは大きなファイルのインプレース修正をエミュレートするのに便利です。有効な「パーツ」の例は、5MBの境界で最小5MBのチャンクを置き換え、50GBより小さいファイルに対しては500MBのチャンクを5TBまでのオブジェクトに対して置き換えます。これは、マルチパートのアップロードには10,000以上の部品が含まれていないという要件があるためです。キャッチは、部品が適切なオフセットで始まらなければならず、部品全体を交換する必要があるということです。