쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

Amazon S3를의 소스로 사용 AWS DMS

포커스 모드
Amazon S3를의 소스로 사용 AWS DMS - AWS 데이터베이스 마이그레이션 서비스

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

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

를 사용하여 Amazon S3 버킷에서 데이터를 마이그레이션할 수 있습니다 AWS DMS. 이렇게 하려면 하나 이상의 데이터 파일을 포함하는 Amazon S3 버킷에 액세스합니다. 해당 S3 버킷에서, 데이터와 데이터의 데이터베이스 테이블 간 매핑을 설명하는 JSON 파일을 이러한 파일 안에 포함합니다.

전체 로드가 시작되기 전에 Amazon S3 버킷에 소스 데이터 파일이 있어야 합니다. bucketName 파라미터를 사용하여 버킷 이름을 지정합니다.

소스 데이터 파일은 다음 형식일 수 있습니다.

쉼표로 구분된 값(.csv) 형식의 소스 데이터 파일의 경우 다음 이름 지정 규칙을 사용하여 이름을 지정합니다. 이 규칙에서 schemaName은 원본 스키마이고 tableName은 해당 스키마 내 테이블 이름입니다.

/schemaName/tableName/LOAD001.csv /schemaName/tableName/LOAD002.csv /schemaName/tableName/LOAD003.csv ...

예를 들면 다음 Amazon S3 경로에서 mybucket에 데이터 파일이 있다고 가정합니다.

s3://mybucket/hr/employee

로드 시 소스 스키마 이름이 이고 소스 테이블 이름이 hr라고 AWS DMS 가정합니다employee.

bucketName (필수) 외에도 선택적으로 bucketFolder 파라미터를 제공하여가 Amazon S3 버킷에서 데이터 파일을 찾을 위치를 지정할 수 AWS DMS 있습니다. 이전 예제를 계속 진행sourcedata하면서를 bucketFolder로 설정하면는 다음 경로에서 데이터 파일을 AWS DMS 읽습니다.

s3://mybucket/sourcedata/hr/employee

추가 연결 속성을 사용하여 열 구분 기호, 행 구분 기호, null 값 지표 등 여러 파라미터를 지정할 수 있습니다. 자세한 내용은 의 소스로 Amazon S3에 대한 엔드포인트 설정 AWS DMS 단원을 참조하십시오.

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

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

Amazon S3용 외부 테이블을의 소스로 정의 AWS DMS

데이터 파일 외에, 외부 테이블 정의도 제공해야 합니다. 외부 테이블 정의는가 Amazon S3의 데이터를 해석하는 방법을 설명하는 JSON 문서 AWS DMS 입니다. 이 문서의 최대 크기는 2 MB입니다. AWS DMS Management Console을 사용하여 소스 엔드포인트를 생성하는 경우 테이블 매핑 상자에 JSON을 직접 입력할 수 있습니다. AWS Command Line Interface (AWS CLI) 또는 AWS DMS API를 사용하여 마이그레이션을 수행하는 경우 JSON 파일을 생성하여 외부 테이블 정의를 지정할 수 있습니다.

다음을 포함하는 데이터 파일이 있다고 가정해 보겠습니다.

101,Smith,Bob,2014-06-04,New York 102,Smith,Bob,2015-10-08,Los Angeles 103,Smith,Bob,2017-03-13,Dallas 104,Smith,Bob,2017-03-13,Dallas

다음은 이 데이터에 대한 외부 테이블 정의 예제입니다.

{ "TableCount": "1", "Tables": [ { "TableName": "employee", "TablePath": "hr/employee/", "TableOwner": "hr", "TableColumns": [ { "ColumnName": "Id", "ColumnType": "INT8", "ColumnNullable": "false", "ColumnIsPk": "true" }, { "ColumnName": "LastName", "ColumnType": "STRING", "ColumnLength": "20" }, { "ColumnName": "FirstName", "ColumnType": "STRING", "ColumnLength": "30" }, { "ColumnName": "HireDate", "ColumnType": "DATETIME" }, { "ColumnName": "OfficeLocation", "ColumnType": "STRING", "ColumnLength": "20" } ], "TableColumnsTotal": "5" } ] }

이 JSON 문서의 요소는 다음과 같습니다.

TableCount - 소스 테이블 수. 이 예제에는 테이블이 하나뿐입니다.

Tables - 소스 테이블당 하나의 JSON 맵으로 구성된 배열. 이 예제에는 맵이 하나뿐입니다. 각 맵은 다음 요소로 구성됩니다.

  • TableName - 소스 테이블의 이름.

  • TablePath - AWS DMS 가 전체 데이터 로드 파일을 찾을 수 있는 Amazon S3 버킷의 경로. bucketFolder 값이 지정된 경우, 해당 값이 경로에 추가됩니다.

  • TableOwner - 이 테이블의 스키마 이름.

  • TableColumns - 하나 이상의 맵으로 이루어진 배열. 각 맵은 소스 테이블의 열을 설명합니다.

    • ColumnName – 소스 테이블의 열 이름.

    • ColumnType - 열의 데이터 형식. 유효한 데이터 형식은 Amazon S3의 소스 데이터 형식 섹션을 참조하십시오.

    • ColumnLength - 이 열의 바이트 수. S3 소스가 전체 LOB 모드를 지원하지 않으므로 최대 열 길이는 2,147,483,647바이트(2,047메가바이트)로 제한됩니다. ColumnLength가 유효한 데이터 형식은 다음과 같습니다.

      • BYTE

      • STRING

    • ColumnNullable - 이 열에 NULL 값을 포함할 수 있는 경우 true인 불 값(기본값=false).

    • ColumnIsPk - 이 열이 프라이머리 키의 일부인 경우 true인 불 값(기본값=false).

    • ColumnDateFormat - DATE, TIME, DATETIME 형식이 있는 열의 입력 날짜 형식으로, 데이터 문자열을 날짜 객체로 파싱하는 데 사용됩니다. 가능한 값은 다음과 같습니다.

      - YYYY-MM-dd HH:mm:ss - YYYY-MM-dd HH:mm:ss.F - YYYY/MM/dd HH:mm:ss - YYYY/MM/dd HH:mm:ss.F - MM/dd/YYYY HH:mm:ss - MM/dd/YYYY HH:mm:ss.F - YYYYMMdd HH:mm:ss - YYYYMMdd HH:mm:ss.F
  • TableColumnsTotal - 총 열 수. 이 숫자는 TableColumns 배열의 요소 수와 일치해야 합니다.

달리 지정하지 않으면 ColumnLength가 0이라고 AWS DMS 가정합니다.

참고

지원되는 버전에서는 AWS DMS S3 소스 데이터에 선택적 작업 열이 열 TableName 값 앞에 있는 첫 번째 열로 포함될 수도 있습니다. 이 작업 열은 전체 로드 중에 데이터를 S3 대상 엔드포인트로 마이그레이션하는 데 사용되는 작업(INSERT)을 식별합니다.

있는 경우 이 열의 값은 INSERT 작업 키워드(I)의 초기 문자열입니다. 지정된 경우 일반적으로 이 열은 이전 마이그레이션 중에 DMS에서 S3 대상으로 생성한 S3 소스입니다.

3.4.2 이전 DMS 버전에서 이 열은 이전 DMS 전체 로드에서 생성한 S3 소스 데이터에 없었습니다. S3 대상 데이터에 열을 추가하면 모든 행이 데이터의 전체 로드 중에 기록되는지 또는 CDC 로드 중에 기록되는지와 상관없이 S3 대상에 기록된 모든 행의 형식을 일관적으로 유지할 수 있습니다 S3 대상 데이터 서식 지정에 대한 자세한 내용은 마이그레이션된 S3 데이터에 소스 DB 작업 표시 단원을 참조하십시오

NUMERIC 유형 열의 경우, 정밀도와 배율을 지정합니다. 정밀도는 숫자의 총 자릿수이며, 배율은 소수점 오른쪽의 자릿수입니다. 다음과 같이, 이를 위해 ColumnPrecisionColumnScale 요소를 사용할 수 있습니다.

... { "ColumnName": "HourlyRate", "ColumnType": "NUMERIC", "ColumnPrecision": "5" "ColumnScale": "2" } ...

소수점 이하 초가 포함된 데이터가 있는 DATETIME 유형 열의 경우, 스케일을 지정합니다. 스케일은 소수점 이하 초의 자릿수이며, 범위는 0에서 9까지입니다. 다음과 같이 이를 위해 ColumnScale 요소를 사용할 수 있습니다.

... { "ColumnName": "HireDate", "ColumnType": "DATETIME", "ColumnScale": "3" } ...

달리 지정하지 않으면 AWS DMS ColumnScale가 0이고 분수 초를 잘라낸다고 가정합니다.

AWS DMS소스로 사용되는 Amazon S3에서 CDC 사용

가 전체 데이터 로드를 AWS DMS 수행한 후 선택적으로 데이터 변경 사항을 대상 엔드포인트에 복제할 수 있습니다. 이렇게 하려면 변경 데이터 캡처 파일(CDC 파일)을 Amazon S3 버킷에 업로드합니다.는 업로드할 때 이러한 CDC 파일을 AWS DMS 읽은 다음 대상 엔드포인트에 변경 사항을 적용합니다.

CDC 파일은 다음과 같이 지정됩니다.

CDC00001.csv CDC00002.csv CDC00003.csv ...
참고

변경 데이터 폴더에서 CDC 파일을 복제하려면 어휘(순차적) 순으로 CDC 파일을 성공적으로 업로드합니다. 예를 들어 CDC00002.csv 파일을 CDC00003.csv 파일 앞에 업로드합니다. 그렇지 않으면 CDC00002.csv를 건너뛰고 CDC00003.csv 이후에 로드해도 CDC00002.csv가 복제되지 않습니다. CDC00003.csv 이후에 CDC00004.csv를 로드하면 CDC00004.csv가 성공적으로 복제됩니다.

에서 파일을 찾을 AWS DMS 수 있는 위치를 표시하려면 cdcPath 파라미터를 지정합니다. 이전 예제를 계속하여, cdcPathchangedata로 설정하는 경우 AWS DMS 는 다음 경로에서 CDC 파일을 읽습니다.

s3://mybucket/changedata

cdcPathchangedata로, bucketFoldermyFolder로 설정하면 AWS DMS 는 다음 경로에서 CDC 파일을 읽습니다.

s3://mybucket/myFolder/changedata

다음과 같이 CDC 파일의 레코드에는 형식 지정되어 있습니다.

  • 작업 - INSERT 또는 I, UPDATE 또는 U, DELETE 또는 D와 같은 수행할 변경 작업. 이러한 키워드 및 문자 값은 대소문자를 구분합니다.

    참고

    지원되는 AWS DMS 버전에서는 두 가지 방법으로 각 로드 레코드에 대해 수행할 작업을 식별할 AWS DMS 수 AWS DMS 있습니다.는 레코드의 키워드 값(예: INSERT) 또는 키워드 초기 문자(예: )에서이 작업을 수행할 수 있습니다I. 이전 버전에서는가 전체 키워드 값에서만 로드 작업을 AWS DMS 인식했습니다.

    이전 버전에서는 CDC 데이터를 로깅하기 위해 AWS DMS전체 키워드 값이 작성되었습니다. 또한 이전 버전에서는 키워드 첫 문자만 사용하여 작업 값을 S3 대상에 기록했습니다.

    두 형식을 모두 인식하면 작업 열이 S3 소스 데이터를 생성하기 위해 작성되는 방식에 관계없이가 작업을 AWS DMS 처리할 수 있습니다. 이 접근 방식은 이후 마이그레이션에 대한 소스로 S3 대상 데이터 사용을 지원합니다. 이 접근 방식을 사용하면 이후 S3 소스의 작업 열에 나타나는 키워드 초기 값의 형식을 변경할 필요가 없습니다.

  • 테이블 이름 - 소스 테이블의 이름.

  • 스키마 이름 - 소스 스키마의 이름.

  • 데이터 - 변경할 데이터를 나타내는 하나 이상의 열.

다음은 employee 이름의 테이블에 대한 예제 CDC 파일입니다.

INSERT,employee,hr,101,Smith,Bob,2014-06-04,New York UPDATE,employee,hr,101,Smith,Bob,2015-10-08,Los Angeles UPDATE,employee,hr,101,Smith,Bob,2017-03-13,Dallas DELETE,employee,hr,101,Smith,Bob,2017-03-13,Dallas

Amazon S3를의 소스로 사용할 때의 사전 조건 AWS DMS

Amazon S3를 소스로 사용하려면 AWS DMS소스 S3 버킷이 데이터를 마이그레이션하는 DMS 복제 인스턴스와 동일한 AWS 리전에 있어야 합니다. 또한, 마이그레이션에 사용하는 AWS 계정에 소스 버킷에 대한 읽기 액세스 권한이 있어야 합니다. AWS DMS 버전 3.4.7 이상의 경우 DMS는 VPC 엔드포인트 또는 퍼블릭 경로를 통해 소스 버킷에 액세스해야 합니다. VPC 엔드포인트에 대한 자세한 내용은 VPC 엔드포인트를 AWS DMS 소스 및 대상 엔드포인트로 구성 섹션을 참조하십시오.

마이그레이션 작업을 생성하는 데 사용되는 사용자 계정에 할당된 AWS Identity and Access Management (IAM) 역할에는 다음과 같은 권한 집합이 있어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mybucket*/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] } ] }

Amazon S3 버킷에서 버전 관리가 활성화된 경우 마이그레이션 작업을 생성하는 데 사용되는 사용자 계정에 할당된 AWS Identity and Access Management (IAM) 역할에는 다음과 같은 권한 집합이 있어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "S3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::mybucket*/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] } ] }

Amazon S3를 소스로 사용할 때의 제한 사항 AWS DMS

Amazon S3를 소스로 사용할 때 적용되는 제한 사항은 다음과 같습니다.

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

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

  • MySQL은 time 데이터 유형을 string으로 변환합니다. MySQL에서 time 데이터 유형 값을 보려면 대상 테이블의 열을 string으로 정의하고 작업의 대상 테이블 준비 모드 설정을 잘라내기로 설정합니다.

  • AWS DMS 는 BYTEBYTE 데이터 형식의 데이터에 데이터 BYTES 형식을 내부적으로 사용합니다.

  • S3 소스 엔드포인트는 DMS 테이블 다시 로드 기능을 지원하지 않습니다.

  • AWS DMS 는 Amazon S3를 소스로 사용하는 전체 LOB 모드를 지원하지 않습니다.

소스로 사용하는 Amazon S3에서 Parquet 형식 파일을 사용할 때 적용되는 제한 사항은 다음과 같습니다.

  • MMYYYYDD 또는 DDMMYYYY의 날짜는 S3 Parquet 소스 날짜 파티셔닝 기능에서 지원되지 않습니다.

의 소스로 Amazon S3에 대한 엔드포인트 설정 AWS DMS

추가 연결 속성을 사용하는 것과 비슷하게 엔드포인트 설정을 사용하여 Amazon S3 소스 데이터베이스를 구성할 수 있습니다. AWS DMS 콘솔을 사용하거나 --s3-settings '{"EndpointSetting": "value", ...}' JSON 구문과 AWS CLI함께의 create-endpoint 명령을 사용하여 소스 엔드포인트를 생성할 때 설정을 지정합니다.

Amazon S3를 소스로 하여 사용할 수 있는 엔드포인트 설정이 다음 표에 나와 있습니다.

옵션 설명
BucketFolder

(선택 사항) S3 버킷의 폴더 이름. 이 속성이 지정된 경우, 소스 데이터 파일과 CDC 파일을 경로 s3://myBucket/bucketFolder/schemaName/tableName/s3://myBucket/bucketFolder/에서 각각 읽습니다. 이 속성이 지정되지 않은 경우, 사용되는 경로는 schemaName/tableName/입니다.

'{"BucketFolder": "sourceData"}'

BucketName

S3 버킷의 이름.

'{"BucketName": "myBucket"}'

CdcPath CDC 파일의 위치. 작업에서 변경 데이터를 캡처하는 경우에는 이 속성이 필수이며, 그렇지 않은 경우에는 선택 사항입니다. 이 있는 경우 CdcPath는이 경로에서 CDC 파일을 AWS DMS 읽고 데이터 변경 사항을 대상 엔드포인트에 복제합니다. 자세한 내용은 AWS DMS소스로 사용되는 Amazon S3에서 CDC 사용 단원을 참조하십시오.

'{"CdcPath": "changeData"}'

CsvDelimiter

원본 파일에서 열을 구분하는 데 사용되는 구분 기호입니다. 기본값은 쉼표입니다. 예를 들면 다음과 같습니다.

'{"CsvDelimiter": ","}'

CsvNullValue

소스에서 읽을 때 null로 AWS DMS 취급되는 사용자 정의 문자열입니다. 기본값은 빈 문자열입니다. 이 파라미터를 설정하지 않으면는 빈 문자열을 null 값으로 AWS DMS 처리합니다. 이 파라미터를 "\N"과 같은 문자열로 설정하면는이 문자열을 null 값으로 AWS DMS 처리하고 빈 문자열을 빈 문자열 값으로 처리합니다.

CsvRowDelimiter

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

'{"CsvRowDelimiter": "\n"}'

DataFormat

Parquet 형식으로 데이터를 읽으려면 이 값을 Parquet으로 설정합니다.

'{"DataFormat": "Parquet"}'

IgnoreHeaderRows

이 값을 1로 설정하면는 .csv 파일의 첫 번째 행 헤더를 AWS DMS 무시합니다. 1 값은 이 기능을 활성화하고, 0 값은 비활성화합니다.

기본값은 0입니다.

'{"IgnoreHeaderRows": 1}'

Rfc4180

이 값을 true 또는 y로 설정하면 여는 큰따옴표 뒤에 닫는 큰따옴표가 와야 합니다. 이 형식은 RFC 4180을 준수합니다. 이 값을 false 또는 n으로 설정하면 문자열 리터럴이 그대로 대상에 복사됩니다. 이 경우 구분 기호(행 또는 열)는 필드의 끝을 알립니다. 이렇게 구분 기호는 값의 끝을 알리는 것이므로 문자열의 일부로 사용할 수 없습니다.

기본값은 true입니다.

유효값: true, false, y, n

'{"Rfc4180": false}'

Amazon S3의 소스 데이터 형식

Amazon S3를 소스로 사용하는 데이터 마이그레이션은 Amazon S3의 데이터를 AWS DMS 데이터 형식으로 매핑 AWS DMS 해야 합니다. 자세한 내용은 Amazon S3용 외부 테이블을의 소스로 정의 AWS DMS 단원을 참조하십시오.

대상에서 매핑된 데이터 형식을 확인하는 방법에 대한 정보는 사용 중인 대상 엔드포인트에 대한 섹션을 참조하십시오.

AWS DMS 데이터 유형에 대한 자세한 내용은 섹션을 참조하세요AWS Database Migration Service의 데이터 형식.

다음 AWS DMS 데이터 형식은 Amazon S3에서 소스로 사용됩니다.

Amazon S3의 Parquet 형식 파일을의 소스로 사용 AWS DMS

AWS DMS 버전 3.5.3 이상에서는 S3 버킷의 Parquet 형식 파일을 전체 로드 또는 CDC 복제의 소스로 사용할 수 있습니다.

DMS는 데이터를 S3 대상 엔드포인트로 마이그레이션하여 DMS가 생성하는 소스로 Parquet 형식 파일만 지원합니다. 파일 이름은 지원되는 형식이어야 합니다. 그렇지 않으면 DMS는 마이그레이션에 이를 포함하지 않습니다.

Parquet 형식의 소스 데이터 파일의 경우 다음 폴더 및 명명 규칙을 따라야 합니다.

schema/table1/LOAD00001.parquet schema/table2/LOAD00002.parquet schema/table2/LOAD00003.parquet

Parquet 형식의 CDC 데이터에 대한 소스 데이터 파일의 경우 다음 폴더 및 명명 규칙을 사용하여 이름을 지정하고 저장합니다.

schema/table/20230405-094615814.parquet schema/table/20230405-094615853.parquet schema/table/20230405-094615922.parquet

Parquet 형식의 파일에 액세스하려면 다음 엔드포인트 설정을 지정합니다.

  • DataFormatParquet으로 설정합니다.

  • cdcPath 설정을 지정하지 마십시오. 지정된 스키마/테이블 폴더에 Parquet 형식 파일을 생성해야 합니다.

S3 엔드포인트 설정에 대한 자세한 내용은 AWS Database Migration Service API 참조S3Settings를 참조하세요.

Parquet 형식 파일에 지원되는 데이터 유형

AWS DMS 는 Parquet 형식 파일에서 데이터를 마이그레이션할 때 다음과 같은 소스 및 대상 데이터 형식을 지원합니다. 마이그레이션하기 전에 대상 테이블에 올바른 데이터 유형의 열이 있는지 확인합니다.

소스 데이터 유형 대상 데이터 유형
BYTE 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 UINT
WSTRING STRING
BLOB BINARY
NCLOB STRING
CLOB STRING
BOOLEAN BOOL
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.