

# ディレクトリバケット内のオブジェクトへのデータの追加
<a name="directory-buckets-objects-append"></a>

ディレクトリバケットの S3 Express One Zone ストレージクラスに保存されている既存のオブジェクトの末尾にデータを追加できます。データが一定期間にわたって継続的に書き込まれる場合や、オブジェクトへの書き込み中にオブジェクトを読み取る必要がある場合は、オブジェクトにデータを追加する機能を利用することをお勧めします。オブジェクトへのデータの追加は、ログファイルに新しいログエントリを追加したり、トランスコードしてストリーミングする動画ファイルに新しい動画セグメントを追加したりするなどのユースケースで一般的です。オブジェクトにデータを追加することで、以前はローカルストレージでデータを結合してから最終的なオブジェクトを Amazon S3 にコピーしていたアプリケーションを簡素化できます。

オブジェクトに追加できるデータの最小サイズ要件はありません。ただし、1 つのリクエストでオブジェクトに追加できるデータの最大サイズは 5 GB です。これは、Amazon S3 API を使用してデータをアップロードする場合の最大リクエストサイズと同じ制限です。

追加オペレーションが成功するたびに、オブジェクトのパートが作成されます。各オブジェクトには最大 10,000 個のパートを含めることができます。つまり、最大 10,000 回、オブジェクトにデータを追加できます。S3 マルチパートアップロードを使用してオブジェクトを作成した場合、アップロードした各パートは合計最大 10,000 個のパートにカウントされます。例えば、マルチパートアップロードで作成した、1,000 個のパートで構成されるオブジェクトには、最大 9,000 回追加できます。

**注記**  
 パートの制限に達すると、[TooManyParts](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#API_PutObject_Errors) エラーが発生します。`CopyObject` API を使用してカウントをリセットできます。

 オブジェクトに複数のパートを並行してアップロードし、アップロード中はパートを読み取る必要がない場合は、Amazon S3 マルチパートアップロードを使用することをお勧めします。詳細については、「[マルチパートアップロードの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-using-multipart-upload.html)」を参照してください。

オブジェクトへのデータの追加は、S3 Express One Zone ストレージクラスに保存されているディレクトリバケット内のオブジェクトでのみサポートされています。S3 Express One Zone の詳細については、「[S3 Express One Zone の使用を開始する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-getting-started.html)」を参照してください。

ディレクトリバケット内のオブジェクトへのデータの追加を開始するには、AWS SDK、AWS CLI、`PutObject` API を使用できます。`PutObject` リクエストを行うときは、`x-amz-write-offset-bytes` ヘッダーを追加先のオブジェクトのサイズに設定します。`PutObject` API オペレーションを使用するには、`CreateSession` API を使用して、ディレクトリバケット内のオブジェクトにアクセスするための一時的なセキュリティ認証情報を確立する必要があります。詳細については、「*Amazon S3 API Reference*」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)」と「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)」を参照してください。

追加オペレーションが成功するたびに、`PutObject` リクエストとして請求が発生します。料金の詳細については、「[https://aws.amazon.com/s3/pricing/](https://aws.amazon.com/s3/pricing/)」を参照してください。

**注記**  
Mountpoint for Amazon S3 は、1.12 リリース以降、S3 Express One Zone に保存されているオブジェクトへのデータの追加をサポートしています。開始するには、`--incremental-upload ` フラグを設定してオプトインする必要があります。Mountpoint の詳細については、「[Mountpoint for Amazon S3 の使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mountpoint.html)」を参照してください。

 追加データのアップロード中に CRC (周期冗長チェック) アルゴリズムを使用する場合は、`HeadObject` リクエストまたは `GetObject` リクエストを使用してオブジェクト全体の CRC ベースのチェックサムを取得できます。追加データのアップロード中に SHA-1 または SHA-256 アルゴリズムを使用する場合は、以前の PutObject レスポンスで返された SHA チェックサムを使用して、追加パートのチェックサムを取得して整合性を検証できます。詳細については、「[データ保護と暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-data-protection.html.html)」を参照してください。

## AWS CLI、AWS SDK、REST API を使用したオブジェクトへのデータの追加
<a name="directory-bucket-append"></a>

AWS Command Line Interface (AWS CLI)、AWS SDK、REST API を使用して、オブジェクトにデータを追加できます。

### AWS CLI の使用
<a name="set-append--cli"></a>

次の `put-object` コマンド例は、AWS CLI を使用してオブジェクトにデータを追加する方法を示しています。このコマンドを実行するには、*ユーザー入力プレースホルダー*を独自の情報に置き換えます。

```
aws s3api put-object --bucket amzn-s3-demo-bucket--azid--x-s3 --key sampleinput/file001.bin --body bucket-seed/file001.bin --write-offset-bytes size-of-sampleinput/file001.bin
```

### AWS SDK の使用
<a name="directory-bucket-append-sdks"></a>

------
#### [ SDK for Java ]

AWS SDK for Java を使用して、オブジェクトにデータを追加できます。

```
var putObjectRequestBuilder = PutObjectRequest.builder()
                                              .key(key)
                                              .bucket(bucketName)
                                              .writeOffsetBytes(9);
var response = s3Client.putObject(putObjectRequestBuilder.build());
```

------
#### [ SDK for Python ]

```
s3.put_object(Bucket='amzn-s3-demo-bucket--use2-az2--x-s3', Key='2024-11-05-sdk-test', Body=b'123456789', WriteOffsetBytes=9)
```

------

### REST API の使用
<a name="directory-bucket-append-api"></a>

 REST リクエストを送信して、オブジェクトにデータを追加できます。詳細については、[ を参照してください。`PutObject`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#API_PutObject)