인벤토리 보고서로 AWS 계정 간 객체 복사하기

인벤토리 보고서로 AWS 계정 간 객체 복사하기

Amazon S3 Inventory로 인벤토리 보고서를 만들고, 그 보고서를 매니페스트로 삼아 S3 Batch Operations로 객체를 대량 복사할 수 있어요. 인벤토리 보고서를 다른 AWS 계정으로 전달하도록 설정하면, 대상 계정에서 작업을 만들 때 S3 Batch Operations가 그 보고서를 읽을 수 있죠. 그 과정을 콘솔 절차로 살펴볼게요.

출처: 문서

본문

Amazon S3 Batch Operations를 쓰면 S3 객체에 대해 대규모 배치 작업을 수행할 수 있어요. S3 Batch Operations를 이용해 Copy(CopyObject) 작업을 만들면 같은 계정 안에서 또는 다른 대상 계정으로 객체를 복사할 수 있죠.

Amazon S3 Inventory로 인벤토리 보고서를 만들고, 그 보고서를 활용해 S3 Batch Operations로 복사할 객체의 목록(매니페스트)을 만들 수 있어요. 소스 계정이나 대상 계정에 CSV 매니페스트를 쓰는 방법은 Using a CSV manifest to copy objects across AWS accounts 문서를 참고하세요.

Amazon S3 Inventory는 버킷 안에 있는 객체들의 인벤토리를 생성해요. 생성된 목록은 출력 파일로 게시되고요. 인벤토리가 만들어지는 버킷을 소스 버킷이라고 하고, 인벤토리 보고서 파일이 저장되는 버킷을 대상 버킷이라고 불러요.

Amazon S3 Inventory 보고서는 다른 AWS 계정으로 전달되도록 구성할 수 있어요. 이렇게 하면 대상 계정에서 작업을 만들 때 S3 Batch Operations가 인벤토리 보고서를 읽을 수 있죠. Amazon S3 Inventory의 소스·대상 버킷에 대한 자세한 내용은 Source and destination buckets 문서를 참고하세요.

인벤토리를 설정하는 가장 쉬운 방법은 Amazon S3 콘솔을 쓰는 거예요. 하지만 Amazon S3 REST API, AWS Command Line Interface(AWS CLI), AWS SDK를 사용해도 됩니다.

다음 콘솔 절차는 S3 Batch Operations 작업을 위한 권한을 설정하는 높은 수준의 단계를 보여줘요. 이 절차에서는 소스 계정의 객체를 대상 계정으로 복사하고, 인벤토리 보고서는 대상 계정에 저장해요.

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

  2. 왼쪽 탐색 창에서 Buckets를 선택해요.

  3. 인벤토리 보고서를 저장할 대상 매니페스트 버킷을 정하거나 새로 만들어요. 이 절차에서 대상 계정은 대상 매니페스트 버킷과 객체가 복사될 버킷을 모두 소유한 계정이에요.

  4. 소스 버킷에 대한 인벤토리 보고서를 구성해요. 콘솔로 인벤토리를 구성하는 방법이나 인벤토리 목록 파일을 암호화하는 방법은 Configuring Amazon S3 Inventory 문서를 참고하세요. 인벤토리 보고서를 구성할 때 목록을 저장할 대상 버킷을 지정해요. 소스 버킷의 인벤토리 보고서는 대상 버킷에 게시되죠. 이 절차에서 소스 계정은 소스 버킷을 소유한 계정이에요. 출력 형식으로 CSV를 선택하세요. 대상 버킷 정보를 입력할 때는 다른 계정의 버킷(Buckets in another account) 을 선택하고, 대상 매니페스트 버킷의 이름을 입력해요. 선택적으로 대상 계정의 계정 ID도 입력할 수 있어요. 인벤토리 구성을 저장하면 콘솔이 다음과 비슷한 메시지를 표시해요.

    Amazon S3 could not create a bucket policy on the destination bucket. Ask the destination bucket owner to add the following bucket policy to allow Amazon S3 to place data in that bucket.

    콘솔은 이어서 대상 버킷에 사용할 수 있는 버킷 정책을 표시해요.

  5. 콘솔에 나타난 대상 버킷 정책을 복사해요.

  6. 대상 계정에서, 복사한 버킷 정책을 인벤토리 보고서가 저장된 대상 매니페스트 버킷에 추가해요.

  7. 대상 계정에 S3 Batch Operations 신뢰 정책을 기반으로 한 역할을 만들어요. 이 신뢰 정책에 대한 자세한 내용은 Trust policy 문서를, 역할 생성 방법은 IAM User Guide의 Creating a role to delegate permissions to an AWS service 문서를 참고하세요. 역할 이름을 입력하고(BatchOperationsDestinationRoleCOPY라는 이름을 쓰는 예제가 있어요), S3 서비스를 선택한 다음 S3 Batch Operations 사용 사례를 선택하면 신뢰 정책이 적용돼요. 그다음 Create policy를 선택해 다음 정책을 역할에 연결하면 됩니다. 이 정책을 사용하려면 사용자 입력 플레이스홀더를 자신의 정보로 바꾸세요.

{
  "Version":"2012-10-17",
  "Statement": [
    {
      "Sid": "AllowBatchOperationsDestinationObjectCOPY",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectVersionAcl",
        "s3:PutObjectAcl",
        "s3:PutObjectVersionTagging",
        "s3:PutObjectTagging",
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:GetObjectAcl",
        "s3:GetObjectTagging",
        "s3:GetObjectVersionAcl",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectAnnotation",
        "s3:GetObjectVersionAnnotation"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-destination-bucket/*",
        "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    }
  ]
}

이 역할은 보안 주체 batchoperations.s3.amazonaws.com이 대상 버킷에서 매니페스트를 읽도록 정책으로 허용해 줘요. 또 소스 객체 버킷에서 객체, ACL, 태그, 어노테이션, 버전을 가져올(GET) 권한, 그리고 대상 객체 버킷에 객체, ACL, 태그, 버전을 넣을(PUT) 권한도 부여해 주죠.

  1. 소스 계정에서, 소스 버킷에 대한 버킷 정책을 만들어 소스 버킷에서 객체, ACL, 태그, 어노테이션, 버전을 가져올 권한을 이전 단계에서 만든 역할에 부여해요. 이 단계 덕분에 S3 Batch Operations가 신뢰받는 역할을 통해 소스 버킷에서 객체를 가져올 수 있어요. 다음은 소스 계정에 대한 버킷 정책 예시예요. 사용하려면 사용자 입력 플레이스홀더를 자신의 정보로 바꾸세요.
{
  "Version":"2012-10-17",
  "Statement": [
    {
      "Sid": "AllowBatchOperationsSourceObjectCOPY",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
      },
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:GetObjectAcl",
        "s3:GetObjectTagging",
        "s3:GetObjectVersionAcl",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectAnnotation",
        "s3:GetObjectVersionAnnotation"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
    }
  ]
}
  1. 인벤토리 보고서가 준비되면 대상 계정에서 S3 Batch Operations Copy(CopyObject) 작업을 만들고, 대상 매니페스트 버킷에서 인벤토리 보고서를 선택해요. 대상 계정에서 만든 IAM 역할의 ARN이 필요해요. 작업 생성에 대한 일반적인 내용은 Creating an S3 Batch Operations job 문서를, 콘솔로 작업을 만드는 방법은 Creating an S3 Batch Operations job 문서를 참고하세요.