1. 개요

다른 계정으로 S3 이관하는 방법

2. 버킷 작업

2-1. 도착지에 S3 생성

단 S3 이름은 글로벌하게 유니크하므로 이름은 다르게 만들어야 한다.

만약 이름을 유지하고자 하면 작업을 한번 더 해야 한다.

  1. a에서 b로 이관
  2. a 삭제
  3. a 생성
  4. b에서 a로 이관

2-2. 출발지 S3에 버킷 정책 추가

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DelegateS3Access",
            "Effect": "Allow",
            "Principal": {"AWS": "[도착지계정ID]"},
            "Action": ["s3:ListBucket","s3:GetObject"],
            "Resource": [
                "arn:aws:s3:::[버킷이름]/*",
                "arn:aws:s3:::[버킷이름]"
            ]
        }
    ]
}

3. 복제

CLI를 이용하여 이관한다.

$ aws s3 sync s3://[출발지버킷] s3://[도착지버킷]

그런데 이렇게 할 경우 Starage Class가 유지되지 않는다. 즉, STANDARD-IA 였던 것도 다 STANDARD가 된다. 이 때는 아래와 같이 하면 일괄로 Storage Class를 지정할 수는 있다. 파일 별로 Storage Class를 유지하는 방법은 모르겠다.

$ aws s3 sync s3://[출발지버킷] s3://[도착지버킷] --storage-class STANDARD_IA