디렉터리 버킷에 Batch Operations 사용하기
디렉터리 버킷에 Batch Operations 사용하기 (Using Batch Operations with directory buckets)
Amazon S3 Batch Operations를 사용하면 S3 버킷에 저장된 객체에 대해 일괄 작업을 수행할 수 있어요. S3 Batch Operations에 대한 자세한 내용은 Amazon S3 객체에 대한 대규모 일괄 작업 수행 을 참고하세요.
아래 주제들은 디렉터리 버킷의 S3 Express One Zone 스토리지 클래스에 저장된 객체에 대해 일괄 작업을 수행하는 방법을 다뤄요.
출처: 문서
본문
디렉터리 버킷에 Batch Operations 사용하기
디렉터리 버킷에 저장된 객체에 대해서는 Copy(복사) 작업과 Invoke AWS Lambda function(AWS Lambda 함수 호출) 작업을 수행할 수 있어요. Copy로는 같은 유형의 버킷 사이에서 객체를 복사할 수 있어요(예: 디렉터리 버킷에서 디렉터리 버킷으로). 일반 용도 버킷과 디렉터리 버킷 사이에서도 복사할 수 있어요. Invoke AWS Lambda function으로는 정의한 코드로 디렉터리 버킷의 객체에 작업을 수행하는 Lambda 함수를 사용할 수 있어요.
객체 복사하기
같은 유형의 버킷 사이 또는 디렉터리 버킷과 일반 용도 버킷 사이에서 복사할 수 있어요. 디렉터리 버킷으로 복사할 때는 이 버킷 유형에 맞는 올바른 Amazon Resource Name(ARN) 형식을 사용해야 해요. 디렉터리 버킷의 ARN 형식은 arn:aws:s3express:region:account-id:bucket/bucket-base-name--x-s3 이에요.
참고
원본이나 대상 버킷이 AWS Local Zone에 있으면 서로 다른 AWS 리전 간 객체 복사는 지원되지 않아요. 원본과 대상 버킷은 같은 상위 AWS 리전을 가져야 해요. 원본과 대상 버킷의 버킷 위치 유형(Availability Zone 또는 Local Zone)은 달라도 돼요.
S3 콘솔의 Import(가져오기) 작업으로도 디렉터리 버킷에 데이터를 채울 수 있어요. 가져오기는 일반 용도 버킷에서 디렉터리 버킷으로 객체를 복사하는 Batch Operations 작업을 만드는 간편한 방법이에요. 일반 용도 버킷에서 디렉터리 버킷으로 가져오는 복사 작업의 경우 S3가 매니페스트(manifest)를 자동으로 생성해요. 자세한 내용은 디렉터리 버킷으로 객체 가져오기 와 매니페스트 지정 을 참고하세요.
Lambda 함수 호출 (LambdaInvoke)
Batch Operations로 디렉터리 버킷에 작용하는 Lambda 함수를 호출할 때는 특별한 요구 사항이 있어요. 예를 들어 Lambda 요청을 v2 JSON 호출 스키마로 구성하고, 작업을 만들 때 InvocationSchemaVersion 2.0을 지정해야 해요. 자세한 내용은 AWS Lambda 함수 호출 을 참고하세요.
주요 차이점
S3 Express One Zone 스토리지 클래스의 디렉터리 버킷에 저장된 객체에 Batch Operations로 일괄 작업을 수행할 때의 주요 차이점은 다음과 같아요.
- 디렉터리 버킷에서는 SSE-S3와 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)가 지원돼요. 디렉터리 버킷(원본 또는 대상)에 대해 고객 제공 키를 사용한 서버 측 암호화(SSE-C)를 지정하는
CopyObject요청을 보내면 HTTP 400(Bad Request) 오류가 반환돼요. 버킷의 기본 암호화가 원하는 암호화 구성으로 설정되어 있도록 하고,CreateSession요청이나PUT object요청에서 버킷 기본 암호화를 덮어쓰지 않는 것을 권장해요. 그러면 새 객체가 원하는 암호화 설정으로 자동 암호화돼요. 디렉터리 버킷의 암호화 덮어쓰기 동작과 SSE-KMS로 새 객체 복사본을 암호화하는 방법에 대한 자세한 내용은 새 객체 업로드에 AWS KMS를 사용한 서버 측 암호화 지정 을 참고하세요. Batch Operations의 Copy 작업으로 SSE-KMS 암호화 객체를 일반 용도 버킷과 디렉터리 버킷 사이(또는 디렉터리 버킷 사이)에서 복사할 때는 S3 Bucket Keys가 지원되지 않아요. 이 경우 Amazon S3는 KMS 암호화 객체에 대한 복사 요청이 있을 때마다 AWS KMS에 호출해요. 디렉터리 버킷에서 SSE-KMS를 사용하는 방법에 대한 자세한 내용은 디렉터리 버킷의 기본 암호화 설정·모니터링 과 디렉터리 버킷에서 AWS KMS 키(SSE-KMS)를 사용한 서버 측 암호화 를 참고하세요. - 디렉터리 버킷의 객체에는 태그를 달 수 없어요. 빈 태그 집합만 지정할 수 있어요. 기본적으로 Batch Operations는 태그를 복사해요. 일반 용도 버킷과 디렉터리 버킷 사이에서 태그가 있는 객체를 복사하면 501(Not Implemented) 응답을 받아요.
- S3 Express One Zone은 업로드나 다운로드 중 데이터를 검증하는 데 사용할 체크섬 알고리즘을 선택할 수 있게 해줘요. 다음 Secure Hash Algorithms(SHA) 또는 Cyclic Redundancy Check(CRC) 데이터 무결성 검사 알고리즘 중 하나를 선택할 수 있어요: CRC32, CRC32, SHA-1, SHA-256. MD5 기반 체크섬은 S3 Express One Zone 스토리지 클래스에서 지원되지 않아요.
- 기본적으로 모든 Amazon S3 버킷은 S3 Object Ownership 설정을 bucket owner enforced로 지정하고 액세스 제어 목록(ACL)을 비활성화해요. 디렉터리 버킷에서는 이 설정을 수정할 수 없어요. 일반 용도 버킷에서 디렉터리 버킷으로 객체를 복사할 수는 있지만, 디렉터리 버킷으로(에서) 복사할 때 기본 ACL을 덮어쓸 수는 없어요.
- 매니페스트를 어떻게 지정하든, 그 목록 자체는 일반 용도 버킷에 저장해야 해요. Batch Operations는 디렉터리 버킷에서 기존 매니페스트를 가져오거나(생성된 매니페스트를 디렉터리 버킷에 저장)할 수 없어요. 다만 매니페스트에 설명된 객체는 디렉터리 버킷에 저장될 수 있어요.
- 디렉터리 버킷의 S3 Inventory 보고서를 매니페스트의 원본으로 사용할 수 있어요(인벤토리 보고서가 일반 용도 버킷에 저장되어 있다면).
ListObjectsV2API 작업으로 디렉터리 버킷 내 객체를 나열한 뒤 그 목록을 CSV 파일에 넣어 디렉터리 버킷의 객체용 매니페스트 파일을 만들 수도 있어요.
접근 권한 부여
복사 작업을 수행하려면 다음 권한이 있어야 해요.
- 한 디렉터리 버킷에서 다른 디렉터리 버킷으로 객체를 복사하려면
s3express:CreateSession권한이 있어야 해요. - 디렉터리 버킷에서 일반 용도 버킷으로 객체를 복사하려면
s3express:CreateSession권한과, 객체 복사본을 대상 버킷에 쓰기 위한s3:PutObject권한이 있어야 해요. - 일반 용도 버킷에서 디렉터리 버킷으로 객체를 복사하려면
s3express:CreateSession권한과, 복사되는 원본 객체를 읽기 위한s3:GetObject권한이 있어야 해요. 자세한 내용은 Amazon Simple Storage Service API Reference의 CopyObject 를 참고하세요. - Lambda 함수를 호출하려면 Lambda 함수를 기준으로 리소스에 권한을 부여해야 해요. 필요한 권한을 확인하려면 해당 API 작업을 확인해 보세요.