객체 수준에서 S3 Bucket Key 구성하기

객체 수준에서 S3 Bucket Key 구성하기 (Configuring an S3 Bucket Key at the object level)

REST API, AWS SDK 또는 AWS CLI로 PUT 또는 COPY 작업을 수행할 때 요청 헤더를 추가해 객체 수준에서 S3 Bucket Key를 활성화하거나 비활성화할 수 있어요.

출처: 문서

본문

REST API, AWS SDK 또는 AWS CLI를 사용해 PUT 또는 COPY 작업을 수행할 때 true 또는 false 값의 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 추가해 객체 수준에서 S3 Bucket Key를 활성화하거나 비활성화할 수 있어요. S3 Bucket Keys는 Amazon S3에서 AWS KMS로 가는 요청 트래픽을 줄여 AWS Key Management Service(AWS KMS)(SSE-KMS)를 사용한 서버 측 암호화의 비용을 절감해요. 자세한 내용은 Amazon S3 Bucket Keys로 SSE-KMS 비용 절감하기를 참고하세요.

PUT 또는 COPY 작업으로 객체에 S3 Bucket Key를 구성하면 Amazon S3는 해당 객체의 설정만 업데이트해요. 대상 버킷의 S3 Bucket Key 설정은 변경되지 않아요. S3 Bucket Keys가 활성화된 버킷에 KMS 암호화 객체에 대한 PUT 또는 COPY 요청을 제출하면 요청 헤더에서 키를 비활성화하지 않는 한 객체 수준 작업이 자동으로 S3 Bucket Keys를 사용해요. 객체에 S3 Bucket Key를 지정하지 않으면 Amazon S3는 대상 버킷의 S3 Bucket Key 설정을 객체에 적용해요.

사전 요구 사항

객체가 S3 Bucket Key를 사용하도록 구성하기 전에 S3 Bucket Key 활성화 전에 확인할 변경 사항을 검토하세요.

관련 주제

Amazon S3 Batch Operations

기존 Amazon S3 객체를 암호화하려면 Amazon S3 Batch Operations를 사용할 수 있어요. S3 Batch Operations에 작업할 객체 목록을 제공하면 Batch Operations가 지정된 작업을 수행하기 위해 해당 API를 호출해요.

S3 Batch Operations의 복사(Copy) 작업을 사용해 기존의 암호화되지 않은 객체를 복사하고 같은 버킷에 암호화된 객체로 다시 쓸 수 있어요. 단일 Batch Operations 작업은 수십억 개의 객체에 지정된 작업을 수행할 수 있어요. 자세한 내용은 Batch Operations로 객체 작업을 일괄 수행하기와 Amazon S3 Batch Operations로 객체 암호화하기를 참고하세요.

REST API 사용

SSE-KMS를 사용할 때 다음 API 작업으로 객체에 S3 Bucket Key를 활성화할 수 있어요.

  • PutObject – 객체를 업로드할 때 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 지정해 객체 수준에서 S3 Bucket Key를 활성화하거나 비활성화할 수 있어요.
  • CopyObject – 객체를 복사하고 SSE-KMS를 구성할 때 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 지정해 객체에 S3 Bucket Key를 활성화하거나 비활성화할 수 있어요.
  • POST Object – POST 작업으로 객체를 업로드하고 SSE-KMS를 구성할 때 x-amz-server-side-encryption-bucket-key-enabled 양식 필드를 사용해 객체에 S3 Bucket Key를 활성화하거나 비활성화할 수 있어요.
  • CreateMultipartUpload – CreateMultipartUpload API 작업으로 대용량 객체를 업로드하고 SSE-KMS를 구성할 때 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 사용해 객체에 S3 Bucket Key를 활성화하거나 비활성화할 수 있어요.

객체 수준에서 S3 Bucket Key를 활성화하려면 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 포함해요. SSE-KMS와 REST API에 대한 자세한 내용은 REST API 사용하기를 참고하세요.

AWS SDK for Java 사용(PutObject)

다음 예제를 사용해 AWS SDK for Java로 객체 수준에서 S3 Bucket Key를 구성할 수 있어요.

  • Java:
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();

String bucketName = "amzn-s3-demo-bucket1";
String keyName = "key name for object";
String contents = "file contents";

PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, contents)
    .withBucketKeyEnabled(true);

s3client.putObject(putObjectRequest);

AWS CLI 사용(PutObject)

다음 AWS CLI 예제를 사용해 PutObject 요청의 일부로 객체 수준에서 S3 Bucket Key를 구성할 수 있어요.

aws s3api put-object --bucket amzn-s3-demo-bucket --key object key name --server-side-encryption aws:kms --bucket-key-enabled --body filepath

더 알아보기 (Learn more)