기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Lambda를 사용하여 Amazon S3에서 메인프레임 파일을 EBCDIC 형식에서 문자로 구분된 ASCII 형식으로 변환합니다.
작성자: Luis Gustavo Dantas(AWS)
요약
이 패턴은 메인프레임 EBCDIC (확장 이진 코딩 십진 교환 코드) 파일을 문자로 구분된 ASCII (정보 교환을 위한 미국 표준 코드) 파일로 자동 변환하는 AWS Lambda 함수를 시작하는 방법을 보여줍니다. Lambda 함수는 ASCII 파일이 Amazon Simple Storage Service(S3) 버킷에 업로드된 후에 실행됩니다. 파일 변환 후 x86 기반 워크로드에서 ASCII 파일을 읽거나 파일을 최신 데이터베이스로 로드할 수 있습니다.
이 패턴에서 설명하는 파일 변환 접근 방식은 최신 환경에서 EBCDIC 파일을 사용할 때 발생하는 문제를 해결하는 데 도움이 될 수 있습니다. EBCDIC로 인코딩된 파일에는 2진수 또는 압축 10진수 형식으로 표현된 데이터가 포함되는 경우가 많으며 필드는 고정 길이입니다. 최신 x86 기반 워크로드 또는 분산 환경은 일반적으로 ASCII로 인코딩된 데이터를 사용하며 EBCDIC 파일을 처리할 수 없기 때문에 이러한 특성으로 인해 장애가 발생합니다.
사전 조건 및 제한 사항
사전 조건
활성 상태의 AWS 계정
S3 버킷
관리자 권한이 있는 AWS Identity and Access Management (IAM) 사용자
AWS CloudShell
Python 3.8.0
이상 EBCDIC 및 해당 데이터 구조로 공통 비즈니스 지향 언어 (COBOL) 카피북으로 인코딩된 플랫 파일
참고
이 패턴은 샘플 EBCDIC 파일(CLIENT.EBCDIC.txt
제한 사항
COBOL 카피북에는 일반적으로 여러 레이아웃 정의가 들어 있습니다. mainframe-data-utilities
프로젝트는 이런 종류의 카피북을 파싱할 수는 있지만 데이터 변환 시 어떤 레이아웃을 고려할지 유추할 수는 없습니다. 카피북에는 이 로직이 들어 있지 않기 때문입니다 (대신 COBOL 프로그램에 남아 있음). 따라서 카피북을 파싱한 후에는 레이아웃 선택 규칙을 수동으로 구성해야 합니다. 이 패턴에는 Lambda 할당량이 적용됩니다.
아키텍처
소스 기술 스택
IBM z/OS, IBM i 및 기타 EBCDIC 시스템
EBCDIC로 인코딩된 데이터가 포함된 순차 파일 (예: IBM Db2 언로드)
COBOL 카피북 레이아웃
대상 기술 스택
Amazon S3
Amazon S3 이벤트 알림
IAM
Lambda 함수
Python 3.8 이상
메인프레임 데이터 유틸리티
JSON 메타데이터
문자로 구분된 ASCII 파일
대상 아키텍처
다음 다이어그램은 메인프레임 EBCDIC 파일을 ASCII 파일로 변환하는 아키텍처를 보여줍니다.

이 다이어그램은 다음 워크플로를 보여줍니다.
사용자는 카피북 파서 스크립트를 실행하여 COBOL 카피북을 JSON 파일로 변환합니다.
사용자가 JSON 메타데이터를 S3 버킷에 업로드합니다. 이렇게 하면 데이터 변환 Lambda 함수에서 메타데이터를 읽을 수 있습니다.
사용자 또는 자동화된 프로세스가 EBCDIC 파일을 S3 버킷에 업로드합니다.
S3 알림 이벤트는 데이터 변환 Lambda 함수를 트리거합니다.
AWS는 Lambda 함수에 대한 S3 버킷 읽기/쓰기 권한을 확인합니다.
Lambda는 S3 버킷에서 파일을 읽고 EBCDIC에서 ASCII로 파일을 로컬로 변환합니다.
Lambda는 Amazon CloudWatch에 프로세스 상태를 기록합니다.
Lambda는 ASCII 파일을 Amazon S3에 다시 기록합니다.
참고
카피북 구문 분석기 스크립트는 메타데이터를 JSON으로 변환한 후 해당 데이터를 S3 버킷에 업로드한 후 한 번만 실행됩니다. 초기 변환 후에는 S3 버킷에 업로드된 것과 동일한 JSON 파일을 사용하는 EBCDIC 파일이 동일한 메타데이터를 사용합니다.
도구
AWS 도구
Amazon CloudWatch를 사용하면 AWS 리소스의 지표와 AWS에서 실행하는 애플리케이션을 실시간으로 모니터링할 수 있습니다.
Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.
AWS CloudShell은 AWS Command Line Interface(AWS CLI) 및 사전 설치된 다양한 개발 도구를 사용하여 AWS 서비스를 관리하는 데 사용할 수 있는 브라우저 기반 쉘입니다.
AWS Identity and Access Management(IAM)를 사용하면 사용자에 대해 인증 및 권한 부여를 제어함으로써 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있습니다.
AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. Lambda는 필요 시에만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불하면 됩니다.
기타 도구
코드
이 패턴의 코드는 GitHub mainframe-data-utilities
모범 사례
다음 모범 사례를 고려하세요.
Amazon 리소스 이름 (ARN) 수준에서 필요한 권한을 설정합니다.
항상 IAM 정책에 최소 권한 권한을 부여하십시오. 자세한 내용은 IAM 설명서의 IAM의 보안 모범 사례를 참조하세요.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
환경 변수를 생성합니다. | 다음 환경 변수를 텍스트 편집기에 복사한 다음 <placeholder>다음 예제의 값을 리소스 값으로 바꾸십시오.
참고나중에 S3 버킷, AWS 계정 및 AWS 리전에 대한 참조를 생성합니다. 환경 변수를 정의하려면 CloudShell 콘솔 참고CloudShell 세션이 다시 시작될 때마다이 단계를 반복해야 합니다. | 일반 AWS |
작업 폴더 생성 | 나중에 리소스 정리 프로세스를 간소화하려면 다음 명령어를 실행하여 CloudShell에서 작업 폴더를 생성하십시오.
참고CloudShell 세션에 대한 연결이 끊길 때마다 디렉터리를 작업 디렉터리( | 일반 AWS |
작업 | 설명 | 필요한 기술 |
---|---|---|
Lambda 함수에 대해 신뢰 정책를 생성합니다. | EBCDIC 변환기는 람다 함수에서 실행됩니다. 이 함수에는 IAM 역할이 있어야 합니다. IAM 역할을 생성하기 전에 리소스가 해당 정책을 수임할 수 있도록 하는 신뢰 정책 문서를 정의해야 합니다. CloudShell 작업 폴더에서 다음 명령을 실행하여 정책 문서를 생성합니다.
| 일반 AWS |
Lambda 변환을 위한 IAM 역할을 생성합니다. | IAM 역할을 생성하려면 CloudShell 작업 폴더에서 다음 AWS CLI 명령을 실행합니다.
| 일반 AWS |
Lambda 함수에 대한 IAM 정책 문서를 생성합니다. | Lambda 함수는 S3 버킷에 대한 읽기/쓰기 액세스 권한과 Amazon CloudWatch Logs에 대한 쓰기 권한을 가져야 합니다. IAM 정책을 생성하려면 CloudShell 작업 폴더에서 다음 명령을 실행합니다.
| 일반 AWS |
IAM 정책 문서를 IAM 역할에 첨부합니다. | IAM 역할에 IAM 정책을 연결하려면 CloudShell 작업 폴더에서 다음 명령을 실행합니다.
| 일반 AWS |
작업 | 설명 | 필요한 기술 |
---|---|---|
EBCDIC 변환 소스 코드를 다운로드하십시오. | CloudShell 작업 폴더에서 다음 명령을 실행하여 GitHub에서 메인프레임 데이터 유틸리티 소스 코드를 다운로드합니다.
| 일반 AWS |
ZIP 패키지를 생성하십시오. | CloudShell 작업 폴더에서 다음 명령을 실행하여 EBCDIC 변환을 위한 Lambda 함수를 생성하는 ZIP 패키지를 생성합니다.
| 일반 AWS |
Lambda 함수를 생성합니다. | CloudShell 작업 폴더에서 다음 명령을 실행하여 EBCDIC 변환을 위한 Lambda 함수를 생성합니다.
참고환경 변수 레이아웃은 Lambda 함수에 JSON 메타데이터가 있는 위치를 알려줍니다. | 일반 AWS |
Lambda 함수에 대한 리소스 기반 정책을 생성합니다. | CloudShell 작업 폴더에서 다음 명령을 실행하여 Amazon S3 이벤트 알림이 EBCDIC 변환을 위한 Lambda 함수를 트리거하도록 허용하십시오.
| 일반 AWS |
작업 | 설명 | 필요한 기술 |
---|---|---|
Amazon S3 이벤트 알림용 구성 문서를 생성합니다. | Amazon S3 이벤트 알림은 파일이 입력 폴더에 배치될 때 EBCDIC 변환 Lambda 함수를 시작합니다. CloudShell 작업 폴더에서 다음 명령을 실행하여 Amazon S3 이벤트 알림용 JSON 문서를 생성합니다.
| 일반 AWS |
Amazon S3 이벤트 알림을 만듭니다. | CloudShell 작업 폴더에서 다음 명령을 실행하여 Amazon S3 이벤트 알림을 생성합니다.
| 일반 AWS |
작업 | 설명 | 필요한 기술 |
---|---|---|
COBOL 카피북을 분석하십시오. | CloudShell 작업 폴더에서 다음 명령을 실행하여 샘플 COBOL 카피북을 JSON 파일로 파싱합니다 (데이터 파일을 올바르게 읽고 분할하는 방법을 정의합니다).
| 일반 AWS |
변환 규칙을 추가합니다. | 샘플 데이터 파일과 해당 COBOL 카피북은 다중 레이아웃 파일입니다. 즉, 변환 시 특정 규칙에 따라 데이터를 분할해야 합니다. 이 경우 각 행의 위치 3과 4에 있는 바이트가 레이아웃을 정의합니다. CloudShell 작업 폴더에서 파일을
| 일반 AWS, IBM 메인프레임, 코볼 |
JSON 메타데이터를 S3 버킷에 업로드합니다. | CloudShell 작업 폴더에서 다음 AWS CLI 명령을 실행하여 JSON 메타데이터를 S3 버킷에 업로드합니다.
| 일반 AWS |
작업 | 설명 | 필요한 기술 |
---|---|---|
EBCDIC 파일을 S3 버킷으로 전송합니다. | CloudShell 작업 폴더에서 다음 명령을 실행하여 EBCDIC 파일을 S3 버킷으로 전송합니다.
참고ASCII 파일이 S3 버킷에 업로드될 때 Lambda 변환 함수를 다시 호출하지 않도록 입력(EBCDIC) 및 출력(ASCII) 파일에 대해 다른 폴더를 설정하는 것이 좋습니다. | 일반 AWS |
출력 결과를 확인합니다. | CloudShell 작업 폴더에서 다음 명령을 실행하여 S3 버킷에 ASCII 파일이 생성되었는지 확인합니다.
참고데이터 변환은 몇 초 정도 걸릴 수 있습니다. ASCII 파일을 몇 번 확인하는 것이 좋습니다. ASCII 파일을 사용할 수 있게 되면 다음 명령을 실행하여 S3 버킷에서 현재 폴더로 파일을 다운로드합니다.
ASCII 파일 내용을 확인하십시오.
| 일반 AWS |
작업 | 설명 | 필요한 기술 |
---|---|---|
(선택 사항) 변수와 폴더를 준비합니다. | CloudShell과의 연결이 끊어지면 다시 연결한 후 다음 명령을 실행하여 디렉터리를 작업 폴더로 변경합니다.
환경 변수가 정의되어 있는지 확인하십시오.
| 일반 AWS |
버킷의 알림 구성을 제거합니다. | CloudShell 작업 폴더에서 다음 명령을 실행하여 Amazon S3 이벤트 알림 구성을 제거합니다.
| 일반 AWS |
Lambda 함수를 삭제합니다. | CloudShell 작업 폴더에서 다음 명령을 실행하여 EBCDIC 컨버터의 Lambda 함수를 삭제합니다.
| 일반 AWS |
IAM 역할 및 정책을 삭제합니다. | CloudShell 작업 폴더에서 다음 명령을 실행하여 EBCDIC 변환기 역할과 정책을 제거합니다.
| 일반 AWS |
S3 버킷에서 생성된 파일을 삭제합니다. | CloudShell 작업 폴더에서 다음 명령을 실행하여 S3 버킷에서 생성된 파일을 삭제합니다.
| 일반 AWS |
작업 폴더를 삭제합니다. | CloudShell 작업 폴더에서 다음 명령을 실행하여
| 일반 AWS |
관련 리소스
메인프레임 데이터 유틸리티 README
(GitHub) EBCDIC 문자 세트
(IBM 설명서) EBCDIC에서 ASCII로
(IBM 설명서) COBOL
(IBM 설명서) Amazon S3 트리거를 사용하여 Lambda 함수 간접 호출(AWS Lambda 설명서)