ディレクトリバケットの S3 Express One Zone ストレージクラスに保存されている既存のオブジェクトの末尾にデータを追加できます。データが一定期間にわたって継続的に書き込まれる場合や、オブジェクトへの書き込み中にオブジェクトを読み取る必要がある場合は、オブジェクトにデータを追加する機能を利用することをお勧めします。オブジェクトへのデータの追加は、ログファイルに新しいログエントリを追加したり、トランスコードしてストリーミングする動画ファイルに新しい動画セグメントを追加したりするなどのユースケースで一般的です。オブジェクトにデータを追加することで、以前はローカルストレージでデータを結合してから最終的なオブジェクトを Amazon S3 にコピーしていたアプリケーションを簡素化できます。
オブジェクトに追加できるデータの最小サイズ要件はありません。ただし、1 つのリクエストでオブジェクトに追加できるデータの最大サイズは 5 GB です。これは、Amazon S3 API を使用してデータをアップロードする場合の最大リクエストサイズと同じ制限です。
追加オペレーションが成功するたびに、オブジェクトのパートが作成されます。各オブジェクトには最大 10,000 個のパートを含めることができます。つまり、最大 10,000 回、オブジェクトにデータを追加できます。S3 マルチパートアップロードを使用してオブジェクトを作成した場合、アップロードした各パートは合計最大 10,000 個のパートにカウントされます。例えば、マルチパートアップロードで作成した、1,000 個のパートで構成されるオブジェクトには、最大 9,000 回追加できます。
注記
パートの制限に達すると、TooManyParts エラーが発生します。CopyObject
API を使用してカウントをリセットできます。
オブジェクトに複数のパートを並行してアップロードし、アップロード中はパートを読み取る必要がない場合は、Amazon S3 マルチパートアップロードを使用することをお勧めします。詳細については、「マルチパートアップロードの使用」を参照してください。
オブジェクトへのデータの追加は、S3 Express One Zone ストレージクラスに保存されているディレクトリバケット内のオブジェクトでのみサポートされています。S3 Express One Zone の詳細については、「S3 Express One Zone の使用を開始する」を参照してください。
ディレクトリバケット内のオブジェクトへのデータの追加を開始するには、AWS SDK、AWS CLI、PutObject
API を使用できます。PutObject
リクエストを行うときは、x-amz-write-offset-bytes
ヘッダーを追加先のオブジェクトのサイズに設定します。PutObject
API オペレーションを使用するには、CreateSession
API を使用して、ディレクトリバケット内のオブジェクトにアクセスするための一時的なセキュリティ認証情報を確立する必要があります。詳細については、「Amazon S3 API Reference」の「PutObject
」と「CreateSession
」を参照してください。
追加オペレーションが成功するたびに、PutObject
リクエストとして請求が発生します。料金の詳細については、「Amazon S3
pricing
注記
Mountpoint for Amazon S3 は、1.12 リリース以降、S3 Express One Zone に保存されているオブジェクトへのデータの追加をサポートしています。開始するには、--incremental-upload
フラグを設定してオプトインする必要があります。Mountpoint の詳細については、「Mountpoint for Amazon S3 の使用」を参照してください。
追加データのアップロード中に CRC (周期冗長チェック) アルゴリズムを使用する場合は、HeadObject
リクエストまたは GetObject
リクエストを使用してオブジェクト全体の CRC ベースのチェックサムを取得できます。追加データのアップロード中に SHA-1 または SHA-256 アルゴリズムを使用する場合は、以前の PutObject レスポンスで返された SHA チェックサムを使用して、追加パートのチェックサムを取得して整合性を検証できます。詳細については、「データ保護と暗号化」を参照してください。
AWS CLI、AWS SDK、REST API を使用したオブジェクトへのデータの追加
AWS Command Line Interface (AWS CLI)、AWS SDK、REST API を使用して、オブジェクトにデータを追加できます。
次の put-object
コマンド例は、AWS CLI を使用してオブジェクトにデータを追加する方法を示しています。このコマンドを実行するには、ユーザー入力プレースホルダー
を独自の情報に置き換えます。
aws s3api put-object --bucket
amzn-s3-demo-bucket
--azid
--x-s3 --keysampleinput/file001.bin
--body bucket-seed/file001.bin --write-offset-bytes size-of-sampleinput/file001.bin
REST リクエストを送信して、オブジェクトにデータを追加できます。詳細については、「PutObject
」を参照してください。