

# 디렉터리 버킷의 객체에 데이터 추가
<a name="directory-buckets-objects-append"></a>

디렉터리 버킷의 S3 Express One Zone 스토리지 클래스에 저장된 기존 객체의 끝에 데이터를 추가할 수 있습니다. 일정 기간 동안 지속적으로 데이터를 작성하거나 객체에 작성하는 동안 객체를 읽어야 할 경우 객체에 데이터를 추가하는 기능을 사용하는 것이 좋습니다. 객체에 데이터를 추가하는 작업은 로그 파일에 새 로그 항목을 추가하거나 트랜스코딩 후 스트리밍될 때 비디오 파일에 새 비디오 세그먼트를 추가하는 등의 사용 사례에서 흔히 볼 수 있습니다. 객체에 데이터를 추가하면 기존에는 로컬 스토리지에 데이터를 결합한 후 최종 객체를 Amazon S3에 복사했던 애플리케이션을 간소화할 수 있습니다.

객체에 추가할 수 있는 데이터에 대한 최소 크기 요구 사항은 없습니다. 그러나 단일 요청에서 객체에 추가할 수 있는 데이터의 최대 크기는 5GB입니다. 이는 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/) 섹션을 참조하세요.

**참고**  
1.12 릴리스부터 Mountpoint for Amazon S3는 S3 Express One Zone에 저장된 객체에 데이터 추가를 지원합니다. 시작하려면 `--incremental-upload ` 플래그를 설정하여 옵트인해야 합니다. Mountpoint에 대한 자세한 내용은 [Mountpoint 작업](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를 사용하여 객체에서 데이터를 추가할 수 있는 방법을 보여줍니다. 이 명령을 실행하려면 *user input placeholders*를 사용자의 정보로 대체합니다.

```
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)