S3 Batch 작업을 통한 객체 이관 작업

신동수·2024년 2월 24일
0

AWS

목록 보기
10/33

개요

  • 이전 A 버킷의 업데이트되는 객체를 B 버킷에 동일하게 복사를 하기위한 작업을 위한 포스팅을 작성 하였는데 본 포스팅은 기존 origin 버킷에 존재하는 객체들은 복사가 되지 않아 기존 파일도 B 버킷으로 S3 Batch 를 통한 복사 작업을 포스팅 하겠다.

조건

  • S3 Batch를 통해 객체를 이관하려면, S3 버전 관리가 활성화되어 있고 Replication 구성이 완료되어 있어야 한다.
  • Replication은 버전 관리가 활성화된 이후의 객체만 대상으로 하기 때문에, 소스 버킷에 버전 관리가 이미 활성화되어 있다면 과거 버전의 객체 ID와 삭제된 객체까지도 포함되므로 주의가 필요하다.

추가적인 설명을 하자면, 소스 버킷의 버전 관리 활성화 시점에 따라 복사 대상이 달라진다:

  • 버킷에 버전 관리가 활성화되기 전에 Batch 작업을 설정한 경우 → 현재 존재하는 최신 객체만 복사된다.
  • 버킷에 이미 버전 관리가 활성화된 상태에서 Batch 작업을 설정한 경우 → 삭제한 객체, 과거 버전 객체도 포함되어 복사된다. 이 경우 삭제 마커는 기본적으로 제외되지만, 옵션 설정을 통해 삭제 마커까지 복사할 수 있다.

S3


Origin 버킷 : dobby-origin-bucket
Copy 버킷 : dobby-copy-bucket


Origin 버킷에 존재하는 객체 리스트

IAM


IAM > 역할 > 역할 생성
서비스는 S3 를 선택하며 사용 사례에서는 S3 Batch Operations 를 선택한다.

# S3-Batch-role 에 있는 정책
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:InitiateReplication"
            ],
            "Resource": "arn:aws:s3:::<원본 Bucket>/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::<원본 Bucket>/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::<대상 Bucket>/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetReplicationConfiguration",
                "s3:PutInventoryConfiguration"
            ],
            "Resource": "arn:aws:s3:::<원본 Bucket>"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::<원본 Bucket>/*"
        }
    ]
}

S3 Batch 를 위한 정책
Amazon S3 배치 작업에 대한 권한 부여

S3 Batch


Amazon S3 > 배치 작업 > 작업 생성
매니페스트는 배치 프로세스의 일부로서 처리되어야하는 파일 목록과 처리 방법에 대한 정보를 포함하는 파일 및 데이터구조이다.

해당 작업의 경우 동일한 리전에 있는 버킷의 객체만 복사할 수 있으며, 소스의 경우 동일한 계정에서 테스트할 것이므로 이 AWS 계정의 버킷을 선택하였다.

배치 작업 매니페스트는 소스S3 를 선택하였다. (배치 작업 실행 시 해당 작업ID로 폴더가 생성이되고 아래에 메니페스트 json 정보를 확인할 수 있다.)


해당 작업은 Batch 를 통한 객체 복사이기에 복제만 가능하다. (매니페스트 형식을 S3 인벤토리 보고서나 CSV 로 선택하면 더 다양한 작업을 진행할 수 있다.)


완료 보고서의 경우 배치 작업이 끝난 후 job-배치작업ID 의 폴더가 생기며, 동일하게 메니페스트 json 파일이 생성이 된다.


IAM 역할은 위와 같은 정책이 할당된 IAM Role 을 선택한다.


설정이 완료 되었다면 준비중 -> 실행 확인 대기중 에서 작업을 실행하면 기존 객체를 복사하는 작업을 진행한다.


완료가 되었다면 상태가 완료됨으로 변경이 된 것을 확인할 수 있다.

결과


Origin 버킷 : dobby-origin-bucket
Origin 버킷에는 f2a4de86-6763-49a1.... 이름의 폴더가 있지만 삭제를 하여 화면에서 보이지는 않는다. (해당 폴더에 메니페스트 파일이 존재)



Copy 버킷 : dobby-copy-bucket
Copy 버킷에는 job-f2a4de86-6763-49a1.... 이름의 폴더도 생성이 되었으며, 완료 보고서가 해당 폴더 아래에 존재하는 것을 확인할 수 있다.

profile
조금씩 성장하는 DevOps 엔지니어가 되겠습니다. 😄

0개의 댓글