翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Python を使用して EBCDIC データを AWS 上の ASCII に変換およびアンパックします
作成:ルイス・グスタボ・ダンタス (AWS)
環境:PoC またはパイロット | ソース:メインフレーム EBCDIC データ | |
対象:分散型またはクラウド型の最新化された ASCII データ | Rタイプ:リプラットフォーム | ワークロード: IBM |
テクノロジー:メインフレーム、データベース、ストレージとバックアップ、モダナイゼーション | AWS サービス:Amazon EBS; Amazon EC2 |
[概要]
メインフレームは通常、重要なビジネスデータをホストするため、Amazon Web Services(AWS)クラウドやその他の米国情報交換標準コード(ASCII)環境にデータを移行する場合、データを最新化することが最も重要なタスクの 1 つです。メインフレームでは、データは通常、拡張バイナリコード 10 進数交換コード (EBCDIC) 形式でエンコードされます。データベース、仮想ストレージアクセスメソッド (VSAM)、またはフラットファイルをエクスポートすると、通常、圧縮されたバイナリ EBCDIC ファイルが生成され、移行がより複雑になります。最も一般的に使用されるデータベース移行ソリューションはチェンジデータキャプチャ (CDC) で、ほとんどの場合、データエンコーディングを自動的に変換します。ただし、これらのデータベース、VSAM、またはフラットファイルには CDC メカニズムが使用できない場合があります。これらのファイルについては、データを最新化するための代替アプローチが必要です。
このパターンは、EBCDIC データを ASCII 形式に変換して最新化する方法を説明しています。変換後、データを分散データベースにロードしたり、クラウド内のアプリケーションにデータを直接処理させることができます。このパターンでは、リポジトリ内の変換スクリプトとサンプルファイルを使用します。mainframe-data-utilities
前提条件と制限
前提条件
アクティブなAWS アカウント
EBCDIC 入力ファイルとそれに対応する共通ビジネス指向言語 (COBOL) コピーブック。サンプル EBCDIC ファイルと COBOL コピーブックがリポジトリに含まれています。mainframe-data-utilities
GitHub COBOL コピーブックの詳細については、IBM Web サイトの「z/OS 6.4 プログラミング用エンタープライズ COBOL ガイド 」を参照してください。
制約事項
COBOL プログラム内で定義されたファイルレイアウトはサポートされていません。これらは別途利用できるようにする必要があります。
製品バージョン
Python バージョン 3.8 以降。
アーキテクチャ
ソーステクノロジースタック
メインフレーム上の EBCDIC データ
COBOL コピーブック
ターゲットテクノロジースタック
仮想プライベートクラウド (VPC)のAmazon Elastic Compute Cloud (Amazon EC2) インスタンス
Amazon Elastic Block Store (Amazon EBS)
Python とそれに必要なパッケージ、 JavaScript オブジェクト表記法 (JSON)、システム、および日時
最新のアプリケーションですぐに読み込んだり、リレーショナルデータベーステーブルに読み込んだりできる 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 コマンドラインインターフェイス (AWS CLI) コマンドと Python スクリプトコマンドをシェルスクリプトにカプセル化します。
シェルスクリプトジョブを EC2 インスタンスに非同期的に送信する AWS Lambda 関数を作成します。詳細については、「AWS Lambda を使用した SSH ジョブのスケジュール設定
」を参照してください。 レガシーファイルがアップロードされるたびに Lambda 関数を呼び出す Amazon Simple Storage Service (Amazon S3) トリガーを作成します。詳細については、チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出すを参照してください。
ツール
サービス
「Amazon Elastic Compute Cloud (Amazon EC2)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。
Amazon Elastic Block Store (Amazon EBS) は、 Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで使用するブロックレベルストレージのボリュームを提供します。
「AWS コマンドラインインターフェイス (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 ドキュメント) Amazon Linux EC2 インスタンスに接続(Amazon EC2 ドキュメント)
チュートリアル
AWS Lambda を使用して SSH ジョブをスケジューリングする
(AWS ブログ記事) Amazon S3 トリガーを使用して Lambda 関数を呼び出す (AWS Lambda ドキュメント)