BLOG

Microsoft Excel을 사용하여 AWS DMS 작업을 위한 AWS CloudFormation 템플릿 생성
작성일: 2019년 2월 15일

이 글은 AWS DMS(AWS Database Migration Service) 작업을 위한 AWS CloudFormation 템플릿 생성을 자동화하는 툴에 대해 설명합니다. DMS 작업에 사용할 CloudFormation 템플릿을 생성하는 방법을 찾고 있지만 CloudFormation에 대한 지식이 없는 경우 계속 읽어보십시오.

 

AWS DMS가 관련된 데이터베이스 마이그레이션 작업 중에는 AWS CloudFormation 템플릿을 생성하여 DMS 태스크를 프로비저닝하는 일반적인 작업이 자주 발생합니다. AWS CloudFormation 템플릿을 만들려면 JSON 또는 YAML에서 CloudFormation 템플릿을 작성하는 방법에 대한 지식이 필요합니다.

 

좋은 소식이에요! CloudFormation 템플릿을 작성하는 방법을 전혀 알지 않아도 AWS DMS 태스크를 프로비저닝하는 CloudFormation 템플릿을 생성할 수 있습니다. Microsoft Excel에 대한 몇 가지 기본 지식과 터미널 또는 명령 창을 사용하여 Python 스크립트를 실행하는 방법만 있으면 됩니다.

 

이 글에서는 Python으로 작성된 작은 명령줄 툴을 제공합니다. 이 툴은 마이그레이션할 테이블 이름, DMS 엔드포인트의 ARN(Amazon Resource Name) 및 입력으로 사용할 DMS 복제 인스턴스가 포함된 Microsoft Excel 워크북을 가져옵니다. 툴은 필요한 DMS 작업에 대한 CloudFormation 템플릿을 출력으로 생성합니다. 그러나 이 툴은 DMS 엔드포인트 및 복제 인스턴스의 생성에 대해서는 다루지 않습니다.

 

전제 조건 및 가정

 

이 툴을 사용하려면 다음이 필요합니다.

 

  • Microsoft Excel 2016 이상이 컴퓨터에 설치되어 있습니다.
  • Python, 버전 2.7 이상. Python 2.7.15를 설치하려면 Python.org 다운로드 페이지로 이동합니다.
  • xlrd Python 모듈. 아직 설치하지 않은 경우 명령 프롬프트의 pip 또는 pip install xlrd 명령의 terminal을 사용하여 설치합니다.
  • DMS 원본과 대상 엔드포인트 및 DMS 복제 인스턴스가 모두 이미 생성되었는지 확인합니다.

 

툴 정보

 

생성해야 하는 DMS 태스크에 대한 모든 정보는 Excel 템플릿에 통합되어야 합니다. Excel 템플릿에 대한 세부 정보를 입력하기 전에 DMS 태스크를 생성하는 데 필요한 항목 목록을 살펴보겠습니다.

 

DMS 태스크를 생성하는 데 필요한 기본 정보는 다음과 같습니다.

 

  • DMS 작업 이름
  • 원본 엔드포인트
  • 대상 엔드포인트
  • 사용할 복제 인스턴스
  • 마이그레이션할 테이블의 스키마 이름
  • 마이그레이션할 테이블 이름

 

이 정보를 Excel 템플릿으로 툴에 제공합니다.

 

Excel 템플릿 정보

 

툴에 입력으로 제공하는 Excel 템플릿에는 DMS-Tasks 및 DMS-Tags라는 두 개의 워크시트가 포함되어야 합니다. 각 워크시트의 나머지 부분은 CloudFormation 템플릿을 생성하려는 DMS 태스크를 나타냅니다.

 

DMS-태스크시트

 

DMS-태스크 시트에는 툴에서 생성할 DMS 작업에 대한 정보가 포함되어 있습니다. 예를 들어, 두 DMS 작업에 대한 CloudFormation 템플릿을 생성하려는 경우 시트에 두 개의 행이 있습니다. 각 DMS 태스크에는 다음과 같이 각 열에 언급된 정보가 들어 있는 행이 하나씩 있습니다.

 

이 시트의 경우 DMS 태스크, 즉 DMS 엔드포인트, 복제 인스턴스 등에 대한 상세 내역을 이 시트의 지정된 열에 제공하십시오.

 

Attribute name Description
Name DMS 태스크의 이름입니다. 이 이름은 DMS 작업 간에 고유해야 하며 중복은 허용되지 않습니다.
Description DMS 태스크에 대한 설명입니다.
SourceEndPointARN DMS 원본 엔드포인트의 ARN입니다.
TargetEndPointARN DMS 대상 엔드포인트의 ARN입니다.
RIARN DMS 복제 인스턴스의 ARN입니다.
CDCStartTime 변경 데이터 캡처 시작 시간입니다. 태스크 마이그레이션 모드가 CDC인 경우 이 특성은 필수 사항입니다. FULL-LOAD 모드의 경우 도구는 이 특성 값을 무시합니다.
Schema Name 현재 행으로 표시된 DMS 태스크의 테이블이 속하는 원본 데이터베이스 스키마의 이름입니다.

 

DMS-태그 시트

 

DMS-태그 시트에서는 툴이 생성하는 CloudFormation 템플릿이 있는 DMS 태스크에 연결할 AWS 리소스 태그를 자세히 설명합니다. 제공된 샘플 Excel 템플릿과 마찬가지로 다음 표에서는 리소스 소유자 및 환경 유형이라는 두 개의 태그를 보여 줍니다. 또한 이 표에는 DMS-태스크 시트에 정의된 모든 DMS 작업과 연관될 이러한 태그에 대해 제공된 값이 나와 있습니다.

 

Tag name Tag value
Resource Owner dev@aws.com
EnvironmentType Development

 

DMS 작업 시트

 

이제 Excel 템플릿의 두 시트(DMS-Tasks 및 DMS-Tags)에 DMS 태스크용 메타데이터가 포함되어 있을 것입니다. 특히 이러한 태스크에는 툴이 CloudFormation 템플릿을 생성할 태스크에 대한 메타데이터가 포함되어 있습니다.

 

DMS 작업에 대해 생성할 CloudFormation 템플릿의 수가 N개이면 Excel에는 N+2 워크시트가 있어야 합니다. 즉, 각 DMS 태스크에 대해 워크시트 1개와 모든 태스크의 메타데이터에 대한 워크시트 2개(DMS-Tasks 및 DMS-Tags)가 필요합니다.

 

각 DMS 태스크에 대한 워크시트 이름은 DMS-태스크 시트의 이름 열에 언급된 이름과 일치해야 합니다.

 

DMS 작업 시트 세부 정보

 

각 DMS 태스크의 상세 내역 시트의 이름은 DMS-태스크 시트의 이름 열에 언급된 이름과 일치해야 합니다.

 

DMS 태스크에 포함될 모든 테이블이 이 시트에 나열되어야 합니다. 이 시트에는 Table Name, Excluded Columns, 다음 설명에 따라 두 개의 열(Sno 열에서 분리, 향후 개발을 위해 보관)이 있습니다.

 

경우에 따라 특정 열을 마이그레이션하지 않아야 합니다. 해당 열을 시트의 Excluded Columns  열에 쉼표로 구분된 열 이름으로 기록합니다.

 

Column name Column value
Table Name DMS task의 부분이 될 테이블의 이름입니다.
Excluded Columns 전체 로드 또는 CDC 모드 중 DMS에서 제외해야 하는 테이블의 열 이름입니다. 여기에 언급되지 않은 경우 모든 열이 데이터 마이그레이션으로 간주됩니다. 열 이름은 쉼표로 구분해야 합니다.

 

DMS CloudFormation 템플릿 생성

 

DMS 태스크를 위한 CloudFormation 템플릿을 생성하려면 이 Amazon GitHub 리포지토리에서 아카이브 파일(.zip) 형식으로 툴을 다운로드하고 다운로드한 아카이브 파일을 폴더로 추출한 후 다음 단계를 수행하십시오.

 

  1. Python 2.7 이상이 설치되어 있는지 확인합니다.
  2. xlrd Python 모듈의 버전이 설치되어 있는지 확인합니다. 그렇지 않은 경우 pip install xlrd 명령과 함께 pip을 사용하여 설치합니다.
  3. Mac OS에서 터미널 창을 열거나 Microsoft Windows에서 명령 창을 열고 도구를 추출할 폴더로 이동합니다.
  4. 툴을 실행합니다.

 

다운로드된 툴은 두 DMS 태스크의 CloudFormation 템플릿(DMS-CHILD 및 DMS-PARENT)을 생성하는 샘플 Excel 템플릿과 함께 제공됩니다.

 

툴 실행

 

툴을 실행할 때 두 개의 인수만 필수 사항입니다. 경로와 유형이며, 자세한 내용은 다음과 같습니다.

 

Argument name Argument value
path CloudFormation 템플릿을 생성해야 하는 DMS 태스크 상세 내역을 포함하는 Excel 템플릿의 위치입니다.
type 이 인수는 세 가지 값을 허용합니다.· cdc – 생성할 DMS 태스크가 데이터 캡처 모드 변경 전용인 경우

· full-load – 생성할 DMS 작업이 full-load 모드 전용인 경우

· full-load-and-cdc – 생성할 DMS 작업이 CDC에 의한 full-load에 대한 것일 경우

 

다음 명령을 사용하여 Excel 템플릿에 대한 경로를 제공하는 DMS 작업 템플릿을 생성할 수 있습니다.

 

python create_task.py –path [PATH_OF_THE_ EXCEL_TEMPLATE] –type [cdc | full-load | full-load-and-cdc]

 

다음은 툴 실행의 예입니다.

 

user_name$ python create_task.py –path dms-tasks.xlsx –type cdc

Created Task Template for DMS-CHILD

Created Task Template for DMS-PARENT

user_name$

 

앞의 예에서는 제공된 Excel 템플릿으로 툴을 실행하고 두 DMS 작업에 대한 CloudFormation 템플릿이 생성됩니다. 이 툴은 주 툴의 아카이브를 추출하는 하위 폴더 중 하나인 출력 폴더에 이러한 폴더를 배치합니다.

 

제한사항

 

이 도구에는 다음과 같은 제한이 있습니다.

 

  • 스키마, 테이블 및 해당 열의 이름이 대상 엔드포인트에서 소문자로 변환됩니다.
  • 현재 툴은 각 DMS 태스크에 대해 하나의 스키마만 지원합니다.

 

요약

 

500개 이상의 테이블이 있는 한 고객 데이터베이스를 마이그레이션하는 동안 DMS 작업 간에 테이블을 섞는 것이 일반적인 연습이 되었습니다. 이는 일부 테이블의 파티션 수가 개발 환경에 비해 프로덕션/단계 환경에서 크게 증가했기 때문에 사실로 입증되었습니다. 작업 순서 섞기 요구로부터, 이 툴을 만드는 아이디어가 탄생했습니다.

 

이 툴은 DMS 작업을 위한 CloudFormation 템플릿을 생성하는 데 필요한 시간을 대폭 줄여줍니다.

 

원문 URL : https://aws.amazon.com/ko/blogs/database/create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel/

** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.