기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Python을 사용하여 AWS에서 EBCDIC 데이터를 ASCII로 변환 및 압축 해제
작성자: Luis Gustavo Dantas(AWS)
코드 리포지토리: 메인프레임 데이터 유틸리티 | 환경: PoC 또는 파일럿 | 소스: Mainframe EBCDIC 데이터 |
대상: 분산 또는 클라우드로 현대화된 ASCII 데이터 | R 유형: 리플랫포밍 | 워크로드: IBM |
기술: 메인프레임, 데이터베이스, 스토리지 및 백업, 현대화 | AWS 서비스: Amazon EBS, Amazon EC2 |
요약
메인프레임은 일반적으로 중요한 비즈니스 데이터를 호스팅하므로 데이터를 Amazon Web Services(AWS) 클라우드 또는 기타 미국 정보 교환 표준 코드(ASCII) 환경으로 마이그레이션할 때 데이터를 현대화하는 것이 가장 중요한 작업 중 하나입니다. 메인프레임에서 데이터는 일반적으로 확장 이진 코드 십진 교환 코드(EBCDIC) 형식으로 인코딩됩니다. 데이터베이스, 가상 스토리지 액세스 방법(VSAM) 또는 플랫 파일을 익스포트하면 일반적으로 압축된 바이너리 EBCDIC 파일이 생성되므로 마이그레이션하기가 더 복잡합니다. 가장 일반적으로 사용되는 데이터베이스 마이그레이션 솔루션은 대부분의 경우 데이터 인코딩을 자동으로 변환하는 변경 데이터 캡처(CDC)입니다. 그러나 이러한 데이터베이스, VSAM 또는 플랫 파일에는 CDC 메커니즘을 사용하지 못할 수 있습니다. 이러한 파일의 경우 데이터를 현대화하기 위한 대체 접근 방식이 필요합니다.
이 패턴은 EBCDIC 데이터를 ASCII 형식으로 변환하여 현대화하는 방법을 설명합니다. 변환 후에는 데이터를 분산 데이터베이스에 로드하거나 클라우드의 애플리케이션이 데이터를 직접 처리하도록 할 수 있습니다. 패턴은 저장소의 변환 스크립트와 샘플 파일을 사용합니다. mainframe-data-utilities
사전 조건 및 제한 사항
사전 조건
활성 상태의 계정
EBCDIC 입력 파일 및 해당 COBOL(공용 비즈니스 지향 언어) 카피북. 샘플 EBCDIC 파일과 COBOL 카피북이 리포지토리에 포함되어 있습니다. mainframe-data-utilities
GitHub COBOL 카피북에 대한 자세한 내용은 IBM 웹사이트의 zEnterprise COBOL for z/OS 6.4 프로그래밍 가이드 를 참조하세요.
제한 사항
COBOL 프로그램 내에 정의된 파일 레이아웃은 지원되지 않습니다. 이는 별도로 제공되어야 합니다.
제품 버전
Python 버전 3.8 이상
아키텍처
소스 기술 스택
메인프레임의 EBCDIC 데이터
COBOL 카피북
대상 기술 스택
Virtual Private Cloud(VPC)의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스
Amazon Elastic Block Store(Amazon EBS)
Python과 그 필수 패키지, JavaScript 객체 표기법 (JSON), sys, 그리고 날짜/시간
최신 애플리케이션에서 읽을 수 있거나 관계형 데이터베이스 테이블에 로드할 수 있는 ASCII 플랫 파일
대상 아키텍처
![Python 스크립트와 COBOL 카피북을 사용하여 EC2 인스턴스에서 EBCDIC 데이터를 ASCII로 변환했습니다.](images/pattern-img/f5907bfe-7dff-4cd0-8523-57015ad48c4b/images/4f97b1dd-3f20-4966-a291-22180680ea99.png)
아키텍처 다이어그램은 EC2 인스턴스에서 EBCDIC 파일을 ASCII 파일로 변환하는 프로세스를 보여줍니다.
parse_copybook_to_json.py 스크립트를 사용하여 COBOL 카피북을 JSON 파일로 변환합니다.
JSON 파일과 extract_ebcdic_to_ascii.py 스크립트를 사용하여 EBCDIC 데이터를 ASCII 파일로 변환합니다.
자동화 및 규모 조정
첫 번째 수동 파일 변환에 필요한 리소스를 확보한 후 파일 변환을 자동화할 수 있습니다. 이 패턴에는 자동화 지침이 포함되어 있지 않습니다. 여러 가지 방법으로 변환을 자동화할 수 있습니다. 다음 사항은 한 가지 가능한 접근 방식에 대한 개요입니다.
AWS Command Line Interface(AWS CLI) 및 Python 스크립트 명령을 쉘 스크립트로 캡슐화합니다.
쉘 스크립트 작업을 EC2 인스턴스에 비동기적으로 제출하는 AWS Lambda 함수를 생성합니다. 자세한 내용은 AWS Lambda를 사용한 SSH 작업 예약
을 참조하세요. 레거시 파일이 업로드될 때마다 Lambda 함수를 간접 호출하는 Amazon Simple Storage Service(S3) 트리거를 생성합니다. 자세한 내용은 Amazon S3 트리거를 사용하여 Lambda 함수 간접 호출을 참조하세요.
도구
서비스
Amazon Elastic Compute Cloud(Amazon EC2)는 AWS 클라우드에서 규모를 조정할 수 있는 컴퓨팅 용량을 제공합니다. 필요한 만큼 가상 서버를 시작하고 빠르게 스케일 업하거나 스케일 다운할 수 있습니다.
Amazon Elastic Block Store(Amazon EBS)는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 사용할 수 있는 블록 스토리지 볼륨을 제공합니다.
AWS Command Line Interface(AWS CLI)는 명령줄 쉘에서 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다.
AWS Identity and Access Management(IAM)는 사용자에 대한 인증 및 권한 부여를 제어함으로써 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있습니다.
기타 도구
코드 리포지토리
이 패턴의 코드는 저장소에서 사용할 수 있습니다. mainframe-data-utilities
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
EC2 인스턴스를 시작합니다. | EC2 인스턴스에는 아웃바운드 인터넷 액세스가 있어야 합니다. 이렇게 하면 인스턴스가 에서 제공되는 Python 소스 코드에 액세스할 수 GitHub 있습니다. 인스턴스를 생성하는 방법:
| 일반 AWS |
Git을 설치합니다. |
| 일반 AWS, Linux |
Python을 설치합니다. |
| 일반 AWS, Linux |
GitHub 리포지토리를 복제합니다. |
| 일반 AWS, GitHub |
작업 | 설명 | 필요한 기술 |
---|---|---|
COBOL 카피북을 JSON 레이아웃 파일로 파싱합니다. |
다음 명령은 COBOL 카피북을 JSON 파일로 변환합니다.
스크립트는 수신된 인수를 인쇄합니다.
인수에 대한 자세한 내용은 GitHub 리포지토리의 README 파일을 | 일반 AWS, Linux |
JSON 레이아웃 파일을 검사합니다. |
JSON 레이아웃 파일의 가장 중요한 속성은 다음과 같습니다.
JSON 레이아웃 파일에 대한 자세한 내용은 리포지토리의 README 파일을 | 일반 AWS, JSON |
ASCII 파일을 생성합니다. | 복제된 GitHub 리포지토리에 포함된 extract_ebcdic_to_ascii.py 스크립트를 실행합니다. 이 스크립트는 EBCDIC 파일을 읽고 변환하여 읽을 수 있는 ASCII 파일을 작성합니다.
스크립트는 EBCDIC 데이터를 처리할 때 10,000개 레코드의 모든 배치에 대해 메시지를 인쇄합니다. 다음 예를 참조하세요.
인쇄 빈도를 변경하는 방법에 대한 자세한 내용은 저장소의 README 파일을 | 일반 AWS |
ASCII 파일을 검사합니다. |
제공된 샘플 EBCDIC 파일을 사용한 경우 ASCII 파일의 첫 번째 레코드는 다음과 같습니다.
| 일반 AWS, Linux |
EBCDIC 파일을 평가하세요. | Amazon EC2 콘솔에서 다음 명령을 입력합니다. 그러면 EBCDIC 파일의 첫 번째 레코드가 열립니다.
샘플 EBCDIC 파일을 사용한 경우 결과는 다음과 같습니다.
소스 파일과 대상 파일 간의 동등성을 평가하려면 EBCDIC에 대한 포괄적인 지식이 필요합니다. 예를 들어 샘플 EBCDIC 파일의 첫 문자는 하이픈( | 일반 AWS, Linux, EBCDIC |
관련 리소스
참조
EBCDIC 문자 세트
(IBM 설명서) EBCDIC에서 ASCII로
(IBM 설명서) COBOL
(IBM 설명서) 기본 JCL 개념
(IBM 설명서) Linux 인스턴스에 연결(Amazon EC2 설명서)
자습서
AWS Lambda를 사용하여 SSH 작업 예약
(AWS 블로그 게시물) Amazon S3 트리거를 사용하여 Lambda 함수 간접 호출(AWS Lambda 설명서)