Amazon S3 S3를 대상으로 사용AWS Database Migration Service - AWS Database Migration Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon S3 S3를 대상으로 사용AWS Database Migration Service

를 사용하여 Amazon S3 S3로 데이터를 마이그레이션할 수 있습니다AWS DMS지원되는 모든 데이터베이스 소스에서 Amazon S3 S3를 대상으로 사용하는 경우AWS DMS작업, 전체 로드 및 변경 데이터 캡처 (CDC) 데이터 모두 기본적으로 쉼표로 구분된 값 (.csv) 형식으로 작성됩니다. 보다 간소화된 스토리지 및 보다 빠른 쿼리 옵션을 위해 데이터를 Apache Parquet(.parquet) 형식에 작성할 수도 있습니다.

AWS DMS증분 16진수 카운터 (예: .csv 파일의 경우 LOAD00001.csv, LOAD00002..., LOAD00009, LOAD0000A 등) 를 사용하여 전체 로드 중에 생성된 파일의 이름을 지정합니다.AWS DMS타임스탬프를 사용하여 CDC 파일의 이름을 지정합니다 (예: 20141029-1134010000.csv). 레코드를 포함하는 각 원본 테이블에 대해AWS DMS지정된 대상 폴더 아래에 폴더를 만듭니다 (원본 테이블이 비어 있지 않은 경우).AWS DMS모든 전체 로드와 CDC 파일을 지정된 Amazon S3 버킷에 씁니다.

파라미터 bucketFolder에는 S3 버킷에 업로드되기 전에 .csv 또는 .parquet 파일이 저장되는 위치가 포함되어 있습니다. .csv 파일을 사용하면 테이블 데이터가 S3 버킷에 다음과 같은 형식으로 저장되며 전체 로드 파일과 함께 표시됩니다.

database_schema_name/table_name/LOAD00000001.csv database_schema_name/table_name/LOAD00000002.csv ... database_schema_name/table_name/LOAD00000009.csv database_schema_name/table_name/LOAD0000000A.csv database_schema_name/table_name/LOAD0000000B.csv ...database_schema_name/table_name/LOAD0000000F.csv database_schema_name/table_name/LOAD00000010.csv ...

추가 연결 속성을 사용하여 열 구분 기호, 행 구분 기호 등 여러 파라미터를 지정할 수 있습니다. 추가 연결 속성에 대한 자세한 내용은 이 섹션의 마지막에 나오는 Amazon S3 S3를 대상으로 사용할 때의 추가 연결 속성AWS DMS을 참조하십시오.

를 사용하여 버킷 소유자를 지정하고 스나이핑을 방지할 수 있습니다.ExpectedBucketOwnerAmazon S3 엔드포인트 설정은 다음과 같습니다. 그런 다음 연결을 테스트하거나 마이그레이션을 수행하도록 요청하면 S3는 지정된 파라미터와 비교하여 버킷 소유자의 계정 ID를 확인합니다.

--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'

사용 시AWS DMSCDC 작업을 사용하여 데이터 변경을 복제하려는 경우.csv 또는.parquet 출력 파일의 첫 번째 열에 다음.csv 파일에 표시된 대로 행 데이터가 어떻게 변경되었는지 알 수 있습니다.

I,101,Smith,Bob,4-Jun-14,New York U,101,Smith,Bob,8-Oct-15,Los Angeles U,101,Smith,Bob,13-Mar-17,Dallas D,101,Smith,Bob,13-Mar-17,Dallas

이 예의 경우, 소스 데이터베이스에 EMPLOYEE 테이블이 있다고 가정합니다. AWS DMS는 다음 이벤트에 응답하여 데이터를 .csv 또는 .parquet 파일에 작성합니다.

  • 새 직원(Bob Smith, 직원 ID 101)이 2014년 6월 4일에 뉴욕 지사에 입사했습니다. .csv 또는 .parquet 파일에서 첫 번째 열의 I는 새 행이 소스 데이터베이스의 EMPLOYEE 테이블에 삽입(INSERT)되었음을 나타냅니다.

  • 2015년 10월 8일에 Bob은 LA 지사로 전근갑니다. .csv 또는 .parquet 파일에서 U는 Bob의 새 지사 위치를 반영하여 EMPLOYEE 테이블의 해당 행이 업데이트(UPDATE)되었음을 나타냅니다. 이 줄 뒷부분에는 UPDATE 이후에 EMPLOYEE 테이블에서 이 행이 어떻게 표시되는지가 반영됩니다.

  • 2017년 3월 13일에 Bob은 Dallas 지사로 다시 전근갑니다. .csv 또는 .parquet 파일에서 U는 이 행이 다시 업데이트(UPDATE)되었음을 나타냅니다. 이 줄 뒷부분에는 UPDATE 이후에 EMPLOYEE 테이블에서 이 행이 어떻게 표시되는지가 반영됩니다.

  • Bob은 Dallas에서 얼마간 근무한 후 퇴사합니다. .csv 또는 .parquet 파일에서 D는 소스 테이블에서 이 행이 삭제(DELETE)되었음을 나타냅니다. 이 줄의 나머지에는 삭제 전에 EMPLOYEE 테이블에서 이 행이 어떻게 표시되었는지가 반영됩니다.

참고로 CDC의 경우 기본적으로AWS DMS트랜잭션 순서에 관계없이 각 데이터베이스 테이블의 행 변경 사항을 저장합니다. 행 변경 사항을 거래 순서에 따라 CDC 파일에 저장하려면 S3 엔드포인트 설정을 사용하여 이를 지정하고 CDC 트랜잭션 파일을 S3 대상에 저장할 폴더 경로를 지정해야 합니다. 자세한 정보는 S3 대상의 트랜잭션 순서를 포함한 데이터 변경 사항 캡처 (CDC)을 참조하세요.

데이터 복제 작업 중에 Amazon S3 대상에 대한 쓰기 빈도를 제어하려면cdcMaxBatchIntervalcdcMinFileSize추가 연결 속성. 따라서 추가 오버헤드 작업 없이 데이터를 분석할 때 성능이 향상될 수 있습니다. 자세한 내용을 알아보려면 다음 섹션을 참조하세요.Amazon S3 S3를 대상으로 사용할 때의 추가 연결 속성AWS DMS

Amazon S3 S3를 대상으로 사용하기 위한 사전 요구 사항

Amazon S3 S3를 대상으로 사용하기 전에 다음 사항이 사실인지 확인하십시오.

  • 대상으로 사용하는 S3 버킷은 같은 곳에 있습니다.AWS데이터를 마이그레이션하는 데 사용하는 DMS 복제 인스턴스로서의 지역.

  • 이AWS마이그레이션에 사용하는 계정에는 대상으로 사용 중인 S3 버킷에 대한 쓰기 및 삭제 액세스 권한이 있는 IAM 역할이 있습니다.

  • 이 역할에는 태깅 액세스 권한이 있으므로 대상 버킷에 작성되는 S3 객체에 태그를 지정할 수 있습니다.

  • IAM 역할에는 DMS (dms.amazonaws.com) 가 다음과 같이 추가되었습니다.신뢰할 수 있습니다.

이 계정의 액세스 권한을 설정하려면 마이그레이션 작업 생성에 사용되는 사용자 계정에 할당된 역할에 다음 권한 집합이 있어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject", "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::buckettest2/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::buckettest2" ] } ] }

Amazon S3 S3를 대상으로 사용하는 것에 대한 제한

Amazon S3 S3를 대상으로 사용할 경우 다음과 같은 제한이 적용됩니다.

  • S3에 대한 버전 관리를 활성화하지 마십시오. S3 버전 관리가 필요한 경우 수명 주기 정책을 사용하여 이전 버전을 적극적으로 삭제하십시오. 그렇지 않으면 S3로 인해 엔드포인트 테스트 연결 실패가 발생할 수 있습니다.list-object통화 제한 시간. S3 버킷에 대한 수명 주기 정책을 생성하려면 단원을 참조하십시오.스토리지 수명 주기 관리. S3 객체의 버전을 삭제하려면 단원을 참조하십시오.버전 관리가 활성화된 버킷에서 객체 버전 삭제.

  • VPC 지원 (게이트웨이 VPC) S3 버킷은 버전 3.4.7 이상에서 지원됩니다.

  • 다음 데이터 정의 언어 (DL) 명령은 변경 데이터 캡처 (CDC) 에 지원됩니다. 테이블 비우기, 테이블 삭제, 테이블 생성, 테이블 이름 바꾸기, 열 추가, 열 삭제, 열 이름 바꾸기 및 열 데이터 형식 변경

    참고

    DL 잘라내기 작업은 S3 버킷에서 모든 파일과 해당 테이블 폴더를 제거합니다. 작업 설정을 사용하여 해당 동작을 비활성화하고 변경 데이터 캡처 (CDC) 중에 DMS가 DDL 동작을 처리하는 방식을 구성할 수 있습니다. 자세한 정보는 변경 처리 DDL을 다루기 위한 작업 설정을 참조하세요.

  • 전체 LOB 모드는 지원되지 않습니다.

  • 전체 로드 중에 원본 테이블의 구조 변경은 지원되지 않습니다. 데이터 변경은 전체 로드 중에 지원됩니다.

  • 동일한 원본 테이블에서 동일한 대상 S3 엔드포인트 버킷으로 데이터를 복제하는 작업을 여러 번 수행하면 동일한 파일에 해당 작업을 쓰게 됩니다. 동일한 테이블의 데이터 원본인 경우 서로 다른 대상 엔드포인트(버킷)을 지정하는 것이 좋습니다.

  • BatchApplyS3 엔드포인트에는 지원되지 않습니다. Batch 적용 사용 (예:BatchApplyEnabledS3 대상의 대상 메타데이터 (작업 설정) 로 인해 데이터가 손실될 수 있습니다.

  • 를 사용할 수 없습니다.datePartitionedEnabled또는addColumnNamePreserveTransactions또는CdcPath.

보안

Amazon S3를 대상으로 사용하려면 마이그레이션에 사용된 계정에 대상으로 사용되는 Amazon S3 버킷에 대한 쓰기 및 삭제 권한이 있어야 합니다. Amazon S3에 액세스하는 데 필요한 권한이 있는 IAM 역할의 Amazon S3 리소스 이름 (ARN) 을 지정합니다.

AWS DMS는 미리 제공된 ACL (액세스 제어 목록) 이라고 하는 Amazon S3 S3용 사전 정의된 권한 부여 집합을 지원합니다. 미리 준비된 각 ACL에는 Amazon S3 버킷에 대한 권한을 설정하는 데 사용할 수 있는 수혜자 및 권한 집합이 있습니다. S3 대상 엔드포인트에 대해 연결 문자열 속성에서 cannedAclForObjects를 사용하여 미리 제공된 ACL을 지정할 수 있습니다. 추가 연결 속성 cannedAclForObjects 사용에 대한 자세한 내용은 Amazon S3 S3를 대상으로 사용할 때의 추가 연결 속성AWS DMS 단원을 참조하십시오. Amazon S3 미리 제공된 ACL에 대한 자세한 내용은 단원을 참조하십시오.미리 제공된 ACL.

마이그레이션에 사용하는 IAM 역할이 s3:PutObjectAcl API 작업을 수행할 수 있어야 합니다.

아파치 파켓을 사용하여 Amazon S3 객체 저장

쉼표로 구분된 값 (.csv) 형식은 Amazon S3 대상 객체의 기본 스토리지 형식입니다. 보다 간소화된 스토리지와 보다 빠른 쿼리를 위해 Apache Parquet(.parquet)를 스토리지 형식으로 대신 사용할 수 있습니다.

Apache Parquet는 원래 하둡용으로 개발된 오픈 소스 파일 스토리지 형식입니다. Apache Parquet에 대한 자세한 내용은 https://parquet.apache.org/를 참조하십시오.

.parquet를 마이그레이션된 S3 대상 객체의 스토리지 형식으로 설정하기 위해 다음 메커니즘을 사용할 수 있습니다.

Amazon S3 객체 태깅

작업 테이블 매핑 규칙의 일부로 적절한 JSON 객체를 지정하여 복제 인스턴스가 생성하는 Amazon S3 객체에 태그를 지정할 수 있습니다. 유효한 태그 이름을 비롯한 S3 객체 태깅의 요구 사항 및 옵션에 대한 자세한 내용은 을 참조하십시오.객체 태그 지정에서Amazon Simple Sage Service 사용 설명서. JSON을 사용한 테이블 매핑에 대한 자세한 내용은 JSON을 사용하여 테이블 선택 및 변환 규칙 지정 단원을 참조하십시오.

selection 규칙 유형의 JSON 객체 하나 이상을 사용하여 지정된 테이블 및 스키마를 위해 생성된 S3 객체에 태깅합니다. 그런 다음 add-tag 작업을 사용하여 post-processing 규칙 유형의 JSON 객체 하나 이상으로 이 selection 객체(또는 객체들)를 따릅니다. 이러한 사후 처리 규칙은 태깅하려는 S3 객체를 식별하고 이러한 S3 객체에 추가하려는 태그의 이름과 값을 지정합니다.

다음 테이블의 post-processing 규칙 유형의 JSON 객체에서 지정할 파라미터를 찾을 수 있습니다.

파라미터 가능한 값 설명
rule-type post-processing

생성된 대상 객체에 사후 처리 작업을 적용하는 값입니다. 하나 이상의 사후 처리 규칙을 지정하여 선택한 S3 객체에 태깅할 수 있습니다.

rule-id 숫자 값. 규칙을 식별하기 위한 고유한 숫자 값.
rule-name 영숫자 값입니다. 규칙을 식별하기 위한 고유한 이름.
rule-action add-tag S3 객체에 적용할 사후 처리 작업입니다. add-tag 작업의 단일 JSON 사후 처리 객체를 사용하여 하나 이상의 태그를 추가할 수 있습니다.
object-locator

schema-name— 테이블 스키마의 이름입니다.

table-name— 테이블의 이름입니다.

규칙이 적용되는 각 스키마와 테이블의 이름입니다. 각 object-locator 파라미터 값의 전부 또는 일부에 '%'(퍼센트 기호)를 와일드카드로 사용할 수 있습니다. 따라서 다음 항목들을 일치시킬 수 있습니다.

  • 단일 스키마의 단일 테이블

  • 일부 또는 전체 스키마의 단일 테이블

  • 단일 스키마의 일부 또는 전체 테이블

  • 일부 또는 전체 스키마의 일부 또는 전체 테이블

tag-set

key— 단일 태그의 모든 유효한 이름

value— 이 태그의 유효한 모든 JSON 값입니다.

지정된 object-locator와 일치하는 생성된 각 S3 객체에 설정하려는 하나 이상의 태그 이름과 값입니다. 하나의 tag-set 파라미터 객체에서 최대 10개의 키-값 페어를 지정할 수 있습니다. S3 객체 태그 지정에 대한 자세한 내용은 단원을 참조하십시오.객체 태그 지정에서Amazon Simple Sage Service 사용 설명서.

${dyn-value}를 사용하여 태그의 keyvalue 파라미터 값 전부 또는 일부에 동적 값을 지정할 수도 있습니다. 여기서 ${dyn-value}${schema-name} 또는 ${table-name}일 수 있습니다. 따라서 현재 선택된 스키마 또는 테이블의 이름을 파라미터 값의 전체 또는 일부로 삽입할 수 있습니다.

참고
중요

key 파라미터의 동적 값을 삽입하는 경우, 사용 방법에 따라 S3객체의 중복된 이름이 있는 태그를 생성할 수 있습니다. 이 경우, 중복 태그 설정 중 하나만 객체에 추가됩니다.

여러 post-processing 규칙 유형을 지정하여 S3 객체 선택을 태깅하는 경우, 각 S3 객체는 하나의 사후 처리 규칙의 tag-set 하나만 사용하여 태깅됩니다. 주어진 S3 객체 태깅에 사용되는 특정 태그 세트는 연결된 객체 로케이터가 해당 S3 객체와 가장 잘 일치하는 사후 처리 규칙의 태그 세트입니다.

예를 들어 2개의 사후 처리 규칙이 동일한 S3 객체를 식별한다고 가정해 보겠습니다. 또한 한 규칙의 객체 로케이터는 와일드카드를 사용하며, 다른 한 규칙의 객체 로케이터는 정확한 일치를 사용하여 S3 객체를 식별한다고(와일드카드 없이) 가정하겠습니다. 이 경우, 정확한 일치를 사용하는 사후 처리 규칙에 연결된 태그 세트가 S3 객체 태깅에 사용됩니다. 여러 사후 처리 규칙이 주어진 S3 객체를 똑같이 잘 일치시키는 경우, 이러한 첫 번째 사후 처리 규칙에 연결된 태그 세트가 객체 태깅에 사용됩니다.

예 단일 테이블 및 스키마를 위해 생성된 S3 객체에 정적 태그 추가

다음 선택 및 사후 처리 규칙은 3개의 태그(tag_1, tag_2, tag_3 및 해당 정적 값 value_1, value_2, value_3)를 생성된 S3 객체에 추가합니다. 이 S3 객체는 스키마 이름이 aat2STOCK이라는 이름의 소스에 있는 단일 테이블에 상응합니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "5", "rule-name": "5", "object-locator": { "schema-name": "aat2", "table-name": "STOCK" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat2", "table-name": "STOCK" }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" }, { "key": "tag_3", "value": "value_3" } ] } ] }

예 여러 테이블 및 스키마를 위해 생성된 S3 객체에 정적 및 동적 태그 추가

다음 예에는 1개의 선택 규칙과 2개의 사후 처리 규칙이 있습니다. 여기서 소스의 입력에는 모든 테이블과 테이블의 모든 스키마가 포함됩니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "%", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_${table-name}" } ] }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat", "table-name": "ITEM", }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" } ] } ] }

첫 번째 사후 처리 규칙은 2개의 태그(dw-schema-namedw-schema-table) 및 해당 동적 값(${schema-name}my_prefix_${table-name})을 대상에서 생성된 거의 모든 S3 객체에 추가합니다. 예외는 두 번째 사후 처리 규칙으로 식별되고 태깅된 S3 객체입니다. 따라서 와일드카드 객체 로케이터에 의해 식별된 각각의 S3 객체는 소스에서 상응하는 스키마와 테이블을 식별하는 태그를 사용하여 생성됩니다.

두 번째 사후 처리 규칙은 tag_1tag_2와 해당 정적 값 value_1value_2를 정확한 일치 객체 로케이터에 의해 식별되는 생성된 S3 객체에 추가합니다. 생성된 이 S3 객체는 따라서 스키마 이름이 aatITEM이라는 이름의 소스에 있는 단일 테이블에 상응합니다. 정확한 일치로 인해 이러한 태그는 와일드카드만으로 S3 객체를 일치시키는 첫 번째 사후 처리 규칙에서 추가된 이 객체의 모든 태그를 대체합니다.

예 S3 객체에 동적 태그 이름과 값을 모두 추가

다음 예에는 2개의 선택 규칙과 1개의 사후 처리 규칙이 있습니다. 여기서 소스의 입력에는 retail 또는 wholesale 스키마의 ITEM 테이블만 포함됩니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "retail", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "wholesale", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "ITEM", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_ITEM" }, { "key": "${schema-name}_ITEM_tag_1", "value": "value_1" }, { "key": "${schema-name}_ITEM_tag_2", "value": "value_2" } ] ] }

사후 처리 규칙의 태그 세트는 2개의 태그(dw-schema-namedw-schema-table)를 대상의 ITEM 테이블을 위해 생성된 모든 S3 객체에 추가합니다. 첫 번째 태그는 동적 값 "${schema-name}"를 갖고 두 번째 태그는 정적 값 "my_prefix_ITEM"을 갖습니다. 따라서 각각의 S3 객체는 소스에서 상응하는 스키마와 테이블을 식별하는 태그를 사용하여 생성됩니다.

또한 태그 세트는 동적 이름이 있는 2개의 태그(${schema-name}_ITEM_tag_1"${schema-name}_ITEM_tag_2")를 추가합니다. 이러한 태그는 상응하는 정적 값 value_1value_2를 갖습니다. 따라서 이러한 태그는 각각 현재의 스키마 retail 또는 wholesale에 대해 이름이 지정됩니다. 각 객체가 단일한 고유 스키마 이름을 위해 생성되기 때문에 이 객체에는 중복된 동적 태그를 생성할 수 없습니다. 이 스키마 이름은 다른 방식으로 고유한 태그 이름을 생성하는 데 사용됩니다.

생성 중AWS KMSAmazon S3 대상 객체를 암호화하는 키

사용자 지정을 만들고 사용할 수 있습니다.AWS KMSAmazon S3 대상 객체를 암호화하는 데 사용되는 키 KMS 키를 생성한 후 S3 대상 엔드포인트를 만들 때 다음 방법 중 하나로 이 키를 사용하여 객체를 암호화할 수 있습니다.

  • AWS CLI를 사용하여 create-endpoint 명령을 실행할 때 S3 객체에 다음 옵션(기본 .csv 파일 스토리지 형식으로)을 사용하십시오.

    --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-KMS-key-ARN"}'

    여기서 your-KMS-key-ARN은 KMS 키의 Amazon 리소스 이름(ARN)입니다. 자세한 정보는 Amazon S3 S3를 대상으로 사용할 때의 엔드포인트 설정AWS DMS을 참조하세요.

  • 추가 연결 속성 encryptionMode를 값 SSE_KMS로 설정하고, 추가 연결 속성 serverSideEncryptionKmsKeyId는 KMS 키의 ARN으로 설정합니다. 자세한 정보는 Amazon S3 S3를 대상으로 사용할 때의 추가 연결 속성AWS DMS을 참조하세요.

KMS 키를 사용하여 Amazon S3 대상 객체를 암호화하려면 Amazon S3 버킷에 액세스할 수 있는 권한이 있는 IAM 역할이 필요합니다. 그러면 생성한 암호화 키에 연결된 정책 (키 정책) 에서 이 IAM 역할에 액세스할 수 있습니다. IAM 콘솔에서 다음을 생성하여 추가가 가능합니다.

  • Amazon S3 버킷에 액세스할 수 있는 권한이 있는 정책입니다.

  • 이 정책의 IAM 역할.

  • 이 역할을 참조하는 키 정책이 포함된 KMS 키 암호화 키입니다.

다음 절차에서 그 방법을 설명합니다.

Amazon S3 버킷에 액세스할 수 있는 권한이 포함된 IAM 정책을 생성하려면

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 정책을 선택합니다. 정책 페이지가 열립니다.

  3. 정책 생성(Create policy)을 선택합니다. 정책 생성 페이지가 열립니다.

  4. 서비스를 선택하고 S3를 선택합니다. 작업 권한 목록이 나타납니다.

  5. 모두 확장을 선택하여 목록을 확장하고 최소한 다음 권한을 선택합니다.

    • ListBucket

    • PutObject

    • DeleteObject

    필요한 그 밖의 권한을 선택한 다음 모두 축소를 선택하여 목록을 축소합니다.

  6. 리소스를 선택하여 액세스하려는 리소스를 지정합니다. 최소한 선택하십시오모든 리소스일반 Amazon S3 리소스 액세스를 제공합니다.

  7. 필요한 그 밖의 조건 또는 권한을 추가한 다음 정책 검토를 선택합니다. 정책 검토 페이지에서 결과를 확인합니다.

  8. 필요한 설정이 되었다면 정책의 이름(예: DMS-S3-endpoint-access)과 추가 설명을 입력한 다음 정책 생성을 선택합니다. 정책이 생성되었다는 메시지와 함께 정책 페이지가 열립니다.

  9. 정책 목록에서 정책 이름을 검색하고 선택합니다. 다음과 비슷한 정책의 JSON이 표시되는 요약 페이지가 나타납니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": "*" } ] }

이제 Amazon S3 리소스에 액세스하여 지정된 이름으로 암호화하는 새 정책을 생성했습니다. 예를 들면 다음과 같습니다.DMS-S3-endpoint-access.

이 정책으로 IAM 역할을 생성하려면

  1. IAM 콘솔에서 를 선택합니다.Roles탐색 창에서. 역할 세부 정보 페이지가 열립니다.

  2. 역할 생성(Create role)을 선택합니다. 역할 생성 페이지가 열립니다.

  3. 다음으로 바꿉니다.AWS신뢰할 수 있는 개체로 선택한 서비스, 선택DMSIAM 역할을 사용하기 위한 서비스로

  4. [다음: 권한(Next: Permissions)]을 선택합니다. 이연결 권한 연결 정책뷰가 에 나타납니다.역할 생성페이지.

  5. 이전 절차(DMS-S3-endpoint-access)에서 생성한 IAM 역할에 대한 IAM 정책을 찾아 선택합니다.

  6. [다음: 권한(Next: Tags)]를 선택합니다. 이태그 추가뷰가 에 나타납니다.역할 생성페이지. 여기서 원하는 태그를 추가할 수 있습니다.

  7. [다음: 권한(Next: Review)]를 선택합니다. 이검토뷰가 에 나타납니다.역할 생성페이지. 여기서 결과를 확인할 수 있습니다.

  8. 필요한 설정이 되었다면 역할의 이름(필수, 예를 들어 DMS-S3-endpoint-access-role)과 추가 설명을 입력한 다음 역할 생성을 선택합니다. 역할이 생성되었다는 메시지와 함께 역할 세부 정보 페이지가 열립니다.

이제 지정된 이름의 암호화를 위해 Amazon S3 리소스에 액세스할 수 있는 새 역할을 생성했습니다. 예를 들면 다음과 같습니다.DMS-S3-endpoint-access-role.

IAM 역할을 참조하는 키 정책을 사용하여 KMS 키 암호화 키를 만들려면

참고

AWS DMS에서 AWS KMS 암호화 키를 사용하는 방법에 대한 자세한 내용은 암호화 키 설정 및 AWS KMS 권한 지정 단원을 참조하십시오.

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/kms에서 AWS Key Management Service(AWS KMS) 콘솔을 엽니다.

  2. AWS 리전을 변경하려면 페이지의 오른쪽 상단 모서리에 있는 리전 선택기를 사용합니다.

  3. 탐색 창에서 고객 관리형 키(Customer managed keys)를 선택합니다.

  4. 키 생성(Create key)을 선택합니다. Configure key(키 구성) 페이지가 열립니다.

  5. 키 유형에 대해 Symmetric(대칭)을 선택합니다.

    참고

    이 키를 만들면 대칭 키만 만들 수 있습니다.AWSAmazon S3 S3와 같은 서비스는 대칭 암호화 키로만 작동합니다.

  6. [Advanced Options]를 선택합니다. Key material origin(키 구성 요소 오리진)KMS가 선택되어 있는지 확인하고 다음을 선택합니다. Add labels(레이블 추가) 페이지가 열립니다.

  7. Create alias and description(별칭 및 설명 생성)에 키의 별칭(예: DMS-S3-endpoint-encryption-key)과 추가 설명을 입력합니다.

  8. 태크에서 키 식별과 키 사용 추적에 도움이 되는 태그를 추가한 후 다음을 선택합니다. Define key administrative permissions(키 관리 권한 정의) 페이지가 열리고 선택할 수 있는 사용자 및 역할 목록이 표시됩니다.

  9. 키를 관리할 사용자와 역할을 추가합니다. 키를 관리하는 데 필요한 권한이 이러한 사용자와 역할에 있는지 확인합니다.

  10. Key deletion(키 삭제)에서 키 관리자가 키를 삭제할 수 있는지 여부를 선택한 후 다음을 선택합니다. Define key usage permissions(키 사용 권한 정의) 페이지가 열리고 선택할 수 있는 추가 사용자 및 역할 목록이 표시됩니다.

  11. 에 대한이 계정Amazon S3 대상에서 암호화 작업을 수행하려는 사용 가능한 사용자를 선택합니다. 에서 이전에 생성한 역할도 선택합니다.RolesAmazon S3 대상 객체를 암호화하기 위한 액세스 활성화 (예:)DMS-S3-endpoint-access-role).

  12. 목록에 없는 다른 계정을 추가하여 동일한 액세스 권한을 부여하려면 다른 AWS 계정에 대해 다른 AWS 계정 추가를 선택한 후 다음을 선택합니다. Review and edit key policy(키 정책 검토 및 편집) 페이지가 열리고 기존 JSON을 입력하여 검토하고 편집할 수 있는 키 정책 JSON이 표시됩니다. 여기서 키 정책이 이전 단계에서 선택한 역할 및 사용자(예: AdminUser1)를 참조하는 위치를 확인할 수 있습니다. 다음 예제에 나온 것처럼 다양한 보안 주체(사용자 및 역할)에 허용되는 다양한 키 작업도 볼 수 있습니다.

    { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]
  13. [마침]을 클릭합니다. 이암호화 키페이지가 열리고 KMS 키가 생성되었음을 알리는 메시지가 표시됩니다.

이제 지정된 별칭의 새 KMS 키가 생성되었습니다(예: DMS-S3-endpoint-encryption-key). 이 키는 활성화합니다AWS DMSAmazon S3 대상 객체를 암호화합니다.

날짜 기반 폴더 파티셔닝 사용

AWS DMSAmazon S3를 대상 엔드포인트로 사용하는 경우 트랜잭션 커밋 날짜를 기준으로 S3 폴더 파티션을 지원합니다. 날짜 기반 폴더 파티셔닝을 사용하면 단일 소스 테이블의 데이터를 S3 버킷의 시간 계층 폴더 구조에 쓸 수 있습니다. S3 대상 엔드포인트 생성 시 폴더를 파티셔닝하면 다음을 수행할 수 있습니다.

  • S3 객체 관리 개선

  • 각 S3 폴더의 크기 제한

  • 데이터 레이크 쿼리 또는 기타 후속 작업 최적화

S3 대상 엔드포인트를 생성할 때 날짜 기반 폴더 파티셔닝을 활성화할 수 있습니다. 기존 데이터를 마이그레이션하고 진행 중인 변경 사항을 복제 (전체 로드+CDC) 하거나 데이터 변경 사항만 복제 (CDC만 해당) 할 때 활성화할 수 있습니다. 다음 대상 엔드포인트 설정을 사용합니다.

  • DatePartitionEnabled— 날짜를 기준으로 분할을 지정합니다. 이 부울 옵션을 다음과 같이 설정합니다.true트랜잭션 커밋 날짜를 기준으로 S3 버킷 폴더를 파티셔닝합니다.

    에는 이 설정을 사용할 수 없습니다.PreserveTransactions또는CdcPath.

    기본값은 false입니다.

  • DatePartitionSequence— 폴더 파티셔닝 중 사용할 날짜 형식의 순서를 식별합니다. 이 ENUM 옵션을 다음과 같이 설정합니다.YYYYMMDD,YYYYMMDDHH,YYYYMM,MMYYYYDD, 또는DDMMYYYY. 기본값은 YYYYMMDD입니다. 이 설정을 사용할 수 있습니다.DatePartitionedEnabled를 로 설정합니다.true.

  • DatePartitionDelimiter— 폴더 파티셔닝 중 사용할 날짜 구분 기호를 지정합니다. 이 ENUM 옵션을 다음과 같이 설정합니다.SLASH,DASH,UNDERSCORE, 또는NONE. 기본값은 SLASH입니다. DatePartitionedEnabledtrue으로 설정된 경우 이 설정을 사용합니다.

다음 예에서는 데이터 파티션 시퀀스의 기본값과 구분 기호를 사용하여 날짜 기반 폴더 분할을 활성화하는 방법을 보여 줍니다. 이는 을 (를)--s3-settings '{json-settings}'의 옵션AWS CLI.create-endpoint명령.

--s3-settings '{"DatePartitionEnabled": true,"DatePartitionSequence": "YYYYMMDD","DatePartitionDelimiter": "SLASH"}'

Amazon S3 S3를 대상으로 사용하는 경우 분할된 소스의 병렬 로드AWS DMS

Amazon S3 대상에 분할된 데이터 소스를 병렬로 전체 로드하도록 구성할 수 있습니다. 이 접근 방식은 지원되는 소스 데이터베이스 엔진에서 S3 타겟으로 파티셔닝된 데이터를 마이그레이션하는 로드 시간을 단축합니다. 분할된 소스 데이터의 로드 시간을 개선하려면 원본 데이터베이스에 있는 모든 테이블의 파티션에 매핑되는 S3 대상 하위 폴더를 생성합니다. 이러한 파티션에 바인딩된 하위 폴더에서는AWS DMSparallel 프로세스를 실행하여 대상의 각 하위 폴더를 채웁니다.

S3 대상의 parallel 전체 로드를 구성하기 위해 S3는 세 개를 지원합니다.parallel-load에 대한 규칙 유형table-settings테이블 매핑 규칙:

  • partitions-auto

  • partitions-list

  • ranges

이러한 병렬 로드 규칙 유형에 대한 자세한 내용은 단원을 참조하십시오.테이블 및 컬렉션 설정 규칙 및 작업.

를 위해partitions-autopartitions-list규칙 유형,AWS DMS는 다음과 같이 소스 엔드포인트의 각 파티션 이름을 사용하여 대상 하위 폴더 구조를 식별합니다.

bucket_name/bucket_folder/database_schema_name/table_name/partition_name/LOADseq_num.csv

여기서는 데이터가 마이그레이션되고 S3 대상에 저장되는 하위 폴더 경로에는 추가 경로가 포함됩니다.partition_name동일한 이름을 가진 소스 파티션에 해당하는 하위 폴더입니다. 이것은partition_name그러면 하위 폴더는 하나 이상의 를 저장합니다.LOADseq_num.csv지정된 소스 파티션에서 마이그레이션된 데이터를 포함하는 파일 여기,seq_num.csv 파일 이름의 시퀀스 번호 접두사입니다 (예:00000001이름이 있는.csv 파일에서LOAD00000001.csv.

그러나 MongoDB 및 DocumentDB와 같은 일부 데이터베이스 엔진에는 파티션이라는 개념이 없습니다. 이러한 데이터베이스 엔진의 경우AWS DMS다음과 같이 실행 중인 소스 세그먼트 인덱스를 대상.csv 파일 이름에 접두사로 추가합니다.

.../database_schema_name/table_name/SEGMENT1_LOAD00000001.csv .../database_schema_name/table_name/SEGMENT1_LOAD00000002.csv ... .../database_schema_name/table_name/SEGMENT2_LOAD00000009.csv .../database_schema_name/table_name/SEGMENT3_LOAD0000000A.csv

여기, 파일들SEGMENT1_LOAD00000001.csvSEGMENT1_LOAD00000002.csv실행 중인 동일한 소스 세그먼트 인덱스 접두사로 이름이 지정됩니다.SEGMENT1. 이 두 개의.csv 파일에 대해 마이그레이션된 소스 데이터가 동일한 실행 소스 세그먼트 인덱스와 연결되어 있기 때문에 이름이 그렇게 지정됩니다. 반면 마이그레이션되는 데이터는 각 대상에 저장됩니다.SEGMENT2_LOAD00000009.csvSEGMENT3_LOAD0000000A.csv파일은 실행 중인 다른 소스 세그먼트 인덱스와 연결됩니다. 각 파일에는 실행 중인 세그먼트 인덱스의 이름이 파일 이름 앞에 붙습니다.SEGMENT2SEGMENT3.

를 위해ranges병렬 로드 유형, 다음을 사용하여 열 이름 및 열 값을 정의합니다.columnsboundaries의 설정table-settings규칙. 이러한 규칙을 사용하면 다음과 같이 세그먼트 이름에 해당하는 파티션을 지정할 수 있습니다.

"parallel-load": { "type": "ranges", "columns": [ "region", "sale" ], "boundaries": [ [ "NORTH", "1000" ], [ "WEST", "3000" ] ], "segment-names": [ "custom_segment1", "custom_segment2", "custom_segment3" ] }

여기,segment-names설정은 S3 대상에서 데이터를 병렬로 마이그레이션하기 위한 세 파티션의 이름을 정의합니다. 마이그레이션된 데이터는 다음과 같이 병렬로 로드되고 파티션 하위 폴더 아래의.csv 파일에 순서대로 저장됩니다.

.../database_schema_name/table_name/custom_segment1/LOAD[00000001...].csv .../database_schema_name/table_name/custom_segment2/LOAD[00000001...].csv .../database_schema_name/table_name/custom_segment3/LOAD[00000001...].csv

여기,AWS DMS는 세 개의 파티션 하위 폴더 각각에 시리즈의.csv 파일을 저장합니다. 각 파티션 하위 폴더에 있는 일련의 .csv 파일은 다음부터 시작하여 점증적으로 이름이 지정됩니다.LOAD00000001.csv모든 데이터가 마이그레이션될 때까지

파티션 하위 폴더의 이름을 명시적으로 지정하지 않는 경우도 있습니다.ranges를 사용한 병렬 로드 유형segment-names을 설정합니다. 이러한 경우에는AWS DMS그 아래에.csv 파일의 각 시리즈를 만드는 기본값을 적용합니다.table_name하위 폴더. 여기,AWS DMS다음과 같이 각.csv 파일 시리즈의 파일 이름에 실행 중인 소스 세그먼트 인덱스의 이름을 접두사로 붙입니다.

.../database_schema_name/table_name/SEGMENT1_LOAD[00000001...].csv .../database_schema_name/table_name/SEGMENT2_LOAD[00000001...].csv .../database_schema_name/table_name/SEGMENT3_LOAD[00000001...].csv ... .../database_schema_name/table_name/SEGMENTZ_LOAD[00000001...].csv

Amazon S3 S3를 대상으로 사용할 때의 엔드포인트 설정AWS DMS

추가 연결 속성을 사용하는 것과 유사하게 엔드포인트 설정을 사용하여 Amazon S3 대상을 구성할 수 있습니다. AWS CLI에서 --s3-settings 'json-settings' 옵션과 함께 create-endpoint 명령을 사용하여 대상 엔드포인트를 생성할 때 이러한 설정을 지정할 수 있습니다. 여기서 json-settings는 설정을 지정하는 파라미터가 포함된 JSON 객체입니다.

동일한 파일이 포함되는.json 파일을 지정할 수도 있습니다.json-settings객체 (예: 다음과 같음) --s3-settings file:///your-file-path/my_s3_settings.json. 여기,my_s3_settings.json동일한 파일을 포함하는.json 파일의 이름입니다.json-settings object.

시작 대문자가 있는 엔드포인트 설정의 파라미터 이름을 제외하고, 엔드포인트 설정의 파라미터 이름은 동등한 추가 연결 속성의 이름과 동일합니다. 그러나 create-endpoint 명령의 --s3-settings 옵션을 사용하여 추가 연결 속성을 사용하는 모든 S3 대상 엔드포인트 설정을 사용할 수 있는 것은 아닙니다. 에 사용할 수 있는 설정에 대한 자세한 내용은create-endpointCLI 의견, 참조create-endpoint-에서AWS CLI명령 참조...에 대한AWS DMS. 이러한 설정에 대한 일반적인 정보는 Amazon S3 S3를 대상으로 사용할 때의 추가 연결 속성AWS DMS의 해당 추가 연결 속성을 참조하십시오.

S3 대상 엔드포인트 설정을 사용하여 다음을 구성할 수 있습니다.

  • S3 대상 객체를 암호화하기 위한 사용자 지정 KMS 키.

  • Parquet 파일은 S3 대상 객체의 스토리지 형식입니다.

  • S3 대상의 트랜잭션 순서를 포함한 변경 데이터 캡처 (CDC)

데이터 암호화를 위한 AWS KMS 키 설정

다음 예는 S3 대상 객체를 암호화하도록 사용자 지정 KMS 키를 구성하는 방법을 보여 줍니다. 시작하려면 다음 create-endpoint CLI 명령을 실행합니다.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480"}'

여기서 --s3-settings 옵션에 의해 지정된 JSON 객체는 다음 두 가지 파라미터를 정의합니다. 하나는 값이 SSE_KMSEncryptionMode 파라미터입니다. 다른 하나는 값이 arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480ServerSideEncryptionKmsKeyId 파라미터입니다. 이 값은 사용자 지정 KMS 키의 Amazon 리소스 이름(ARN)입니다. S3 대상의 경우, 추가 설정도 지정할 수 있습니다. 이러한 설정은 서버 액세스 역할을 식별하고, 기본 CSV 객체 스토리지 형식의 구분 기호를 제공하며, S3 대상 객체를 저장할 버킷 위치와 이름을 제공합니다.

기본적으로 S3 데이터 암호화는 S3 서버 측 암호화를 사용하여 수행됩니다. 이전 예의 S3 대상의 경우, 다음 예에서처럼 이것은 엔드포인트 설정을 지정하는 것에 해당합니다.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_S3"}'

S3 서버 측 암호화 작업에 대한 자세한 내용은 서버 측 암호화를 사용하여 데이터 보호 단원을 참조하십시오.

참고

CLI도 사용할 수 있습니다.modify-endpoint의 값을 변경하는 명령EncryptionMode의 기존 엔드포인트에 대한 매개변수SSE_KMSSSE_S3. 하지만 을 변경할 수 없습니다.EncryptionMode값: 부터SSE_S3SSE_KMS.

.parquet 파일을 사용하여 S3 대상 객체를 저장하기 위한 설정

S3 대상 객체 생성의 기본 형식은 .csv 파일입니다. 다음 예는 S3 대상 객체 생성을 위한 형식으로 .parquet 파일을 지정하기 위한 몇 가지 엔드포인트 설정을 보여 줍니다. 다음 예에서처럼 .parquet 파일 형식을 모두 기본값으로 지정할 수 있습니다.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "DataFormat": "parquet"}'

여기서는 모든 S3 기본값으로 형식을 활성화하기 위해 DataFormat 파라미터가 parquet로 설정됩니다. 이러한 기본값에는 반복되는 값을 보다 효율적으로 저장하기 위해 비트 압축과 실행 길이 인코딩의 조합을 사용하는 사전식 인코딩("EncodingType: "rle-dictionary")이 포함됩니다.

다음 예에서처럼 기본값이 아닌 옵션의 추가 설정을 추가할 수 있습니다.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "CompressionType": "GZIP", "DataFormat": "parquet", "EncodingType: "plain-dictionary", "DictPageSizeLimit": 3,072,000, "EnableStatistics": false }'

여기서 몇 가지 표준 S3 버킷 옵션의 파라미터와 DataFormat 파라미터 외에 다음의 추가 .parquet 파일 파라미터가 설정됩니다.

  • EncodingType— 사전 인코딩으로 설정 (plain-dictionary) 각 열에서 찾은 값을 사전 페이지의 열당 청크에 저장합니다.

  • DictPageSizeLimit— 최대 사전 페이지 크기를 3MB로 설정합니다.

  • EnableStatistics— Parquet 파일 페이지 및 행 그룹에 대한 통계 수집을 활성화하는 기본값을 비활성화합니다.

S3 대상의 트랜잭션 순서를 포함한 데이터 변경 사항 캡처 (CDC)

기본적으로 다음과 같은 경우AWS DMSCDC 작업을 실행합니다. 이 작업은 원본 데이터베이스 (또는 데이터베이스) 에 기록된 모든 행 변경 사항을 각 테이블에 대해 하나 이상의 파일에 저장합니다. 동일한 테이블에 대한 변경 내용을 포함하는 각 파일 집합은 해당 테이블과 연결된 단일 대상 디렉터리에 있습니다.AWS DMSAmazon S3 대상 엔드포인트로 마이그레이션된 데이터베이스 테이블 수만큼의 대상 디렉터리를 생성합니다. 파일은 트랜잭션 순서에 관계없이 이러한 디렉터리의 S3 대상에 저장됩니다. 파일 이름 지정 규칙, 데이터 내용 및 형식에 대한 자세한 내용은 단원을 참조하십시오.Amazon S3 S3를 대상으로 사용AWS Database Migration Service.

트랜잭션 순서도 캡처하는 방식으로 소스 데이터베이스 변경 사항을 캡처하려면 다음을 지시하는 S3 엔드포인트 설정을 지정할 수 있습니다.AWS DMS행 변경 내용을 저장하려면모든트랜잭션 크기에 따라 생성된 하나 이상의.csv 파일의 데이터베이스 테이블 이것.csv트랜잭션 파일각 트랜잭션과 관련된 모든 테이블에 대해 트랜잭션 순서대로 나열된 모든 행 변경 사항을 포함합니다. 이러한 트랜잭션 파일은 한 개 안에 함께 저장됩니다.트랜잭션 디렉토리S3 타겟에서도 지정합니다. 각 트랜잭션 파일에서 트랜잭션 작업과 각 행 변경에 대한 데이터베이스 및 소스 테이블의 식별자는 다음과 같이 행 데이터의 일부로 저장됩니다.

operation,table_name,database_schema_name,field_value,...

여기,operation변경된 행의 트랜잭션 작업입니다.table_name행이 변경되는 데이터베이스 테이블의 이름입니다.database_schema_name는 테이블이 있는 데이터베이스 스키마의 이름입니다.field_value행의 데이터를 지정하는 하나 이상의 필드 값 중 첫 번째 값입니다.

트랜잭션 파일의 다음 예에서는 두 테이블이 포함된 하나 이상의 트랜잭션에 대해 변경된 행을 보여 줍니다.

I,Names_03cdcad11a,rdsTempsdb,13,Daniel U,Names_03cdcad11a,rdsTempsdb,23,Kathy D,Names_03cdcad11a,rdsTempsdb,13,Cathy I,Names_6d152ce62d,rdsTempsdb,15,Jane I,Names_6d152ce62d,rdsTempsdb,24,Chris I,Names_03cdcad11a,rdsTempsdb,16,Mike

여기서 각 행의 트랜잭션 작업은 다음과 같이 표시됩니다.I(삽입),U(업데이트) 또는D(삭제) 는 첫 번째 열에 있습니다. 테이블 이름은 두 번째 열 값입니다 (예:Names_03cdcad11a). 데이터베이스 스키마의 이름은 세 번째 열의 값입니다 (예:rdsTempsdb). 나머지 열은 사용자 고유의 행 데이터로 채워집니다 (예:13,Daniel).

또한,AWS DMS다음 명명 규칙에 따라 타임스탬프를 사용하여 Amazon S3 대상에서 생성한 트랜잭션 파일의 이름을 지정합니다.

CDC_TXN-timestamp.csv

여기,timestamp다음 예와 같이 트랜잭션 파일이 생성된 시간입니다.

CDC_TXN-20201117153046033.csv

파일 이름에 있는 이 타임스탬프를 사용하면 트랜잭션 디렉터리에 트랜잭션 파일을 나열할 때 트랜잭션 파일이 생성되고 트랜잭션 순서대로 나열될 수 있습니다.

참고

데이터 변경 사항을 트랜잭션 순서로 캡처하는 경우AWS DMS의 값에 관계없이 항상 행 변경 사항을.csv 파일에 저장합니다.DataFormat타겟의 S3 설정AWS DMS.parquet 파일을 사용하여 데이터 변경 사항을 트랜잭션 순서로 저장하지 않습니다.

데이터 복제 작업 중에 Amazon S3 대상에 대한 쓰기 빈도를 제어하려면cdcMaxBatchIntervalcdcMinFileSize추가 연결 속성. 따라서 추가 오버헤드 작업 없이 데이터를 분석할 때 성능이 향상될 수 있습니다. 자세한 내용을 알아보려면 다음 섹션을 참조하세요.Amazon S3 S3를 대상으로 사용할 때의 추가 연결 속성AWS DMS

알리기AWS DMS모든 행 변경 사항을 트랜잭션 순서로 저장하려면

  1. 다음을 설정합니다.PreserveTransactions대상의 S3 설정을 다음과 같이 설정합니다.true.

  2. 다음을 설정합니다.CdcPath타겟에서 원하는 상대 폴더 경로로 S3 설정AWS DMS.csv 트랜잭션 파일을 저장합니다.

    AWS DMS기본 S3 대상 버킷 및 작업 디렉토리 아래 또는 를 사용하여 지정한 버킷 및 버킷 폴더 아래에 이 경로를 생성합니다.BucketNameBucketFolder타겟의 S3 설정

Amazon S3 S3를 대상으로 사용할 때의 추가 연결 속성AWS DMS

추가 연결 속성으로서 다음 옵션을 지정할 수 있습니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오.

옵션 설명
csvNullValue

AWS DMS가 null 값을 처리하는 방법을 지정하는 선택적 파라미터입니다. null 값을 처리하는 동안 이 파라미터를 사용하여 대상에 쓸 때 사용자 정의 문자열을 null로 전달할 수 있습니다. 예를 들어, 대상 열이 null을 허용하지 않는 경우 이 옵션을 사용하여 빈 문자열 값과 null 값을 구분할 수 있습니다. 따라서 이 파라미터 값을 빈 문자열("" 또는 '')로 설정하면 AWS DMS는 빈 문자열을 NULL 대신 null 값으로 처리합니다.

기본값: NULL

유효한 값: 유효한 모든 문자열

예제:

csvNullValue='';

addColumnName

true 또는 y로 설정할 때 .csv 출력 파일에 열 이름 정보를 추가하는 데 사용할 수 있는 선택적 파라미터입니다.

에는 이 파라미터를 사용할 수 없습니다.PreserveTransactions또는CdcPath.

기본값: false

유효한 값: true, false, y, n

예제:

addColumnName=true;

bucketFolder

S3 버킷의 폴더 이름을 설정하는 선택적 파라미터입니다. 제공되는 경우, 대상 객체는 경로 bucketFolder/schema_name/table_name/에서 .csv 또는 .parquet 파일로 생성됩니다. 이 파라미터가 지정되지 않은 경우, 사용되는 경로는 schema_name/table_name/입니다.

예제:

bucketFolder=testFolder;

bucketName

S3 대상 객체가 .csv 또는 .parquet 파일로 생성되는 S3 버킷의 이름입니다.

예제:

bucketName=buckettest;

cannedAclForObjects

AWS DMS가 S3 버킷에서 .csv 또는 .parquet 파일로 생성되는 객체에 대한 사전 정의된(미리 제공된) 액세스 제어 목록을 지정할 수 있도록 하는 값입니다. Amazon S3 준비된 ACL에 대한 자세한 내용을 알아보려면 Amazon S3 Developer Guide(Amazon S3 개발자 안내서)의 Canned ACL(미리 제공 ACL)을 참조하세요.

기본값: NONE

이 속성에 유효한 값은 다음과 같습니다. 없음, 비공개, 공개_읽기, 공개_읽기_쓰기, 인증_읽기, AWS_EXEC_READ, 버킷_소유자_읽기, 버킷_소유자_전체_제어.

예제:

cannedAclForObjects=PUBLIC_READ;

cdcInsertsOnly

데이터 캡처 변경(CDC) 로드 중 쉼표로 구분된 값(.csv) 또는 컬럼 방식 스토리지(.parquet) 출력 파일에 INSERT 작업만을 작성하는 선택적 파라미터입니다. 기본적으로(false 설정), .csv 또는 .parquet 레코드의 첫 번째 필드에는 문자 I(INSERT), U(UPDATE) 또는 D(DELETE)가 포함됩니다. 이 문자는 대상에 대한 CDC 로드를 위해 원본 데이터베이스에 행이 삽입, 업데이트 또는 삭제되었는지 여부를 나타냅니다. cdcInsertsOnlytrue 또는 y로 설정되면 소스 데이터베이스의 INSERT만 .csv 또는 .parquet 파일로 마이그레이션됩니다.

.csv 형식의 경우에만 includeOpForFullLoad의 값에 따라 이 INSERT가 기록되는 방식이 다릅니다. includeOpForFullLoadtrue으로 설정되면, 모든 CDC 레코드의 첫 번째 필드는 소스에서 INSERT 작업을 나타내기 위해 I로 설정됩니다. includeOpForFullLoadfalse로 설정되면 모든 CDC 레코드는 소스에서 INSERT 작업을 나타내는 첫 번째 필드 없이 작성됩니다. 이러한 파라미터가 상호 작용하는 방식에 대한 자세한 내용은 마이그레이션된 S3 데이터에 소스 DB 작업 표시 단원을 참조하십시오.

기본값: false

유효한 값: true, false, y, n

예제:

cdcInsertsOnly=true;

cdcInsertsAndUpdates

변경 데이터 캡처(CDC) 로드를 사용하여 INSERT 및 UPDATE 작업을 .csv 또는 .parquet(열 기반 스토리지) 출력 파일에 기록할 수 있습니다. 기본 설정은 false지만, cdcInsertsAndUpdatestrue 또는 y로 설정하면 원본 데이터베이스의 INSERT 및 UPDATE가 .csv 또는 .parquet 파일로 마이그레이션됩니다.

.csv 파일 형식의 경우에만 이러한 INSERT 및 UPDATE가 기록되는 방법이 includeOpForFullLoad 파라미터 값에 따라 달라집니다. includeOpForFullLoadtrue로 설정하면 모든 CDC 레코드의 첫 번째 필드가 원본에서 INSERT 및 UPDATE 작업을 나타내도록 I 또는 U로 설정됩니다. 그러나 includeOpForFullLoadfalse로 설정하면 원본에서 INSERT 또는 UPDATE 작업 표시 없이 CDC 레코드가 기록됩니다.

이러한 파라미터가 상호 작용하는 방식에 대한 자세한 내용은 마이그레이션된 S3 데이터에 소스 DB 작업 표시 단원을 참조하십시오.

참고

cdcInsertsOnlycdcInsertsAndUpdates는 동일한 엔드 포인트에서 둘 다 true로 설정할 수 없습니다. 동일한 엔드포인트에 cdcInsertsOnly 또는 cdcInsertsAndUpdatestrue로 설정하지만 둘 다 설정하지는 않습니다.

기본값: false

유효한 값: true, false, y, n

예제:

cdcInsertsAndUpdates=true;

CdcPath

CDC 파일의 폴더 경로를 지정합니다. S3 소스의 경우 태스크가 변경 데이터를 캡처하는 경우 이 설정이 필요합니다. 그렇지 않으면 선택 사항입니다. 만약CdcPath설정하면 DMS는 이 경로에서 CDC 파일을 읽고 데이터 변경 사항을 대상 엔드포인트로 복제합니다. S3 타겟의 경우PreserveTransactionstrue로 설정하면 DMS는 이 파라미터를 S3 대상의 폴더 경로로 설정했는지 확인합니다. 이 경로에 DMS가 CDC 로드에 대한 트랜잭션 순서를 저장할 수 있습니다. DMS는 S3 대상 작업 디렉터리나 에서 지정한 S3 대상 위치에 이 CDC 폴더 경로를 생성합니다.BucketFolderBucketName.

에는 이 파라미터를 사용할 수 없습니다.datePartitionedEnabled또는addColumnName.

Type: 문자열

예를 들어, 다음을 지정하는 경우CdcPath같이MyChangedData, 그리고 다음을 지정합니다.BucketName같이MyTargetBucket하지만 지정하지 마십시오BucketFolder, DMS는 다음과 같은 CDC 폴더 경로를 생성합니다.MyTargetBucket/MyChangedData.

동일하게 지정하는 경우CdcPath, 그리고 다음을 지정합니다.BucketName같이MyTargetBucketBucketFolder같이MyTargetData, DMS는 다음과 같은 CDC 폴더 경로를 생성합니다.MyTargetBucket/MyTargetData/MyChangedData.

참고

이 설정은 AWS DMS 버전 3.4.2 이상에서 지원됩니다.

데이터 변경 사항을 트랜잭션 순서로 캡처할 때 DMS는 의 값에 관계없이 항상 행 변경 사항을.csv 파일에 저장합니다. DataFormat 타겟의 S3 설정 DMS는.parquet 파일을 사용하여 데이터 변경 사항을 트랜잭션 순서로 저장하지 않습니다.

cdcMaxBatchInterval

파일을 Amazon S3 출력하기 위한 최대 간격 길이 조건 (초) 입니다.

기본값: 60초

일시cdcMaxBatchInterval지정되고cdcMinFileSize지정되면 파일 쓰기는 가장 먼저 충족되는 파라미터 조건에 의해 트리거됩니다.

cdcMinFileSize

파일을 Amazon S3 출력할 때 필요한 최소 파일 크기 조건입니다.

Default Value: 32000 KB

일시cdcMinFileSize지정되고cdcMaxBatchInterval지정되면 파일 쓰기는 가장 먼저 충족되는 파라미터 조건에 의해 트리거됩니다.

PreserveTransactions

를 로 설정하는 경우true, DMS는 변경 데이터 캡처 (CDC) 에 대한 트랜잭션 순서를 에서 지정한 Amazon S3 대상에 저장합니다.CdcPath.

에는 이 파라미터를 사용할 수 없습니다.datePartitionedEnabled또는addColumnName.

Type: 부울

데이터 변경 사항을 트랜잭션 순서로 캡처할 때 DMS는 의 값에 관계없이 항상 행 변경 사항을.csv 파일에 저장합니다. DataFormat 타겟의 S3 설정 DMS는.parquet 파일을 사용하여 데이터 변경 사항을 트랜잭션 순서로 저장하지 않습니다.

참고

이 설정은 에서 지원됩니다.AWS DMS버전 3.4.2 이상

includeOpForFullLoad

전체 로드 중 쉼표로 구분된 값(.csv) 출력 파일에만 INSERT 작업을 쓰기 위한 선택적 파라미터입니다.

전체 로드의 경우, 레코드는 삽입만 가능합니다. 기본적으로(false 설정) 전체 로드에 대한 이 출력 파일에는 행이 소스 데이터베이스에 삽입되었음을 나타내는 레코드가 기록되어 있지 않습니다. includeOpForFullLoadtrue 또는 y로 설정되면 .csv 파일의 첫 번째 필드에 INSERT가 I 주석으로 기록됩니다.

참고

이 파라미터는 cdcInsertsOnly 또는 cdcInsertsAndUpdates와 함께 .csv 파일의 출력에만 적용됩니다. 이러한 파라미터가 상호 작용하는 방식에 대한 자세한 내용은 마이그레이션된 S3 데이터에 소스 DB 작업 표시 단원을 참조하십시오.

기본값: false

유효한 값: true, false, y, n

예제:

includeOpForFullLoad=true;

compressionType

GZIP으로 설정하면 GZIP을 사용하여 대상 .csv 또는 .parquet 파일을 압축하는 선택적 파라미터입니다. 이 파라미터를 기본값으로 설정하면 파일을 압축되지 않은 상태로 둡니다.

기본값: NONE

유효한 값: GZIP 또는 NONE

예제:

compressionType=GZIP;

csvDelimiter

.csv 소스 파일에서 열을 구분하는 데 사용되는 구분 기호입니다. 기본값은 쉼표(,)입니다.

예제:

csvDelimiter=,;

csvRowDelimiter

.csv 소스 파일에서 행을 구분하는 데 사용되는 구분 기호입니다. 기본값은 줄 바꿈(\n)입니다.

예제:

csvRowDelimiter=\n;

maxFileSize

전체 로드 중에 S3 대상으로 마이그레이션하는 동안 생성할 .csv 파일의 최대 크기(KB 단위)를 지정하는 값입니다.

기본값: 1,048,576 KB (1KB)

유효한 값: 1—1,048,576

예제:

maxFileSize=512

rfc4180

.csv 파일 형식만 사용하여 Amazon S3 S3로 마이그레이션되는 데이터의 RFC 규정 준수 동작을 설정하는 데 사용되는 선택적 파라미터입니다. 이 값을 로 설정된 경우true또는yAmazon S3 S3를 대상으로 사용하는 경우, 데이터에 따옴표, 쉼표 또는 줄바꿈 문자가 있는 경우AWS DMS전체 열을 큰따옴표 쌍 (“) 으로 묶습니다. 데이터 내 모든 따옴표는 두 번 반복됩니다. 이 형식은 RFC 4180을 준수합니다.

기본값: true

유효한 값: true, false, y, n

예제:

rfc4180=false;

encryptionMode

S3로 복사되는 .csv 또는 .parquet 객체 파일을 암호화할 서버 측 암호화 모드입니다. 유효한 값은 SSE_S3(S3 서버 측 암호화) 또는 SSE_KMS(KMS 키 암호화)입니다. SSE_KMS를 선택하는 경우, serverSideEncryptionKmsKeyId 파라미터를 암호화에 사용할 KMS 키의 Amazon 리소스 이름(ARN)으로 설정합니다.

참고

CLI도 사용할 수 있습니다.modify-endpoint의 값을 변경하는 명령encryptionMode의 기존 엔드포인트에 대한 속성SSE_KMSSSE_S3. 하지만 을 변경할 수 없습니다.encryptionMode값: 부터SSE_S3SSE_KMS.

기본값: SSE_S3

유효한 값: SSE_S3 또는 SSE_KMS

예제:

encryptionMode=SSE_S3;

serverSideEncryptionKmsKeyId

설정한 경우encryptionModeSSE_KMS이 파라미터를 KMS 키의 Amazon 리소스 이름 (ARN) 으로 설정합니다. 이 ARN은 계정을 위해 생성한 AWS KMS 키 목록에서 키 별칭을 선택하면 찾을 수 있습니다. 키를 생성할 때 특정 정책과 역할을 이 KMS 키에 연결해야 합니다. 자세한 정보는 생성 중AWS KMSAmazon S3 대상 객체를 암호화하는 키을 참조하세요.

예제:

serverSideEncryptionKmsKeyId=arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480;

dataFormat

AWS DMS가 S3 객체를 생성하는 데 사용하는 파일의 출력 형식입니다. Amazon S3 타겟의 경우AWS DMS.csv 또는.parquet 파일을 지원합니다. .parquet 파일은 효율적인 압축 옵션과 보다 빠른 쿼리 성능을 갖춘 이진 컬럼 방식 스토리지 형식을 갖고 있습니다. .parquet 파일에 대한 자세한 내용은 https://parquet.apache.org/를 참조하십시오.

기본값: csv

유효한 값: csv 또는 parquet

예제:

dataFormat=parquet;

encodingType

Parquet 인코딩 유형입니다. 인코딩 유형 옵션에는 다음이 포함됩니다.

  • rle-dictionary— 이 사전 인코딩은 비트 압축과 실행 길이 인코딩의 조합을 사용하여 반복되는 값을 보다 효율적으로 저장합니다.

  • plain— 인코딩 없음.

  • plain-dictionary— 이 사전 인코딩은 지정된 열에서 발생하는 값의 사전을 빌드합니다. 사전은 각 열 청크의 사전 페이지에 저장됩니다.

기본값: rle-dictionary

유효한 값: rle-dictionary, plain 또는 plain-dictionary

예제:

encodingType=plain-dictionary;

DictPageSizeLimit

.parquet 파일에서 허용되는 사전 페이지의 최대 크기(바이트 단위)입니다. 사전 페이지가 이 값을 초과하면 해당 페이지는 일반 인코딩을 사용합니다.

기본값: 1,024,000 (1메가바이트)

유효한 값: 모든 유효한 정수

예제:

DictPageSizeLimit=2,048,000;

rowGroupLength

.parquet 파일의 한 행 그룹에 있는 행 수입니다.

기본값: 10,024 (10킬로바이트)

유효한 값: 모든 유효한 정수

예제:

rowGroupLength=20,048;

dataPageSize

.parquet 파일에서 허용되는 데이터 페이지의 최대 크기(바이트 단위)입니다.

기본값: 1,024,000 (1메가바이트)

유효한 값: 모든 유효한 정수

예제:

dataPageSize=2,048,000;

parquetVersion

.parquet 파일 형식의 버전입니다.

기본값: PARQUET_1_0

유효한 값: PARQUET_1_0 또는 PARQUET_2_0

예제:

parquetVersion=PARQUET_2_0;

enableStatistics

true 또는 y로 설정하여 .parquet 파일 페이지와 행 그룹에 대한 통계를 활성화합니다.

기본값: true

유효한 값: true, false, y, n

예제:

enableStatistics=false;

timestampColumnName

S3 대상 엔드포인트 데이터에 타임스탬프 열을 포함시키기 위한 선택적 파라미터입니다.

timestampColumnName을 비어 있지 않은 값으로 설정하면 AWS DMS는 마이그레이션된 데이터의 .csv 또는 .parquet 객체 파일에 추가 STRING 열을 포함시킵니다.

전체 로드의 경우, 타임스탬프 열의 각 행에는 DMS에 의해 소스에서 대상으로 데이터가 전송된 시점에 대한 타임스탬프가 포함됩니다.

CDC 로드의 경우, 타임스탬프 열의 각 행에는 소스 데이터베이스의 해당 행 커밋에 대한 타임스탬프가 있습니다.

이 타임스탬프 열 값의 문자열 형식은 yyyy-MM-dd HH:mm:ss.SSSSSS입니다. 기본적으로 이 값의 정밀도는 마이크로초입니다. CDC 로드의 경우, 정밀도의 라운딩은 소스 데이터베이스에 대해 DMS가 지원하는 커밋 타임스탬프에 따라 다릅니다.

addColumnName 파라미터가 true로 설정되면 DMS는 timestampColumnName의 비어 있지 않은 값으로 설정한 타임스탬프 열의 이름도 포함시킵니다.

예제:

timestampColumnName=TIMESTAMP;

useTaskStartTimeForFullLoadTimestamp

로 설정된 경우true이 파라미터는 데이터를 대상에 쓰는 시간 대신 태스크 시작 시간을 타임스탬프 열 값으로 사용합니다. 전체 로드의 경우 useTaskStartTimeForFullLoadTimestamptrue로 설정되면 타임스탬프 열의 각 행에 태스크 시작 시간이 포함됩니다. CDC 로드의 경우 타임스탬프 열의 각 행에는 트랜잭션 커밋 시간이 포함됩니다.

useTaskStartTimeForFullLoadTimestampfalse로 설정되면 타임스탬프 열의 전체 로드 타임스탬프는 데이터가 대상에 도착하는 시간과 함께 증가합니다.

기본값: false

유효한 값: true, false

예: useTaskStartTimeForFullLoadTimestamp=true;

useTaskStartTimeForFullLoadTimestamp=trueS3 타겟을 만드는 데 도움이 됩니다 timestampColumnName최대 하중용 정렬 가능timestampColumnNameCDC 부하의 경우

parquetTimestampInMillisecond

.parquet 형식의 S3 객체에 기록된 모든 TIMESTAMP 열 값의 정밀도를 지정하는 선택적 파라미터입니다.

이 속성을 true 또는 y로 설정하면 AWS DMS는 모든 TIMESTAMP 열을 .parquet 형식 파일에 밀리초 정밀도로 기록합니다. 그렇지 않으면 DMS는 해당 열을 마이크로초 정밀도로 기록합니다.

현재 Amazon Athena 및 AWS Glue는 TIMESTAMP 값에 대한 밀리초 정밀도만 처리할 수 있습니다. Athena 또는 을 사용하여 데이터를 쿼리하거나 처리하려는 경우에만 .parquet 형식의 S3 엔드포인트 객체 파일에 대해 이 속성을 true 로 설정합니다.AWS Glue.

참고
  • AWS DMS는 .csv 형식 S3 파일에 기록된 모든 TIMESTAMP 열 값을 마이크로초 정밀도로 기록합니다.

  • 이 속성의 설정은 timestampColumnName 속성을 설정하여 삽입된 타임스팀프 열 값의 문자열 형식에는 영향을 미치지 않습니다.

기본값: false

유효한 값: true, false, y, n

예제:

parquetTimestampInMillisecond=true;

마이그레이션된 S3 데이터에 소스 DB 작업 표시

AWS DMS가 S3 대상으로 레코드를 마이그레이션하면 마이그레이션된 각 레코드에 추가 필드를 만들 수 있습니다. 이 추가 필드는 소스 데이터베이스의 레코드에 적용된 작업을 나타냅니다. 방법AWS DMS이 첫 번째 필드를 만들고 설정합니다. 이 첫 번째 필드는 마이그레이션 작업 유형 및 설정에 따라 달라집니다.includeOpForFullLoad,cdcInsertsOnly, 및cdcInsertsAndUpdates.

최대 부하의 경우includeOpForFullLoad입니다true,AWS DMS항상 각.csv 레코드에 첫 번째 필드를 추가로 만듭니다. 이 필드에는 행이 소스 데이터베이스에 삽입되었음을 나타내는 문자 I(INSERT)가 들어 있습니다. CDC 부하의 경우cdcInsertsOnly입니다false(기본값),AWS DMS또한 항상 각.csv 또는.parquet 레코드에 첫 번째 필드를 추가로 만듭니다. 이 필드에는 원본 데이터베이스에서 행이 삽입, 업데이트 또는 삭제되었는지 여부를 나타내는 문자 I(INSERT), U(UPDATE) 또는 D(DELETE)가 포함됩니다.

다음 표에서 설정을 볼 수 있습니다.includeOpForFullLoadcdcInsertsOnly속성이 함께 작동하여 마이그레이션된 레코드 설정에 영향을 줍니다.

이 파라미터 설정을 사용할 경우 DMS는.csv 및.parquet 출력의 대상 레코드를 다음과 같이 설정합니다.
includeOpForFullLoad cdcInsertsOnly 전체 로드 CDC 로드
true true 추가된 첫 번째 필드 값은 I로 설정 추가된 첫 번째 필드 값은 I로 설정
false false 추가된 필드 없음 추가된 첫 번째 필드 값은 I, U 또는 D로 설정
false true 추가된 필드 없음 추가된 필드 없음
true false 추가된 첫 번째 필드 값은 I로 설정 추가된 첫 번째 필드 값은 I, U 또는 D로 설정

includeOpForFullLoadcdcInsertsOnly가 같은 값으로 설정되면 대상 레코드는 현재 마이그레이션 유형에 대한 레코드 설정을 제어하는 속성에 따라 설정됩니다. 이 속성은 전체 로드의 경우 includeOpForFullLoad이고 CDC 로드의 경우 cdcInsertsOnly입니다.

includeOpForFullLoadcdcInsertsOnly가 서로 다른 값으로 설정되면 AWS DMS는 대상 레코드 설정을 CDC 및 전체 로드에 일관되게 만듭니다. 이를 위해 includeOpForFullLoad에서 이전에 지정한 전체 로드에 대한 레코드 설정에 부합하도록 CDC 로드에 대한 레코드 설정을 지정합니다.

즉, 삽입된 레코드를 나타내는 첫 번째 필드를 추가하도록 전체 로드가 설정되었다고 가정하십시오. 이 경우 다음 CDC 로드는 삽입, 업데이트 또는 삭제된 레코드가 소스에 적절함을 나타내는 첫 번째 필드를 추가하도록 설정됩니다. 이와 달리, 삽입된 레코드를 나타내는 첫 번째 필드를 추가하지 않도록 전체 로드가 설정된다고 가정하십시오. 이 경우 CDC 로드 역시, 소스에서의 해당 레코드 작업에 관계없이 각 레코드에 첫 번째 필드를 추가하지 않도록 설정됩니다.

마찬가지로 DMS가 첫 번째 추가 필드를 생성하고 설정하는 방법은 includeOpForFullLoadcdcInsertsAndUpdates의 설정에 따라 다릅니다. 다음 표에서 includeOpForFullLoadcdcInsertsAndUpdates 속성의 설정들이 작용하여 이 형식으로 마이그레이션된 레코드의 설정에 영향을 주는 것을 볼 수 있습니다.

이 파라미터 설정을 사용할 경우 DMS는 .csv 출력에 다음과 같이 대상 레코드를 설정합니다.
includeOpForFullLoad cdcInsertsAnd업데이트 전체 로드 CDC 로드
true true 추가된 첫 번째 필드 값은 I로 설정 추가된 첫 번째 필드 값은 I 또는 U로 설정
false false 추가된 필드 없음 추가된 첫 번째 필드 값은 I, U 또는 D로 설정
false true 추가된 필드 없음 추가된 첫 번째 필드 값은 I 또는 U로 설정
true false 추가된 첫 번째 필드 값은 I로 설정 추가된 첫 번째 필드 값은 I, U 또는 D로 설정

S3 파켓의 대상 데이터 유형

다음 표에는 를 사용할 때 지원되는 Parquet 대상 데이터 유형을 보여줍니다.AWS DMS및 기본 매핑은 에서AWS DMS데이터 유형.

AWS DMS 데이터 형식에 대한 추가 정보는 데이터 형식AWSDatabase Migration Service 단원을 참조하십시오.

AWS DMS 데이터 형식

S3 파켓 데이터 형식

BYTES BINARY
DATE DATE32
TIME TIME32
DATETIME TIMESTAMP
INT1 INT8
INT2 INT16
INT4 INT32
INT8 INT64
NUMERIC DECIMAL
REAL4 FLOAT
REAL8 DOUBLE
STRING STRING
UINT1 UINT8
UINT2 UINT16
UINT4 UINT32
UINT8 UINT64
WSTRING STRING
BLOB BINARY
NCLOB STRING
CLOB STRING
BOOLEAN BOOL