AWS Schema Conversion Tool과 함께 확장 팩 사용 - AWS Schema Conversion Tool

AWS Schema Conversion Tool과 함께 확장 팩 사용

AWS SCT 확장 팩은 객체를 대상 데이터베이스로 변환할 때 필요한 소스 데이터베이스에 있는 함수를 에뮬레이션하는 추가 기능 모듈입니다. AWS SCT 확장 팩을 설치하려면 먼저 데이터베이스 스키마를 변환해야 합니다.

각 AWS SCT 확장 팩에는 다음 구성 요소가 포함됩니다.

  • DB 스키마 - 특정 온라인 트랜잭션 처리(OLTP) 및 온라인 분석 처리(OLAP) 데이터베이스 객체(예: 시퀀스)를 에뮬레이션하기 위한 SQL 함수, 프로시저 및 테이블을 포함합니다. 또한 소스 데이터베이스에서 지원되지 않는 내장 함수도 에뮬레이션합니다. 이 스키마 이름의 형식은 aws_database_engine_name_ext와 같습니다.

  • AWS Lambda 함수(특정 OLTP 데이터베이스의 경우) - 작업 예약 및 이메일 전송과 같은 복잡한 데이터베이스 기능을 에뮬레이션하는 AWS Lambda 함수를 포함합니다.

  • OLAP 데이터베이스용 사용자 지정 라이브러리 - Microsoft SQL Server Integration Services(SSIS) 추출, 전환, 적재(ETL) 스크립트를 AWS Glue 또는 AWS Glue Studio로 마이그레이션하는 데 사용할 수 있는 일련의 Java 및 Python 라이브러리를 포함합니다.

    Java 라이브러리에는 다음과 같은 모듈이 포함됩니다.

    • spark-excel_2.11-0.13.1.jar - Excel 소스 및 대상 구성 요소의 기능을 에뮬레이션합니다.

    • spark-xml_2.11-0.9.0.jar, poi-ooxml-schemas-4.1.2.jarxmlbeans-3.1.0.jar - XML 소스 구성 요소의 기능을 에뮬레이션합니다.

    Python 라이브러리에는 다음과 같은 모듈이 포함됩니다.

    • sct_utils.py - 소스 데이터 유형을 에뮬레이션하고 Spark SQL 쿼리를 위한 파라미터를 준비합니다.

    • ssis_datetime.py - 날짜 및 시간 내장 함수를 에뮬레이션합니다.

    • ssis_null.py - ISNULLREPLACENULL 내장 함수를 에뮬레이션합니다.

    • ssis_string.py - 문자열 내장 함수를 에뮬레이션합니다.

    이러한 라이브러리에 대한 자세한 내용은 AWS SCT 확장 팩용 사용자 지정 라이브러리 사용 섹션을 참조하세요.

다음 두 가지 방법으로 AWS SCT 확장 팩을 적용할 수 있습니다.

  • AWS SCT에서는 컨텍스트 메뉴에서 Apply to database를 선택하여 대상 데이터베이스 스크립트를 적용할 때 확장 팩을 자동으로 적용할 수 있습니다. AWS SCT는 다른 모든 스키마 객체를 적용하기 전에 확장 팩을 적용합니다.

  • 확장 팩을 수동으로 적용하려면 대상 데이터베이스를 선택한 다음 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴에서 Apply extension pack for를 선택합니다. 대부분의 경우 자동 적용 방법으로 충분합니다. 하지만 팩을 실수로 삭제한 경우에는 수동으로 팩을 적용해야 할 수 있습니다.

대상 데이터 스토어에 AWS SCT 확장 팩을 적용할 때마다 구성 요소를 덮어쓰고 이에 대한 알림이 AWS SCT에 표시됩니다. 이러한 알림을 끄려면 설정, 전역 설정, 알림Hide the extension pack replacement alert를 차례로 선택합니다.

Microsoft SQL Server에서 PostgreSQL로 변환하려면 AWS SCT에서 SQL Server를 PostgreSQL로 변환하는 확장 팩을 사용할 수 있습니다. 이 확장 팩은 SQL Server 에이전트와 SQL Server Database Mail을 에뮬레이션합니다. 자세한 내용은 확장 팩을 사용하여 PostgreSQL에서 SQL Server 에이전트 에뮬레이션확장 팩을 사용하여 PostgreSQL에서 SQL Server Database Mail 에뮬레이션(을)를 참조하세요.

다음에서 AWS SCT 확장 팩 사용에 대한 자세한 정보를 찾을 수 있습니다.

AWS SCT 확장 팩 사용에 필요한 권한

Amazon Aurora용 AWS SCT 확장 팩은 AWS Lambda 함수를 사용하여 메일 전송, 작업 예약, 대기열 및 기타 작업을 에뮬레이션합니다. 대상 Aurora 데이터베이스에 AWS SCT 확장 팩을 적용하면 AWS SCT가 새 AWS Identity and Access Management(IAM) 역할과 인라인 IAM 정책을 생성합니다. 다음으로, AWS SCT는 새 Lambda 함수를 생성하고 AWS Lambda에 대한 아웃바운드 연결을 위해 Aurora DB 클러스터를 구성합니다. 이러한 작업을 실행하려면 다음과 같은 필수 권한을 IAM 사용자에게 부여해야 합니다.

  • iam:CreateRole – AWS 계정에 대한 새 IAM 역할을 생성합니다.

  • iam:CreatePolicy – AWS 계정에 대한 새 IAM 정책을 생성합니다.

  • iam:AttachRolePolicy - 지정된 정책을 IAM 역할에 연결합니다.

  • iam:PutRolePolicy - IAM 역할에 포함된 인라인 정책 문서를 업데이트합니다.

  • iam:PassRole - 지정된 IAM 역할을 규칙 엔진에 전달합니다.

  • iam:TagRole - IAM 역할에 태그를 추가합니다.

  • iam:TagPolicy - IAM 정책에 태그를 추가합니다.

  • lambda:ListFunctions - Lambda 함수 목록을 볼 수 있습니다.

  • lambda:ListTags - Lambda 함수의 태그 목록을 볼 수 있습니다.

  • lambda:CreateFunction – 새 Lambda 함수를 생성합니다.

  • rds:AddRoleToDBCluster – IAM 역할을 Aurora DB 클러스터와 연결합니다.

Amazon Redshift용 AWS SCT 확장 팩은 변환된 객체를 Amazon Redshift에 적용할 때 필요한 소스 데이터 웨어하우스 기반 함수를 에뮬레이션합니다. 변환된 코드를 Amazon Redshift에 적용하기 전에 Amazon Redshift용 확장 팩을 적용해야 합니다. 이렇게 하려면 IAM 정책에 해당 iam:SimulatePrincipalPolicy 작업을 포함시킵니다.

AWS SCT는 IAM 정책 시뮬레이터를 사용하여 Amazon Redshift 확장 팩 설치에 필요한 권한을 확인합니다. IAM 사용자를 올바르게 구성했더라도 IAM 정책 시뮬레이터에 오류 메시지가 표시될 수 있습니다. 이는 IAM 정책 시뮬레이터의 알려진 문제입니다. 또한 IAM 정책 시뮬레이터는 IAM 정책에 해당 iam:SimulatePrincipalPolicy 작업이 없는 경우 오류 메시지를 표시합니다. 이러한 경우에는 오류 메시지를 무시하고 확장 팩 마법사를 사용하여 확장 팩을 적용할 수 있습니다. 자세한 내용은 확장 팩 적용 섹션을 참조하세요.

확장 팩 스키마 사용

데이터베이스 또는 데이터 웨어하우스 스키마를 변환할 때 AWS SCT가 대상 데이터베이스에 추가 스키마를 추가합니다. 이 스키마는 대상 데이터베이스에 변환된 코드를 쓸 데 필요한 소스 데이터베이스의 SQL 시스템 함수를 구현합니다. 이 추가 스키마를 확장 팩 스키마라고 합니다.

OLTP 데이터베이스의 확장 팩 스키마는 소스 데이터베이스에 따라 다음과 같이 이름이 지정됩니다.

  • Microsoft SQL Server: AWS_SQLSERVER_EXT

  • MySQL: AWS_MYSQL_EXT

  • Oracle: AWS_ORACLE_EXT

  • PostgreSQL: AWS_POSTGRESQL_EXT

OLAP 데이터 웨어하우스 애플리케이션의 확장 팩 스키마는 다음과 같이 소스 데이터 스토어에 따라 이름이 지정됩니다.

  • Greenplum: AWS_GREENPLUM_EXT

  • Microsoft SQL Server: AWS_SQLSERVER_EXT

  • Netezza: AWS_NETEZZA_EXT

  • Oracle: AWS_ORACLE_EXT

  • Teradata: AWS_TERADATA_EXT

  • Vertica: AWS_VERTICA_EXT

AWS SCT 확장 팩용 사용자 지정 라이브러리 사용

일부 경우, AWS SCT가 소스 데이터베이스 기능을 대상 데이터베이스의 해당 기능으로 변환하지 못할 수도 있습니다. 관련 AWS SCT 확장 팩에는 대상 데이터베이스의 일부 소스 데이터베이스 기능을 에뮬레이션하는 사용자 지정 라이브러리가 포함되어 있습니다.

트랜잭션 데이터베이스를 변환하는 경우 AWS SCT 확장 팩의 AWS Lambda 함수 사용 섹션을 참조합니다.

확장 팩 적용

확장 팩 마법사를 사용하거나 변환된 코드를 대상 데이터베이스에 적용할 때 AWS SCT 확장 팩을 적용할 수 있습니다.

확장 팩 마법사를 사용하여 확장 팩을 적용하려면
  1. AWS Schema Conversion Tool의 대상 데이터베이스 트리에서 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 Apply extension pack for를 선택한 다음, 소스 데이터베이스 플랫폼을 선택합니다.

    확장 팩 적용 컨텍스트 메뉴

    확장 팩 마법사가 표시됩니다.

  2. 시작 페이지를 읽은 후 다음을 선택합니다.

  3. AWS profile settings 페이지에서 다음 작업을 수행합니다.

    • 확장 팩 스키마만 다시 설치하는 경우에는 Skip this step for now를 선택하고 다음을 선택합니다. Skip this step for now 옵션은 온라인 트랜잭션 처리(OLTP) 데이터베이스에만 사용할 수 있습니다.

    • 새 라이브러리를 업로드하는 경우 AWS 계정에 연결하는 데 필요한 보안 인증 정보를 제공합니다. 이 단계는 OLAP 데이터베이스 또는 ETL 스크립트를 변환할 때만 사용합니다. AWS CLI가 설치되어 있는 경우 AWS Command Line Interface(AWS CLI) 보안 인증을 사용할 수 있습니다. 또한 이전에 전역 애플리케이션 설정의 프로필에 저장한 후 프로젝트와 연결한 보안 인증 정보를 사용할 수도 있습니다. 필요한 경우 Navigate to global settings를 선택하여 다른 프로필과 AWS SCT 프로젝트의 연결을 구성합니다. 자세한 내용은 AWS Schema Conversion Tool에서 프로필 관리 섹션을 참조하세요.

  4. 새 라이브러리를 업로드하는 경우 Library upload 페이지에서 I need to upload a library를 선택합니다. 이 단계는 OLAP 데이터베이스 또는 ETL 스크립트를 변환할 때만 사용합니다. 다음으로 Amazon S3 경로를 입력한 다음 Upload library to S3을 선택합니다.

    라이브러리를 이미 업로드한 경우 Library upload 페이지에서 I already have libraries uploaded, use my existing S3 bucket을 선택합니다. 다음으로, Amazon S3 경로를 입력합니다.

    완료되면 다음을 선택합니다.

  5. Function emulation 페이지에서 Create extension pack을 선택합니다. 확장 팩 작업 상태가 포함된 메시지가 표시됩니다.

    모두 마쳤으면 완료를 선택합니다.

변환된 코드를 적용할 때 확장 팩을 적용하려면
  1. AWS 서비스 프로필에서 Amazon S3 버킷을 지정합니다. 이 단계는 OLAP 데이터베이스 또는 ETL 스크립트를 변환할 때만 사용합니다. 자세한 내용은 AWS Schema Conversion Tool에서 프로필 관리 섹션을 참조하세요.

    Amazon S3 버킷 정책에는 다음 권한이 포함되어야 합니다.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["*"] }, { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": ["*"] }, { "Effect": "Allow", "Action": ["iam:SimulatePrincipalPolicy"], "Resource": ["*"] }, { "Effect": "Allow", "Action": ["iam:GetUser"], "Resource": ["arn:aws:iam::111122223333:user/DataExtractionAgentName"] } ] }

    이전 예제에서 111122223333:user/DataExtractionAgentName을 IAM 사용자의 이름으로 바꿉니다.

  2. 소스 데이터 웨어하우스 스키마를 변환합니다. 자세한 내용은 데이터 웨어하우스 스키마 변환 섹션을 참조하세요.

  3. 오른쪽 창에서 변환된 스키마를 선택합니다.

  4. 스키마 요소의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 Apply to database를 선택합니다.

  5. AWS SCT는 필수 구성 요소가 포함된 확장 팩을 생성하고 대상 트리에 aws_database_engine_name_ext 스키마를 추가합니다. 그런 다음 AWS SCT는 변환된 코드와 확장 팩 스키마를 대상 데이터 웨어하우스에 적용합니다.

    Amazon Redshift와 AWS Glue를 대상 데이터베이스 플랫폼으로 함께 사용하는 경우 AWS SCT는 확장 팩에 추가적인 스키마를 추가합니다.

AWS SCT 확장 팩의 AWS Lambda 함수 사용

AWS SCT는 Amazon EC2에서 호스팅되는 데이터베이스에 대해 이메일, 작업 예약 및 기타 기능을 위한 Lambda 함수가 포함된 확장 팩을 제공합니다.

AWS Lambda 함수를 사용하여 데이터베이스 기능 에뮬레이션

데이터베이스 기능을 동등한 Amazon RDS 기능으로 변환할 수 없는 경우도 있습니다. 예를 들어 Oracle은 UTL_SMTP를 사용하는 이메일 호출을 보내고 Microsoft SQL Server는 작업 스케줄러를 사용할 수 있습니다. Amazon EC2에서 데이터베이스를 호스팅하고 자체 관리하는 경우 AWS 서비스를 대체하여 이러한 기능을 에뮬레이션할 수 있습니다.

AWS SCT 확장 팩 마법사는 Lambda 함수를 설치, 생성 및 구성하여 이메일, 작업 일정 및 기타 기능을 에뮬레이션하는 데 도움이 됩니다.

확장 팩을 적용하여 Lambda 함수 지원

확장 팩 마법사를 사용하거나 변환된 코드를 대상 데이터베이스에 적용할 때 확장 팩을 적용하여 Lambda 함수를 지원할 수 있습니다.

중요

AWS 서비스 에뮬레이션 기능은 Amazon EC2에 설치되어 자체 관리되는 데이터베이스에서만 지원됩니다. 대상 데이터베이스가 Amazon RDS DB 인스턴스에 있는 경우에는 서비스 에뮬레이션 기능을 설치하지 않도록 합니다.

확장 팩 마법사를 사용하여 확장 팩을 적용하려면
  1. AWS Schema Conversion Tool의 대상 데이터베이스 트리에서 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 Apply extension pack for를 선택한 다음, 소스 데이터베이스 플랫폼을 선택합니다.

    확장 팩 적용 컨텍스트 메뉴

    확장 팩 마법사가 표시됩니다.

  2. 시작 페이지를 읽은 후 다음을 선택합니다.

  3. AWS profile settings 페이지에서 다음 작업을 수행합니다.

    • 확장 팩 스키마만 다시 설치하는 경우에는 Skip this step for now를 선택하고 다음을 선택합니다.

    • AWS 서비스를 설치하는 경우 AWS 계정에 연결하는 데 필요한 보안 인증 정보를 제공합니다. AWS CLI가 설치되어 있는 경우 AWS CLI 보안 인증을 사용할 수 있습니다. 또한 이전에 전역 애플리케이션 설정의 프로필에 저장한 후 프로젝트와 연결한 보안 인증 정보를 사용할 수도 있습니다. 필요한 경우 Navigate to Project Settings를 선택하여 다른 프로필과 프로젝트를 연결합니다. 필요한 경우 전역 설정을 선택하여 새 프로필을 생성합니다. 자세한 내용은 AWS Schema Conversion Tool에서 프로필 관리 섹션을 참조하세요.

  4. Email Sending Service 페이지에서 다음을 수행합니다.

    • 확장 팩 스키마만 다시 설치하는 경우에는 Skip this step for now를 선택하고 다음을 선택합니다.

    • AWS 서비스를 설치하는 경우 기존 Lambda 함수가 있으면 이 함수를 제공할 수 있습니다. 그렇지 않으면 마법사에서 자동으로 생성합니다. 완료되면 다음을 선택합니다.

  5. Job Emulation Service 페이지에서 다음을 수행합니다.

    • 확장 팩 스키마만 다시 설치하는 경우에는 Skip this step for now를 선택하고 다음을 선택합니다.

    • AWS 서비스를 설치하는 경우 기존 Lambda 함수가 있으면 이 함수를 제공할 수 있습니다. 그렇지 않으면 마법사에서 자동으로 생성합니다. 완료되면 다음을 선택합니다.

  6. Function emulation 페이지에서 Create extension pack을 선택합니다. 확장 팩 작업 상태가 포함된 메시지가 표시됩니다.

    모두 마쳤으면 완료를 선택합니다.

참고

확장 팩을 업데이트하고 이전 확장 팩 구성 요소를 덮어쓰려면 AWS SCT의 최신 버전을 사용해야 합니다. 자세한 내용은 AWS Schema Conversion Tool 설치 및 구성 섹션을 참조하세요.

AWS SCT 확장 팩에 대한 함수 구성

확장 팩에는 사용 전에 구성해야 하는 함수가 포함되어 있습니다. 상수 CONVERSION_LANG은 서비스 팩에서 사용하는 언어를 정의합니다. 함수는 영어와 독일어로 사용할 수 있습니다.

언어를 영어 또는 독일어로 설정하려면 함수 코드를 다음과 같이 변경합니다. 다음 상수 선언을 찾습니다.

CONVERSION_LANG CONSTANT VARCHAR := '';

CONVERSION_LANG을 영어로 설정하려면 행을 다음과 같이 변경합니다.

CONVERSION_LANG CONSTANT VARCHAR := 'English';

CONVERSION_LANG을 영어로 설정하려면 행을 다음과 같이 변경합니다.

CONVERSION_LANG CONSTANT VARCHAR := 'Deutsch';

다음 함수에 대해 이 설정을 설정합니다.

  • aws_sqlserver_ext.conv_datetime_to_string

  • aws_sqlserver_ext.conv_date_to_string

  • aws_sqlserver_ext.conv_string_to_date

  • aws_sqlserver_ext.conv_string_to_datetime

  • aws_sqlserver_ext.conv_string_to_datetime

  • aws_sqlserver_ext.parse_to_date

  • aws_sqlserver_ext.parse_to_datetime

  • aws_sqlserver_ext.parse_to_time