Batch Operations로 SSE-KMS용 S3 Bucket Keys 활성화하기
Batch Operations로 SSE-KMS용 S3 Bucket Keys 활성화하기
S3 Bucket Keys는 Amazon S3에서 AWS KMS로 가는 요청 트래픽을 줄여 SSE-KMS 비용을 낮춰 줘요. 이미 존재하는 객체에 S3 Bucket Keys를 적용하고 싶다면 Batch Operations Copy 작업으로 암호화 없이 저장된 기존 객체를 복사해서, 같은 버킷에 암호화된 객체로 다시 쓸 수 있어요. 이 문서는 그 전체 과정을 인벤토리 생성부터 배치 작업 실행까지 단계별로 안내해요.
출처: 문서
본문
S3 Bucket Keys는 Amazon S3에서 AWS KMS로 가는 요청 트래픽을 줄여 AWS Key Management Service(AWS KMS)를 사용한 서버 측 암호화(SSE-KMS)의 비용을 낮춰 줘요. 자세한 내용은 Reducing the cost of SSE-KMS with Amazon S3 Bucket Keys 및 Configuring your bucket to use an S3 Bucket Key with SSE-KMS for new objects 문서를 참고하세요. REST API, AWS SDK, AWS CLI로 CopyObject 작업을 수행할 때, x-amz-server-side-encryption-bucket-key-enabled 요청 헤더에 true 또는 false 값을 추가하면 객체 수준에서 S3 Bucket Key를 활성화하거나 비활성화할 수 있어요.
CopyObject 작업으로 객체에 S3 Bucket Key를 구성하면 Amazon S3는 그 객체에 대한 설정만 갱신해요. 대상 버킷의 S3 Bucket Key 설정은 바뀌지 않아요. S3 Bucket Keys가 활성화된 버킷에 AWS KMS로 암호화된 객체에 대한 CopyObject 요청을 제출하면, 요청 헤더에서 키를 비활성화하지 않는 한 객체 수준 작업이 자동으로 S3 Bucket Keys를 사용해요. 객체에 S3 Bucket Key를 지정하지 않으면 Amazon S3는 대상 버킷의 S3 Bucket Key 설정을 객체에 적용해요.
기존 Amazon S3 객체를 암호화하려면 S3 Batch Operations를 사용할 수 있어요. Batch Operations Copy 작업으로 암호화되지 않은 기존 객체를 복사해서, 같은 버킷에 암호화된 객체로 다시 쓸 수 있죠. 자세한 내용은 AWS Storage Blog의 Encrypting objects with Amazon S3 Batch Operations 문서를 참고하세요.
다음 예제에서는 Batch Operations Copy 작업을 사용해 기존 객체에 S3 Bucket Keys를 활성화해요. 자세한 내용은 Configuring an S3 Bucket Key at the object level 문서를 참고하세요.
- S3 Bucket Keys를 활성화한 객체를 S3 Batch Operations로 암호화할 때의 고려 사항
- 사전 요구 사항
- 1단계: Amazon S3 Inventory로 객체 목록 가져오기
- 2단계: S3 Select로 객체 목록 필터링
- 3단계: S3 Batch Operations 작업 설정 및 실행
S3 Bucket Keys를 활성화한 객체를 S3 Batch Operations로 암호화할 때의 고려 사항
S3 Bucket Keys를 활성화한 객체를 S3 Batch Operations로 암호화할 때 다음 문제를 고려해야 해요.
- S3 Batch Operations 작업, 객체, 요청에 더해, S3 Batch Operations가 대신 수행하는 작업과 관련된 요금(데이터 전송, 요청 및 기타 요금 포함)도 부과돼요. 자세한 내용은 Amazon S3 pricing 문서를 참고하세요.
- 버전 관리되는 버킷을 사용하면, 수행하는 각 S3 Batch Operations 작업이 객체의 새 암호화 버전을 만들어요. 또한 S3 Bucket Key가 구성되지 않은 이전 버전도 유지돼요. 이전 버전을 삭제하려면 Lifecycle configuration elements 문서에 설명된 대로 비현재 버전에 대한 S3 Lifecycle 만료 정책을 설정하세요.
- 복사 작업은 새 생성 날짜로 새 객체를 만들며, 이는 아카이빙 같은 수명 주기 작업에 영향을 줄 수 있어요. 버킷의 모든 객체를 복사하면 모든 새 복사본이 동일하거나 비슷한 생성 날짜를 갖게 돼요. 이 객체들을 더 식별하고 다양한 데이터 하위 집합에 다른 수명 주기 규칙을 만들려면 객체 태그 사용을 고려해 보세요.
사전 요구 사항
객체가 S3 Bucket Key를 사용하도록 구성하기 전에 Changes to note before enabling an S3 Bucket Key 문서를 검토하세요.
이 예제를 사용하려면 AWS 계정과 작업 파일 및 암호화된 결과를 담을 S3 버킷이 하나 이상 있어야 해요. 그리고 기존 S3 Batch Operations 문서의 상당 부분이 유용할 거예요. 특히 다음 주제들이요.
- S3 Batch Operations 기본 사항
- S3 Batch Operations 작업 만들기
- S3 Batch Operations가 지원하는 작업
- S3 Batch Operations 작업 관리
1단계: Amazon S3 Inventory로 객체 목록 가져오기
먼저 암호화할 객체가 들어 있는 S3 버킷을 식별하고 내용 목록을 가져와요. Amazon S3 Inventory 보고서가 이를 위한 가장 편리하고 저렴한 방법이에요. 이 보고서는 버킷 안의 객체 목록과 관련 메타데이터를 제공해요. 이 단계에서 소스 버킷은 인벤토리가 만들어지는 버킷이고, 대상 버킷은 인벤토리 보고서 파일을 저장하는 버킷이에요. Amazon S3 Inventory의 소스·대상 버킷에 대한 자세한 내용은 Cataloging and analyzing your data with S3 Inventory 문서를 참고하세요.
인벤토리를 설정하는 가장 쉬운 방법은 AWS Management Console을 쓰는 거예요. 하지만 REST API, AWS Command Line Interface(AWS CLI), AWS SDK를 써도 됩니다. 다음 단계를 진행하기 전에 콘솔에 로그인하고 Amazon S3 콘솔을 https://console.aws.amazon.com/s3/ 에서 열어 주세요. 권한 거부 오류가 발생하면 대상 버킷에 버킷 정책을 추가해요. 자세한 내용은 Grant permissions for S3 Inventory and S3 analytics 문서를 참고하세요.
- Amazon S3 콘솔을 https://console.aws.amazon.com/s3/ 에서 열어요.
- 왼쪽 탐색 창에서 Buckets를 선택하고, 암호화할 객체가 들어 있는 버킷을 선택해요.
- Management 탭에서 Inventory configurations 섹션으로 이동해 Create inventory configuration을 선택해요.
- 새 인벤토리 이름을 짓고, 대상 S3 버킷 이름을 입력하고, 선택적으로 대상 접두사를 만들어 Amazon S3가 그 버킷의 객체를 할당하게 해요.
- Output format에서 CSV를 선택해요.
- (선택) Additional fields – optional 섹션에서 Encryption과 관심 있는 다른 보고서 필드를 선택해요. 첫 번째 보고서가 버킷에 더 빨리 전달되도록 보고서 전달 빈도를 Daily로 설정해요.
- Create를 선택해 구성을 저장해요.
Amazon S3가 첫 번째 보고서를 전달하는 데 최대 48시간이 걸릴 수 있어요. 첫 번째 보고서가 도착하면 다시 확인하세요. 첫 보고서를 받은 후 다음 단계로 진행해 S3 Inventory 보고서 내용을 필터링해요. 이 버킷에 더 이상 인벤토리 보고서를 받고 싶지 않으면 S3 Inventory 구성을 삭제하세요. 그렇지 않으면 Amazon S3는 일별 또는 주별 일정으로 보고서를 계속 전달해요.
인벤토리 목록은 모든 객체의 단일 시점 뷰가 아니에요. 인벤토리 목록은 버킷 항목의 롤링 스냅샷으로, 결과적 일관성(eventually consistent)을 가져요(예: 최근에 추가되거나 삭제된 객체가 목록에 없을 수 있음). S3 Inventory와 S3 Batch Operations를 함께 쓰는 것은 정적 객체나 이틀 이상 전에 만든 객체 집합을 다룰 때 가장 잘 맞아요. 더 최근 데이터를 다루려면 ListObjectsV2(GET bucket) API 작업을 사용해 객체 목록을 직접 만들어 보세요. 필요하다면 며칠 동안 또는 인벤토리 보고서가 모든 객체에 대해 원하는 상태를 보일 때까지 이 과정을 반복해요.
2단계: S3 Select로 객체 목록 필터링
S3 Inventory 보고서를 받은 후 보고서 내용을 필터링해서 S3 Bucket Keys가 활성화되지 않은 객체만 나열할 수 있어요. 버킷의 모든 객체를 S3 Bucket Keys로 암호화하고 싶다면 이 단계를 건너뛰어도 돼요. 하지만 이 시점에 S3 Inventory 보고서를 필터링하면 이전에 S3 Bucket Keys로 암호화했던 객체를 다시 암호화하는 데 드는 시간과 비용을 아낄 수 있어요.
아래 단계는 Amazon S3 Select로 필터링하는 방법을 보여주지만, Amazon Athena도 사용할 수 있어요. 어떤 도구를 쓸지 결정하려면 S3 Inventory 보고서의 manifest.json 파일을 살펴보세요. 이 파일은 그 보고서와 연결된 데이터 파일 수를 나열해요. 그 수가 크다면 Amazon Athena를 사용하세요. Athena는 여러 S3 객체에서 실행되지만 S3 Select는 한 번에 한 객체에서 작동하거든요. Amazon S3와 Athena를 함께 사용하는 방법은 Querying Amazon S3 Inventory with Amazon Athena 문서와 AWS Storage Blog 게시물 Encrypting objects with Amazon S3 Batch Operations의 "Using Athena" 를 참고하세요.
- 인벤토리 보고서에서
manifest.json파일을 열고 JSON의fileSchema섹션을 살펴봐요. 이것은 데이터에 대해 실행하는 쿼리를 알려줘요. 다음 JSON은 버전 관리가 활성화된 버킷의 CSV 형식 인벤토리에 대한manifest.json파일 예시예요. 인벤토리 보고서 구성 방법에 따라 매니페스트가 다르게 보일 수 있어요.
{
"sourceBucket": "batchoperationsdemo",
"destinationBucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket",
"version": "2021-05-22",
"creationTimestamp": "1558656000000",
"fileFormat": "CSV",
"fileSchema": "Bucket, Key, VersionId, IsLatest, IsDeleteMarker, BucketKeyStatus",
"files": [
{
"key": "demoinv/batchoperationsdemo/DemoInventory/data/009a40e4-f053-4c16-8c75-6100f8892202.csv.gz",
"size": 72691,
"MD5checksum": "c24c831717a099f0ebe4a9d1c5d3935c"
}
]
}
버킷에서 버전 관리가 활성화되지 않았거나 최신 버전에 대한 보고서를 실행하도록 선택했다면 fileSchema는 Bucket, Key, BucketKeyStatus예요. 버전 관리가 활성화되어 있다면 인벤토리 보고서 설정 방식에 따라 fileSchema에 다음이 포함될 수 있어요: Bucket, Key, VersionId, IsLatest, IsDeleteMarker, BucketKeyStatus. 그러니 쿼리를 실행할 때 열 1, 2, 3, 6에 주의하세요. S3 Batch Operations는 작업을 수행하려면 버킷, 키, 버전 ID를 입력으로 필요로 해요. 그에 더해 검색할 필드인 BucketKeyStatus도 필요하죠. VersionID 필드는 꼭 필요하지 않지만, 버전 관리되는 버킷에서 작업할 때 VersionID 필드를 지정하면 도움이 돼요. 자세한 내용은 Working with objects in a versioning-enabled bucket 문서를 참고하세요.
2. 인벤토리 보고서의 데이터 파일을 찾아요. manifest.json 객체는 files 아래에 데이터 파일을 나열해요.
3. S3 콘솔에서 데이터 파일을 찾아 선택한 후 Actions를 선택하고 Query with S3 Select를 선택해요.
4. 미리 설정된 CSV, Comma, GZIP 필드를 유지하고 Next를 선택해요.
5. 진행하기 전에 인벤토리 보고서 형식을 검토하려면 Show file preview를 선택해요.
6. SQL 표현식 필드에 참조할 열을 입력하고 Run SQL을 선택해요. 다음 표현식은 S3 Bucket Key가 구성되지 않은 모든 객체의 열 1~3을 반환해요.
select s._1, s._2, s._3 from s3object s where s._6 = 'DISABLED'
다음은 예시 결과예요.
batchoperationsdemo,0100059%7Ethumb.jpg,lsrtIxksLu0R0ZkYPL.LhgD5caTYn6vu
batchoperationsdemo,0100074%7Ethumb.jpg,sd2M60g6Fdazoi6D5kNARIE7KzUibmHR
batchoperationsdemo,0100075%7Ethumb.jpg,TLYESLnl1mXD5c4BwiOIinqFrktddkoL
batchoperationsdemo,0200147%7Ethumb.jpg,amufzfMi_fEw0Rs99rxR_HrDFlE.l3Y0
batchoperationsdemo,0301420%7Ethumb.jpg,9qGU2SEscL.C.c_sK89trmXYIwooABSh
batchoperationsdemo,0401524%7Ethumb.jpg,ORnEWNuB1QhHrrYAGFsZhbyvEYJ3DUor
batchoperationsdemo,200907200065HQ%7Ethumb.jpg,d8LgvIVjbDR5mUVwW6pu9ahTfReyn5V4
batchoperationsdemo,200907200076HQ%7Ethumb.jpg,XUT25d7.gK40u_GmnupdaZg3BVx2jN40
batchoperationsdemo,201103190002HQ%7Ethumb.jpg,z.2sVRh0myqVi0BuIrngWlsRPQdb7qOS
- 결과를 다운로드해서 CSV 형식으로 저장하고, S3 Batch Operations 작업의 객체 목록으로 Amazon S3에 업로드해요.
- 매니페스트 파일이 여러 개라면 그것들에도 Query with S3 Select를 실행해요. 결과 크기에 따라 목록을 결합해 단일 S3 Batch Operations 작업을 실행하거나, 각 목록을 별도 작업으로 실행할 수 있어요. 실행할 작업 수를 결정할 때는 각 S3 Batch Operations 작업을 실행하는 비용을 고려하세요.
3단계: S3 Batch Operations 작업 설정 및 실행
이제 필터링된 S3 객체의 CSV 목록이 있으니, S3 Bucket Keys를 활성화해 객체를 암호화하는 S3 Batch Operations 작업을 시작할 수 있어요.
작업(job)은 제공된 객체 목록(매니페스트), 수행되는 작업, 지정된 매개변수를 통칭해요. 이 객체 집합을 S3 Bucket Keys로 암호화하는 가장 쉬운 방법은 Copy 작업을 사용하고 매니페스트에 나열된 객체와 같은 대상 접두사를 지정하는 거예요. 버전 관리되지 않는 버킷에서는 이 작업이 기존 객체를 덮어써요. 버전 관리가 켜진 버킷에서는 객체의 더 새롭고 암호화된 버전을 만들어요.
객체를 복사하면서 Amazon S3가 SSE-KMS 암호화로 객체를 암호화하도록 지정해요. 이 작업은 객체를 복사하므로 완료 시 원래 Amazon S3에 추가한 시점과 관계없이 모든 객체가 갱신된 생성 날짜를 보여줘요. 또한 객체 태그나 스토리지 클래스 같은 객체 집합의 다른 속성도 S3 Batch Operations 작업의 일부로 지정해요.
- IAM 정책 설정
- Batch Operations IAM 역할 설정
- 기존 버킷에 S3 Bucket Keys 활성화
- Batch Operations 작업 만들기
- Batch Operations 작업 실행
IAM 정책 설정
- IAM 콘솔을 https://console.aws.amazon.com/iam/ 에서 열어요.
- 왼쪽 탐색 창에서 Policy를 선택하고 Create policy를 선택해요.
- JSON 탭을 선택해요. Edit policy를 선택하고 다음 코드 블록에 나타나는 예제 IAM 정책을 추가해요. 정책 예제를 IAM 콘솔에 복사한 후 다음 항목을 바꾸세요.
amzn-s3-demo-source-bucket을 객체를 복사해 올 소스 버킷 이름으로,amzn-s3-demo-destination-bucket을 객체를 복사해 넣을 대상 버킷 이름으로,amzn-s3-demo-manifest-bucket/manifest-key를 매니페스트 객체 이름으로,amzn-s3-demo-completion-report-bucket을 완료 보고서를 저장할 버킷 이름으로 바꾸세요.
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "CopyObjectsToEncrypt",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectTagging",
"s3:PutObjectAcl",
"s3:PutObjectVersionTagging",
"s3:PutObjectVersionAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectTagging",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging",
"s3:GetObjectAnnotation",
"s3:GetObjectVersionAnnotation"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-source-bucket/*",
"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
]
},
{
"Sid": "ReadManifest",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/manifest-key"
},
{
"Sid": "WriteReport",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
}
]
}
- Next: Tags를 선택해요.
- 원하는 태그를 추가하고(선택), Next: Review를 선택해요.
- 정책 이름을 추가하고, 선택적으로 설명을 추가한 다음 Create policy를 선택해요.
- Review policy를 선택하고 Save changes를 선택해요.
- S3 Batch Operations 정책이 완성되면 콘솔이 IAM Policies 페이지로 돌아가요. 정책 이름으로 필터링하고, 정책 이름 왼쪽의 버튼을 선택한 다음 Policy actions를 선택하고 Attach를 선택해요. 새로 만든 정책을 IAM 역할에 연결하려면 계정에서 적절한 사용자, 그룹, 역할을 선택하고 Attach policy를 선택해요. 그러면 IAM 콘솔로 돌아갑니다.
Batch Operations IAM 역할 설정
- IAM 콘솔의 탐색 창에서 Roles를 선택하고 Create role을 선택해요.
- AWS service, S3, S3 Batch Operations를 선택해요. 그런 다음 Next: Permissions를 선택해요.
- 방금 만든 IAM 정책 이름을 입력하기 시작해요. 정책 이름 옆의 확인란을 선택하고 Next: Tags를 선택해요.
- (선택) 태그를 추가하거나 이 연습에서는 키와 값 필드를 비워 둬요. Next: Review를 선택해요.
- 역할 이름을 입력하고 기본 설명을 수락하거나 직접 추가해요. Create role을 선택해요.
- 작업을 만드는 사용자에게 다음 예제의 권한이 있는지 확인해요.
account-id를 AWS 계정 ID로,IAM-role-name을 나중에 Batch Operations 작업 생성 단계에서 만들 IAM 역할에 적용할 이름으로 바꾸세요. 자세한 내용은 Granting permissions for Batch Operations 문서를 참고하세요.
{
"Sid": "AddIamPermissions",
"Effect": "Allow",
"Action": [
"iam:GetRole",
"iam:PassRole"
],
"Resource": "arn:aws:iam::account-id:role/IAM-role-name"
}
기존 버킷에 S3 Bucket Keys 활성화
- Amazon S3 콘솔을 https://console.aws.amazon.com/s3/ 에서 열어요.
- Buckets 목록에서 S3 Bucket Key를 켤 버킷을 선택해요.
- Properties를 선택해요.
- Default encryption 아래에서 Edit을 선택해요.
- Encryption type 아래에서 Amazon S3 관리형 키(SSE-S3)와 AWS Key Management Service 키(SSE-KMS) 중에 선택할 수 있어요.
- AWS Key Management Service key(SSE-KMS) 를 선택했다면, AWS KMS key 아래에서 다음 옵션 중 하나로 AWS KMS 키를 지정할 수 있어요. 사용 가능한 KMS 키 목록에서 선택하려면 Choose from your AWS KMS keys를 선택하고, 사용 가능한 키 목록에서 버킷과 같은 리전의 대칭 암호화 KMS 키를 선택해요. AWS 관리형 키(
aws/s3)와 고객 관리형 키가 모두 목록에 나타나요. KMS 키 ARN을 입력하려면 Enter AWS KMS key ARN을 선택하고 나타난 필드에 KMS 키 ARN을 입력해요. AWS KMS 콘솔에서 새 고객 관리형 키를 만들려면 Create a KMS key를 선택해요. - Bucket Key 아래에서 Enable을 선택한 다음 Save changes를 선택해요.
이제 버킷 수준에서 S3 Bucket Key가 활성화되었으니, 이 버킷에 업로드·수정·복사되는 객체는 기본적으로 이 암호화 구성을 상속받아요. 여기에는 Amazon S3 Batch Operations로 복사된 객체도 포함돼요.
Batch Operations 작업 만들기
- Amazon S3 콘솔을 https://console.aws.amazon.com/s3/ 에서 열어요.
- 탐색 창에서 Batch Operations를 선택하고 Create Job을 선택해요.
- 객체를 저장한 리전을 선택하고 매니페스트 유형으로 CSV를 선택해요.
- 앞서 S3 Select(또는 Athena) 결과에서 만든 CSV 매니페스트 파일의 경로를 입력하거나 찾아가요. 매니페스트에 버전 ID가 포함되어 있으면 해당 상자를 선택해요. Next를 선택해요.
- Copy 작업을 선택하고 복사 대상 버킷을 선택해요. 서버 측 암호화를 비활성화한 채로 둘 수 있어요. 대상 버킷에 S3 Bucket Keys가 활성화되어 있는 한 복사 작업이 대상 버킷에서 S3 Bucket Keys를 적용해요.
- (선택) 스토리지 클래스와 기타 매개변수를 원하는 대로 선택해요. 이 단계에서 지정한 매개변수는 매니페스트에 나열된 객체에 수행되는 모든 작업에 적용돼요. Next를 선택해요.
- 서버 측 암호화를 구성하려면 다음 단계를 따라요. Server-side encryption 아래에서 다음 중 하나를 선택해요.
- Amazon S3에 저장할 때 객체의 기본 서버 측 암호화에 버킷 설정을 유지하려면 Do not specify an encryption key를 선택해요. 대상 버킷에 S3 Bucket Keys가 활성화되어 있는 한 복사 작업은 대상 버킷에 S3 Bucket Key를 적용해요.
참고 지정된 대상의 버킷 정책이 객체를 Amazon S3에 저장하기 전에 암호화하도록 요구한다면 암호화 키를 지정해야 해요. 그렇지 않으면 대상으로 객체를 복사하지 못해요.
- 객체를 Amazon S3에 저장하기 전에 암호화하려면 Specify an encryption key를 선택해요.
- Encryption settings 아래에서 Specify an encryption key를 선택했다면 Use destination bucket settings for default encryption 또는 Override destination bucket settings for default encryption 중 하나를 선택해야 해요.
- Override destination bucket settings for default encryption을 선택했다면 다음 암호화 설정을 구성해야 해요. Encryption type 아래에서 Amazon S3 관리형 키(SSE-S3) 또는 AWS Key Management Service 키(SSE-KMS)를 선택해야 해요. SSE-S3는 가장 강력한 블록 암호 중 하나인 256비트 AES(Advanced Encryption Standard)-256으로 각 객체를 암호화해요. SSE-KMS는 키에 대한 더 많은 제어를 제공해요. 자세한 내용은 Using server-side encryption with Amazon S3 managed keys (SSE-S3) 및 Using server-side encryption with AWS KMS keys (SSE-KMS) 문서를 참고하세요.
- AWS Key Management Service key(SSE-KMS) 를 선택했다면 AWS KMS key 아래에서 다음 옵션 중 하나로 AWS KMS 키를 지정할 수 있어요. 사용 가능한 KMS 키 목록에서 선택하려면 Choose from your AWS KMS keys를 선택하고 버킷과 같은 리전의 대칭 암호화 KMS 키를 선택해요. AWS 관리형 키(
aws/s3)와 고객 관리형 키가 모두 목록에 나타나요. KMS 키 ARN을 입력하려면 Enter AWS KMS key ARN을 선택하고 나타난 필드에 KMS 키 ARN을 입력해요. AWS KMS 콘솔에서 새 고객 관리형 키를 만들려면 Create a KMS key를 선택해요. Bucket Key 아래에서 Enable을 선택해요. 복사 작업이 대상 버킷에 S3 Bucket Key를 적용해요.
- Amazon S3에 저장할 때 객체의 기본 서버 측 암호화에 버킷 설정을 유지하려면 Do not specify an encryption key를 선택해요. 대상 버킷에 S3 Bucket Keys가 활성화되어 있는 한 복사 작업은 대상 버킷에 S3 Bucket Key를 적용해요.
- 작업에 설명을 주거나(기본값 유지) 설명하고, 우선순위 수준을 설정하고, 보고서 유형을 선택하고, Path to completion report destination을 지정해요.
- Permissions 섹션에서 이전에 정의한 Batch Operations IAM 역할을 선택해야 해요. Next를 선택해요.
- Review 아래에서 설정을 확인해요. 변경하고 싶다면 Previous를 선택해요. Batch Operations 설정을 확인한 후 Create job을 선택해요. 자세한 내용은 Creating an S3 Batch Operations job 문서를 참고하세요.
Batch Operations 작업 실행
설정 마법사는 자동으로 Amazon S3 콘솔의 S3 Batch Operations 섹션으로 돌아가요. S3가 과정을 시작하면서 새 작업은 New 상태에서 Preparing 상태로 전환돼요. Preparing 상태 동안 S3는 작업의 매니페스트를 읽고 오류를 검사하며 객체 수를 계산해요.
- Amazon S3 콘솔에서 새로 고침 버튼을 선택해 진행 상황을 확인해요. 매니페스트 크기에 따라 읽는 데 몇 분 또는 몇 시간이 걸릴 수 있어요.
- S3가 작업의 매니페스트 읽기를 마치면 작업이 Awaiting your confirmation 상태로 이동해요. 작업 ID 왼쪽의 옵션 버튼을 선택하고 Run job을 선택해요.
- 작업 설정을 확인하고 Run job을 선택해요. 작업이 실행되기 시작하면 새로 고침 버튼을 선택해 콘솔 대시보드 보기나 특정 작업 선택으로 진행 상황을 확인할 수 있어요.
- 작업이 완료되면 Successful 및 Failed 객체 수를 확인해 모든 것이 예상대로 수행됐는지 확인해요. 작업 보고서를 활성화했다면 작업 보고서에서 실패한 작업의 정확한 원인을 확인해요. 이 단계는 AWS CLI, AWS SDK, Amazon S3 REST API로도 수행할 수 있어요. 작업 상태 및 완료 보고서 추적에 대한 자세한 내용은 Tracking job status and completion reports 문서를 참고하세요.