S3 Batch Operations 작업 만들기

S3 Batch Operations 작업 만들기 (Creating an S3 Batch Operations job)

Amazon S3 Batch Operations를 사용하면 특정 Amazon S3 객체 목록에 대해 대규모 일괄 작업을 수행할 수 있어요. 이 절에서는 S3 Batch Operations 작업을 만들 때 필요한 정보와 CreateJob 요청의 결과를 설명하고, Amazon S3 콘솔·AWS CLI·AWS SDK for Java로 Batch Operations 작업을 만드는 방법을 안내해요.

출처: 문서

본문

S3 Batch Operations 작업을 만들 때 모든 작업 또는 실패한 작업에 대해서만 완료 보고서를 요청할 수 있어요. 최소한 하나의 작업이 성공적으로 호출된 경우, S3 Batch Operations는 완료되었거나 실패했거나 취소된 작업에 대한 보고서를 생성해요. 자세한 내용은 예제: S3 Batch Operations 완료 보고서를 참고하세요.

다음 동영상은 Amazon S3 콘솔로 Batch Operations 작업을 만드는 방법을 간단히 보여줘요.

항목

  • Batch Operations 작업 요청 요소
  • 매니페스트 지정
  • 객체 목록을 자동으로 생성해 매니페스트 파일로 저장
  • 매니페스트 파일 만들기
  • 기존 매니페스트 사용
  • 작업 만들기
  • 작업 응답

Batch Operations 작업 요청 요소

S3 Batch Operations 작업을 만들려면 다음 정보를 제공해야 해요.

  • 작업(Operation) — S3 Batch Operations가 매니페스트의 객체에 대해 실행할 작업을 지정해요. 각 작업 유형은 해당 작업에 특정한 파라미터를 받아들여요. Batch Operations를 사용하면 각 객체에 하나씩 작업을 수행한 것과 같은 결과로 작업을 대량으로 수행할 수 있어요.

  • 매니페스트(Manifest) — 매니페스트는 Amazon S3가 작업을 수행하려는 객체 키를 담고 있는 Amazon S3 객체 목록이에요. Batch Operations 작업의 매니페스트를 지정하는 방법은 다음과 같아요.

    • Batch Operations가 지정한 메타데이터를 기반으로 객체 목록을 생성하도록 지시할 수 있어요. 이 목록을 매니페스트 파일로 저장하고 작업을 만들 때 사용할 수 있어요. 이 옵션은 Amazon S3 콘솔, AWS CLI, AWS SDK 또는 Amazon S3 REST API로 만드는 모든 작업 유형에서 사용할 수 있어요.
    • 기존 복제 구성을 기반으로 객체 목록을 자동으로 생성할 수 있어요. 이 목록을 매니페스트 파일로 저장해 이후 작업에 다시 사용할 수 있어요.
    • 새 매니페스트 파일을 수동으로 만들 수 있어요.
    • 기존 매니페스트를 사용할 수 있어요.

    참고 작업할 객체를 어떻게 지정하든 매니페스트 자체는 범용 버킷(general purpose bucket)에 저장해야 해요. Batch Operations는 디렉터리 버킷에서 기존 매니페스트를 가져오거나 생성된 객체 목록을 매니페스트로 디렉터리 버킷에 저장할 수 없어요. 그러나 매니페스트에 설명된 객체 자체는 디렉터리 버킷에 저장될 수 있어요. 자세한 내용은 디렉터리 버킷을 참고하세요.

    매니페스트의 객체가 버전 관리되는 버킷에 있다면 객체의 버전 ID를 지정하면 Batch Operations가 특정 버전에 대해 작업을 수행해요. 버전 ID를 지정하지 않으면 Batch Operations는 객체의 최신 버전에 대해 작업을 수행해요. 매니페스트에 버전 ID 필드가 포함되어 있다면 매니페스트의 모든 객체에 버전 ID를 제공해야 해요. 자세한 내용은 매니페스트 지정을 참고하세요.

  • 우선순위(Priority) — 작업 우선순위를 사용해 이 작업이 계정에서 실행 중인 다른 작업과 비교해 가지는 상대적 우선순위를 나타내요. 숫자가 높을수록 우선순위가 높아요. 작업 우선순위는 같은 계정과 리전의 다른 작업에 설정된 우선순위와 비교해서만 의미가 있어요. 원하는 번호 체계를 사용할 수 있어요. 예를 들어 모든 복원(RestoreObject) 작업은 우선순위 1로, 모든 복사(CopyObject) 작업은 우선순위 2로, 모든 접근 제어 목록 교체(PutObjectAcl) 작업은 우선순위 3으로 지정할 수 있죠.

    S3 Batch Operations는 우선순위 번호에 따라 작업의 우선순위를 정하지만, 엄격한 순서는 보장되지 않아요. 따라서 우선순위를 사용해 어떤 작업이 다른 작업보다 먼저 시작하거나 끝나도록 보장하면 안 돼요. 엄격한 순서가 반드시 필요하다면 한 작업이 끝날 때까지 기다렸다가 다음 작업을 시작해요.

  • RoleArn — 작업을 실행할 AWS Identity and Access Management(IAM) 역할을 지정해요. 사용하는 IAM 역할은 작업에 지정된 작업을 수행할 충분한 권한이 있어야 해요. 예를 들어 CopyObject 작업을 실행하려면 IAM 역할이 소스 버킷에 대한 s3:GetObject 권한과 대상 버킷에 대한 s3:PutObject 권한이 있어야 해요. 역할은 매니페스트를 읽고 완료 보고서를 쓰기 위한 권한도 필요해요.

    IAM 역할은 기존 역할일 수 있어요. 또는 Amazon S3 콘솔로 작업을 만드는 경우 Amazon S3가 자동으로 만들어 주는 IAM 역할일 수도 있어요. 자세한 내용은 Batch Operations 권한 부여를 참고하세요. IAM 역할에 대한 자세한 내용은 IAM 사용자 안내서의 IAM 역할을 참고하세요. Amazon S3 권한에 대한 자세한 내용은 Amazon S3 작업 정책을 참고하세요.

    참고 디렉터리 버킷에서 작업을 수행하는 Batch Operations 작업에는 특정 권한이 필요해요. 자세한 내용은 S3 Express One Zone용 AWS Identity and Access Management(IAM)을 참고하세요.

  • 보고서(Report) — S3 Batch Operations가 완료 보고서를 생성할지 지정해요. 완료 보고서를 요청하면 이 요소에 보고서의 파라미터도 제공해야 해요. 다음 정보가 필요해요.

    • 보고서를 저장할 버킷

      참고 보고서는 범용 버킷에 저장해야 해요. Batch Operations는 디렉터리 버킷에 보고서를 저장할 수 없어요. 자세한 내용은 디렉터리 버킷을 참고하세요.

    • 보고서의 형식

    • 보고서에 모든 작업의 세부 정보를 포함할지 실패한 작업만 포함할지 여부

    • 선택적 접두사 문자열

    CreateJob.Report.ExpectedBucketOwner 필드가 제공되면 완료 보고서 버킷 소유자가 일치해야 해요. 일치하지 않으면 작업이 실패해요.

    참고 완료 보고서는 항상 Amazon S3 관리 키(SSE-S3)를 사용한 서버 측 암호화로 암호화돼요.

  • 태그(선택 사항) — 태그를 추가해 S3 Batch Operations 작업에 레이블을 붙이고 접근을 제어할 수 있어요. 태그를 사용해 Batch Operations 작업의 책임자를 식별하거나, 사용자가 Batch Operations 작업과 상호 작용하는 방식을 제어할 수 있어요. 작업 태그의 존재는 사용자가 작업을 취소하거나, 확인 상태의 작업을 활성화하거나, 작업의 우선순위 수준을 변경하는 능력을 부여하거나 제한할 수 있어요. 예를 들어 작업이 "Department=Finance" 태그로 만들어지는 경우에만 사용자에게 CreateJob 작업 호출 권한을 부여할 수 있어요.

    태그가 연결된 작업을 만들 수 있고, 작업을 만든 뒤에도 태그를 추가할 수 있어요. 자세한 내용은 태그로 작업 접근 제어 및 레이블 지정을 참고하세요.

  • 설명(선택 사항) — 작업을 추적하고 모니터링하기 위해 최대 256자의 설명을 제공할 수도 있어요. Amazon S3는 작업에 대한 정보를 반환하거나 Amazon S3 콘솔에 작업 세부 정보를 표시할 때마다 이 설명을 포함해요. 그러면 지정한 설명에 따라 작업을 쉽게 정렬하고 필터링할 수 있어요. 설명은 고유할 필요가 없으므로 설명을 범주로 사용(예: "Weekly Log Copy Jobs")해 비슷한 작업 그룹을 추적할 수 있어요.

매니페스트 지정

매니페스트는 Amazon S3가 작업을 수행하려는 객체 키를 담고 있는 Amazon S3 객체 목록이에요. Batch Operations 작업의 매니페스트를 지정하는 방법은 다음과 같아요.

  • Batch Operations가 지정한 메타데이터를 기반으로 객체 목록을 생성하도록 지시해요. 이 목록을 매니페스트로 저장하고 작업을 만들 때 사용할 수 있어요. 이 옵션은 Amazon S3 콘솔, AWS CLI, AWS SDK 또는 Amazon S3 REST API로 만드는 모든 작업 유형에서 사용할 수 있어요.
  • 기존 복제 구성을 기반으로 객체 목록을 자동으로 생성해요. 이 목록을 매니페스트로 저장하고 이후 작업에 다시 사용할 수 있어요.
  • 새 매니페스트 파일을 수동으로 만들어요.
  • 기존 매니페스트를 사용해요.

참고 Amazon S3 Batch Operations는 교차 리전 객체 목록 생성을 지원하지 않아요. 작업할 객체를 어떻게 지정하든 매니페스트 자체는 범용 버킷에 저장해야 해요. Batch Operations는 디렉터리 버킷에서 기존 매니페스트를 가져오거나 생성된 객체 목록을 매니페스트로 디렉터리 버킷에 저장할 수 없어요. 그러나 매니페스트에 설명된 객체 자체는 디렉터리 버킷에 저장될 수 있어요. 자세한 내용은 디렉터리 버킷을 참고하세요.

객체 목록을 자동으로 생성해 매니페스트 파일로 저장

지정한 메타데이터를 기반으로 Amazon S3가 객체 목록을 자동으로 생성하도록 지시할 수 있어요. 이 목록을 매니페스트로 저장하고 작업을 만들 때 사용할 수 있어요. 이 옵션은 Amazon S3 콘솔, AWS CLI, AWS SDK 또는 Amazon S3 REST API로 만드는 모든 작업 유형에서 사용할 수 있어요.

객체 목록을 자동으로 생성해 매니페스트 파일로 저장하려면 작업 생성 요청의 일부로 다음 요소를 지정해요.

  • 소스 객체가 들어 있는 버킷에 대한 정보(버킷 소유자와 Amazon 리소스 이름(ARN) 포함)
  • 매니페스트 출력에 대한 정보(매니페스트 파일 생성 플래그, 출력 버킷 소유자, ARN, 접두사, 파일 형식, 암호화 유형 포함)
  • 객체를 생성 날짜, 키 이름, 크기, 암호화 유형, KMS 키 ARN, 버킷 키, 스토리지 클래스로 필터링하는 선택적 기준. 복제 작업의 경우 태그로 객체를 필터링할 수도 있어요.

객체 필터 기준

자동으로 생성되는 객체 목록에 포함될 객체 목록을 필터링하기 위해 다음 기준을 지정할 수 있어요. 자세한 내용은 Amazon S3 API Reference의 JobManifestGeneratorFilter를 참고하세요.

  • CreatedAfter — 제공되면 생성된 매니페스트는 이 시간 이후에 생성된 소스 버킷 객체만 포함해요.

  • CreatedBefore — 제공되면 생성된 매니페스트는 이 시간 이전에 생성된 소스 버킷 객체만 포함해요.

  • EligibleForReplication — 제공되면 생성된 매니페스트는 소스 버킷의 복제 구성에 따라 복제 자격이 있는 객체만 포함해요.

  • KeyNameConstraint — 제공되면 생성된 매니페스트는 객체 키가 MatchAnySubstring, MatchAnyPrefix, MatchAnySuffix에 지정된 문자열 제약 조건과 일치하는 소스 버킷 객체만 포함해요.

    • MatchAnySubstring — 제공되면 지정된 문자열이 객체 키 문자열의 어디에나 나타나면 생성된 매니페스트에 객체를 포함해요.
    • MatchAnyPrefix — 제공되면 지정된 문자열이 객체 키 문자열의 시작 부분에 나타나면 생성된 매니페스트에 객체를 포함해요.
    • MatchAnySuffix — 제공되면 지정된 문자열이 객체 키 문자열의 끝 부분에 나타나면 생성된 매니페스트에 객체를 포함해요.
  • MatchAnyObjectEncryption — 제공되면 매니페스트 파일로 저장된 생성된 객체 목록은 표시된 서버 측 암호화 유형(SSE-S3, SSE-KMS, DSSE-KMS, SSE-C 또는 NOT-SSE)이 있는 소스 버킷 객체만 포함해요. SSE-KMS 또는 DSSE-KMS를 선택하면 특정 KMS 키 ARN을 지정해 결과를 추가로 필터링할 수 있어요. SSE-KMS를 선택하면 Bucket Key 활성화 상태로 결과를 추가로 필터링할 수도 있어요.

    참고 KmsKeyArn 필터를 사용할 때 매니페스트 생성 성능을 개선하려면 MatchAnyPrefix, CreatedAfter, MatchAnyStorageClass 같은 다른 객체 메타데이터 필터와 함께 필터를 사용해요.

  • MatchAnyStorageClass — 제공되면 생성된 매니페스트는 지정된 스토리지 클래스로 저장된 소스 버킷 객체만 포함해요.

  • ObjectReplicationStatuses — 제공되면 생성된 매니페스트는 지정된 복제 상태 중 하나를 가진 소스 버킷 객체만 포함해요.

  • ObjectSizeGreaterThanBytes — 제공되면 생성된 매니페스트는 파일 크기가 지정된 바이트 수보다 큰 소스 버킷 객체만 포함해요.

  • ObjectSizeLessThanBytes — 제공되면 생성된 매니페스트는 파일 크기가 지정된 바이트 수보다 작은 소스 버킷 객체만 포함해요.

참고 자동으로 생성된 객체 목록을 매니페스트로 저장한 대부분의 작업은 복제할 수 없어요. 일괄 복제 작업은 KeyNameConstraint, MatchAnyStorageClass, ObjectSizeGreaterThanBytes 또는 ObjectSizeLessThanBytes 매니페스트 필터 기준을 사용하는 경우를 제외하고는 복제할 수 있어요.

매니페스트 기준을 지정하는 구문은 작업을 만드는 방법에 따라 달라져요. 예제는 작업 만들기를 참고하세요.

매니페스트 파일 만들기

매니페스트 파일을 수동으로 만들려면 매니페스트 객체 키, ETag(엔터티 태그), 선택적 버전 ID를 CSV 형식 목록으로 지정해요. 매니페스트의 내용은 URL로 인코딩되어야 해요.

기본적으로 Amazon S3는 Amazon S3 버킷에 업로드되는 매니페스트를 Amazon S3 관리 키(SSE-S3)로 자동 암호화해요. 고객 제공 키로 서버 측 암호화(SSE-C)를 사용하는 매니페스트는 지원되지 않아요. AWS Key Management Service(AWS KMS) 키로 서버 측 암호화(SSE-KMS)를 사용하는 매니페스트는 CSV 형식 Inventory 보고서를 사용하는 경우에만 지원돼요. AWS KMS를 사용한 수동 생성 매니페스트는 지원되지 않아요.

매니페스트에는 각 객체의 버킷 이름, 객체 키, 그리고 선택적으로 객체 버전이 포함되어야 해요. 매니페스트의 다른 필드는 S3 Batch Operations에서 사용되지 않아요.

참고 매니페스트의 객체가 버전 관리되는 버킷에 있다면 객체의 버전 ID를 지정하면 Batch Operations가 특정 버전에 대해 작업을 수행해요. 버전 ID를 지정하지 않으면 Batch Operations는 객체의 최신 버전에 대해 작업을 수행해요. 매니페스트에 버전 ID 필드가 포함되어 있다면 매니페스트의 모든 객체에 버전 ID를 제공해야 해요.

다음은 버전 ID가 없는 CSV 형식의 매니페스트 예시예요.

amzn-s3-demo-bucket1,objectkey1
amzn-s3-demo-bucket1,objectkey2
amzn-s3-demo-bucket1,objectkey3
amzn-s3-demo-bucket1,photos/jpgs/objectkey4
amzn-s3-demo-bucket1,photos/jpgs/newjersey/objectkey5
amzn-s3-demo-bucket1,object%20key%20with%20spaces

다음은 버전 ID가 포함된 CSV 형식의 매니페스트 예시예요.

amzn-s3-demo-bucket1,objectkey1,PZ9ibn9D5lP6p298B7S9_ceqx1n5EJ0p
amzn-s3-demo-bucket1,objectkey2,YY_ouuAJByNW1LRBfFMfxMge7XQWxMBF
amzn-s3-demo-bucket1,objectkey3,jbo9_jhdPEyB4RrmOxWS0kU0EoNrU_oI
amzn-s3-demo-bucket1,photos/jpgs/objectkey4,6EqlikJJxLTsHsnbZbSRffn24_eh5Ny4
amzn-s3-demo-bucket1,photos/jpgs/newjersey/objectkey5,imHf3FAiRsvBW_EHB8GOu.NHunHO1gVs
amzn-s3-demo-bucket1,object%20key%20with%20spaces,9HkPvDaZY5MVbMhn6TMn1YTb5ArQAo3w

기존 매니페스트 사용

다음 두 형식 중 하나를 사용해 기존 매니페스트를 지정해 Batch Operations 작업을 만들 수 있어요.

  • Amazon S3 Inventory 보고서 — CSV 형식의 Amazon S3 Inventory 보고서여야 해요. Inventory 보고서와 연결된 manifest.json 파일을 지정해야 해요. Inventory 보고서에 대한 자세한 내용은 S3 Inventory로 데이터 카탈로그화 및 분석을 참고하세요. Inventory 보고서에 버전 ID가 포함되어 있으면 S3 Batch Operations는 특정 객체 버전에 대해 작업을 수행해요.

    참고 S3 Batch Operations는 SSE-KMS로 암호화된 CSV Inventory 보고서를 지원해요. SSE-KMS로 암호화된 Inventory 보고서 매니페스트를 제출하면 IAM 정책에 manifest.json 객체와 연결된 모든 CSV 데이터 파일에 대한 "kms:Decrypt" 및 "kms:GenerateDataKey" 권한이 포함되어야 해요.

  • CSV 파일 — 파일의 각 행에 버킷 이름, 객체 키, 그리고 선택적으로 객체 버전이 포함되어야 해요. 객체 키는 다음 예제와 같이 URL로 인코딩되어야 해요. 매니페스트는 모든 객체의 버전 ID를 포함하거나 모든 객체의 버전 ID를 생략해야 해요. CSV 매니페스트 형식에 대한 자세한 내용은 Amazon Simple Storage Service API Reference의 JobManifestSpec을 참고하세요.

    참고 S3 Batch Operations는 SSE-KMS로 암호화된 CSV 매니페스트 파일을 지원하지 않아요.

중요 수동으로 만든 매니페스트와 버전 관리되는 버킷을 사용할 때는 객체의 버전 ID를 지정하는 것이 좋아요. 작업을 만들 때 S3 Batch Operations는 작업을 실행하기 전에 전체 매니페스트를 구문 분석해요. 그러나 버킷 상태의 "스냅샷"을 찍지는 않아요.

매니페스트에는 수십억 개의 객체가 포함될 수 있으므로 작업 실행이 오래 걸릴 수 있고, 이는 작업이 처리하는 객체 버전에 영향을 줄 수 있어요. 작업이 실행되는 동안 객체를 새 버전으로 덮어쓰면서 해당 객체에 버전 ID를 지정하지 않았다고 가정해 볼게요. 이 경우 Amazon S3는 작업을 만들 때 존재했던 버전이 아니라 객체의 최신 버전에 대해 작업을 수행해요. 이 동작을 피할 수 있는 유일한 방법은 매니페스트에 나열된 객체의 버전 ID를 지정하는 거예요.

작업 만들기

S3 Batch Operations 작업은 Amazon S3 콘솔, AWS CLI, AWS SDK 또는 Amazon S3 REST API로 만들 수 있어요.

작업 요청 만들기에 대한 자세한 내용은 Batch Operations 작업 요청 요소를 참고하세요.

전제 조건 — Batch Operations 작업을 만들기 전에 관련 권한이 구성되었는지 확인해요. 자세한 내용은 Batch Operations 권한 부여를 참고하세요.

S3 콘솔로 Batch Operations 작업을 만들려면

  1. AWS 관리 콘솔에 로그인하고 https://console.aws.amazon.com/s3/ 에서 Amazon S3 콘솔을 열어요.

  2. Amazon S3 콘솔의 왼쪽 탐색 창에서 Batch Operations를 선택해요.

  3. **작업 만들기(Create job)**를 선택해요.

  4. **리전 및 범위 선택(Choose Region and scope)**에서 작업을 만들 AWS 리전을 선택하고 확인해요.

    참고 복사 작업의 경우 대상 버킷과 같은 리전에서 작업을 만들어야 해요. 다른 모든 작업의 경우 매니페스트의 객체와 같은 리전에서 작업을 만들어야 해요.

  5. **범위(Scope)**에서 Batch Operations 작업이 처리할 객체 목록을 지정해요.

  6. **객체 목록(Object list)**에서 객체 목록을 사용해 매니페스트를 생성하거나, 복제 구성을 사용해 매니페스트를 생성하거나, 기존 매니페스트를 사용하도록 선택할 수 있어요.

    • **객체 목록 생성(Generate an object list)**을 선택하면 지정한 소스 위치와 메타데이터를 기반으로 객체 목록이 자동으로 생성돼요. 이 목록을 매니페스트로 저장하고 이후 작업에 다시 사용할 수 있어요.

      참고 객체 목록을 생성하려면 s3:PutInventoryConfiguration 권한이 있어야 해요. 소스 버킷은 범용 버킷이어야 해요.

    • **기존 매니페스트 사용(Use an existing manifest)**을 선택하면 기존 매니페스트에서 객체 목록을 가져올 수 있어요. 매니페스트는 Batch Operations가 처리할 특정 객체를 나열하는 S3 Inventory 보고서 또는 CSV 파일이에요.

    • **복제 구성 사용(Use a replication configuration)**을 선택하면 기존 복제 구성을 기반으로 객체 목록을 자동으로 생성할 수 있어요. 이 목록을 매니페스트로 저장하고 이후 작업에 다시 사용할 수 있어요.

    이 예제에서는 **객체 목록 생성(Generate an object list)**을 선택해요.

  7. **소스 계정(Source account)**에서 소스 객체를 소유한 계정을 선택해요.

  8. **소스(Source)**에서 s3://amzn-s3-demo-bucket처럼 소스 경로를 입력해요.

  9. **객체 필터(Object filters)**에서 객체 키의 일부나 끝부분으로 필터링하는 필터를 사용할 수 있어요. **객체 키 필터(Object key filters)**는 매니페스트에 사용할 객체 목록을 정제하는 데 도움을 줘요. **객체 메타데이터 필터(Object metadata filters)**에서는 매니페스트에 포함할 객체 범위를 더 정의하는 필터를 선택해요.

  10. **작업 선택(Choose operation)**에서 매니페스트에 나열된 모든 객체에 대해 수행할 작업 유형을 선택해요. 매니페스트가 디렉터리 버킷에 저장된 객체를 참조한다면 복사 또는 AWS Lambda 함수 호출 작업만 사용해요. 다른 모든 작업은 지원되지 않아요.

  11. 작업 유형을 선택한 뒤 **다음(Next)**을 선택해요.

  12. **추가 옵션 구성(Configure additional options)**의 정보를 채워요.

  13. **권한(Permissions)**에서 작업이 사용할 AWS Identity and Access Management(IAM) 역할을 지정해요. 이것은 기존 역할이거나 Amazon S3가 자동으로 만드는 역할일 수 있어요. 자세한 내용은 Batch Operations 권한 부여를 참고하세요. 필터가 있는 S3 생성 객체 목록이나 복제 구성을 기반으로 한 객체 목록을 사용하도록 작업을 구성했다면 Amazon S3가 역할을 만들어 줄 수 있어요.

  14. 추가 옵션 구성을 마치면 **다음(Next)**을 선택해요.

  15. **검토(Review)**에서 설정을 확인해요. 변경이 필요하면 **이전(Previous)**을 선택해요. 그렇지 않으면 **작업 제출(Submit job)**을 선택할 수 있어요.

AWS CLI로 Batch Operations 작업을 만들려면 기존 매니페스트를 지정하는지 매니페스트를 자동으로 생성하는지에 따라 다음 예제 중 하나를 선택해요.

매니페스트 지정

다음 예제는 AWS CLI로 기존 매니페스트 파일에 나열된 객체에 대해 작업을 수행하는 S3 Batch Operations S3PutObjectTagging 작업을 만드는 방법을 보여줘요.

매니페스트를 지정해 Batch Operations S3PutObjectTagging 작업을 만들려면

먼저 다음 명령으로 AWS Identity and Access Management(IAM) 역할을 만들고, 관련 권한을 할당하는 IAM 정책을 만들어요. 다음 역할과 정책은 Amazon S3에 객체 태그 추가 권한을 부여하는데, 이후 단계에서 작업을 만들 때 필요해요.

다음 예제 명령으로 Batch Operations가 사용할 IAM 역할을 만들어요. 이 예제 명령을 사용하려면 S3BatchJobRole을 역할에 부여할 이름으로 바꾸세요.

aws iam create-role \
 --role-name S3BatchJobRole \
 --assume-role-policy-document '{
   "Version": "2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"batchoperations.s3.amazonaws.com"
         },
         "Action":"sts:AssumeRole"
      }
   ]
}'

역할의 Amazon 리소스 이름(ARN)을 기록해 두세요. 작업을 만들 때 이 ARN이 필요해요.

다음 예제 명령으로 필요한 권한이 있는 IAM 정책을 만들고, 이전 단계에서 만든 IAM 역할에 연결해요. 필요한 권한에 대한 자세한 내용은 Batch Operations 권한 부여를 참고하세요.

참고 디렉터리 버킷에서 작업을 수행하는 Batch Operations 작업에는 특정 권한이 필요해요. 자세한 내용은 S3 Express One Zone용 AWS Identity and Access Management(IAM)을 참고하세요.

이 예제 명령을 사용하려면 사용자 입력 플레이스홀더를 다음과 같이 바꾸세요.

  • S3BatchJobRole을 여러분의 IAM 역할 이름으로 바꿔요. 앞에서 사용한 이름과 일치하는지 확인하세요.
  • PutObjectTaggingBatchJobPolicy를 여러분의 IAM 정책에 부여할 이름으로 바꿔요.
  • amzn-s3-demo-destination-bucket을 태그를 적용하려는 객체가 들어 있는 버킷 이름으로 바꿔요.
  • amzn-s3-demo-manifest-bucket을 매니페스트가 들어 있는 버킷 이름으로 바꿔요.
  • amzn-s3-demo-completion-report-bucket을 완료 보고서를 전달할 버킷 이름으로 바꿔요.
aws iam put-role-policy \
  --role-name S3BatchJobRole \
  --policy-name PutObjectTaggingBatchJobPolicy \
  --policy-document '{
   "Version": "2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObjectTagging",
            "s3:PutObjectVersionTagging"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:GetBucketLocation"
         ],
         "Resource": [
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket",
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetBucketLocation"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
         ]
      }
   ]
}'

다음 예제 명령으로 S3PutObjectTagging 작업을 만들어요. manifest.csv 파일은 버킷 및 객체 키 값의 목록을 제공해요. 작업은 매니페스트에서 식별된 객체에 지정된 태그를 적용해요. ETag는 manifest.csv 객체의 ETag로, Amazon S3 콘솔에서 얻을 수 있어요. 이 요청은 no-confirmation-required 파라미터를 지정하므로 update-job-status 명령으로 확인하지 않고 작업을 실행할 수 있어요. 자세한 내용은 AWS CLI Command Reference의 create-job을 참고하세요.

이 예제 명령을 사용하려면 사용자 입력 플레이스홀더를 여러분의 정보로 바꾸세요. IAM-role을 앞에서 만든 IAM 역할의 ARN으로 바꾸세요.

aws s3control create-job \
    --region us-west-2 \
    --account-id acct-id \
    --operation '{
        "S3PutObjectTagging":{
            "TagSet":[
               {"Key":"keyOne", "Value":"ValueOne"}] }}' \
    --manifest '{
        "Spec":{
            "Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{
            "ObjectArn":"arn:aws:s3:::amzn-s3-demo-manifest-bucket/manifest.csv","ETag":"60e460c9d1046e73f7dde5043ac3ae85"}}' \
    --report '{
        "Bucket":"arn:aws:s3:::amzn-s3-demo-completion-report-bucket","Prefix":"final-reports", "Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \
    --priority 42 \
    --role-arn IAM-role \
    --client-request-token $(uuidgen) \
    --description "job description" \
    --no-confirmation-required

응답으로 Amazon S3는 작업 ID를 반환해요(예: 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c). 작업을 식별·모니터링·수정하려면 작업 ID가 필요해요.

매니페스트 생성

다음 예제는 객체 필터 기준(생성 날짜, 키 이름, 크기, 스토리지 클래스, 태그 포함)에 따라 매니페스트를 자동으로 생성하는 S3 Batch Operations S3DeleteObjectTagging 작업을 만드는 방법을 보여줘요.

매니페스트를 생성해 Batch Operations S3DeleteObjectTagging 작업을 만들려면

먼저 다음 명령으로 AWS Identity and Access Management(IAM) 역할을 만들고, 권한을 할당하는 IAM 정책을 만들어요. 다음 역할과 정책은 Amazon S3에 객체 태그 삭제 권한을 부여하는데, 이후 단계에서 작업을 만들 때 필요해요.

다음 예제 명령으로 Batch Operations가 사용할 IAM 역할을 만들어요. 이 예제 명령을 사용하려면 S3BatchJobRole을 역할에 부여할 이름으로 바꾸세요.

aws iam create-role \
 --role-name S3BatchJobRole \
 --assume-role-policy-document '{
   "Version": "2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"batchoperations.s3.amazonaws.com"
         },
         "Action":"sts:AssumeRole"
      }
   ]
}'

역할의 Amazon 리소스 이름(ARN)을 기록해 두세요. 작업을 만들 때 이 ARN이 필요해요.

다음 예제 명령으로 필요한 권한이 있는 IAM 정책을 만들고, 이전 단계에서 만든 IAM 역할에 연결해요. 필요한 권한에 대한 자세한 내용은 Batch Operations 권한 부여를 참고하세요.

참고 디렉터리 버킷에서 작업을 수행하는 Batch Operations 작업에는 특정 권한이 필요해요. 자세한 내용은 S3 Express One Zone용 AWS Identity and Access Management(IAM)을 참고하세요.

이 예제 명령을 사용하려면 사용자 입력 플레이스홀더를 다음과 같이 바꾸세요.

  • S3BatchJobRole을 여러분의 IAM 역할 이름으로 바꿔요. 앞에서 사용한 이름과 일치하는지 확인하세요.
  • DeleteObjectTaggingBatchJobPolicy를 여러분의 IAM 정책에 부여할 이름으로 바꿔요.
  • amzn-s3-demo-destination-bucket을 태그를 적용하려는 객체가 들어 있는 버킷 이름으로 바꿔요.
  • amzn-s3-demo-manifest-bucket을 매니페스트를 저장할 버킷 이름으로 바꿔요.
  • amzn-s3-demo-completion-report-bucket을 완료 보고서를 전달할 버킷 이름으로 바꿔요.
aws iam put-role-policy \
  --role-name S3BatchJobRole \
  --policy-name DeleteObjectTaggingBatchJobPolicy \
  --policy-document '{
   "Version": "2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:DeleteObjectTagging",
            "s3:DeleteObjectVersionTagging"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutInventoryConfiguration"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
      },
      {
         "Effect": "Allow",
         "Action": [
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:ListBucket"
         ],
         "Resource": [
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket",
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:ListBucket"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*",
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
      }
   ]
}'

다음 예제 명령으로 S3DeleteObjectTagging 작업을 만들어요. 이 예제에서 --report 섹션의 값은 생성될 작업 보고서의 버킷, 접두사, 형식, 범위를 지정해요. --manifest-generator 섹션은 작업이 처리할 객체가 들어 있는 소스 버킷에 대한 정보, 작업에 대해 생성될 매니페스트 출력 목록에 대한 정보, 그리고 생성 날짜·이름 제약 조건·크기·스토리지 클래스로 매니페스트에 포함될 객체 범위를 좁히는 필터 기준을 지정해요. 이 명령은 작업의 우선순위, IAM 역할, AWS 리전도 지정해요. 자세한 내용은 AWS CLI Command Reference의 create-job을 참고하세요.

이 예제 명령을 사용하려면 사용자 입력 플레이스홀더를 여러분의 정보로 바꾸세요. IAM-role을 앞에서 만든 IAM 역할의 ARN으로 바꾸세요.

aws s3control create-job \
    --account-id 012345678901 \
    --operation '{
        "S3DeleteObjectTagging":{
        }
    }' \
    --report '{
        "Bucket":"arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
        "Prefix":"reports", 
        "Format":"Report_CSV_20180820",
        "Enabled":true,
        "ReportScope":"AllTasks"
    }' \
    --manifest-generator '{
        "S3JobManifestGenerator":{
            "ExpectedBucketOwner": "012345678901",
            "SourceBucket": "arn:aws:s3:::amzn-s3-demo-source-bucket",
            "EnableManifestOutput": true,
            "ManifestOutputLocation":{
                "ExpectedManifestBucketOwner": "012345678901",
                "Bucket": "arn:aws:s3:::amzn-s3-demo-manifest-bucket",
                "ManifestPrefix": "prefix",
                "ManifestFormat": "S3InventoryReport_CSV_20211130"
            },
            "Filter":{
                "CreatedAfter": "2023-09-01",
                "CreatedBefore": "2023-10-01",
                "KeyNameConstraint":{
                    "MatchAnyPrefix": ["prefix"],
                    "MatchAnySuffix": ["suffix"]
                },
                "ObjectSizeGreaterThanBytes": 100,
                "ObjectSizeLessThanBytes": 200,
                "MatchAnyStorageClass": ["STANDARD", "STANDARD_IA"]
            }
        }
    }' \
     --priority 2 \
     --role-arn IAM-role \
     --region us-east-1

응답으로 Amazon S3는 작업 ID를 반환해요(예: 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c). 작업을 식별·모니터링·수정하려면 이 작업 ID가 필요해요.

AWS SDK for Java로 Batch Operations 작업을 만들려면 기존 매니페스트를 지정하는지 매니페스트를 자동으로 생성하는지에 따라 두 가지 접근 방식 중 하나를 선택할 수 있어요.

  • 기존 매니페스트 지정 — 기존 매니페스트 파일에 나열된 객체에 대해 작업을 수행하는 S3 Batch Operations 작업(예: S3PutObjectTagging)을 만들어요. 이 접근 방식은 매니페스트 위치, ETag, 형식 사양을 제공해야 해요.
  • 매니페스트 자동 생성 — 생성 날짜, 키 이름, 크기 제약 조건을 포함한 객체 필터 기준에 따라 매니페스트를 자동으로 생성하는 S3 Batch Operations 작업(예: s3PutObjectCopy)을 만들어요.

두 접근 방식 모두 S3Control 클라이언트를 사용해 작업 작업, 매니페스트 사양, 작업 보고서, IAM 역할, 우선순위와 확인 요구 사항을 포함한 기타 작업 파라미터를 구성해요. AWS SDK for Java로 S3 Batch Operations 작업을 만드는 예제는 Amazon S3 API Reference의 객체 복사 일괄 작업 만들기를 참고하세요.

REST API로 Batch Operations 작업을 만들 수 있어요. 자세한 내용은 Amazon Simple Storage Service API Reference의 CreateJob을 참고하세요.

작업 응답

CreateJob 요청이 성공하면 Amazon S3는 작업 ID를 반환해요. 작업 ID는 Amazon S3가 자동으로 생성하는 고유 식별자로, Batch Operations 작업을 식별하고 상태를 모니터링하는 데 사용할 수 있어요.

AWS CLI, AWS SDK 또는 REST API로 작업을 만들면 S3 Batch Operations가 자동으로 작업 처리를 시작하도록 설정할 수 있어요. 작업은 우선순위가 높은 작업 뒤에서 기다리는 대신 준비되는 대로 실행돼요.

Amazon S3 콘솔로 작업을 만들면 Batch Operations가 처리를 시작하기 전에 작업 세부 정보를 검토하고 작업 실행을 확인해야 해요. 작업이 30일 이상 일시 중단된 상태로 남아 있으면 실패해요.

더 알아보기 (Learn more)