

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS クラウドで高度なメインフレームファイルビューアを構築
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud"></a>

*Boopathy GOPALSAMY、Jeremiah O'Connor (Amazon Web Services)*

## 概要
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-summary"></a>

このパターンでは、手順とコードサンプルを提供して、AWS サーバーレスサービスを使用することでメインフレームファイルを参照および確認するための高度なツールを構築することを支援します。このパターンは、メインフレーム入力ファイルを Amazon OpenSearch Service ドキュメントに変換してブラウズしたり検索したりする方法の例を示しています。ファイルビューアーツールは次の目標達成に役立ちます。
+ AWS ターゲット移行環境での一貫性を保持するため、メインフレームのファイル構造とレイアウトを同じにしてください（例えば、外部にファイルを転送するバッチアプリケーションでも同じファイルレイアウトを維持できます）
+ メインフレーム移行中の開発とテストをスピードアップできます。
+ 移行後のメンテナンス活動をサポート

## 前提条件と制限事項
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ レガシープラットフォームからアクセス可能なサブネットを持つ仮想プライベートクラウド (VPC)
+ 
**注記**  
入力ファイルとそれに対応する共通ビジネス指向言語 (COBOL) コピーブック (注: 入力ファイルと COBOL コピーブックの例については、GitHub リポジトリの [gfs-mainframe-solutions](https://github.com/aws-samples/gfs-mainframe-patterns.git) を参照してください。COBOL コピーブックの詳細については、IBM ウェブサイトの「[Enterprise COBOL for z/OS 6.3](https://publibfp.boulder.ibm.com/epubs/pdf/igy6pg30.pdf) プログラミングガイド」を参照してください)

**制限事項**
+ コピーブックの解析は、ネストレベルが 2 つ以下に限られています (OCCURS)。

## アーキテクチャ
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-architecture"></a>

**ソーステクノロジースタック**
+ [[FB (固定ブロック)]](https://www.ibm.com/docs/en/zos-basic-skills?topic=set-data-record-formats) 形式の入力ファイル
+ COBOL コピーブックのレイアウト

**ターゲットテクノロジースタック**
+ Amazon Athena
+ Amazon OpenSearch Service
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Lambda
+ AWS Step Functions

**ターゲットアーキテクチャ**

次の図は、メインフレーム入力ファイルを解析して OpenSearch Service ドキュメントに変換し、ブラウジングや検索を行うプロセスを示しています。

![メインフレーム入力ファイルを解析して OpenSearch Service に変換するプロセス。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/36d72b00-d163-455f-9e59-e2c872e7c28a/images/cce68438-bcf2-48c1-b86b-01242235ec76.png)


この図表は、次のワークフローを示しています:

1. 管理者ユーザーまたはアプリケーションは、入力ファイルを 1 つの S3 バケットに、COBOL コピーブックを別の S3 バケットにプッシュします。

1. 
**注記**  
入力ファイルを含む S3 バケットは、サーバーレスの Step Functions ワークフローを開始する Lambda 関数を呼び出します。このパターンでは、Step Functions ワークフローを駆動するための S3 イベントトリガーと Lambda 関数の使用は任意です。このパターンの GitHub コードサンプルにはこれらのサービスの使用は含まれていませんが、要件に応じてこれらのサービスを使用できます。

1. Step Functions ワークフローは、次の Lambda 関数のすべてのバッチプロセスを調整します。
   + この `s3copybookparser.py` 関数はコピーブックのレイアウトを解析し、フィールド属性、データ型、オフセット (入力データ処理に必要) を抽出します。
   + この `s3toathena.py` 関数は Athena テーブルレイアウトを作成します。Athena `s3toathena.py` は関数によって処理された入力データを解析し、そのデータを CSV ファイルに変換します。
   + この `s3toelasticsearch.py` 関数は S3 バケットから結果ファイルを取り込み、そのファイルを OpenSearch Service にプッシュします。

1. ユーザーは OpenSearch Service を使用して OpenSearch ダッシュボードにアクセスし、さまざまなテーブル形式や列形式のデータを取得し、インデックス化されたデータに対してクエリを実行します。

## ツール
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-tools"></a>

AWS サービス
+ 「[Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)」 は、標準 SQL を使用して Amazon Simple Storage Service (Amazon S3) 内のデータを直接分析することを支援するインタラクティブなクエリサービスです。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。このパターンでは、Lambda を使用して、ファイルの解析、データの変換、OpenSearch Service へのデータのロードなどのコアロジックを実装して、インタラクティブなファイルアクセスが可能になります。
+ 「[Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html)」は、AWS クラウドにおける OpenSearch クラスターのデプロイ、オペレーション、スケーリングを支援するマネージドサービスです。このパターンでは、OpenSearch Service を使用して変換されたファイルにインデックスを付け、インタラクティブな検索機能をユーザーに提供します。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ 「[AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」は、オープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
+ 「[AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)」は、AWS Lambda 関数と他のサービスを組み合わせてビジネスクリティカルなアプリケーションを構築できるサーバーレスオーケストレーションサービスです。このパターンでは、Step Functions を使用して Lambda 関数をオーケストレーションします。

その他のツール
+ 「[GitHub](https://github.com/)」は、コラボレーションツールとバージョン管理を提供するコードホスティングサービスです。
+ 「[Python](https://www.python.org/)」は高水準プログラミング言語です。

**Code**

このパターンのコードは、GitHub 内の「[gfs-mainframe-patterns](https://github.com/aws-samples/gfs-mainframe-patterns.git)」リポジトリで利用できます。

## エピック
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-epics"></a>

### ターゲット環境の準備
<a name="prepare-the-target-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットを作成するには | コピーブック、入力ファイル、出力ファイルを保存するための 「[S3 バケットを作成します](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html)」。S3 バケットには次のフォルダ構造をお勧めします。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS 全般 | 
| s3copybook パーサー関数を作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS 全般 | 
| s3to アテナ関数を作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS 全般 | 
| s3to エラスティック検索関数を作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS 全般 | 
| OpenSearch サービスクラスターを作成します。 | クラスターを作成します[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html)<br />**IAM ロールにアクセス許可を付与**<br />Lambda 関数の IAM ロール (`arn:aws:iam::**:role/service-role/s3toelasticsearch-role-**`) にきめ細かくアクセスできるようにするには、以下を実行します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS 全般 | 
| オーケストレーション用の Step Functions を作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS 全般 | 

### デプロイして実行
<a name="deploy-and-run"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットに入力ファイルとコピーブックをアップロードします。 | 「[GitHub](https://github.com/aws-samples/gfs-mainframe-patterns.git)」リポジトリのサンプルフォルダからサンプルファイルをダウンロードし、先ほど作成した S3 バケットにファイルをアップロードします。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS 全般 | 
| 手順関数を呼び出します | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html)<pre>{<br />  "s3_copybook_bucket_name": "<BUCKET NAME>",<br />  "s3_copybook_bucket_key": "<COPYBOOK PATH>",<br />  "s3_source_bucket_name": "<BUCKET NAME",<br />  "s3_source_bucket_key": "INPUT FILE PATH"<br />}</pre>例えば、次のようになります。<pre>{<br />  "s3_copybook_bucket_name": "fileaidtest",<br />  "s3_copybook_bucket_key": "copybook/acctix.cpy",<br />  "s3_source_bucket_name": "fileaidtest",<br />  "s3_source_bucket_key": "input/acctindex"<br />}</pre> | AWS 全般 | 
| Step Functions でワークフローの実行を検証します。 | [Step Functions コンソール](https://console.aws.amazon.com/states/home)の**グラフインスペクター**で、ワークフローの実行を確認します。実行実行状態は、実行ステータスを表すように色分けされています。例えば、青は**進行中**、緑は**成功**、赤は**失敗**を示します。**[実行イベント履歴]** セクションの表を参照して、実行イベントに関する詳細情報を確認することもできます。<br />グラフィカルなワークフロー実行の例については、このパターンの「*追加情報*」セクションの *Step Functions* グラフを参照してください。 | AWS 全般 | 
| Amazon CloudWatch で配信ログを検証します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html)成功した配信ログの例については、このパターンの「*追加情報*」セクションにある *CloudWatch 配信ログ*を参照してください。 | AWS 全般 | 
| OpenSearch ダッシュボードでフォーマットされたファイルを検証し、ファイル操作を実行します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS 全般 | 

## 関連リソース
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-resources"></a>

**リファレンス**
+ 「[COBOL コピーブックの例](https://www.ibm.com/docs/en/record-generator/3.0?topic=SSMQ4D_3.0.0/documentation/cobol_rcg_examplecopybook.html)」 (IBM ドキュメンテーション)
+ 「[BMC コンピュウェアファイルエイド](https://www.bmc.com/it-solutions/bmc-compuware-file-aid.html)」 (BMC ドキュメンテーション)

**チュートリアル**
+ 「[チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html)」 (AWS Lambda ドキュメント)
+ 「[AWS Step Functions と AWS Lambda を使用してサーバーレスワークフローを作成する方法を教えてください](https://aws.amazon.com/getting-started/hands-on/create-a-serverless-workflow-step-functions-lambda/)」 (AWS ドキュメント)
+ 「[Amazon OpenSearch Service での OpenSearch Dashboards の使用](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/dashboards.html)」 (AWS ドキュメント)

## 追加情報
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-additional"></a>

Step Functions・グラフ

以下は、Step Functions グラフの例を示しています。グラフには、このパターンで使用されている Lambda 関数の実行ステータスが表示されます。

![Step Functions グラフには、このパターンで使用されている Lambda 関数の実行ステータスが表示されます。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/36d72b00-d163-455f-9e59-e2c872e7c28a/images/11093e5d-2f9e-4bbf-8abc-f3b2980dd550.png)


**CloudWatch 配信ログ**

次の例は、`s3toelasticsearch` 実行が正常に実行された場合の配信成功ログを示しています。


| 
| 
| 2022-08-10T 15:53:33.033-05:00 | 処理中のドキュメント数:100 |  | 
| --- |--- |--- |
|  | 2022-08-10T 15:53:33 .171-05:00 | [情報] 2022-08-10T 20:53 .171 Z a1b2-90ab-cdef-EXAMPLE 11111EXAMPLE 111EXAMPLE POST https://search-essearch-3h4uqclifeqaj2vg4mphe7ffle.us-east-2.es.amazonaws.com:443/\_bulk [ステータス:200 リクエスト:0.100s] | 
|  | 2022-08-10T 15:53:33.172-05:00 | 一括書き込み成功:100 件のドキュメント | 