Data Pipeline을 사용하여 다른 계정에 있는 S3 버킷으로 DynamoDB 테이블을 백업하려면 어떻게 해야 합니까?

3분 분량
0

AWS Data Pipeline을 사용하여 Amazon DynamoDB 테이블을 다른 AWS 계정에 있는 Amazon Simple Storage Service(S3) 버킷에 백업하려고 합니다.

간략한 설명

참고: 소스 계정은 DynamoDB 테이블이 있는 계정입니다. 대상 계정은 Amazon S3 버킷이 있는 계정입니다.

  1. 소스 계정에서 DataPipeline 서비스 역할 및 DataPipeline 자원 역할에 Amazon S3 권한을 부여하는 AWS Identity and Access Management(IAM) 정책을 연결합니다.
  2. 대상 계정에서 S3 버킷에 액세스할 수 있도록 소스 계정에 DataPipeline 서비스 역할 및 DataPipeline 자원 역할을 허용합니다.
  3. 소스 계정에서 S3로 DynamoDB 테이블 내보내기 Data Pipeline 템플릿을 사용하여 파이프라인을 생성합니다.
  4. 미리 준비된 BucketOwnerFullControl 또는 AuthenticatedRead 액세스 제어 목록(ACL)을 파이프라인의 EmrActivity 객체에 있는 [단계] 필드에 추가합니다.
  5. DynamoDB 테이블을 대상 계정의 S3 버킷에 백업하기 위해 파이프라인을 활성화합니다.
  6. 대상 계정에서 DynamoDB 테이블을 생성합니다.
  7. 대상 테이블에 원본 테이블을 복원하려면 S3에서 DynamoDB 백업 데이터 가져오기 Data Pipeline 템플릿을 사용하여 파이프라인을 생성합니다.

해결 방법

Data Pipeline 기본 역할에 IAM 정책 연결

1.    소스 계정에서 [IAM 콘솔]을 엽니다.

2.    [Policies]를 선택한 후 [Create policy]를 선택합니다.

3.    [JSON] 탭을 선택하고 다음과 비슷한 IAM 정책을 입력합니다. 대상 계정에서 awsdoc-example-bucket을 S3 버킷의 이름으로 바꿉니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::awsdoc-example-bucket/*",
        "arn:aws:s3:::awsdoc-example-bucket"
      ]
    }
  ]
}

4.    [정책 검토(Review policy)]를 선택합니다.

5.    정책의 [Name]을 입력한 후 [Create policy]를 선택합니다.

6.    정책 목록에서 방금 생성한 정책 이름 옆에 있는 확인란을 선택합니다. [Filter] 메뉴와 검색 상자를 사용하여 정책 목록을 필터링할 수 있습니다.

7.    [Policy actions]를 선택하고 [Attach]를 선택합니다.

8.    DataPipeline 서비스 역할 및 DataPipeline 자원 역할을 선택한 다음 정책 연결을 선택합니다.

S3 버킷에 버킷 정책 추가

대상 계정에서 다음과 유사한 버킷 정책을 생성합니다. 다음 예제에서 아래와 같은 값을 대체합니다.

  • 111122223333: Data Pipeline 계정 ID. 자세한 내용은 AWS 계정 ID 찾기를 참조하세요.
  • awsdoc-example-bucket: S3 버킷의 이름
{
  "Version": "2012-10-17",
  "Id": "",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Action": "s3:*",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:role/DataPipelineDefaultRole",
          "arn:aws:iam::111122223333:role/DataPipelineDefaultResourceRole"
        ]
      },
      "Resource": [
        "arn:aws:s3:::awsdoc-example-bucket",
        "arn:aws:s3:::awsdoc-example-bucket/*"
      ]
    }
  ]
}

파이프라인 생성 및 활성화

1.    소스 계정에서 S3로 DynamoDB 테이블 내보내기 Data Pipeline 템플릿을 사용하여 파이프라인을 생성합니다.

[파라미터]섹션에서 소스 DynamoDB 테이블 이름S3 출력 폴더를 입력합니다. 버킷에 s3://awsdoc-example-bucket/ 형식을 사용하세요.
IAM 역할에 대한 [보안/액세스] 섹션에서 [기본값]을 선택합니다.

2.    파이프라인을 활성화하기 전에 [아키텍트에서 편집]을 선택합니다.

3.    [Activities] 섹션을 열고 EmrActivity 객체를 찾습니다.

4.    [단계] 필드에서 미리 준비된 BucketOwnerFullControl 또는 AuthenticatedRead 액세스 제어 목록(ACL)을 추가합니다. 이렇게 미리 준비된 ACL은 대상 계정에서 S3 버킷에 쓸 수 있는 Amazon EMR Apache Hadoop 작업 권한을 제공합니다. -Dfs.s3.canned.acl=BucketOwnerFullControl 형식을 사용했는지 확인합니다. org.apache.hadoop.dynamodb.tools.DynamoDbExport#{output.directoryPath} 사이에 명령문을 추가합니다. 예:

s3://dynamodb-dpl-#{myDDBRegion}/emr-ddb-storage-handler/4.11.0/emr-dynamodb-tools-4.11.0-SNAPSHOT-jar-with-dependencies.jar,org.apache.hadoop.dynamodb.tools.DynamoDBExport,-Dfs.s3.canned.acl=BucketOwnerFullControl,#{output.directoryPath},#{input.tableName},#{input.readThroughputPercent}

5.    저장을 선택한 다음 활성화를 선택하여 DynamoDB 테이블을 대상 계정의 S3 버킷에 백업하기 위해 파이프라인을 활성화합니다.

(선택 사항)대상 계정에 백업 복원

  1. 대상 계정에서 DynamoDB 테이블을 생성합니다. 테이블이 비어 있지 않아도 됩니다. 그러나 가져오기 프로세스에서 내보내기 파일에 있는 항목과 동일한 키를 가진 항목을 대체합니다.
  2. S3에서 DynamoDB 백업 데이터 가져오기 Data Pipeline 템플릿을 사용하여 파이프라인을 생성합니다.
    S3 입력 폴더에 대한 [파라미터] 섹션에서 DynamoDB 백업이 저장되는 위치인 S3 버킷을 입력합니다.
    IAM 역할에 대한 [보안/액세스] 섹션에서 [기본값]을 선택합니다.
  3. 파이프라인을 활성화하고 대상 테이블을 복원합니다.

관련 정보

버킷 소유자가 교차 계정 버킷 권한 부여

IAM 정책 관리

AWS 공식
AWS 공식업데이트됨 8달 전