DynamoDB에서 테이블 내보내기 요청 - Amazon DynamoDB

DynamoDB에서 테이블 내보내기 요청

DynamoDB 테이블 내보내기를 사용하면 테이블 데이터를 Amazon S3 버킷으로 내보낼 수 있으므로, Athena, AWS Glue, Lake Formation 등의 다른 AWS 서비스를 사용하여 데이터에 대한 분석과 복잡한 쿼리를 수행할 수 있습니다. AWS Management Console, AWS CLI 또는 DynamoDB API를 사용하여 DynamoDB 테이블 내보내기를 요청할 수 있습니다.

AWS CLI를 사용하려면 먼저 구성을 해야 합니다. 자세한 정보는 DynamoDB 액세스을 참조하십시오.

Amazon S3 설정 및 권한

쓸 수 있는 권한이 있는 Amazon S3 버킷으로 테이블 데이터를 내보낼 수 있습니다. 대상 버킷이 소스 테이블과 같은 리전에 있거나 소유자가 동일하지 않아도 됩니다. 다음 예제에 나온 대로 AWS Identity and Access Management(IAM) 정책에서 dynamodb:ExportTableToPointInTime 권한 외에도 s3:AbortMultipartUpload, s3:PutObjects3:PutObjectAcl 작업을 허용해야 합니다.

참고

DynamoDB AWS Management Console을 통해 교차 계정 Amazon S3 버킷으로 내보내려면 DynamoDB에서 해당 버킷에 대한 s3:ListBucket 권한이 필요합니다. DynamoDB AWS Management Console은 내보내기를 허용하기 전에 이러한 권한을 확인합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDynamoDBExportAction", "Effect": "Allow", "Action": "dynamodb:ExportTableToPointInTime", "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/my-table" }, { "Sid": "AllowWriteToDestinationBucket", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::your-bucket/*" } ] }

다음 코드는 대상 계정에 있는 S3 버킷 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }

내보내기가 진행 중일 때 이러한 권한을 취소하면 부분 파일이 생성됩니다.

AWS Management Console을 사용하여 내보내기 요청

다음 예제에서는 DynamoDB 콘솔을 사용하여 MusicCollection이라는 기존 테이블을 내보내는 방법을 보여줍니다.

참고

이 절차에서는 특정 시점으로 복구를 활성화했다고 가정합니다. MusicCollection 테이블에 대해 이 기능을 활성화하려면 테이블의 개요 탭에 있는 테이블 세부 정보 섹션에서 특정 시점으로 복구에 대해 활성화를 선택합니다.

테이블 내보내기를 요청하려면

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/dynamodb/에서 DynamoDB 콘솔을 엽니다.

  2. 콘솔 왼쪽의 탐색 창에서 S3로 내보내기(Exports to S3)를 선택합니다.

  3. [S3로 내보내기(Export to S3)]를 선택합니다.

  4. 소스 테이블과 대상 S3 버킷을 선택합니다. 사용자 계정이 대상 버킷을 소유한 경우 S3 찾아보기 버튼을 클릭하여 찾을 수 있습니다. 그렇지 않은 경우, 버킷의 URL을 s3://bucketname/prefix format. 형식으로 입력합니다. prefix는 대상 버킷을 체계적으로 구성된 상태로 유지하는 데 도움이 되는 선택적 폴더입니다.

  5. 기본적으로 테이블은 특정 시점으로 복구 기간 중 복원 가능한 마지막 시간부터 DynamoDB JSON 형식으로 내보내고 Amazon S3 키(SSE-S3)를 사용하여 암호화됩니다. 이러한 설정을 변경하려면 페이지의 추가 설정 섹션을 확장하고 원하는 내보내기 설정을 입력합니다.

    참고

    AWS Key Management Service(AWS KMS)에 의해 보호되는 키를 사용하여 내보내기를 암호화하도록 선택하는 경우 해당 키는 대상 S3 버킷과 동일한 리전에 있어야 합니다.

  6. 내보내기 버튼을 클릭하여 내보내기를 시작합니다.

AWS Management Console에서 이전 내보내기에 대한 세부 정보 확인

이전에 실행한 내보내기 태스크에 대한 정보는 탐색 사이드바에서 스트림 및 내보내기를 클릭한 다음 내보내기 탭을 선택하여 확인할 수 있습니다. 이 탭에는 지난 90일간 생성한 모든 내보내기의 목록이 포함되어 있습니다. 내보내기 탭에 나열된 태스크의 ARN을 선택하면 선택한 고급 구성 설정을 포함하여 해당 내보내기에 대한 정보가 검색됩니다. 내보내기 태스크 메타데이터는 90일이 지나면 만료되고 해당 기간보다 오래된 작업은 이 목록에서 더 이상 찾을 수 없지만 S3 버킷의 객체는 버킷 정책에서 허용하는 기간까지 유지됩니다. DynamoDB는 내보내기 중 S3 버킷에서 생성하는 객체를 삭제하지 않습니다.

AWS CLI를 사용하여 내보내기 요청

다음 예제에서는 AWS CLI를 사용하여 MusicCollection이라는 기존 테이블을 ddb-export-musiccollection이라는 S3 버킷으로 내보내는 방법을 보여줍니다.

참고

이 절차에서는 특정 시점으로 복구를 활성화했다고 가정합니다. 다음 명령을 실행하여 MusicCollection 테이블에 대해 이 기능을 활성화하세요.

aws dynamodb update-continuous-backups \ --table-name MusicCollection \ --point-in-time-recovery-specification PointInTimeRecoveryEnabled=True

다음 명령은 MusicCollection을 접두사가 2020-Nov인 S3 버킷 ddb-export-musiccollection으로 내보냅니다. 테이블 데이터는 특정 시점으로 복구 기간 중 특정 시간부터 DynamoDB JSON 형식으로 내보내고 Amazon S3 키(SSE-S3)를 사용하여 암호화됩니다.

aws dynamodb export-table-to-point-in-time \ --table-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \ --s3-bucket ddb-export-musiccollection \ --s3-prefix 2020-Nov \ --export-format DYNAMODB_JSON \ --export-time 1604632434 \ --s3-sse-algorithm AES256
참고

AWS Key Management Service(AWS KMS)에 의해 보호되는 키를 사용하여 내보내기를 암호화하도록 선택하는 경우 해당 키는 대상 S3 버킷과 동일한 리전에 있어야 합니다.

AWS CLI에서 이전 내보내기에 대한 세부 정보 확인

이전에 실행한 내보내기 태스크에 대한 정보는 list-exports 명령을 사용하여 확인할 수 있습니다. 이 명령은 지난 90일간 생성한 모든 내보내기의 목록을 반환합니다. 내보내기 태스크 메타데이터는 90일이 지나면 만료되고 해당 기간보다 오래된 작업은 list-exports 명령에서 더 이상 반환하지 않지만 S3 버킷의 객체는 버킷 정책에서 허용하는 기간까지 유지됩니다. DynamoDB는 내보내기 중 S3 버킷에서 생성하는 객체를 삭제하지 않습니다.

다음 예제에서는 선택적 table-arn 파라미터를 사용하여 특정 테이블의 내보내기만 나열합니다.

aws dynamodb list-exports \ --table-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog

특정 내보내기 태스크에 대해 고급 구성 설정을 포함하여 자세한 정보를 검색하려면 describe-export 명령을 사용합니다.

aws dynamodb describe-export \ --export-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4