Batch Operations, REST API, AWS SDK 또는 AWS CLI를 사용하여 객체 수준에서 S3 버킷 키 구성 - Amazon Simple Storage Service

Batch Operations, REST API, AWS SDK 또는 AWS CLI를 사용하여 객체 수준에서 S3 버킷 키 구성

REST API, AWS SDK 또는 AWS CLI를 사용하여 PUT 또는 COPY 작업을 수행할 때 객체 수준에서 S3 버킷 키를 사용하거나 사용 중지할 수 있습니다. S3 버킷 키는 Amazon S3에서 AWS KMS로 가는 요청 트래픽을 줄여 AWS Key Management Service(AWS KMS)(SSE-KMS)를 사용한 서버 측 암호화 비용을 절감합니다. 자세한 내용은 Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감 섹션을 참조하세요.

PUT 또는 COPY 작업을 사용하여 객체에 대한 S3 버킷 키를 구성하면 Amazon S3는 해당 객체에 대한 설정만 업데이트합니다. 대상 버킷에 대한 S3 버킷 키 설정은 변경되지 않습니다. 객체에 S3 버킷 키를 지정하지 않으면 Amazon S3가 대상 버킷에 대한 S3 버킷 키 설정을 객체에 적용합니다.

사전 조건:

S3 버킷 키를 사용하도록 객체를 구성하기 전에 S3 버킷 키를 활성화하기 전에 유의할 변경 사항을(를) 검토하세요.

Amazon S3 Batch Operations

기존 Amazon S3 객체를 암호화하기 위해 Amazon S3 Batch Operations를 사용할 수 있습니다. 작업할 객체 목록을 S3 배치 작업에 제공하면 배치 작업은 각각의 API를 호출하여 지정된 작업을 수행합니다. S3 Batch Operations 복사 작업을 사용하여 암호화되지 않은 기존 객체를 복사하고 암호화된 새로운 객체를 동일한 버킷에 작성할 수 있습니다. 단일 Batch Operations 작업 건으로 수십억 개의 객체에서 지정된 작업을 수행할 수 있습니다. 자세한 내용은 Amazon S3 객체에 대한 대규모 배치 작업 수행Amazon S3 Batch Operations에서 객체 암호화를 참조하세요.

REST API 사용

SSE-KMS를 사용하면 다음 API를 사용하여 객체에 대해 S3 버킷 키를 활성화할 수 있습니다.

  • PutObject – 객체를 업로드하면 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 지정하여 객체 레벨에서 S3 버킷 키를 활성화하거나 비활성화할 수 있습니다.

  • CopyObject – 객체를 복사하고 SSE-KMS를 구성하면 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 지정하여 객체에 대한 S3 버킷 키를 활성화하거나 비활성화할 수 있습니다.

  • PostObject – POST 작업을 사용하여 객체를 업로드하고 SSE-KMS를 구성하면 x-amz-server-side-encryption-bucket-key-enabled 양식 필드를 사용하여 객체에 대한 S3 버킷 키를 활성화하거나 비활성화할 수 있습니다.

  • CreateMutlipartUpload – 멀티파트 업로드 API를 사용하여 대용량 객체를 업로드하고 SSE-KMS를 구성하면 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 사용하여 객체에 대한 S3 버킷 키를 활성화하거나 비활성화할 수 있습니다.

객체 수준에서 S3 버킷 키를 활성화하려면 x-amz-server-side-encryption-bucket-key-enabled 요청 헤더를 포함합니다. SSE-KMS 및 REST API에 대한 자세한 내용은 REST API 사용 단원을 참조하세요.

AWS SDK Java(PutObject) 사용

다음 예제를 사용하여 AWS SDK for Java를 사용해 객체 수준에서 S3 버킷 키를 구성할 수 있습니다.

Java
AmazonS3 s3client = AmazonS3ClientBuilder.standard()     .withRegion(Regions.DEFAULT_REGION)     .build(); String bucketName = "bucket name"; 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 버킷 키를 구성할 수 있습니다.

aws s3api put-object --bucket <bucket name> --key <object key name> --server-side-encryption aws:kms --bucket-key-enabled --body <filepath>