

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

# メインフレーム
<a name="mainframe-pattern-list"></a>

**Topics**
+ [をインストールして IBM z/OS AWS のサービス からアクセスする AWS CLI](access-aws-services-from-ibm-z-os-by-installing-aws-cli.md)
+ [BMC AMI Cloud を使用したメインフレームデータを Amazon S3 にバックアップおよびアーカイブ](back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.md)
+ [AWS Mainframe Modernization と を使用して COBOL Db2 プログラムを構築する AWS CodeBuild](build-cobol-db2-programs-mainframe-modernization-codebuild.md)
+ [Amazon EC2 Auto Scaling と Systems Manager を搭載した Micro Focus Enterprise Server PAC を構築する](build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.md)
+ [AWS クラウドで高度なメインフレームファイルビューアを構築](build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.md)
+ [Blu Age によってモダナイズされたメインフレームワークロードをコンテナ化](containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.md)
+ [Python を使用して AWS 上で EBCDIC データを ASCII に変換および解凍する](convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.md)
+ [を使用して Amazon S3 でメインフレームファイルを EBCDIC 形式から文字区切りの ASCII 形式に変換する AWS Lambda](convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda.md)
+ [Micro Focusを使用して複雑なレコードレイアウトのメインフレームデータファイルを変換](convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.md)
+ [Terraform を使用して、コンテナ化された Blu Age アプリケーションの環境をデプロイする](deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.md)
+ [Quick Sight で AWS Mainframe Modernization と Amazon Q を使用して Db2 z/OS データインサイトを生成する](generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.md)
+ [Quick Sight で AWS Mainframe Modernization と Amazon Q を使用してデータインサイトを生成する](generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.md)
+ [AWS Blu Age モダナイズされたメインフレームアプリケーションで Microsoft Entra ID ベースの認証を実装する](implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.md)
+ [Stonebranch ユニバーサルコントローラーと AWS Mainframe Modernizationを統合](integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.md)
+ [Precisely からのConnect を使用して VSAM ファイルを Amazon RDS または Amazon MSK に移行およびレプリケート](migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.md)
+ [を使用して CardDemo メインフレームアプリケーションをモダナイズする AWS Transform](modernize-carddemo-mainframe-app.md)
+ [と Terraform を使用してメインフレームアプリケーションをモダナイズ AWS Transform およびデプロイする](modernize-mainframe-app-transform-terraform.md)
+ [Rocket Enterprise Server と LRS PageCenterX AWS を使用してメインフレーム出力管理をモダナイズする](modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.md)
+ [Rocket Enterprise Server と LRS VPSX/MFI を使用して AWS 、 でメインフレームのバッチ印刷ワークロードをモダナイズする](modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.md)
+ [メインフレームのモダナイゼーション: Rocket Software Enterprise Suite AWS を使用した での DevOps](mainframe-modernization-devops-on-aws-with-micro-focus.md)
+ [Micro Focus Enterprise ServerとLRS VPSX/MFIを使用して、AWS 上のメインフレームのオンライン印刷ワークロードを最新化](modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.md)
+ [Transfer Family を使用して、メインフレームファイルを Amazon S3 に直接移動する](move-mainframe-files-directly-to-amazon-s3-using-transfer-family.md)
+ [AWS Blu Age モダナイズされたアプリケーションのパフォーマンスを最適化する](optimize-performance-aws-blu-age-modernized-application.md)
+ [トラステッドコンテキストを使用して、AWS の Db2 フェデレーションデータベースのユーザーアクセスを保護し、合理化する](secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts.md)
+ [大規模な Db2 z/OS データを CSV ファイルで Amazon S3 に転送する](transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.md)
+ [AWS Transform カスタムを使用して Easytrieve を最新の言語に変換する](transform-easytrieve-modern-languages.md)
+ [その他のパターン](mainframe-more-patterns-pattern-list.md)

# をインストールして IBM z/OS AWS のサービス からアクセスする AWS CLI
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli"></a>

*Amazon Web Services、Souma Ghosh、Paulo Vitor Pereira、Phil de Valence*

## 概要
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-summary"></a>

[AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) は、コマンドラインシェルでコマンドを使用して複数の AWS サービスを管理するためのオープンソースツールです。最小限の構成で、コマンドプロンプト、ターミナル、bash シェルなどのコマンドラインセッションからコマンドを実行し、ブラウザベースの AWS マネジメントコンソールで提供される機能と同等の機能を実装することができます。

のサービスとしての AWS インフラストラクチャ (IaaS) の管理、管理、およびアクセス機能はすべて AWS マネジメントコンソール 、 AWS API および で利用できます AWS CLI。IBM z/OS メインフレーム AWS CLI に をインストールして、z/OS AWS のサービス から直接アクセス、管理、操作できます。 AWS CLI を使用すると、ユーザーとアプリケーションは次のようなさまざまなタスクを実行できます。
+ z/OS と Amazon Simple Storage Service (Amazon S3) オブジェクトストレージ間でファイルまたはデータセットを転送し、バケットのコンテンツを表示する
+  AWS Mainframe Modernization 環境でバッチジョブを開始するなど、さまざまな AWS リソースを開始および停止する
+  AWS Lambda 関数を呼び出して一般的なビジネスロジックを実装する
+ 人工知能と機械学習 (AI/ML) および分析サービスと統合する

このパターンでは、z/OS AWS CLI で をインストール、設定、使用する方法について説明します。グローバルにインストールできるため、すべての z/OS ユーザー、またはユーザーレベルで使用できます。このパターンでは、z/OS Unix System Services (USS) からのインタラクティブなコマンドラインセッション AWS CLI で、またはバッチジョブとして を使用する方法についても詳しく説明します。

## 前提条件と制限
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-prereqs"></a>

**前提条件**
+ **z/OS から へのネットワーク通信 AWS**

  デフォルトでは、 は TCP ポート 443 で HTTPS AWS のサービス を使用して にリクエスト AWS CLI を送信します。を AWS CLI 正常に使用するには、TCP ポート 443 でアウトバウンド接続を実行できる必要があります。次のいずれかの z/OS USS コマンドを使用すると、z/OS から AWSへのネットワーク接続をテストできます (お使いの環境にインストールされていないものもあります)。

  ```
  ping amazonaws.com
  dig amazonaws.com
  traceroute amazonaws.com
  curl -k https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-welcome.html
  ```
+ **AWS credentials**

  z/OS の AWS クラウド サービスと通信するには、 でターゲットにアクセスするための権限を持つ認証情報を設定 AWS CLI する必要があります AWS アカウント。へのプログラムコマンドでは AWS、アクセスキーを使用できます。アクセスキーは、アクセスキー ID とシークレットアクセスキーで構成されます。アクセスキーがない場合は、 AWS マネジメントコンソールから作成することができます。ベストプラクティスとして、 AWS アカウント ルートユーザーが必須でない限り、ルートユーザーのアクセスキーをタスクに使用しないでください。代わりに、[新しい管理者 IAM ユーザーを作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html#create-an-admin)し、[最小特権のアクセス許可を準備](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html#LeastPrivilege)して、** **アクセスキーを持つユーザーを設定します。ユーザーを作成すると、このユーザーの[アクセスキー ID とシークレットアクセスキーを作成できます](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html)
+ **IBM Python for z/OS**

  には Python 3.8 以降 AWS CLI が必要です。IBM では、[IBM Open Enterprise Python for z/OS](https://www.ibm.com/products/open-enterprise-python-zos) を使用して z/OS で Python を実行することができます。IBM Open Enterprise Python は Shopz SMP/E から無料で入手できます。または、[IBM のウェブサイト](https://www.ibm.com/account/reg/signup?formid=urx-49465)から PAX ファイルをダウンロードすることもできます。手順については、IBM Open Enterprise Python for z/OS の[インストールと設定のドキュメント](https://www.ibm.com/docs/en/python-zos)を参照してください。

**制限事項**
+ このパターンに記載しているインストール手順は、**AWS CLI バージョン 1 のみ**に適用されます。の最新バージョン AWS CLI はバージョン 2 です。ただしこのパターンではバージョン 2 のインストール方法が異なり、バージョン 2 で利用できるバイナリ実行可能ファイルは z/OS システムとは互換性がないため、古いバージョンが使用されます。

**製品バージョン**
+ AWS CLI バージョン 1
+ Python 3.8 以降

## アーキテクチャ
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-architecture"></a>

**テクノロジースタック**
+ z/OS を実行するメインフレーム
+ Mainframe z/OS UNIX System Services (USS)
+ Mainframe Open MVS (OMVS) – z/OS UNIX シェル環境コマンドインターフェイス
+ ダイレクトアクセスストレージデバイス (DASD) などのメインフレームディスク
+ AWS CLI

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

次の図は、IBM z/OS での AWS CLI デプロイを示しています。SSH や telnet セッションなどのインタラクティブなユーザーセッション AWS CLI から を呼び出すことができます。また、ジョブ制御言語 (JCL) を使用してバッチジョブから呼び出すか、z/OS Unix シェルコマンドを呼び出せる任意のプログラムから呼び出すこともできます。

![\[AWS サービスにアクセスする IBM z/OS メインフレーム上の AWS CLI。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/4e3188d8-287f-4ced-8c29-80a01cbbdf50/images/c3883500-bd00-4c56-982a-26d5e0b8b093.png)


は、TCP/IP ネットワーク経由で AWS のサービス エンドポイントと AWS CLI 通信します。このネットワーク接続は、インターネット経由で、またはカスタマーデータセンターから AWS クラウド データセンターへのプライベート AWS Direct Connect 接続を介して行うことができます。通信は AWS 認証情報で認証され、暗号化されます。

**自動化とスケール**

 AWS のサービス を使用して の機能を調べ AWS CLI 、USS シェルスクリプトを開発して z/OS から AWS リソースを管理できます。z/OS バッチ環境から AWS CLI コマンドとシェルスクリプトを実行することもできます。また、メインフレームスケジューラと統合することで、バッチジョブを特定のスケジュールで実行するように自動化できます。 AWS CLI コマンドまたはスクリプトは、パラメータ (PARMs) およびプロシージャ (PROCs) 内でコーディングでき、パラメータが異なるバッチジョブから PARM または PROC を呼び出す標準的なアプローチに従ってスケーリングできます。

## ツール
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-tools"></a>
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) は、コマンドラインシェルのコマンド AWS のサービス を使用して を操作するのに役立つオープンソースツールです。

## ベストプラクティス
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-best-practices"></a>
+ セキュリティ上の理由から、アクセス許可は、アクセス AWS キーの詳細が保存されている USS ディレクトリに制限してください。 AWS CLIを使用するユーザーまたはプログラムにのみアクセスを許可します。
+  AWS アカウント ルートユーザーアクセスキーをタスクに使用しないでください。代わりに、自分用に[新しい管理者 IAM ユーザーを作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html#create-an-admin)して、アクセスキーを持つようにこれを設定します。


| 
| 
| IAM ユーザーの認証情報は有効期間が長いため、セキュリティ上のリスクが存在します。このリスクを軽減するために、これらのユーザーにはタスクの実行に必要な権限のみを付与し、不要になったユーザーは削除することをお勧めします。 | 
| --- |

## エピック
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-epics"></a>

### z/OS USS に AWS CLI バージョン 1 をインストールする
<a name="install-cli-version-1-on-z-os-uss"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Python 3.8 以降をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Mainframe z/OS 管理者 | 
| USS 環境変数を設定する。 | 環境変数をプロファイルに追加します。これらは、個々のユーザー (`cliuser`) の `/u/cliuser/.profile` ファイル、またはすべてのユーザーの `/etc/profile` ファイルに追加できます。このパターンは、Python が `/u/awscli/python` ディレクトリにインストールされていることを前提としています。インストールディレクトリが異なる場合は、それに応じてコードを更新します。<pre># Python configuration<br />export BPXKAUTOCVT='ON'<br />export CEERUNOPTS='FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)'<br />export TAGREDIR_ERR=txt<br />export TAGREDIR_IN=txt<br />export TAGREDIR_OUT=txt<br /><br /># AWS CLI configuration<br />export PATH=/u/cliuser/python/bin:$PATH<br />export PYTHONPATH=/u/cliuser/python:$PYTHONPATH</pre> | Mainframe z/OS 管理者 | 
| Python のインストールをテストします。 | **Python** コマンドを実行します。<pre>python --version</pre>出力から Python 3.8 以降が正しくインストールされていることを確認できます。 | Mainframe z/OS 管理者 | 
| **pip** を検証またはインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Mainframe z/OS 管理者 | 
|  AWS CLI バージョン 1 をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Mainframe z/OS 管理者 | 

### z/OS からの AWS CLI アクセスを設定する
<a name="configure-cli-access-from-z-os"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  AWS アクセスキー、デフォルトのリージョン、出力を設定します。 | [AWS CLI ドキュメント](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html)では、 AWS アクセスを設定するためのさまざまなオプションについて説明します。組織の標準に従って設定を選択することができます。この例では、短期の認証情報設定を使用します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | AWS 管理者、Mainframe z/OS 管理者、Mainframe z/OS デベロッパー | 
| をテストします AWS CLI。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Mainframe z/OS 管理者、Mainframe z/OS デベロッパー | 

### オプション 1 — USS セッションから Amazon S3 にインタラクティブにデータを転送します。
<a name="option-1-transfer-data-from-uss-to-s3-interactively-from-a-uss-session"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| サンプル CSV ファイルをダウンロードして転送します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | アプリのデベロッパー、Mainframe z/OS のデベロッパー | 
| S3 バケットを作成して CSV ファイルをアップロードします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | アプリのデベロッパー、Mainframe z/OS のデベロッパー | 
| S3 バケットとアップロードしたファイルを表示します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html)詳細については、Amazon SNS ドキュメントの「[Amazon S3 の開始方法](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html)」を参照してください。 | AWS 全般 | 
| Amazon Athena テーブルで SQL クエリを実行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html)SQL クエリの出力には、CSV ファイルの内容が表示されます。 | AWS 全般、アプリ開発者 | 

### オプション 2 ‒ バッチ JCL を使用して USS から Amazon S3 にデータを転送する
<a name="option-2-transfer-data-from-uss-to-s3-by-using-batch-jcl"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| サンプルファイルをアップロードする。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Mainframe z/OS のデベロッパー | 
| バッチ JCL を作成する。 | バッチ JCL を次のようにコードして、送信先 S3 バケットを作成し、データセットをアップロードしてバケットのコンテンツを一覧表示します。ディレクトリ名、ファイル名、バケット名は、必ず独自の値に置き換えます。<pre>//AWSCLICP JOB ACTINFO1,'IBMUSER',CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1), <br />// NOTIFY=&SYSUID,TIME=1440 <br />//*---------------------------------------------------------<br />//* Sample job for AWS CLI <br />//*--------------------------------------------------------- <br />//USSCMD EXEC PGM=BPXBATCH<br />//STDERR  DD SYSOUT=*<br />//STDOUT  DD SYSOUT=*<br />//STDENV  DD *<br /> export PATH=/u/cliuser/python/bin:$PATH<br />//STDPARM DD *<br />SH<br /> export _BPXK_AUTOCVT=ON;<br /> aws s3 mb s3://DOC-EXAMPLE-BUCKET2;<br /> cp "//'USER.DATA.FIXED'" /tmp/tmpfile;<br /> aws s3 cp /tmp/tmpfile s3://DOC-EXAMPLE-BUCKET2/USER.DATA.FIXED; <br /> rm /tmp/tmpfile;<br /> aws s3 ls s3://DOC-EXAMPLE-BUCKET2;<br />/*</pre> | Mainframe z/OS のデベロッパー | 
| バッチ JCL ジョブを送信します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Mainframe z/OS のデベロッパー | 
| S3 バケットにアップロードされたデータセットを表示します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | AWS 全般 | 

## 関連リソース
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-resources"></a>
+ [AWS CLI バージョン 1 のドキュメント](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-welcome.html)
+ [AWS Mainframe Modernization CLI コマンドリファレンス](https://docs.aws.amazon.com/cli/latest/reference/m2/)
+ [AWS Mainframe Modernization](https://aws.amazon.com/mainframe-modernization/)

## 追加情報
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-additional"></a>

**ISPF オプション 3.4 の USER.DATA.FIXED (ユーティリティのデータセットリスト)**

![\[データセットの内容を z/OS で表示する。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/4e3188d8-287f-4ced-8c29-80a01cbbdf50/images/96c25145-3d4d-4007-99f6-5eeb9e88642d.png)


**送信されたバッチジョブの SYSOUT**

![\[ジョブログからの標準出力。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/4e3188d8-287f-4ced-8c29-80a01cbbdf50/images/03fffbd2-7d2b-43b2-bf14-736b3d150e38.png)


## アタッチメント
<a name="attachments-4e3188d8-287f-4ced-8c29-80a01cbbdf50"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/4e3188d8-287f-4ced-8c29-80a01cbbdf50/attachments/attachment.zip)」

# BMC AMI Cloud を使用したメインフレームデータを Amazon S3 にバックアップおよびアーカイブ
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data"></a>

*Santosh Kumar Singh、Gilberto Biondo、Maggie Li (Amazon Web Services)*

*Mikhael Liberman (Model9 Mainframe Software)*

## 概要
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-summary"></a>

このパターンでは、メインフレームデータを Amazon Simple Storage Service (Amazon S3) に直接バックアップしてアーカイブし、BMC AMI Cloud Data (旧 Model9 Manager) を使用してそのデータを呼び出してメインフレームに復元する方法を示します。メインフレームのモダナイズプロジェクトの一環として、またはコンプライアンス要件を満たすために、バックアップとアーカイブのソリューションを最新化する方法を探しているなら、このパターンがそれらの目標の達成に役立ちます。

通常、メインフレーム上でコアビジネスアプリケーションを実行している組織は、仮想テープライブラリ (VTL) を使用してファイルやログなどのデータストアをバックアップします。この方法では、請求可能な MIPS を消費し、メインフレーム外のテープに保存されているデータにアクセスできないため、コストがかかる可能性があります。このような問題を回避するには、BMC AMI Cloud Data を使用して、運用データおよび過去のメインフレームデータを迅速かつ費用対効果の高い方法で Amazon S3 に直接転送できます。BMC AMI Cloud Data を使用すると、IBM z Integrated Information Processor (zIIP) エンジンを活用してコスト、並列処理、転送時間を短縮 AWS しながら、TCP/IP 経由でデータを にバックアップおよびアーカイブできます。

## 前提条件と制限
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ 有効なライセンスキーを持つ BMC AMI Cloud Data
+ メインフレームと AWS 間の TCP/IP 接続
+ S3 バケットへの読み取り/書き込みアクセス用の AWS Identity and Access Management (IAM) ロール
+ BMC AMI Cloud プロセスを実行するためのメインフレームセキュリティ製品 (RACF) へのアクセスが可能
+ 使用可能なネットワークポート、S3 バケットへのアクセスを許可するファイアウォールルール、専用の z/FS ファイルシステムを備えた BMC AMI Cloud z/OS エージェント (Java バージョン 8 64 ビット SR5 FP16 以降)
+ BMC AMI Cloud 管理サーバーの[要件](https://docs.bmc.com/docs/cdacv27/management-server-requirements-1245343255.html)を満たす

**制限事項**
+ BMC AMI Cloud Data は、管理サーバーと同じ Amazon Elastic Compute Cloud (Amazon EC2) インスタンス上の Docker コンテナとして実行される PostgreSQL データベースに運用データを保存します。Amazon Relational Database Service (Amazon RDS) は現在、BMC AMI Cloud Data のバックエンドとしてサポートされていません。製品の最新アップデートの詳細については、BMC ドキュメントの「[What's New?](https://docs.bmc.com/docs/cdacv27/what-s-new-1245343246.html)」を参照してください。
+ このパターンは z/OS メインフレームデータのみのバックアップとアーカイブを行います。BMC AMI Cloud Data は、メインフレームファイルのみをバックアップおよびアーカイブします。
+ このパターンは、データを JSON や CSV などの標準のオープンフォーマットに変換しません。[BMC AMI Cloud Analytics](https://www.bmc.com/it-solutions/bmc-ami-cloud-analytics.html) (旧 Model9 Gravity) などの追加の変換サービスを使用して、データを標準オープン形式に変換します。クラウドネイティブのアプリケーションとデータ分析ツールは、データがクラウドに書き込まれた後にそれにアクセスできます。

**製品バージョン**
+ BMC AMI Cloud Data バージョン 2.x

## アーキテクチャ
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-architecture"></a>

**ソーステクノロジースタック**
+ z/OS を実行するメインフレーム
+ データセットや z/OS UNIX システムサービス (USS) ファイルなどのメインフレームファイル
+ ダイレクトアクセスストレージデバイス (DASD) などのメインフレームディスク
+ メインフレームテープ (仮想または物理テープライブラリ)

**ターゲットテクノロジースタック**
+ Amazon S3
+ Virtual Private Cloud (VPC) での Amazon EC2 インスタンス
+ AWS Direct Connect
+ Amazon Elastic File System (Amazon EFS)

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

次の図は、メインフレーム上の BMC AMI Cloud Data ソフトウェアエージェントが Amazon S3 にデータを保存するレガシーデータバックアップおよびアーカイブプロセスを駆動するリファレンスアーキテクチャを示しています。

![\[レガシーデータのバックアップとアーカイブプロセスを推進するメインフレーム上の BMC AMI Cloud Data ソフトウェアエージェント\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/bde3b029-184e-4eb0-933b-f8caf6cc40ab/images/a24cd6c1-b131-49ea-8238-f3aea5ab8134.png)


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

1. BMC AMI Cloud Data ソフトウェアエージェントはメインフレーム論理パーティション (LPAR) 上で動作します。ソフトウェアエージェントは、メインフレームデータを DASD またはテープから TCP/IP 経由で直接 Amazon S3 に読み書きします。

1. AWS Direct Connect は、オンプレミスネットワークと の間に物理的に分離された接続を設定します AWS。セキュリティを強化するには、 上でsite-to-site VPN を実行して Direct Connect 、転送中のデータを暗号化します。

1. S3 バケットはメインフレームファイルをオブジェクトストレージデータとして保存し、BMC AMI Cloud Data エージェントは S3 バケットと直接通信します。証明書は、エージェントと Amazon S3 間のすべての通信の HTTPS 暗号化に使用されます。Amazon S3 データ暗号化は、保管中のデータを暗号化して保護するために使用されます。

1. BMC AMI Cloud Data 管理サーバーは、EC2 インスタンスの Docker コンテナとして実行されます。インスタンスはメインフレーム LPAR や S3 バケット上で稼働するエージェントと通信します。

1. Amazon EFS はアクティブ EC2 インスタンスとパッシブ EC2 インスタンスの両方にマウントされ、ネットワークファイルシステム (NFS) ストレージを共有します。これは、管理サーバーで作成されたポリシーに関連するメタデータがフェイルオーバーの際に失われないようにするためです。アクティブサーバーによるフェイルオーバーが発生しても、データを失うことなくパッシブサーバーにアクセスできます。アクティブサーバーが失敗した場合、データを失うことなく、アクティブサーバーにアクセスできます。

## ツール
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-tools"></a>

**AWS サービス**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) は、 AWS クラウドでの共有ファイルシステムの作成と設定に役立ちます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、量にほとんどかかわらず、データを保存、保護、取得するのに役立つクラウドベースのオブジェクトストレージサービスです。
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) は、定義した仮想ネットワークで AWS リソースを起動するのに役立ちます。この仮想ネットワークは、ユーザー自身のデータセンターで運用されていた従来のネットワークと似ていますが、 AWSのスケーラブルなインフラストラクチャを使用できるという利点があります。
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)は、標準イーサネット光ファイバケーブルを介して内部ネットワークを AWS Direct Connect ロケーションにリンクします。この接続を使用すると、ネットワークパスでインターネットサービスプロバイダーをバイパスしながら、パブリック AWS サービスへの仮想インターフェイスを直接作成できます。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) は、誰が認証され、誰に使用が許可されているかを制御することで、 AWS リソースへのアクセスを安全に管理できるようにします。

**BMC ツール**
+ [BMC AMI Cloud 管理サーバー](https://docs.bmc.com/docs/cdacv27/bmc-ami-cloud-overview-1245343249.html)は、Amazon EC2 の Amazon Linux Amazon マシンイメージ (AMI) で Docker コンテナとして実行される GUI アプリケーションです。管理サーバーには、レポート、ポリシーの作成と管理、アーカイブの実行、バックアップ、リコール、復元の実行などの BMC AMI Cloud アクティビティを管理する機能があります。
+ [BMC AMI Cloud エージェント](https://docs.bmc.com/docs/cdacv27/bmc-ami-cloud-overview-1245343249.html)はオンプレミスのメインフレーム LPAR 上で動作し、TCP/IP を使用してオブジェクトストレージに直接ファイルを読み書きします。スターティッドタスクはメインフレーム LPAR 上で実行され、Amazon S3 との間でバックアップデータとアーカイブデータを読み書きします。
+ [BMC AMI Cloud メインフレームコマンドラインインターフェイス (M9CLI)](https://docs.bmc.com/docs/cdacv27/command-line-interface-cli-reference-1245343519.html) には、BMC AMI Cloud のアクションを TSO/E から直接実行したり、バッチオペレーションで実行したりするための一連のコマンドが用意されています。管理サーバーに依存する必要はありません。

## エピック
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-epics"></a>

### S3 バケットと IAM ポリシーを作成
<a name="create-an-s3-bucket-and-iam-policy"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットを作成します。 | 「[S3 バケット](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」 を作成して、メインフレーム環境からバックアップおよびアーカイブするファイルとボリュームを保存します。 | AWS 全般 | 
| IAM ポリシーを作成します。 | すべての BMC AMI Cloud サーバーとエージェントは、前のステップで作成した S3 バケットにアクセスする必要があります。必要なアクセス権を付与するには、次の IAM ポリシーを作成します。<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "Listfolder",<br />            "Action": [<br />                "s3:ListBucket",<br />                "s3:GetBucketLocation",<br />                "s3:ListBucketVersions"<br />            ],<br />            "Effect": "Allow",<br />            "Resource": [<br />                "arn:aws:s3:::<Bucket Name>"<br />            ]<br />        },<br />        {<br />            "Sid": "Objectaccess",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:PutObject",<br />                "s3:GetObjectAcl",<br />                "s3:GetObject",<br />                "s3:DeleteObjectVersion",<br />                "s3:DeleteObject",<br />                "s3:PutObjectAcl",<br />                "s3:GetObjectVersion"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::<Bucket Name>/*"<br />            ]<br />        }<br />    ]<br />}</pre> | AWS 全般 | 

### BMC AMI Cloud ソフトウェアライセンスを取得し、ソフトウェアをダウンロードします。
<a name="get-the-bmc-ami-cloud-software-license-and-download-the-software"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| BMC AMI Cloud ソフトウェアライセンスを取得します。 | ソフトウェアライセンスキーを取得するには、[BMC AMI Cloud チーム](https://www.bmc.com/it-solutions/bmc-ami-cloud.html?vd=model9-io)にお問い合わせください。ライセンスを生成するには z/OS `D M=CPU` コマンドの出力が必要です。 | ビルドリード | 
| BMC AMI Cloud ソフトウェアとライセンスキーをダウンロードします。 | [BMC ドキュメント](https://docs.bmc.com/docs/cdacv27/preparing-to-install-the-bmc-ami-cloud-agent-1245343285.html)の指示に従って、インストールファイルとライセンスキーを取得します。 | メインフレームインフラストラクチャ管理者 | 

### BMC AMI Cloud ソフトウェアエージェントをメインフレームにインストールします。
<a name="install-the-bmc-ami-cloud-software-agent-on-the-mainframe"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| BMC AMI Cloud ソフトウェアエージェントをインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | メインフレームインフラストラクチャ管理者 | 

### EC2 インスタンスに BMC AMI Cloud 管理サーバーをセットアップします。
<a name="set-up-a-bmc-ami-cloud-management-server-on-an-ec2-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon EC2 Linux 2 インスタンスを作成します。 | Amazon EC2 ドキュメントの「[ステップ 1: インスタンスを起動する](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-launch-instance)」 の指示に従って、2 つの Amazon EC2 Linux 2 インスタンスを異なるアベイラビリティーゾーンで起動します。インスタンスは、次の推奨ハードウェア要件とソフトウェア要件を満たしている必要があります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html)詳細については、[BMC のドキュメント](https://docs.bmc.com/docs/cdacv27/preparing-to-install-the-management-server-on-linux-1245343268.html)を参照してください。 | クラウドアーキテクト、クラウド管理者 | 
| Amazon EFS ファイルシステムを作成します。 | Amazon EFS ドキュメントの「[ステップ 1: Amazon EFS ファイルシステムを作成する](https://docs.aws.amazon.com/efs/latest/ug/gs-step-two-create-efs-resources.html)」 の指示に従って Amazon EFS ファイルシステムを作成します。ファイルシステムを作成する場合、以下の作業を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | クラウド管理者、クラウドアーキテクト | 
| Docker をインストールし、管理サーバーを設定します。 | **EC2 インスタンスに接続する**Amazon EC2 ドキュメントの 「[Linux インスタンスへのConnect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)」 の指示に従って EC2 インスタンスに接続します。**EC2 インスタンスを設定する**各インスタンスタイプでは、以下の作業を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | クラウドアーキテクト、クラウド管理者 | 
| 管理サーバーソフトウェアをインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html)問題をトラブルシューティングするには、`/data/model9/logs/`** **フォルダに保存されているログを参照してください。詳細については、[BMC のドキュメント](https://docs.bmc.com/docs/cdacv27/performing-the-management-server-installation-on-linux-1245343272.html)を参照してください。 | クラウドアーキテクト、クラウド管理者 | 

### BMC AMI Cloud 管理サーバーにエージェントを追加し、バックアップまたはアーカイブポリシーを定義します。
<a name="add-an-agent-and-define-a-backup-or-archive-policy-on-the-bmc-ami-cloud-management-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 新しいエージェントを追加します。 | 新しいエージェントを追加する前に、下記のことを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html)バックアップポリシーとアーカイブポリシーを定義する前に、管理サーバー上にエージェントを作成する必要があります。エージェントを作成するには、以下の作業を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html)エージェントが作成されると、テーブルに表示される新しいウィンドウに、オブジェクトストレージとメインフレームエージェントに対する**接続**状態が表示されます。 | メインフレームストレージ管理者または開発者 | 
| バックアップポリシーまたはアーカイブポリシーを作成する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | メインフレームストレージ管理者または開発者 | 

### 管理サーバーからバックアップポリシーまたはアーカイブポリシーを実行します。
<a name="run-the-backup-or-archive-policy-from-the-management-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| バックアップポリシーまたはアーカイブポリシーを実行する。 | 以前に作成したデータバックアップまたはアーカイブポリシーを管理サーバーから手動で、または自動的に (スケジュールに基づいて) 実行します。ポリシーを手動で実行するには、次を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | メインフレームストレージ管理者または開発者 | 
| バックアップポリシーまたはアーカイブポリシーを復元します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | メインフレームストレージ管理者または開発者 | 

### メインフレームからバックアップポリシーまたはアーカイブポリシーを実行します。
<a name="run-the-backup-or-archive-policy-from-the-mainframe"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| M9CLI を使用してバックアップまたはアーカイブポリシーを実行します。 | M9CLI を使用すると、BMC AMI Cloud 管理サーバーでルールを設定しなくても、TSO/E、REXX、または JCL からバックアップおよび復元プロセスを実行します。**TSO/E を使用する:**TSO/E を使用する場合は、`M9CLI REXX` が `TSO` と連結されていることを確認します。TSO/E を使用してデータセットをバックアップするには、`TSO M9CLI BACKDSN <DSNAME>` コマンドを使用します。M9CLI コマンドの詳細については、BMC ドキュメントの「[CLI reference](https://docs.bmc.com/docs/cdacv27/command-line-interface-cli-reference-1245343519.html)」を参照してください。**JCL を使用する:**JCL を使用してバックアップとアーカイブのポリシーを実行するには、`M9CLI` コマンドを実行します。**バッチ操作の使用:**次の例では、バッチで `M9CLI` コマンドを実行して、データセットをアーカイブする方法を示しています。<pre>//JOBNAME JOB …<br />//M9CLI EXEC PGM=IKJEFT01<br />//STEPLIB DD DISP=SHR,DSN=<MODEL9 LOADLIB><br />//SYSEXEC DD DISP=SHR,DSN=<MODEL9 EXEC LIB><br />//SYSTSPRT DD SYSOUT=*<br />//SYSPRINT DD SYSOUT=*<br />//SYSTSIN DD TSO M9CLI ARCHIVE <br /> M9CLI ARCHIVE <DSNNAME OR DSN PATTERN>   <br />/</pre> | メインフレームストレージ管理者または開発者 | 
| JCL バッチでバックアップポリシーまたはアーカイブポリシーを実行します。 | BMC AMI Cloud には **M9SAPIJ** というサンプル JCL ルーチンが用意されています。**M9SAPIJ** をカスタマイズして、管理サーバー上に作成された特定のポリシーを JCL で実行できます。このジョブは、バックアップと復元のプロセスを自動的に実行するバッチスケジューラの一部にすることもできます。バッチジョブには以下の必須値が必要です。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html)サンプルジョブの指示に従って他の値を変更することもできます。 | メインフレームストレージ管理者または開発者 | 

## 関連リソース
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-resources"></a>
+ 「[AWS によるメインフレームのモダナイゼーション](https://aws.amazon.com/mainframe/)」(AWS ドキュメント)
+ 「[メインフレーム向けクラウドBackup が Model9 と AWS でコストを削減する方法](https://aws.amazon.com/blogs/apn/how-cloud-backup-for-mainframes-cuts-costs-with-model9-and-aws/)」(AWS パートナーネットワークブログ)
+ 「[Model9 を使用して AWS でメインフレームデータ分析を有効にする方法](https://aws.amazon.com/blogs/apn/how-to-enable-mainframe-data-analytics-on-aws-using-model9/)」(AWS パートナーネットワークブログ)
+ 「[AWS Direct Connect の耐障害性に関する推奨事項](https://aws.amazon.com/directconnect/resiliency-recommendation/?nc=sn&loc=4&dn=2)」(AWS ドキュメント)
+ [BMC AMI Cloud ドキュメント](https://docs.bmc.com/docs/cdacv27/getting-started-1245343248.html) (BMC ウェブサイト)

# AWS Mainframe Modernization と を使用して COBOL Db2 プログラムを構築する AWS CodeBuild
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild"></a>

*Amazon Web Services、Luis Gustavo Dantas、Eduardo Zimelewicz*

## 概要
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-summary"></a>

**注記**  
AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) に似た機能については、 AWS Mainframe Modernization サービス (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[AWS Mainframe Modernization  可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

このパターンでは、 AWS Mainframe Modernization Replatform ツールを使用して COBOL Db2 プログラムをプリコンパイルしてバインドするシンプルな AWS CodeBuild プロジェクトを作成する方法について説明します。これにより、 AWS Mainframe Modernization Replatform ランタイム環境でこれらのプログラムのデプロイと実行が可能になります。

ビジネス指向のプログラミング言語である COBOL は、その信頼性と読みやすさにより、多くの重要なアプリケーションを強化します。リレーショナルデータベース管理システムである IBM Db2 は、大量のデータを効率的に管理し、SQL を介して COBOL プログラムと統合されます。COBOL と Db2 は、今後いくつもの新しいテクノロジーが出現するとしても、金融や政府機関などの業界でミッションクリティカルな運用のバックボーンを形成します。

COBOL コンポーネントと Db2 コンポーネントをメインフレーム環境から他のプラットフォームに移行する場合、プラットフォームの互換性、統合の複雑さ、データ移行、パフォーマンスの最適化などの課題が生じます。これらの重要なコンポーネントを移動するには、信頼性と機能性を維持しながらスムーズに移行できるように、慎重な計画、技術的専門知識、リソースが必要です。

この AWS Mainframe Modernization サービスは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスなどの AWS インフラストラクチャで実行するメインフレームアプリケーションとデータベースをリプラットフォームするためのツールとリソースを提供します。これには、大規模なコード変更を伴わずにメインフレームワークロードをクラウドに移行する機能も含まれます。

Db2 プリコンパイルとバインドプロセスは、データベースアプリケーションのパフォーマンスと信頼性を最適化するために不可欠です。プリコンパイルにより、埋め込み SQL ステートメントが実行可能コードに変換されるため、ランタイムのオーバーヘッドが軽減され、効率が向上します。バインドプロセスは、プリコンパイルされたコードをデータベース構造にリンクするため、アクセスパスとクエリを容易に最適化できます。このプロセスにより、データの整合性が確保され、アプリケーションの応答性が向上し、セキュリティの脆弱性から保護されます。適切にプリコンパイルおよびバインドされたアプリケーションは、リソースの消費を最小限に抑え、スケーラビリティを強化し、SQL インジェクション攻撃のリスクを軽減します。

## 前提条件と制限事項
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-prereqs"></a>

**前提条件**
+  AWS アカウント と管理レベルのコンソールアクセス。
+ IBM Db2 for z/OS や Db2 for Linux、Unix、Windows (LUW) などの IBM Db2 データベースシステム。
+ IBM Data Server Client ソフトウェア。[IBM のウェブサイト](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers)からダウンロードできます。詳細は、「[IBM Data Server Client and Data Server Driver types](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients)」を参照してください。
+ コンパイルおよびバインドする COBOL Db2 プログラム。このパターンには、代わりに使用できる基本的なサンプルプログラムも用意されています。
+ プライベートネットワーク AWS を持つ 上の仮想プライベートクラウド (VPC)。VPC の作成については、[Amazon Virtual Private Cloud (Amazon VPC) ドキュメント](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)を参照してください。
+ GitHub や GitLab などのソースコントロールリポジトリ。

**制限事項**
+ クォータについては、 AWS CodeBuild 「 の[クォータ AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/limits.html)」を参照してください。
+ 一部の AWS のサービス は では使用できません AWS リージョン。利用可能なリージョンについては、「[AWS のサービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。特定のエンドポイントについては、「[サービスエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」ページを参照して、サービスのリンクを選択します。

## アーキテクチャ
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-architecture"></a>

**ソーステクノロジースタック**

ソーススタックには以下が含まれます。
+ Db2 データベースを使用してデータを保存する COBOL プログラム
+ IBM COBOL コンパイラと Db2 for z/OS プリコンパイラ
+ ファイルシステム、トランザクションマネージャー、スプールなど、メインフレーム設定の他の部分

**ターゲットテクノロジースタック**

このパターンのアプローチには、Db2 for z/OS のデータを Db2 for LUW に移行するか、データを Db2 for z/OS 上にそのまま維持するかの 2 つのオプションがあります。ターゲットアーキテクチャには以下が含まれます。
+ Db2 データベースを使用してデータを保存する COBOL プログラム
+ AWS Mainframe Modernization リプラットフォームコンパイルツール
+ AWS CodeBuild アプリケーションを構築するためのインフラストラクチャとしての
+ Amazon Linux などのその他の AWS クラウド リソース

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

![\[AWS で COBOL Db2 プログラムを構築するためのアーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5895fa34-f05b-4cc3-a59f-a596f9116c66/images/0dda414a-21a7-41d1-b86b-7ff3b1c6fbda.png)


この図表は、以下を示すものです。

1. ユーザーは、GitHub や GitLab などのソースコントロールリポジトリにコードをアップロードします。

1. AWS CodePipeline は変更に気づき、リポジトリからコードを取得します。

1. CodePipeline はコードを起動 AWS CodeBuild して送信します。

1. CodeBuild は `buildspec.yml` テンプレート (「[追加情報](#build-cobol-db2-programs-mainframe-modernization-codebuild-additional)」セクションで提供) の指示に従い、以下を行います。

   1. Amazon Simple Storage Service (Amazon S3) バケットから IBM Data Server Client を取得します。

   1. IBM Data Server Client をインストールしてセットアップします。

   1. から Db2 認証情報を取得します AWS Secrets Manager。

   1. Db2 サーバーに接続します。

   1. COBOL プログラムをプリコンパイル、コンパイル、バインドします。

   1. が使用するために、完成した製品を S3 バケット AWS CodeDeploy に保存します。

1. CodePipeline が CodeDeploy を開始します。

1. CodeDeploy は、ランタイム環境に既にインストールされているエージェントを調整します。エージェントは Amazon S3 からアプリケーションを取得し、`appspec.yml` の指示に従ってインストールします。

ビルドに焦点を当て、説明を簡潔にするため、このパターンの手順ではステップ 1 から 4 までを説明しますが、COBOL Db2 プログラムのデプロイについては説明しません。

**自動化とスケール**

わかりやすくするために、このパターンではリソースを手動でプロビジョニングする方法を説明します。ただし、 CloudFormation AWS Cloud Development Kit (AWS CDK)や HashiCorp Terraform など、これらのタスクを自動化する自動化オプションは多数あります。詳細については、[CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) ドキュメントおよび [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html) ドキュメントを参照してください。

## ツール
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-tools"></a>

**AWS のサービス**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) は完全マネージド型の構築サービスです。ソースコードのコンパイル、ユニットテストの実行、すぐにデプロイできるアーティファクトの生成を行います。
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) は、Amazon EC2、オンプレミスインスタンス、 AWS Lambda 関数、または Amazon Elastic Container Service (Amazon ECS) サービスへのデプロイを自動化します。
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) は、ソフトウェアリリースのさまざまな段階を迅速にモデル化および設定し、ソフトウェアの変更を継続的にリリースするために必要なステップを自動化するのに役立ちます。
+ [AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html) には、メインフレームから AWS マネージドランタイム環境への移行とモダナイゼーションの計画と実装に役立つツールとリソースが用意されています。

**その他のツール**
+ **リプラットフォームツール用の Amazon ECR AWS Mainframe Modernization イメージ**。COBOL アプリケーションをコンパイルするには、 AWS Mainframe Modernization Replatform ツールを含む Amazon Elastic Container Registry (Amazon ECR) イメージを使用して CodeBuild を開始する必要があります。

  `673918848628.dkr.ecr.<your-region>.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1`

  利用可能な ECR イメージの詳細については、*AWS Mainframe Modernization ユーザーガイド*の「[チュートリアル](https://docs.aws.amazon.com/m2/latest/userguide/tutorial-build-mf.html)」を参照してください。
+ [IBM Data Server Client](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients) ソフトウェアは、CodeBuild で COBOL Db2 プログラムをプリコンパイルおよびバインドするために不可欠です。これは、COBOL コンパイラと Db2 間のブリッジとして機能します。

## ベストプラクティス
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-best-practices"></a>
+ すべての COBOL プログラムがデータ永続化レイヤーとして Db2 に依存しているわけではありません。Db2 にアクセスするためのコンパイルディレクティブが、Db2 とのやり取り専用に設計された COBOL プログラムにのみ適用されることを確認してください。COBOL Db2 プログラムと、Db2 を使用しない COBOL プログラムとを区別するロジックを実装します。
+ 変更されていないプログラムはコンパイルしないことをお勧めします。コンパイルが必要なプログラムを特定するプロセスを実装します。

## エピック
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-epics"></a>

### クラウドインフラストラクチャの作成
<a name="create-the-cloud-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| IBM Data Server Client とパイプラインアーティファクトをホストする S3 バケットを作成する | (a) IBM Data Server Client をアップロードし、(b) リポジトリからコードを保存し、(c) ビルドプロセスの結果を保存するように、S3 バケットを設定する必要があります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)S3 バケットの作成手順については、[Amazon S3 ドキュメント](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)を参照してください。 | AWS 全般 | 
| IBM Data Server Client を S3 バケットにアップロードする | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS 全般 | 
| Db2 認証情報の AWS Secrets Manager シークレットを作成します。 | DB2 認証情報を安全に保存するためのシークレットを作成するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)シークレットの作成の詳細は、[Secrets Manager ドキュメント](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)を参照してください。 | AWS 全般 | 
| VPC サブネットから Db2 にアクセスできることを確認 | AWS CodeBuild では、データサーバークライアントがプリコンパイルおよびバインド操作を実行できるように、Db2 サーバーへの接続が必要です。CodeBuild が安全な接続を介して Db2 サーバーに到達できることを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | ネットワーク管理者、AWS 全般 | 

### アプリケーションアーティファクトの作成
<a name="create-the-application-artifacts"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| COBOL Db2 アセットの作成 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | アプリ開発者 | 
| `buildspec.yml` ファイルの作成 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 
| リポジトリを CodePipeline に接続する | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)後のステップで CodePipeline の (IAM) ポリシーを作成するときに、接続に Amazon リソースネーム AWS Identity and Access Management (ARN) が必要になります。 | AWS DevOps | 

### アクセス許可の設定
<a name="configure-permissions"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CodeBuild 用の IAM ポリシーの作成 | CodeBuild プロジェクトでは、Secrets Manager や Amazon S3 などのいくつかのリソースにアクセスする必要があります。必要なアクセス権限を設定するには:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)IAM ポリシーの作成の詳細は、[IAM ドキュメント](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)を参照してください。 | AWS 全般 | 
| CodeDeploy 用の IAM ロールの作成 | CodeBuild でセキュリティポリシーを使用できるようにするには、IAM ロールを設定する必要があります。このロールを作成するには以下の手順に従ってください。1. [IAM コンソール](https://console.aws.amazon.com/iam)のナビゲーションペインで、**[ロール]**、**[ロールを作成]** を選択します。3. **[信頼されたエンティティタイプ]** は、デフォルトの **AWS のサービス**のままにします。4. **[ユースケース]** で CodeBuild サービスを選択し、**[次へ]** を選択します。4. 使用可能な IAM ポリシーのリストで、CodeBuild 用に作成したポリシーを見つけ、**[次へ]** を選択して、このポリシーをロールにアタッチします。5. ロールの名前を指定し、**[ロールを作成]** を選択して、今後 CodeBuild で参照できるように保存します。の IAM ロールの作成の詳細については AWS のサービス、[IAM ドキュメント](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)を参照してください。 | AWS 全般 | 
| CodePipeline の IAM ポリシーの作成 |  AWS CodePipeline パイプラインでは、コードリポジトリや Amazon S3 など、一部のリソースにアクセスする必要があります。CodeBuild 用に説明した前述のステップを繰り返して、CodePipeline の IAM ポリシーを作成します (ステップ 2 では **CodeBuild** ではなく **CodePipeline** を選択)。 | AWS DevOps | 
| CodePipeline 用の IAM ロールの作成 | CodePipeline でセキュリティポリシーを使用できるようにするには、IAM ロールを設定する必要があります。このロールを作成するには以下の手順に従ってください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 

### COBOL Db2 プログラムをコンパイルしてバインドする
<a name="compile-and-bind-the-cobol-db2-program"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CodePipeline パイプラインと CodeBuild プロジェクトの作成 | COBOL Db2 プログラムをコンパイルしてバインドする CodePipeline パイプラインと CodeBuild プロジェクトを作成するには、以下の手順に従います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 
| 出力の確認 | CodePipeline ビルドログを確認して、ビルドが成功したかどうかを確認します。 | AWS DevOps | 
| Db2 で結果を確認 | SYSPLAN テーブルでパッケージバージョンを確認します。<pre>select CAST(NAME AS VARCHAR(10)) as name, VALIDATE, LAST_BIND_TIME, LASTUSED, CAST(PKGVERSION AS VARCHAR(10)) as PKGVERSION from SYSIBM.SYSPLAN where NAME = 'CDB2SMP' order by LAST_BIND_TIME desc<br /></pre>このバージョンは、CodeBuild ビルド ID と一致する必要があります (この例では「`CDB2SMP`」)。<pre>NAME       VALIDATE LAST_BIND_TIME             LASTUSED   PKGVERSION<br />---------- -------- -------------------------- ---------- ----------<br />CDB2SMP    B        2024-05-18-11.53.11.503738 01/01/0001 19</pre> |  | 

## トラブルシューティング
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| サービス間を移動すると、 AWS コンソールでリージョンが切り替わることがあります。 | サービスを切り替える AWS リージョン ときは、必ず選択した を確認してください。 AWS リージョン セレクターは、コンソールウィンドウの右上隅にあります。 | 
| CodeBuild から Db2 接続の問題を特定するのが難しい場合がある | 接続の問題をトラブルシューティングするには、次の DB2 connect コマンドを `buildspec.yml` ファイルに追加します。このコマンドの追加により、接続の問題をデバッグして解決できます。<pre>db2 connect to $DB_NAME user $DB2USER using $DB2PASS</pre> | 
| IAM コンソールのロールペインに、作成した IAM ポリシーがすぐに表示されない場合がある | 遅延が発生した場合は、画面を更新して最新情報を表示します。 | 

## 関連リソース
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-resources"></a>

**IBM ドキュメント**
+ [IBM Data Server Client and driver types](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients)
+ [Download IBM Data Server Client and driver types](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers)

**AWS ドキュメント**
+ [Amazon S3 ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
+ [AWS CodeBuild ユーザーガイド](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)
+ [AWS Mainframe Modernization ユーザーガイド](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html)
+ [AWS Secrets Manager ユーザーガイド](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ [AWS CodePipeline ユーザーガイド](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [AWS CodeDeploy ユーザーガイド** **](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-codedeploy.html)

## 追加情報
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-additional"></a>

**CodeBuild ポリシー**

プレースホルダの `<RegionID>`、`<AccountID>`、`<SubnetARN>`、`<BucketARN>`、`<DB2CredSecretARN>` は、それぞれ必要な値に置き換えてください。

```
{"Version": "2012-10-17",		 	 	 
    "Statement": [
        {"Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*" },
        {"Action": ["ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", 
                    "ecr:BatchCheckLayerAvailability"],
         "Effect": "Allow", 
         "Resource": "arn:aws:ecr:*:673918848628:repository/m2-enterprise-build-tools"},
        {"Action": "s3:PutObject", "Effect": "Allow", "Resource": "arn:aws:s3:::aws-m2-repo-*/*"},
        {"Action": ["logs:PutLogEvents", "logs:CreateLogStream", "logs:CreateLogGroup"],
         "Effect": "Allow", "Resource": "arn:aws:logs:<RegionId>:<AccountId>:*"},
        {"Action": ["ec2:DescribeVpcs", "ec2:DescribeSubnets", 
                    "ec2:DescribeSecurityGroups", "ec2:DescribeNetworkInterfaces", 
                    "ec2:DescribeDhcpOptions", "ec2:DeleteNetworkInterface", 
                    "ec2:CreateNetworkInterface"],
         "Effect": "Allow", "Resource": "*"},
        {"Action": "ec2:CreateNetworkInterfacePermission", 
         "Effect": "Allow", "Resource": ["<SubnetARN>"]},
        {"Action": "s3:*", "Effect": "Allow", "Resource": ["<BucketARN>/*","<BucketARN>"]},
        {"Action": "secretsmanager:GetSecretValue", 
         "Effect": "Allow", "Resource": "<DB2CredSecretARN>"}
    ]
}
```

**CodePipeline ポリシー**

プレースホルダの `<BucketARN>` および `<ConnectionARN>` は、それぞれ必要な値に置き換えてください。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {"Action": ["s3:List*", "s3:GetObjectVersion", "s3:GetObject", "s3:GetBucketVersioning" ], 
        "Effect": "Allow",
        "Resource": ["<BucketARN>/*", "<BucketARN>"]},
        {"Action": ["codebuild:StartBuild", "codebuild:BatchGetBuilds"], 
         "Effect": "Allow", "Resource": "*"},
        {"Action": ["codestar-connections:UseConnection"],
         "Effect": "Allow", "Resource": "<ConnectionARN>"}
        ]
}
```

**`buildspec.yml`**

プレースホルダの `<your-bucket-name>` は、実際の S3 バケット名に置き換えてください。

```
version: 0.2
phases:
  pre_build:
    commands:
      - /var/microfocuslicensing/bin/mfcesd -no > /var/microfocuslicensing/logs/mfcesd_startup.log 2>&1 &
      - |
        mkdir $CODEBUILD_SRC_DIR/db2client
        aws s3 cp s3://<your-bucket-name>/v11.5.8_linuxx64_client.tar.gz $CODEBUILD_SRC_DIR/db2client/ >> /dev/null 2>&1
        tar -xf $CODEBUILD_SRC_DIR/db2client/v11.5.8_linuxx64_client.tar.gz -C $CODEBUILD_SRC_DIR/db2client/
        cd $CODEBUILD_SRC_DIR/db2client/
        ./client/db2_install -f sysreq -y -b /opt/ibm/db2/V11.5 >> /dev/null 2>&1        
        useradd db2cli
        /opt/ibm/db2/V11.5/instance/db2icrt -s client -u db2cli db2cli
        DB2CRED=$(aws secretsmanager get-secret-value --secret-id dev-db2-cred | jq -r '.SecretString | fromjson')
        read -r DB2USER DB2PASS DB_NODE DB_HOST DB_PORT DB_NAME DB_QUAL <<<$(echo $DB2CRED | jq -r '.username, .password, .db2node, .db2host, .db2port, .db2name, .qualifier')
        . /home/db2cli/sqllib/db2profile
        db2 catalog tcpip node $DB_NODE remote $DB_HOST server $DB_PORT
        db2 catalog db $DB_NAME as $DB_NAME at node $DB_NODE authentication server
  build:
    commands:
      - |
        revision=$CODEBUILD_SRC_DIR/loadlib
        mkdir -p $revision; cd $revision
        . /opt/microfocus/EnterpriseDeveloper/bin/cobsetenv
        cob -zU $CODEBUILD_SRC_DIR/CDB2SMP.cbl -C "DB2(DB==${DB_NAME} PASS==${DB2USER}.${DB2PASS} VERSION==${CODEBUILD_BUILD_NUMBER} COLLECTION==DB2AWSDB"
artifacts:
  files:
    - "**/*"
  base-directory: $revision
```

# Amazon EC2 Auto Scaling と Systems Manager を搭載した Micro Focus Enterprise Server PAC を構築する
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager"></a>

*Kevin Yung、Krithika Palani Selvam (Amazon Web Services)*

*Peter Woods (なし)*

*Abraham Rondon (Micro Focus)*

## 概要
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-summary"></a>

このパターンでは、[スケールアウトパフォーマンス/アベイラビリティークラスター (PAC) の Micro Focus Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-F6E1BBB7-AEC2-45B1-9E36-1D86B84D2B85.html)、Amazon Web Services (AWS) 上で Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling グループを使用する、メインフレームアプリケーション用のスケーラブルなアーキテクチャが導入されています。このソリューションは、 AWS Systems Manager および Amazon EC2 Auto Scaling ライフサイクルフックで完全に自動化されています。このパターンを使用すると、メインフレームのオンラインアプリケーションとバッチアプリケーションをセットアップして、キャパシティの需要に応じた自動的なスケールインとスケールアウトを行い、高い回復性を実現できます。

**注記**  
このパターンは、Micro Focus Enterprise Server バージョン 6.0 でテストされています。バージョン 8 については、「[(Amazon EC2 での) Micro Focus ランタイムの設定](https://docs.aws.amazon.com/m2/latest/userguide/mf-runtime-setup.html)」を参照してください。

## 前提条件と制限事項
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ Micro Focus Enterprise Server のソフトウェアとライセンス。詳細については、[Micro Focus の営業担当](https://www.microfocus.com/en-us/contact/contactme)にお問い合わせください。
+ Micro Focus Enterprise Server で実行するメインフレームアプリケーションの再構築と配信の概念について理解している。大まかな概要については、「[Micro Focus Enterprise Server データシート](https://www.microfocus.com/media/data-sheet/enterprise_server_ds.pdf)」を参照してください。
+ Micro Focus Enterprise Serverのスケールアウトパフォーマンスおよび可用性クラスターの概念について理解している。詳細については、「[Micro Focus Enterprise Server ドキュメント](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-F6E1BBB7-AEC2-45B1-9E36-1D86B84D2B85.html)」を参照してください。
+ 継続的インテグレーション (CI) によるメインフレームアプリケーション DevOps の全体的な概念について理解している。 AWSと Micro Focus によって開発された AWS 規範ガイダンスパターンについては、[「メインフレームのモダナイゼーション: Micro Focus AWS を使用した での DevOps](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/mainframe-modernization-devops-on-aws-with-micro-focus.html)」を参照してください。

**注記**  
このパターンは、Micro Focus Enterprise Server バージョン 6 でテストされています。バージョン 8 については、「[(Amazon EC2 での) Micro Focus ランタイムの設定](https://docs.aws.amazon.com/m2/latest/userguide/mf-runtime-setup.html)」を参照してください。

**制限事項**
+ Micro Focus Enterprise Server でサポートされているプラットフォームのリストについては、「[Micro Focus Enterprise Serverのデータシート](https://www.microfocus.com/media/data-sheet/enterprise_server_ds.pdf)」を参照してください。
+ このパターンで使用されるスクリプトとテストは Amazon EC2 Windows Server 2019 に基づいています。他の Windows Server バージョンとオペレーティングシステムでは、このパターンではテストされていません。
+ このパターンは Micro Focus Enterprise Server 6.0 for Windows に基づいています。このパターンの開発では、それ以前またはそれ以降のリリースではテストされていません。

**製品バージョン**
+ Micro Focus Enterprise Server 6.0
+ Windows Server 2019

## アーキテクチャ
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-architecture"></a>

従来のメインフレーム環境では、アプリケーションと企業データをホストするハードウェアをプロビジョニングする必要があります。季節、月次、四半期、さらには前例のない、または予期しない需要の急増に対応するため、メインフレームユーザーは、ストレージとコンピューティングの容量を追加購入して*スケールアウト*する必要があります。ストレージとコンピューティングキャパシティのリソースを増やすと全体的なパフォーマンスは向上しますが、スケーリングは線形になりません

Amazon EC2 Auto Scaling と Micro Focus Enterprise Servers を使用して AWS でオンデマンド消費モデルを採用し始めた場合は異なります。以下のセクションでは、Amazon EC2 Auto Scaling グループで Micro Focus Enterprise Server スケールアウトパフォーマンスおよび可用性クラスター (PAC) を使用して、完全に自動スケーリングされたメインフレームアプリケーションのアーキテクチャを構築する方法について詳しく説明します。 

**Micro Focus Enterprise Server の自動スケーリングアーキテクチャ**

最初に Micro Focus Enterprise Server の基本概念を理解することが重要です。従来 IBM メインフレーム上で実行されていたアプリケーションに、メインフレーム互換の x86 デプロイメント環境を提供します。オンラインおよびバッチ実行と、以下の機能をサポートするトランザクション環境を提供します。
+ IBM COBOL
+ IBM PL/I
+ IBM JCL バッチジョブ
+ IBM CICS と IMS TM トランザクション
+ ウェブサービス
+ SORT を含む一般的なバッチユーティリティ　

Micro Focus Enterprise Server を使用すると、メインフレームアプリケーションで最小限の変更を実行できます。既存のメインフレームワークロードを x86 プラットフォームに移行してモダナイズし、AWS クラウドネイティブエクステンションを活用して新規市場や地域への迅速な拡大を図ることができます。 

AWS 規範ガイダンスパターン「[メインフレームのモダナイゼーション: DevOps on AWS with Micro Focus](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/mainframe-modernization-devops-on-aws-with-micro-focus.html)」では、AWS CodePipeline と AWS CodeBuild を搭載した Micro Focus Enterprise Developer と Enterprise Test Server を使用して、AWS でのメインフレームアプリケーションの開発とテストを加速するアーキテクチャを導入しました。このパターンでは、メインフレームアプリケーションを AWS 実稼働環境にデプロイし、高い可用性と回復性を実現することに重点を置いています。

メインフレームの実稼働環境では、メインフレームに IBM Parallel Sysplex を設定して、高パフォーマンスと高可用性を実現している場合があります。Sysplex と同様のスケールアウト アーキテクチャを構築するために、Micro Focus はパフォーマンス/可用性クラスター (PAC) を Enterprise Server に導入しました。PAC は、単一イメージとして管理され、Amazon EC2 インスタンスでスケールアウトされた複数の Enterprise Server リージョンへのメインフレームアプリケーションのデプロイをサポートします。PAC は、予測可能なアプリケーションパフォーマンスとオンデマンドのシステムスループットもサポートします。　 

PAC では、複数の Enterprise Server インスタンスが連携して 1 つの論理エンティティとして機能します。　 そのため、1 つの Enterprise Server インスタンスに障害が発生しても、容量が他のリージョンと共有され、新規インスタンスは Amazon EC2 Auto Scaling グループなどの業界標準機能を使用して自動的に起動され、事業継続性が中断されることはありません。これにより、単一障害点が解消され、ハードウェア、ネットワーク、アプリケーションの問題に対する耐性が向上します。　 スケールアウトしたエンタープライズサーバーインスタンスを運用および管理するために、Enterprise Server Common Web Administration (ESCWA) API を使用することで、Enterprise Server の運用メンテナンスおよび保守性を簡素化することができます。 

**注記**  
Micro Focus は、Enterprise Server リージョンに障害が発生したり、メンテナンスが必要になっても可用性が損なわれないように、[パフォーマンス/可用性クラスター (PAC)](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-C06DC883-8A67-44DB-8553-8F0DD2062DAB.html) を少なくとも 3 つの Enterprise Server リージョンで構成することを推奨しています。

PAC 構成でリージョンデータベース、クロスリージョンデータベース、およびオプションのデータストアデータベースを管理するには、サポートされているリレーショナルデータベース管理サービス (RDBMS) が必要です。Virtual Storage Access Method (VSAM) ファイルの管理にはデータストアデータベースを使用し、可用性とスケーラビリティを向上させるには Micro Focus データベースファイルハンドラサポートを使用する必要があります。サポートされる RDBMS には、以下のものが含まれます。
+ Microsoft SQL Server 2009 R2 以降
+ PostgreSQL 10.x (Amazon Aurora PostgreSQL 互換エディションを含む)　
+ DB2 10.4 以降

サポートされている RDBMS および PAC の要件の詳細は、「[Micro Focus Enterpriseサーバー - 前提条件](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-486C5A4B-E3CD-4B17-81F3-32F9DE970EA5.html)」および「[Micro Focus Enterprise Server - 推奨される PAC 構成](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-7038DB6F-E89F-4B5F-BCAA-BD1456F6CCA3.html)」を参照してください。

次の図は、Micro Focus PAC の一般的な AWS アーキテクチャセットアップを示しています。 

![\[図の後の表で説明されている 5 つのステップで構成される 3 つのアベイラビリティーゾーンアーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/64e3c22b-1058-4ab8-855f-18bbbed5dc13/images/df291568-a442-454f-80bf-49e4ffff4f6d.png)


 


| 
| 
|  | **コンポーネント** | **説明** | 
| --- |--- |--- |
| 1 | Enterprise Server インスタンス、自動スケーリンググループ | PAC の Enterprise Server インスタンスと一緒にデプロイされる自動スケーリンググループを設定します。　 インスタンスの数は、Amazon CloudWatch アラームを使用して Amazon CloudWatch アラートを介して外部に拡張したり、内部に起動したりすることができます。 | 
| 2 | Enterprise Server ESCWA インスタンス、自動スケーリンググループ  | Enterprise Server Common Web Administration (ESCWA) でデプロイされた自動スケーリンググループを設定します。　 ESCWA はクラスター管理 API を提供します。　   ESCWA 経由のソーシャルサーバーは、Enterprise Server インスタンスの自動スケーリングイベント中に Enterprise Server サーバーを追加または削除したり、PAC 内のエンタープライズサーバー領域を起動または停止したりするコントロールプレーンとして機能します。  ESCWA インスタンスは PAC 管理にのみ使用されるため、トラフィックパターンは予測可能で、自動スケーリングに必要な容量要件は 1 に設定できます。  | 
| 3 | マルチ AZ セットアップでの Amazon Aurora インスタンス　 | Enterprise Server インスタンス間で共有されるユーザーデータファイルとシステムデータファイルの両方をホストするリレーショナルデータベース管理システム (RDBMS) を設定します。 | 
| 4 | Amazon ElastiCache (Redis OSS) インスタンスとレプリカ | ユーザーデータをホストし、Enterprise Server インスタンスのスケールアウトリポジトリ (SOR) として機能する ElastiCache (Redis OSS) プライマリインスタンスと、少なくとも 1 つのレプリカを設定します。特定タイプのユーザーデータを保存する[スケールアウトリポジトリ](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-3840E10F-80AA-4109-AF2C-894237D3AD00.html)を 1 つ以上設定できます。  Enterprise Server は、[PAC の整合性を維持するための要件である](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-176B97CA-4F9F-4CE1-952F-C3F4FB0ADD25.html) SOR として Redis NoSQL データベースを使用します。 | 
| 5 | Network Load Balancer | ロードバランサーを設定して、アプリケーションのホスト名を指定し、Enterprise Server インスタンスによって提供されるサービスに接続します (例えば、3270 エミュレータを使用してアプリケーションにアクセスします)。 | 

これらのコンポーネントは、Micro Focus Enterprise Server PAC クラスターの最小要件となります。次のセクションでは、クラスター管理の自動化について説明します。

**スケーリング用の AWS Systems Manager Automation を使用する**

PAC クラスターが AWS にデプロイされると、PAC は Enterprise Server Common Web Administration (ESCWA) で管理されます。 

自動スケーリングイベント中のクラスター管理タスクを自動化するには、Systems Manager Automation ランブックと Amazon EventBridge を搭載した Amazon EC2 Auto Scaling を使用できます。以下の図は、これらの自動化のアーキテクチャを示しています。

![\[AWS architecture diagram showing EventBridge, Systems Manager, and EC2 Auto Scaling integration.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/64e3c22b-1058-4ab8-855f-18bbbed5dc13/images/6f9e4035-fafd-4aee-a6cc-d5e95d6514c2.png)


 


| 
| 
|  | **コンポーネント** | **説明** | 
| --- |--- |--- |
| 1 | Auto Scaling ライフサイクルフック | Auto Scaling ライフサイクルフックを設定し、自動スケーリンググループ内の新規インスタンスの開始時および既存インスタンスの終了時に、Amazon EventBridge に通知を送信します。 | 
| 2 | Amazon EventBridge | Amazon EventBridge ルールを設定して、自動スケーリングイベントを Systems Manager Automation ランブックターゲットにルーティングします。　 | 
| 3 | Automation ランブック | Systems Manager Automation ランブックを設定して Windows PowerShell スクリプトを実行し、ESCWA API を呼び出して PAC を管理します。例については、「*追加情報*」セクションを参照してください。 | 
| 4 | 自動スケーリンググループの Enterprise Server ESCWA インスタンス | 自動スケーリンググループで、Enterprise Server ESCWA インスタンスを設定します。ESCWA インスタンスには、PAC を管理するための API が用意されています。  | 

## ツール
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-tools"></a>
+ [Micro Focus Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-A2F23243-962B-440A-A071-480082DF47E7.html) – Micro Focus Enterprise Server は、Enterprise Developer のあらゆる統合開発環境 (IDE) バリアントで作成されたアプリケーションの実行環境を提供します。
+ [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) – Amazon EC2 Auto Scaling は、アプリケーションの負荷を処理するために適切な数の Amazon EC2 インスタンスを利用できるようにします。Auto Scaling グループと呼ばれる EC2 インスタンスの集合を作成し、インスタンスの最小数と最大数を指定します。　
+ [Amazon ElastiCache (Redis OSS)](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/WhatIs.html) – Amazon ElastiCache は、クラウド内の分散型インメモリデータストアまたはキャッシュ環境をセットアップ、管理、スケーリングするためのウェブサービスです。高性能かつスケーラブルで費用対効果の高いキャッシュソリューションを提供します。
+ 「[Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)」— Amazon Relational Database Service (Amazon RDS) は、AWS クラウドでのリレーショナルデータベースのセットアップ、運用、スケールをより簡単にするウェブサービスです。リレーショナルデータベース向けに、コスト効率に優れ、サイズ変更可能な容量を提供し、一般的なデータベース管理タスクを管理します。 
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) – AWS Systems Manager は、インフラストラクチャを表示およびコントロールするために使用できる AWS サービスです。Systems Manager コンソールを使用すると、複数の AWS サービスからの運用データを表示し、AWS リソース全体の運用タスクを自動化できます。Systems Manager は、マネージドインスタンスをスキャンし、検出されたポリシー違反を報告（または是正措置を講じる）して、セキュリティとコンプライアンスを維持することができます。

## エピック
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-epics"></a>

### Amazon Aurora インスタンスを作成する
<a name="create-an-amazon-aurora-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Aurora インスタンス用の AWS CloudFormation テンプレートを作成します。 | [AWS のサンプルコードスニペット](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_RDS.html)を使用して、Amazon Aurora PostgreSQL 互換エディションインスタンスを作成する CloudFormation テンプレートを作成します。 | クラウドアーキテクト | 
| CloudFormation スタックをデプロイして Amazon Aurora インスタンスを作成します。 | CloudFormation テンプレートを使用して、実稼働環境のワークロードでマルチ AZ レプリケーションが有効になっている Aurora PostgreSQL 互換インスタンスを作成します。　 | クラウドアーキテクト | 
| Enterprise Server のデータベース接続を設定します。 | 「[Micro Focus ドキュメント](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-40748F62-84B3-4B7B-8E96-5484ADEDFB5F.html)」の指示に従って、Micro Focus Enterprise Server の接続文字列とデータベース設定を準備します。 | データエンジニア、DevOps エンジニア | 

### Redis インスタンス用の Amazon ElastiCache クラスターを作成します。
<a name="create-an-elclong-cluster-for-the-redis-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Redis インスタンス用の Amazon ElastiCache クラスター向けに CloudFormation テンプレートを作成します。 | [AWS のサンプルコードスニペット](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ElastiCache.html)を使用して、Redis インスタンス用の Amazon ElastiCache クラスターを作成する CloudFormation テンプレートを作成します。 | クラウドアーキテクト | 
| Redis インスタンス用の Amazon ElastiCache クラスター向けに CloudFormation テンプレートを作成します。 | 実稼働ワークロードでマルチ AZ レプリケーションが有効になっている Redis インスタンス用の Amazon ElastiCache クラスターを作成します。 | クラウドアーキテクト | 
| Enterprise Server PSOR 接続を設定します。 | 「[Micro Focus ドキュメント](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-2A420ADD-4CA6-472D-819F-371C037C0653.html)」の指示に従って、PAC Scale-Out Repository (PSOR) の接続文字列とデータベース設定を準備します。 | DevOps エンジニア | 

### Micro Focus Enterprise Server ESCWA 自動スケーリンググループの作成
<a name="create-a-micro-focus-enterprise-server-escwa-automatic-scaling-group"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Micro Focus Enterprise Server AMI を作成します。 | Amazon EC2 Windows Server インスタンスを作成し、その EC2 インスタンスに Micro Focus Enterprise Server バイナリをインストールします。　 EC2 インスタンスの Amazon マシンイメージ (AMI) を作成します。詳細については、「[Enterprise Server ドキュメント](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-FACEF60F-BAE3-446C-B2B4-4379A5DF6D9F.html)」を参照してください。 | クラウドアーキテクト | 
| Enterprise Server ESCWA 用の CloudFormation テンプレートを作成します。　  | 「[AWS サンプルコードスニペット](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AutoScaling.html)」を使用して、自動スケーリンググループ内に Enterprise Server ESCWA のカスタムスタックを作成するためのテンプレートを作成します。 | クラウドアーキテクト | 
| CloudFormation スタックをデプロイして、Enterprise Server ESCWA 用の Amazon EC2 スケーリンググループを作成します。　 | CloudFormation テンプレートを使用して、前のストーリーで作成した Micro Focus Enterprise Server ESCWA AMI を含む自動スケーリンググループをデプロイします。　 | クラウドアーキテクト | 

### AWS Systems Manager Automation ランブックを作成する
<a name="create-an-aws-systems-manager-automation-runbook"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Systems Manager Automation ランブック用の CloudFormation テンプレートを作成します。　 | 「*追加情報*」セクションのサンプルコードスニペットを使用して、PAC 作成、Enterprise Server のスケールイン、Enterprise Server のスケールアウトを自動化するための Systems Manager Automation ランブックを作成する CloudFormation テンプレートを作成します。 | クラウドアーキテクト | 
| Systems Manager Automation ランブックを含む CloudFormation スタックをデプロイします。 | CloudFormation テンプレートを使用して、PAC 作成、Enterprise Server のスケールイン、Enterprise Server のスケールアウト用の Automation ランブックを含むスタックをデプロイします。 | クラウドアーキテクト | 

### Micro Focus Enterprise Server の自動スケーリンググループを作成する
<a name="create-an-automatic-scaling-group-for-micro-focus-enterprise-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Micro Focus Enterprise Server の自動スケーリンググループを設定するための CloudFormation テンプレートを作成します。 | [AWS のサンプルコードスニペット](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AutoScaling.html)を使用して、自動スケーリンググループを作成する CloudFormation テンプレートを作成します。このテンプレートは、Micro Focus Enterprise Server ESCWA インスタンス用に作成された AMI を再利用します。 次に、[AWS サンプルコードスニペット](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html)を使用して自動スケーリングライフサイクルイベントを作成し、同じ CloudFormation テンプレートでスケールアウトイベントとスケールインイベントをフィルタリングするように Amazon EventBridge を設定します。 | クラウドアーキテクト | 
| Micro Focus Enterprise Servers の自動スケーリンググループ用の CloudFormation スタックをデプロイします。　 | Micro Focus Enterprise Servers の自動スケーリンググループ用の CloudFormation スタックをデプロイします。　 | クラウドアーキテクト | 

## 関連リソース
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-resources"></a>
+ 「[Micro Focus Enterprise Server パフォーマンス/可用性クラスター (PAC)](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-613F5E2D-2FBC-47AE-9327-48CA4FF84C5B.html)」 
+ 「[Amazon EC2 Auto Scaling のライフサイクルフック](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)」
+ 「[EventBridge を使用したトリガーによるオートメーションの実行](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-cwe-target.html)」

## 追加情報
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-additional"></a>

PAC クラスターをスケールインまたはスケールアウトするには、以下のシナリオを自動化する必要があります。　

**PAC の開始または再作成を自動化する**

PAC クラスターの開始時に、Enterprise Server ESCWA は ESCWA に API を呼び出して PAC 構成を作成するように要求します。これにより、Enterprise Server リージョンが起動し、PAC に追加されます。　 PAC を作成または再作成するには、次の手順に従います： 

1. ESCWA で [PAC スケールアウトリポジトリ (PSOR)](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-2A420ADD-4CA6-472D-819F-371C037C0653.html) を指定した名前で設定します。

   ```
   POST /server/v1/config/groups/sors
   ```

1. 指定した名前で PAC を作成し、PSOR をアタッチします。

   ```
   POST /server/v1/config/groups/pacs
   ```

1. PAC の初回設定時は、リージョンデータベースとクロスリージョンデータベースを設定します。　
**注記**  
このステップでは、SQL クエリと Micro Focus Enterprise Suite コマンドライン **dbhfhadmin** ツールを使用してデータベースを作成し、初期データをインポートします。

1. PAC の定義を Enterprise Server リージョンにインストールします。　

   ```
   POST /server/v1/config/mfds 
   POST /native/v1/config/groups/pacs/${pac_uid}/install
   ```

1. PAC 内の Enterprise Server リージョンを起動します。　

   ```
   POST /native/v1/regions/${host_ip}/${port}/${region_name}/start
   ```

これまでの手順は、Windows PowerShell スクリプトを使用して実装できます。　 

以下の手順では、Windows PowerShell スクリプトを再利用して PAC を作成するための自動化を設定する方法について説明します。

1. Amazon EC2 起動テンプレートを作成し、ブートプロセスの一部として Windows PowerShell スクリプトをダウンロードまたは作成します。例えば、EC2 ユーザーデータを使用して、Amazon Simple Storage Service (Amazon S3) バケットからスクリプトをダウンロードできます。　

1. Windows PowerShell スクリプトを呼び出す AWS Systems Manager Automation ランブックを作成します。　

1. インスタンスタグを使用して、ランブックを ESCWA インスタンスに関連付けます。　　

1. 起動テンプレートを使用して ESCWA 自動スケーリンググループを作成します。 

次の AWS CloudFormation スニペットの例を使用して、Automation ランブックを作成できます。

PAC の作成に使用される Systems Manager Automation ランブックの CloudFormation スニペットの例

```
  PACInitDocument:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Command
       Content:
         schemaVersion: '2.2'
         description: Operation Runbook to create Enterprise Server PAC
         mainSteps:
         - action: aws:runPowerShellScript
           name: CreatePAC
           inputs:
             onFailure: Abort
             timeoutSeconds: "1200"
             runCommand:
             - | 
               C:\Scripts\PAC-Init.ps1
  PacInitAutomation:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Automation
       Content:
         description: Prepare Micro Focus PAC Cluster via ESCWA Server
         schemaVersion: '0.3'
         assumeRole: !GetAtt SsmAssumeRole.Arn
         mainSteps:
           - name: RunPACInitDocument
             action: aws:runCommand
             timeoutSeconds: 300
             onFailure: Abort
             inputs:
               DocumentName: !Ref PACInitDocument
               Targets:
                 - Key: tag:Enterprise Server - ESCWA
                   Values:
                     - "true"
   PacInitDocumentAssociation:
     Type: AWS::SSM::Association
     Properties:
       DocumentVersion: "$LATEST"
       Name: !Ref PACInitDocument
       Targets:
         - Key: tag:Enterprise Server - ESCWA
           Values:
             - "true"
```

詳細については、「[Micro Focus Enterprise Server- PAC の設定](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-2B15EBA5-84AF-47C3-9F8E-EE57EB17245F.html)」を参照してください。

**新しい Enterprise Server インスタンスによるスケールアウトの自動化**

Enterprise Server インスタンスをスケールアウトする場合、その Enterprise Server リージョンを PAC に追加する必要があります。　 以下の手順では、ESCWA API を呼び出して、Enterprise Server リージョンを PAC に追加する方法について説明します。 

1. PAC の定義を Enterprise Server リージョンにインストールします。　

   ```
   POST '/server/v1/config/mfds'
   POST /native/v1/config/groups/pacs/${pac_uid}/install
   ```

1. PAC 内のリージョンをウォームスタートします。　

   ```
   POST /native/v1/regions/${host_ip}/${port}/${region_name}/start
   ```

1. 自動スケーリンググループをロードバランサーに関連付けて、Enterprise Server インスタンスをロードバランサーに追加します。　

これまでの手順は、Windows PowerShell スクリプトを使用して実装できます。　 詳細については、「[Micro Focus Enterprise Server- PAC の設定](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-2B15EBA5-84AF-47C3-9F8E-EE57EB17245F.html)」を参照してください。

次の手順は、Windows PowerShell スクリプトを再利用して、新しく起動した Enterprise Server インスタンスを PAC に追加するイベント駆動型の自動化を構築するために使用します。 

1. ブートストラップ時に Enterprise Server リージョンをプロビジョニングする Enterprise Server インスタンス用の Amazon EC2 起動テンプレートを作成します。例えば、Micro Focus Enterprise Server のコマンド mfds を使用してリージョン設定をインポートできます。このコマンドのさらなる詳細とオプションについては、「[Enterprise Server リファレンス](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/HRADRHCOMM06.html)」を参照してください。

1. 前の手順で作成した起動テンプレートを使用する Enterprise Server 自動スケーリンググループを作成します。

1. Windows PowerShell スクリプトを呼び出す Systems Manager Automation ランブックを作成します。 

1. インスタンスタグを使用して、ランブックを ESCWA インスタンスに関連付けます。　　

1. Enterprise Server 自動スケーリンググループの EC2 インスタンスの起動成功イベントをフィルタリングする Amazon EventBridge ルールを作成し、Automation ランブックを使用するターゲットを作成します。

次の CloudFormation スニペットの例を使用して、Automation ランブックと EventBridge ルールを作成できます。

*Enterprise Server インスタンスのスケールアウトに使用される Systems Manager 用の CloudFormation スニペットの例*

```
  ScaleOutDocument:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Command
       Content:
         schemaVersion: '2.2'
         description: Operation Runbook to Adding MFDS Server into an existing PAC 
         parameters:
           MfdsPort:
             type: String
           InstanceIpAddress:
             type: String
             default: "Not-Available"
           InstanceId:
             type: String
             default: "Not-Available"
         mainSteps:
         - action: aws:runPowerShellScript
           name: Add_MFDS
           inputs:
             onFailure: Abort
             timeoutSeconds: "300"
             runCommand:
             - |
               $ip = "{{InstanceIpAddress}}"
               if ( ${ip} -eq "Not-Available" ) {
                 $ip = aws ec2 describe-instances --instance-id {{InstanceId}} --output text --query "Reservations[0].Instances[0].PrivateIpAddress"
               }            
               C:\Scripts\Scale-Out.ps1 -host_ip ${ip} -port {{MfdsPort}}
 
   PacScaleOutAutomation:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Automation
       Content:
         parameters:
           MfdsPort:
             type: String
           InstanceIpAddress:
             type: String
             default: "Not-Available"
           InstanceId:
             type: String
             default: "Not-Available"
         description: Scale Out 1 New Server in Micro Focus PAC Cluster via ESCWA Server
         schemaVersion: '0.3'
         assumeRole: !GetAtt SsmAssumeRole.Arn
         mainSteps:
           - name: RunScaleOutCommand
             action: aws:runCommand
             timeoutSeconds: 300
             onFailure: Abort
             inputs:
               DocumentName: !Ref ScaleOutDocument
               Parameters:
                 InstanceIpAddress: "{{InstanceIpAddress}}"
                 InstanceId: "{{InstanceId}}"
                 MfdsPort: "{{MfdsPort}}"
               Targets:
                 - Key: tag:Enterprise Server - ESCWA
                   Values:
                     - "true"
```

**新しい Enterprise Server インスタンスによるスケールアウトの自動化**

スケールアウトと同様に、Enterprise Server インスタンスを*スケールイン*すると、EC2 インスタンス終了ライフサイクルアクションイベントが開始されます。Micro Focus Enterprise Server インスタンスを PAC から削除するには、以下のプロセスと API 呼び出しが必要になります。 

1. 終了する Enterprise Server インスタンスのリージョンを停止します。

   ```
   POST "/native/v1/regions/${host_ip}/${port}/${region_name}/stop"
   ```

1. Enterprise Server インスタンスを PAC から削除します。

   ```
   DELETE "/server/v1/config/mfds/${uid}"
   ```

1. Enterprise Server インスタンスの終了を続行するシグナルを送信します。

これまでの手順は、Windows PowerShell スクリプトに実装できます。　 このプロセスの詳細については、「[Micro Focus Enterprise Server ドキュメント - PAC の管理](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-E864E2E9-EB49-43BF-9AAD-7FE334749441.html)」を参照してください。

次の手順は、Windows PowerShell スクリプトを再利用して、新しく起動した Enterprise Server インスタンスを PAC から終了する、イベント駆動型の自動化を構築する方法について説明します。 

1. Windows PowerShell スクリプトを呼び出す Systems Manager Automation ランブックを作成します。

1. インスタンスタグを使用して、ランブックを ESCWA インスタンスに関連付けます。　　

1. EC2 インスタンスを終了するための自動スケーリンググループのライフサイクルフックを作成します。

1. Enterprise Server 自動スケーリンググループの EC2 インスタンスのライフサイクルイベントをフィルタリングする Amazon EventBridge ルールを作成し、Automation ランブックを使用するターゲットを作成します。 

次の CloudFormation テンプレートの例を使用して、Systems Manager Automation ランブック、ライフサイクルフック、および EventBridge ルールを作成できます。　

Enterprise Server インスタンスのスケールインに使用される Systems Manager Automation ランブック用の CloudFormation スニペットの例

```
  ScaleInDocument:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Command
       Content:
         schemaVersion: '2.2'
         description: Operation Runbook to Remove MFDS Server from PAC 
         parameters:
           MfdsPort:
             type: String
           InstanceIpAddress:
             type: String
             default: "Not-Available"
           InstanceId:
             type: String
             default: "Not-Available"
         mainSteps:
         - action: aws:runPowerShellScript
           name: Remove_MFDS
           inputs:
             onFailure: Abort
             runCommand:
             - |
               $ip = "{{InstanceIpAddress}}"
               if ( ${ip} -eq "Not-Available" ) {
                 $ip = aws ec2 describe-instances --instance-id {{InstanceId}} --output text --query "Reservations[0].Instances[0].PrivateIpAddress"
               }            
               C:\Scripts\Scale-In.ps1 -host_ip ${ip} -port {{MfdsPort}}
 
   PacScaleInAutomation:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Automation
       Content:
         parameters:
           MfdsPort:
             type: String
           InstanceIpAddress:
             type: String
             default: "Not-Available"            
           InstanceId:
             type: String
             default: "Not-Available"                
         description: Scale In 1 New Server in Micro Focus PAC Cluster via ESCWA Server
         schemaVersion: '0.3'
         assumeRole: !GetAtt SsmAssumeRole.Arn
         mainSteps:
           - name: RunScaleInCommand
             action: aws:runCommand
             timeoutSeconds: "600"
             onFailure: Abort
             inputs:
               DocumentName: !Ref ScaleInDocument
               Parameters:
                 InstanceIpAddress: "{{InstanceIpAddress}}"
                 MfdsPort: "{{MfdsPort}}"
                 InstanceId: "{{InstanceId}}"
               Targets:
                 - Key: tag:Enterprise Server - ESCWA
                   Values:
                     - "true"
           - name: TerminateTheInstance
             action: aws:executeAwsApi
             inputs:
               Service: autoscaling
               Api: CompleteLifecycleAction
               AutoScalingGroupName: !Ref AutoScalingGroup
               InstanceId: "{{ InstanceId }}"
               LifecycleActionResult: CONTINUE
               LifecycleHookName: !Ref ScaleInLifeCycleHook
```

**Amazon EC2 自動スケーリングトリガーの自動化**

Enterprise Server インスタンスのスケーリングポリシーを設定するプロセスには、アプリケーションの動作を理解する必要があります。ほとんどの場合、ターゲット追跡スケーリングポリシーを設定できます。例えば、Amazon CloudWatch のメトリクスとして平均 CPU 使用率を使用して、自動スケーリングポリシーを設定できます。詳細については、「[Amazon EC2 Auto Scaling のターゲット追跡スケーリング ポリシー](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html)」を参照してください。通常のトラフィックパターンを使用するアプリケーションでは、予測的スケーリングポリシーの使用を検討してください。詳細については、「[Amazon EC2 Auto Scaling の予測スケーリング](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-predictive-scaling.html)」を参照してください。 

# 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)**IAM ロールにアクセス許可を付与**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)の**グラフインスペクター**で、ワークフローの実行を確認します。実行実行状態は、実行ステータスを表すように色分けされています。例えば、青は**進行中**、緑は**成功**、赤は**失敗**を示します。**[実行イベント履歴]** セクションの表を参照して、実行イベントに関する詳細情報を確認することもできます。グラフィカルなワークフロー実行の例については、このパターンの「*追加情報*」セクションの *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/\$1bulk [ステータス:200 リクエスト:0.100s] | 
|  | 2022-08-10T 15:53:33.172-05:00 | 一括書き込み成功:100 件のドキュメント | 

# Blu Age によってモダナイズされたメインフレームワークロードをコンテナ化
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age"></a>

*Richard Milner-Watts (Amazon Web Services)*

## 概要
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-summary"></a>

このパターンでは、「[Blu Age](https://www.bluage.com/)」 ツールを使用することで、最新化されたメインフレームワークロードを実行するためのサンプルコンテナ環境を提供します。Blu Age は従来のメインフレームワークロードを最新の Java コードに変換します。このパターンでは、Javaアプリケーションの周りにラッパーを提供し、「[Amazon Elastic Container Service (Amazon ECS)](https://aws.amazon.com/ecs/)」 や 「[Amazon Elastic Kubernetes Service (Amazon EKS)](https://aws.amazon.com/eks/)」 のような コンテナオーケストレーションを使用することで、それを実行できます。

Blu Age と AWS のサービスを使用して、ワークロードを最新化する方法の詳細については、以下の AWS 規範ガイダンス出版物を参照してください:
+ 「[最新のBlu AgeメインフレームワークロードをサーバーレスAWS インフラストラクチャ上で実行](https://docs.aws.amazon.com/prescriptive-guidance/latest/run-bluage-modernized-mainframes/)」
+ 「[Terraform を使用して、コンテナ化された Blu Age アプリケーション用の環境をデプロイ](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html)」

Blu Age によるメインフレームワークロードを最新化についてサポートが必要な場合は、[Blu Age Web サイト](https://www.bluage.com/)の［**専門家に連絡**］から お問い合わせください。最新のワークロードを AWS に移行したり、AWS のサービスと統合したり、それらを本番環境に移行したりするためのサポートが必要な場合は、AWS アカウントマネージャーにお問い合わせいただくか、[AWS プロフェッショナルサービスフォーム](https://pages.awscloud.com/AWS-Professional-Services.html)にご記入ください。

## 前提条件と制限
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-prereqs"></a>

**前提条件**
+ Blu Age により作成された最新の Java アプリケーション。テスト目的で、このパターンは、コンセプトの証明として使用できるサンプル Java アプリケーションを提供します。
+ コンテナの構築に使用できる 「[Docker](https://aws.amazon.com/docker/)」 環境。

**制限事項**

使用するコンテナオーケストレーションプラットフォームによっては、コンテナで使用できるリソース (CPU、RAM、ストレージなど) が限定的である場合があります。たとえば、Amazon ECS を AWS Fargate で使う場合、制限と考慮事項については 「[Amazon ECS のドキュメント](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)」 を参照してください。

## アーキテクチャ
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-architecture"></a>

**ソーステクノロジースタック**
+ Blu Age
+ Java

**ターゲットテクノロジースタック**
+ Docker

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

以下の図表は、Docker コンテナ内の Blu Age アプリケーションのアーキテクチャを示しています。

![\[Docker コンテナへのブルーエイジアプリケーション\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/c1747094-357b-4222-b4eb-b1336d810f83/images/0554332d-eff5-49ca-9789-da39b5a10045.png)


1. コンテナのエントリポイントは、ラッパースクリプトです。この Bash スクリプトは、Blu Age アプリケーションおよび出力処理のランタイム環境を準備する役割を担います。

1. コンテナの環境変数は、Amazon Simple Storage Service (Amazon S3) バケット名およびデータベース認証情報などの、ラッパースクリプトの変数を設定するために使用されます。環境変数は、AWS Secrets Manager または AWS Systems Manager の機能であるパラメータストアによって提供されます。Amazon ECS をコンテナオーケストレーションサービスとして使用している場合、Amazon ECS タスク定義に環境変数をハードコーディングすることもできます。

1. ラッパースクリプトは、Blu Age アプリケーションを実行する前に、S3 バケットからあらゆる入力ファイルをコンテナに取り込みます。AWS コマンドラインインターフェイス (AWS CLI) は、コンテナにインストールされます。これは、ゲートウェイ仮想プライベートクラウド (VPC) エンドポイントを介して、Amazon S3 に保存されたオブジェクトにアクセスするためのメカニズムを提供します。

1. Blu Age アプリケーションの Java アーカイブ (JAR) ファイルは、Amazon Aurora などのその他のデータソースと通信する必要がある場合があります。

1. 完了後、ラッパースクリプトは結果の出力ファイルを さらなる処理を行うために S3 バケットに送ります (例、Amazon CloudWatch ログインサービスで)。またこのパターンでは、標準の CloudWatch ロギングの代替を使っている場合、圧縮されたログファイルの Amazon S3 への配信もサポートします。

## ツール
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-tools"></a>

**AWS サービス**
+ 「[Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)」 は、セキュリティ、スケーラビリティ、信頼性を備えたマネージドコンテナイメージレジストリサービスです。
+ 「[Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)」 は、クラスターでのコンテナの実行、停止、管理を支援する、高速でスケーラブルなコンテナ管理サービスです。

**ツール**
+ 「[Docker](https://aws.amazon.com/docker/)」 は、アプリケーションを構築、テスト、デプロイするためのソフトウェアプラットフォームです。Docker はソフトウェアを「[コンテナ](https://aws.amazon.com/containers/)」 と呼ばれる標準化されたユニットにパッケージ化します。コンテナには、ライブラリ、システムツール、コード、ランタイムなど、ソフトウェアの実行に必要なものがすべて含まれています。Docker を使用すると、あらゆる環境にアプリケーションをデプロイしスケーリングできます。
+ 「[Bash](https://www.gnu.org/software/bash/manual/)」 は GNU オペレーティングシステムのコマンド言語インターフェイス (シェル) です。
+ 「[Java](https://www.java.com/)」 はこのパターンで使用されるプログラミング言語ならびに開発環境です。
+ 「[Blu Age](https://www.bluage.com/)」 は、アプリケーションコード、依存関係、インフラストラクチャなどの従来のメインフレームワークロードをクラウド用の最新のワークロードに変換する、AWS mainframe modernization ツールです。

**コードリポジトリ**

このパターンのコードは、GitHub 内の「[ Blu Age サンプルコンテナリポジトリ](https://github.com/aws-samples/aws-blu-age-sample-container)」で利用できます。

## ベストプラクティス
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-best-practices"></a>
+ 環境変数を使用して、変数を外部化し、アプリケーションの動作を変更します。これらの変数により、コンテナオーケストレーションソリューションが、コンテナを再構築することなくランタイム環境を変更できるようにします。このパターンには、Blue Age アプリケーションに役立つ環境変数の例が含まれています。
+ Blu Age アプリケーションを実行する前に、アプリケーションの依存関係を検証します。たとえば、データベースが使用可能であること、そして認証情報が有効であることを確認します。依存関係を検証するテストをラッパースクリプトに記述し、また一致しない場合は早い段階で失敗します。
+ ラッパースクリプト内の詳細なログ記録を使用します。オーケストレーションプラットフォームやジョブの所要時間によって、実行中のコンテナと直接やり取りするのが難しい場合があります。問題の診断に役立つ出力が `STDOUT` に書き込まれていることを必ず確認してください。たとえば、アプリケーションの実行前と実行後の両方で、アプリケーションの作業ディレクトリの内容が出力に含まれる場合があります。

## エピック
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-epics"></a>

### Blue Age アプリケーション JAR ファイルを入手
<a name="obtain-a-blu-age-application-jar-file"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| オプション 1 - Blu Age を使用して、アプリケーションの JAR ファイルを取得します。 | このパターンのコンテナには Blu Age アプリケーションが必要です。代わりに、このパターンで提供されるサンプル Java アプリケーションをプロトタイプとして使用することもできます。Blu Age チームの協力で、コンテナに織り込むことができるアプリケーションの JAR ファイルを取得します。JAR ファイルが利用できない場合、次のタスクを見て、代わりにサンプルアプリケーションを使用します。 | クラウドアーキテクト | 
| オプション 2 - 提供されたサンプルアプリケーション JAR ファイルをビルドまたは使用します。 | このパターンでは、事前ビルドのサンプル JAR ファイルを提供します。このファイルでは、30 秒間スリープして終了する前に、アプリケーションの環境変数を `STDOUT` に出力します。このファイルは `bluAgeSample.jar` という名前が付けられ、GitHub リポジトリの「[docker フォルダ](https://github.com/aws-samples/aws-blu-age-sample-container/tree/main/docker)」にあります。コードを変更して独自バージョンの JAR ファイルをビルドする場合、GitHub リポジトリの 「[ /java\$1sample/src/sample\$1java\$1app.java ](https://github.com/aws-samples/aws-blu-age-sample-container/tree/main/java_sample/src)」 にあるソースコードを使用します。ビルドスクリプトを 「[./java\$1sample/build.sh](https://github.com/aws-samples/aws-blu-age-sample-container/tree/main/java_sample)」 で使用して、 Java ソースをコンパイルし、新しい JAR ファイルをビルドします。　 | アプリ開発者 | 

### Blu Age コンテナーをビルドする
<a name="build-the-blu-age-container"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| GitHub リポジトリのクローンを作成します。 | 以下のコマンドを使用してサンプルコードリポジトリをクローンします：<pre>git clone https://github.com/aws-samples/aws-blu-age-sample-container</pre> | AWS DevOps | 
| Docker を使用して、コンテナをビルドします。 | Amazon ECR などの Docker レジストリにプッシュする前に、Docker を使用してコンテナをビルドしてください：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html) | AWS DevOps | 
| Blu Age コンテナをテストします。 | (オプション) 必要に応じて、以下のコマンドを使用してコンテナをローカルでテストします：<pre>docker run -it <tag> /bin/bash</pre> | AWS DevOps | 
| Docker リポジトリに対し認証を行います。 | Amazon ECR を使用する計画がある場合、「[Amazon ECR ドキュメント](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html)」 の手順に従って、 AWS CLI をインストールし、設定し、Docker CLI をデフォルトのレジストリで認証します。認証のための [get-login-password](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ecr/get-login-password.html) コマンドを使用することを推奨します。  **[プッシュコマンドの表示]** ボタンを使用する場合は、[Amazon ECR コンソール](https://console.aws.amazon.com/ecr/)に、このコマンドの事前入力のバージョンが表示されます。詳細については、[Amazon ECR ドキュメント](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-console.html)を参照してください。<pre>aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <account>.dkr.ecr.<region>.amazonaws.com</pre>Amazon ECR を使用する計画がない場合、コンテナレジストリシステムの指示に従ってください。 | AWS DevOps | 
| コンテナリポジトリを作成します。 | Amazon ECR でリポジトリを作成します。手順については、「[Terraform を使用してコンテナ化された Blu Age アプリケーションの環境をデプロイする](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html)」 パターンを参照してください。別のコンテナレジストリシステムを使用する場合、そのシステムの指示に従います。 | AWS DevOps | 
| コンテナにタグを付けて、ターゲットリポジトリにプッシュします。 | Amazon ECR を使用する場合:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html)詳細については、「*Amazon ECR ユーザーガイド*」の「[Pushing a Docker image](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)」を参照してください。 | AWS DevOps  | 

## 関連リソース
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-resources"></a>

「**AWS リソース**」
+ 「[AWS Blu Ageサンプルコンテナリポジトリ](https://github.com/aws-samples/aws-blu-age-sample-container)」 
+ 「[最新のBlu AgeメインフレームワークロードをサーバーレスAWS インフラストラクチャ上で実行](https://docs.aws.amazon.com/prescriptive-guidance/latest/run-bluage-modernized-mainframes/)」 
+ 「[Terraform を使用して、コンテナ化された Blu Age アプリケーション用の環境をデプロイする](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html)」
+ [Using Amazon ECR with the AWS CLI](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html) (*Amazon ECR ユーザーガイド*)
+ [Private registry authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html) (*Amazon ECR ユーザーガイド*)
+ 「[Amazon ECS ドキュメント](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)」　
+ 「[Amazon EKS ドキュメント](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)」 

**追加リソース**
+ 「[Blue Age ウェブサイト](https://www.bluage.com/)」 
+ 「[Docker ウェブサイト](https://docker.com/)」 

# Python を使用して AWS 上で EBCDIC データを ASCII に変換および解凍する
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python"></a>

*Luis Gustavo Dantas (Amazon Web Services)*

## 概要
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-summary"></a>

メインフレームは通常、重要なビジネスデータをホストするため、Amazon Web Services（AWS）クラウドやその他の米国情報交換標準コード（ASCII）環境にデータを移行する場合、データを最新化することが最も重要なタスクの 1 つです。メインフレームでは、データは通常、拡張バイナリコード 10 進数交換コード (EBCDIC) 形式でエンコードされます。データベース、仮想ストレージアクセスメソッド (VSAM)、またはフラットファイルをエクスポートすると、通常、圧縮されたバイナリ EBCDIC ファイルが生成され、移行がより複雑になります。最も一般的に使用されるデータベース移行ソリューションはチェンジデータキャプチャ (CDC) で、ほとんどの場合、データエンコーディングを自動的に変換します。ただし、これらのデータベース、VSAM、またはフラットファイルには CDC メカニズムが使用できない場合があります。これらのファイルについては、データを最新化するための代替アプローチが必要です。

このパターンは、EBCDIC データを ASCII 形式に変換して最新化する方法を説明しています。変換後、データを分散データベースにロードしたり、クラウド内のアプリケーションにデータを直接処理させることができます。このパターンは、[mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities) GitHub リポジトリにある変換スクリプトとサンプルファイルを使用します。

## 前提条件と制限
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ EBCDIC 入力ファイルとそれに対応する共通ビジネス指向言語 (COBOL) コピーブック。サンプルの EBCDIC ファイルと COBOL コピーブックは、「[メインフレームデータユーティリティ](https://github.com/aws-samples/mainframe-data-utilities)」の GitHub リポジトリに含まれています。COBOL コピーブックの詳細については、IBM Web サイトの「[z/OS 6.4 プログラミング用エンタープライズ COBOL ガイド](https://publibfp.dhe.ibm.com/epubs/pdf/igy6pg40.pdf)」を参照してください。

**制限事項**
+ COBOL プログラム内で定義されたファイルレイアウトはサポートされていません。これらは別途利用できるようにする必要があります。

**製品バージョン**
+ Python バージョン 3.8 以降

## アーキテクチャ
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-architecture"></a>

**ソーステクノロジースタック**
+ メインフレーム上の EBCDIC データ
+ COBOL コピーブック

**ターゲットテクノロジースタック**
+ 仮想プライベートクラウド (VPC)のAmazon Elastic Compute Cloud (Amazon EC2) インスタンス 
+ Amazon Elastic Block Store (Amazon EBS)
+ Python とそれに必要なパッケージ、JavaScript オブジェクト表記 (JSON)、システム、および日時
+ 最新のアプリケーションですぐに読み込んだり、リレーショナルデータベーステーブルに読み込んだりできる ASCII フラットファイル

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

![\[Python スクリプトと COBOL コピーブックを使用して EC2 インスタンス上の EBCDIC データを ASCII に変換しました\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f5907bfe-7dff-4cd0-8523-57015ad48c4b/images/4f97b1dd-3f20-4966-a291-22180680ea99.png)


アーキテクチャ図は、EC2 インスタンスで EBCDIC ファイルを ASCII ファイルに変換するプロセスを示しています。

1. 「**parse\$1copybook\$1to\$1json.py**」スクリプトを使用して、COBOL コピーブックを JSON ファイルに変換します。

1. JSON ファイルと「**extract\$1ebcdic\$1to\$1ascii.py**」スクリプトを使用して、EBCDIC データを ASCII ファイルに変換します。

**自動化とスケール**

最初の手動ファイル変換に必要なリソースが揃ったら、ファイル変換を自動化できます。このパターンには自動化の指示は含まれていません。変換を自動化する方法は複数あります。以下は、考えられるアプローチの概要です。

1. AWS コマンドラインインターフェイス (AWS CLI) コマンドと Python スクリプトコマンドをシェルスクリプトにカプセル化します。

1. シェルスクリプトジョブを EC2 インスタンスに非同期的に送信する AWS Lambda 関数を作成します。詳細については、「[AWS Lambda を使用した SSH ジョブのスケジュール設定](https://aws.amazon.com/blogs/compute/scheduling-ssh-jobs-using-aws-lambda/)」を参照してください。

1. レガシーファイルがアップロードされるたびに Lambda 関数を呼び出す Amazon Simple Storage Service (Amazon S3) トリガーを作成します。詳細については、「[チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html)」を参照してください。

## ツール
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-tools"></a>

** サービス**
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/?id=docs_gateway)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) は、 Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで使用するブロックレベルストレージのボリュームを提供します。
+ 「[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 リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。

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

**コードリポジトリ**

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

## エピック
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-epics"></a>

### EC2 インスタンスの準備
<a name="prepare-the-ec2-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスの起動 | EC2 インスタンスにはアウトバウンドのインターネットアクセスが必要です。これにより、インスタンスは GitHub にある Python ソースコードにアクセスできるようになります。インスタンスを作成するには[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS 全般 | 
| Git のインストール | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS 全般、Linux | 
| Python のインストール | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS 全般、Linux | 
| GitHub リポジトリのクローンを作成 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS 全般、GitHub | 

### EBCDIC データから ASCII ファイルを作成します。
<a name="create-the-ascii-file-from-the-ebcdic-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| COBOL コピーブックを解析して JSON レイアウトファイルにします。 | `mainframe-data-utilities`フォルダ内で「**parse\$1copybook\$1to\$1json.py**」スクリプトを実行します。この自動化モジュールは COBOL コピーブックからファイルレイアウトを読み取り、JSON ファイルを作成します。JSON ファイルには、ソースファイルからのデータの解釈と抽出に必要な情報が含まれています。これにより、COBOL コピーブックから JSON メタデータが作成されます。次のコマンドは、COBOL コピーブックを JSON ファイルに変換します。<pre>python3 parse_copybook_to_json.py \<br />-copybook LegacyReference/COBPACK2.cpy \<br />-output sample-data/cobpack2-list.json \<br />-dict sample-data/cobpack2-dict.json \<br />-ebcdic sample-data/COBPACK.OUTFILE.txt \<br />-ascii sample-data/COBPACK.ASCII.txt \<br />-print 10000</pre>このスクリプトは受け取った引数を出力します。<pre>-----------------------------------------------------------------------<br />Copybook file...............| LegacyReference/COBPACK2.cpy<br />Parsed copybook (JSON List).| sample-data/cobpack2-list.json<br />JSON Dict (documentation)...| sample-data/cobpack2-dict.json<br />ASCII file..................| sample-data/COBPACK.ASCII.txt<br />EBCDIC file.................| sample-data/COBPACK.OUTFILE.txt<br />Print each..................| 10000<br />-----------------------------------------------------------------------</pre>引数に関する詳細は、GitHub リポジトリの「[README ファイル](https://github.com/aws-samples/mainframe-data-utilities/blob/main/README.md)」を参照してください。 | AWS 全般、Linux | 
| JSON レイアウトファイルを調べてください。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html)<pre> "input": "extract-ebcdic-to-ascii/COBPACK.OUTFILE.txt",<br /> "output": "extract-ebcdic-to-ascii/COBPACK.ASCII.txt",<br /> "max": 0,<br /> "skip": 0,<br /> "print": 10000,<br /> "lrecl": 150,<br /> "rem-low-values": true,<br /> "separator": "|",<br /> "transf": [<br /> {<br /> "type": "ch",<br /> "bytes": 19,<br /> "name": "OUTFILE-TEXT"<br /> } </pre>JSON レイアウトファイルの最も重要な属性は次のとおりです。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html)JSON レイアウトファイルの詳細については、GitHub リポジトリの「[README ファイル](https://github.com/aws-samples/mainframe-data-utilities/blob/main/README.md)」を参照してください。 | AWS 全般、JSON | 
| ASCII ファイルを作成します。 | クローニングされた GitHub リポジトリに含まれている 「**extract\$1ebcdic\$1to\$1ascii.py**」スクリプトを実行します。このスクリプトは EBCDIC ファイルを読み取り、変換されて読み取り可能な ASCII ファイルを書き込みます。<pre>python3 extract_ebcdic_to_ascii.py -local-json sample-data/cobpack2-list.json</pre>このスクリプトは EBCDIC データを処理するときに、10,000 レコードのバッチごとにメッセージを出力します。次の例を参照してください。<pre>------------------------------------------------------------------<br />2023-05-15 21:21:46.322253 | Local Json file   | -local-json | sample-data/cobpack2-list.json<br />2023-05-15 21:21:47.034556 | Records processed | 10000<br />2023-05-15 21:21:47.736434 | Records processed | 20000<br />2023-05-15 21:21:48.441696 | Records processed | 30000<br />2023-05-15 21:21:49.173781 | Records processed | 40000<br />2023-05-15 21:21:49.874779 | Records processed | 50000<br />2023-05-15 21:21:50.705873 | Records processed | 60000<br />2023-05-15 21:21:51.609335 | Records processed | 70000<br />2023-05-15 21:21:52.292989 | Records processed | 80000<br />2023-05-15 21:21:52.938366 | Records processed | 89280<br />2023-05-15 21:21:52.938448 Seconds 6.616232</pre>印刷頻度を変更する方法については、GitHub リポジトリの「[README ファイル](https://github.com/aws-samples/mainframe-data-utilities/blob/main/README.md)」を参照してください。 | AWS 全般 | 
|  ASCII ファイルを検証します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html)提供されているサンプル EBCDIC ファイルを使用した場合、ASCII ファイルの最初のレコードは次のようになります。<pre>00000000: 2d30 3030 3030 3030 3030 3130 3030 3030  -000000000100000<br />00000010: 3030 307c 3030 3030 3030 3030 3031 3030  000|000000000100<br />00000020: 3030 3030 3030 7c2d 3030 3030 3030 3030  000000|-00000000<br />00000030: 3031 3030 3030 3030 3030 7c30 7c30 7c31  0100000000|0|0|1<br />00000040: 3030 3030 3030 3030 7c2d 3130 3030 3030  00000000|-100000<br />00000050: 3030 307c 3130 3030 3030 3030 307c 2d31  000|100000000|-1<br />00000060: 3030 3030 3030 3030 7c30 3030 3030 7c30  00000000|00000|0<br />00000070: 3030 3030 7c31 3030 3030 3030 3030 7c2d  0000|100000000|-<br />00000080: 3130 3030 3030 3030 307c 3030 3030 3030  100000000|000000<br />00000090: 3030 3030 3130 3030 3030 3030 307c 2d30  0000100000000|-0<br />000000a0: 3030 3030 3030 3030 3031 3030 3030 3030  0000000001000000<br />000000b0: 3030 7c41 7c41 7c0a                      00|A|A|.</pre> | AWS 全般、Linux | 
| EBCDIC ファイルを評価してください。 | Amazon EC2 コンソールで、次のコマンドを入力します。EBCDIC ファイルの最初のレコードが開きます。<pre>head sample-data/COBPACK.OUTFILE.txt -c 150 | xxd</pre>サンプルの EBCDIC ファイルを使用した場合、結果は次のようになります。<pre> 00000000: 60f0 f0f0 f0f0 f0f0 f0f0 f1f0 f0f0 f0f0 `...............<br /> 00000010: f0f0 f0f0 f0f0 f0f0 f0f0 f0f0 f1f0 f0f0 ................<br /> 00000020: f0f0 f0f0 f0f0 f0f0 f0f0 f0f0 f0f0 f1f0 ................<br /> 00000030: f0f0 f0f0 f0f0 d000 0000 0005 f5e1 00fa ................<br /> 00000040: 0a1f 0000 0000 0005 f5e1 00ff ffff fffa ................<br /> 00000050: 0a1f 0000 000f 0000 0c10 0000 000f 1000 ................<br /> 00000060: 0000 0d00 0000 0000 1000 0000 0f00 0000 ................<br /> 00000070: 0000 1000 0000 0dc1 c100 0000 0000 0000 ................<br /> 00000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................<br /> 00000090: 0000 0000 0000 ......</pre>ソースファイルとターゲットファイルの同等性を評価するには、EBCDIC に関する包括的な知識が必要です。たとえば、サンプル EBCDIC ファイルの最初の文字はハイフン (`-`) です。EBCDIC ファイルの 16 進数表記ではこの文字は`60`で表され、ASCII ファイルの 16 進表記ではこの文字は`2D`で表されます。EBCDIC から ASCII への変換表については、IBM ウェブサイトの「[EBCDIC から ASCII へ](https://www.ibm.com/docs/en/iis/11.3?topic=tables-ebcdic-ascii)」を参照してください。 | AWS 全般、Linux、EBCDIC | 

## 関連リソース
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-resources"></a>

**リファレンス**
+ [EBCDIC 文字セット](https://www.ibm.com/docs/en/zos-basic-skills?topic=mainframe-ebcdic-character-set) (IBM ドキュメント)
+ [EBCDIC から ASCII への変換](https://www.ibm.com/docs/en/iis/11.3?topic=tables-ebcdic-ascii) (IBM ドキュメント)
+ [COBOL](https://www.ibm.com/docs/en/i/7.1?topic=languages-cobol) (IBM ドキュメント)
+ [JCL の基本的な概念](https://www.ibm.com/docs/en/zos-basic-skills?topic=collection-basic-jcl-concepts) (IBM ドキュメント)
+ [Amazon Linux EC2 インスタンスに接続](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)（Amazon EC2 ドキュメント）

**チュートリアル**
+ [AWS Lambda を使用して SSH ジョブをスケジューリングする](https://aws.amazon.com/blogs/compute/scheduling-ssh-jobs-using-aws-lambda/) (AWS ブログ記事)
+ [Amazon S3 トリガーを使用して Lambda 関数を呼び出す](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) (AWS Lambda ドキュメント)

# を使用して Amazon S3 でメインフレームファイルを EBCDIC 形式から文字区切りの ASCII 形式に変換する AWS Lambda
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda"></a>

*Luis Gustavo Dantas (Amazon Web Services)*

## 概要
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-summary"></a>

このパターンは、メインフレーム拡張バイナリコード 10 進数交換コード (EBCDIC) ファイルを文字区切りの情報交換 (ASCII) ファイルに自動的に変換する AWS Lambda 関数を起動する方法を示しています。Lambda 関数は、ASCII ファイルが Amazon Simple Storage Service (Amazon S3) バケットにアップロードされた後に実行されます。ファイル変換後、x86 ベースのワークロードで ASCII ファイルを読み取ったり、最新のデータベースにファイルをロードしたりできます。

このパターンで示されているファイル変換方法は、現代の環境で EBCDIC ファイルを扱う際の課題を克服するのに役立ちます。EBCDIC でエンコードされたファイルには、バイナリ形式またはパックド 10 進形式で表されるデータが含まれていることが多く、フィールドは固定長です。最近の x86 ベースのワークロードや分散環境は通常 ASCII でエンコードされたデータを処理し、EBCDIC ファイルを処理できないため、これらの特性は障害となります。

## 前提条件と制限
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Amazon S3 バケット
+ 管理権限を持つ AWS Identity and Access Management (IAM) ユーザー
+ AWS CloudShell
+ [Python 3.8.0](https://www.python.org/downloads/release/python-380/) 以降
+ EBCDIC でエンコードされたフラットファイルと、それに対応するデータ構造を共通ビジネス指向言語 (COBOL) のコピーブックでエンコードしたもの

**注記**  
このパターンでは、サンプルの EBCDIC ファイル ([CLIENT.EBCDIC.txt](https://github.com/aws-samples/mainframe-data-utilities/blob/main/sample-data/CLIENT.EBCDIC.txt)) とそれに対応する COBOL コピーブック ([COBKS05.cpy](https://github.com/aws-samples/mainframe-data-utilities/blob/main/LegacyReference/COBKS05.cpy)) を使用しています。どちらのファイルも GitHub [mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities) リポジトリにあります。

**制限事項**
+ COBOL コピーブックには通常、複数のレイアウト定義があります。「[mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities)」プロジェクトは、この種のコピーブックを解析することはできますが、データ変換時にどのレイアウトを検討すべきかを推測することはできません。これは、コピーブックにはこのロジックがないからです (代わりに COBOL プログラムに残っています)。そのため、コピーブックを解析した後は、レイアウトを選択するルールを手動で設定する必要があります。
+ このパターンには「[Lambda クォータ](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)」が適用されます。

## アーキテクチャ
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-architecture"></a>

**ソーステクノロジースタック**
+ IBM z/OS、IBM i、およびその他の EBCDIC システム
+ EBCDIC でエンコードされたデータを含むシーケンシャル・ファイル (IBM Db2 アンロードなど)
+ COBOL コピーブック

**ターゲットテクノロジースタック**
+ Amazon S3
+ Amazon S3イベント通知
+ IAM
+ Lambda function
+ Python 3.8 以降
+ メインフレームデータユーティリティ
+ JSON メタデータ
+ 文字区切りの ASCII ファイル

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

次の図は、メインフレームの EBCDIC ファイルを ASCII ファイルに変換するアーキテクチャを示しています。

![\[メインフレーム EBCDIC ファイルを ASCII ファイルに変換するアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/97ab4129-2639-4733-86cb-962d91526df4/images/3ca7ca44-373a-434f-8c40-09e7c2abf5ec.png)


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

1. ユーザーはコピーブックパーサースクリプトを実行して、COBOL コピーブックを JSON ファイルに変換します。

1. ユーザーは JSON メタデータを Amazon S3 バケットにアップロードします。これにより、データ変換 Lambda 関数でメタデータを読み取ることができます。

1. ユーザーまたは自動プロセスが、EBCDIC ファイルを Amazon S3 バケットにアップロードします。

1. Amazon S3 通知イベントにより、データ変換 Lambda 関数がトリガーされます。

1. AWS は、Lambda 関数の Amazon S3 バケットの読み取り/書き込みアクセス許可を検証します。

1. Lambda は Amazon S3 バケットからファイルを読み取り、ファイルを EBCDIC から ASCII にローカルに変換します。

1. Lambda はプロセスのステータスを Amazon CloudWatch に記録します。

1. Lambda は ASCII ファイルを Amazon S3 に書き込みます。

**注記**  
コピーブックパーサースクリプトは、JSON 形式へのメタデータ変換を 1 回だけ実行します。その後、ファイルは Amazon S3 バケットに保存されます。最初の変換後、Amazon S3 バケット内の同じ JSON ファイルを参照する後続のすべての EBCDIC ファイルには、既存のメタデータ設定が使用されます。

## ツール
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-tools"></a>

**AWS のサービス**
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) は、 AWS リソースと で実行しているアプリケーションのメトリクスを AWS リアルタイムでモニタリングするのに役立ちます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) はブラウザベースのシェルで、 AWS のサービス AWS Command Line Interface (AWS CLI) とプリインストールされたさまざまな開発ツールを使用して管理できます。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) は、誰を認証し、誰に使用する権限を付与するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。Lambda は必要に応じてコードを実行し、自動的にスケーリングします。

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

**Code**

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

## ベストプラクティス
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-best-practices"></a>

以下のベストプラクティスを考慮します。
+ Amazon リソースネーム (ARN) レベルで設定します。
+ IAM ポリシーには、常に最小権限のアクセス権限を付与してください。詳細については、IAM ドキュメントの「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。

## エピック
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-epics"></a>

### 環境変数と作業フォルダの作成
<a name="create-environment-variables-and-a-working-folder"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 環境変数の作成 | 以下の環境変数をテキストエディタにコピーし、次の例の `<placeholder>` 値を自分のリソースの値に置き換えます。<pre>bucket=<your_bucket_name><br />account=<your_account_number><br />region=<your_region_code></pre>Amazon S3 バケット、 AWS アカウント AWS リージョン 以降への参照を作成します。環境変数を定義するには、[CloudShell コンソール](https://console.aws.amazon.com/cloudshell/)を開き、更新した環境変数をコピーしてコマンドラインに貼り付けます。CloudShell セッションを再開するたびに、このステップを繰り返す必要があります。 | AWS 全般 | 
| 作業フォルダの作成 | 後でリソースをクリーンアップするプロセスを簡略化するには、次のコマンドを実行して CloudShell に作業フォルダを作成します。<pre>mkdir workdir; cd workdir</pre>CloudShell セッションへの接続が失われるたびに、ディレクトリを作業ディレクトリ (`workdir`) に変更する必要があります。 | AWS 全般 | 

### IAM ポリシーと IAM ロールを作成する
<a name="define-an-iam-role-and-policy"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| トリガーのための Lambda 関数を作成します。 | Lambda 関数で EBCDIC コンバーターが実行されます。関数には IAM ロールが必要です。IAM ロールを作成する前に、リソースがそのポリシーを引き継ぐことを可能にする信頼ポリシードキュメントを定義する必要があります。CloudShell 作業フォルダから、次のコマンドを実行してポリシードキュメントを作成します。<pre>E2ATrustPol=$(cat <<EOF<br />{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "Service": "lambda.amazonaws.com"<br />            },<br />            "Action": "sts:AssumeRole"<br />        }<br />    ]<br />}<br />EOF<br />)<br />printf "$E2ATrustPol" > E2ATrustPol.json</pre> | AWS 全般 | 
| Lambda 変換用に IAM ロールを作成する | IAM ロールを作成するには、CloudShell 作業フォルダから次の AWS CLI コマンドを実行します。<pre>aws iam create-role --role-name E2AConvLambdaRole --assume-role-policy-document file://E2ATrustPol.json</pre> | AWS 全般 | 
| Lambda 関数の IAM ポリシードキュメントを作成する | Lambda 関数には、Amazon S3 バケットへの読み取り/書き込みアクセス権限、および Amazon CloudWatch Logs への書き込み権限が必要です。IAM ポリシーを作成するには、CloudShell 作業フォルダから次のコマンドを実行します。<pre>E2APolicy=$(cat <<EOF<br />{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "Logs",<br />            "Effect": "Allow",<br />            "Action": [<br />                "logs:PutLogEvents",<br />                "logs:CreateLogStream",<br />                "logs:CreateLogGroup"<br />            ],<br />            "Resource": [<br />                "arn:aws:logs:*:*:log-group:*",<br />                "arn:aws:logs:*:*:log-group:*:log-stream:*"<br />            ]<br />        },<br />        {<br />            "Sid": "S3",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:GetObject",<br />                "s3:PutObject",<br />                "s3:GetObjectVersion"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::%s/*",<br />                "arn:aws:s3:::%s"<br />            ]<br />        }<br />    ]<br />}<br />EOF<br />)<br />printf "$E2APolicy" "$bucket" "$bucket" > E2AConvLambdaPolicy.json</pre> | AWS 全般 | 
| IAM ポリシーを IAM ロールにアタッチする | IAM ポリシーを IAM ロールにアタッチするには、CloudShell 作業フォルダから次のコマンドを入力します。<pre>aws iam put-role-policy --role-name E2AConvLambdaRole --policy-name E2AConvLambdaPolicy --policy-document file://E2AConvLambdaPolicy.json</pre> | AWS 全般 | 

### EBCDIC 変換用のLambda 関数を作成する
<a name="create-the-lam-function-for-ebcdic-conversion"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EBCDIC 変換ソースコードをダウンロードしてください。 | CloudShell 作業フォルダから次のコマンドを実行して、メインフレームデータユーティリティのソースコードを GitHub からダウンロードします。<pre>git clone https://github.com/aws-samples/mainframe-data-utilities.git mdu</pre> | AWS 全般 | 
| ZIP パッケージの作成 | CloudShell 作業フォルダから次のコマンドを入力して、EBCDIC 変換用の Lambda 関数を作成する ZIP パッケージを作成します。<pre>cd mdu; zip ../mdu.zip *.py; cd ..</pre> | AWS 全般 | 
| Lambda 関数の作成 | CloudShell 作業フォルダから次のコマンドを入力して、EBCDIC 変換用の Lambda 関数を作成します。<pre>aws lambda create-function \<br />--function-name E2A \<br />--runtime python3.9 \<br />--zip-file fileb://mdu.zip \<br />--handler extract_ebcdic_to_ascii.lambda_handler \<br />--role arn:aws:iam::$account:role/E2AConvLambdaRole \<br />--timeout 10 \<br />--environment "Variables={layout=$bucket/layout/}"</pre> 環境変数のレイアウトにより、JSON メタデータの保存場所が Lambda 関数に指示されます。 | AWS 全般 | 
| Lambda 関数のリソースベースのポリシーを作成する | CloudShell 作業フォルダから次のコマンドを入力して、EBCDIC 変換のための Lambda 関数を Amazon S3 イベント通知がトリガーできるようにします。<pre>aws lambda add-permission \<br />--function-name E2A \<br />--action lambda:InvokeFunction \<br />--principal s3.amazonaws.com \<br />--source-arn arn:aws:s3:::$bucket \<br />--source-account $account \<br />--statement-id 1</pre> | AWS 全般 | 

### Amazon S3イベント通知の作成
<a name="create-the-s3-event-notification"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon S3 イベント通知の設定ドキュメントを作成する | Amazon S3 イベント通知は、ファイルが入力フォルダに配置されると EBCDIC 変換 Lambda 関数を開始します。CloudShell 作業フォルダから、次のコマンドを実行して Amazon S3 イベント通知用の JSON ドキュメントを作成します。<pre>S3E2AEvent=$(cat <<EOF<br />{<br />"LambdaFunctionConfigurations": [<br />    {<br />      "Id": "E2A",<br />      "LambdaFunctionArn": "arn:aws:lambda:%s:%s:function:E2A",<br />      "Events": [ "s3:ObjectCreated:Put" ],<br />      "Filter": {<br />        "Key": {<br />          "FilterRules": [<br />            {<br />              "Name": "prefix",<br />              "Value": "input/"<br />            }<br />          ]<br />        }<br />      }<br />    }<br />  ]<br />}<br />EOF<br />)<br />printf "$S3E2AEvent" "$region" "$account" > S3E2AEvent.json</pre> | AWS 全般 | 
| Amazon S3イベント通知を作成する | CloudShell 作業フォルダから次のコマンドを入力して、Amazon S3 イベント通知を作成します。<pre>aws s3api put-bucket-notification-configuration --bucket $bucket --notification-configuration file://S3E2AEvent.json</pre> | AWS 全般 | 

### JSON メタデータの作成とアップロード
<a name="create-and-upload-the-json-metadata"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| COBOL コピーブックの解析 | CloudShell 作業フォルダから以下のコマンドを入力して、サンプル COBOL コピーブックを JSON ファイルに解析します (これにより、データファイルを正しく読み取り、スライスする方法が定義される)。<pre>python3       mdu/parse_copybook_to_json.py \<br />-copybook     mdu/LegacyReference/COBKS05.cpy \<br />-output       CLIENT.json \<br />-output-s3key CLIENT.ASCII.txt \<br />-output-s3bkt $bucket \<br />-output-type  s3 \<br />-print        25</pre> | AWS 全般 | 
| 変換ルールの追加 | サンプルデータファイルとそれに対応する COBOL コピーブックはマルチレイアウトファイルです。つまり、変換では特定のルールに基づいてデータをスライスする必要があります。この場合、各行の 3 番目と 4 番目にあるバイトがレイアウトを定義します。CloudShell 作業フォルダから`CLIENT.json`ファイルを編集し、内容を`"transf-rule": [],`から次のように変更します。<pre>"transf-rule": [<br />{<br />"offset": 4,<br />"size": 2,<br />"hex": "0002",<br />"transf": "transf1"<br />},<br />{<br />"offset": 4,<br />"size": 2,<br />"hex": "0000",<br />"transf": "transf2"<br />}<br />],</pre> | AWS 全般、IBM メインフレーム、Cobol | 
| JSON メタデータを Amazon S3 バケットにアップロードする | CloudShell 作業フォルダから次の AWS CLI コマンドを入力して、JSON メタデータを Amazon S3 バケットにアップロードします。<pre>aws s3 cp CLIENT.json s3://$bucket/layout/CLIENT.json</pre> | AWS 全般 | 

### EBCDIC ファイルの変換
<a name="convert-the-ebcdic-file"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EBCDIC ファイルを Amazon S3 バケットに送信する | CloudShell 作業フォルダから次のコマンドを入力して、EBCDIC ファイルを Amazon S3 バケットに送信します。<pre>aws s3 cp mdu/sample-data/CLIENT.EBCDIC.txt s3://$bucket/input/</pre> ASCII ファイルが Amazon S3 バケットにアップロードされるときに Lambda 変換関数が再度呼び出されないように、入力 (EBCDIC) ファイルと出力 (ASCII) ファイル用に異なるフォルダを設定することをお勧めします。 | AWS 全般 | 
| 出力の確認 | CloudShell 作業フォルダから次のコマンドを入力して、ASCII ファイルが Amazon S3 バケットに生成されているかどうかを確認します。<pre>aws s3 ls s3://$bucket/</pre> データ変換には数秒かかることがあります。ASCII ファイルを何度か確認することをお勧めします。ASCII ファイルが使用可能になったら、次のコマンドを入力して、Amazon S3 バケット内の変換されたファイルの内容を表示します。必要に応じて、このファイルを Amazon S3 バケットからダウンロードするか、または直接使用できます。<pre>aws s3 cp s3://$bucket/CLIENT.ASCII.txt - | head</pre>ASCII ファイルの内容を確認します。<pre>0|0|220|<br />1|1|HERBERT MOHAMED|1958-08-31|BACHELOR|0010000.00|<br />1|2|36|THE ROE AVENUE|<br />2|1|JAYLEN GEORGE|1969-05-29|ELEMENTARY|0020000.00|<br />2|2|365|HEATHFIELD ESPLANADE|<br />3|1|MIKAEEL WEBER|1982-02-17|MASTER|0030000.00|<br />3|2|4555|MORRISON STRAND|<br />4|1|APRIL BARRERA|1967-01-12|DOCTOR|0030000.00|<br />4|2|1311|MARMION PARK|<br />5|1|ALEEZA PLANT|1985-03-01|BACHELOR|0008000.00|</pre> | AWS 全般 | 

### 環境をクリーンアップする
<a name="clean-the-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| (オプション) 変数とフォルダを準備する | CloudShell との接続が失われた場合は、再接続してから次のコマンドを入力して、ディレクトリを作業フォルダに変更します。<pre>cd workdir</pre>環境変数が定義されていることを確認します。<pre>bucket=<your_bucket_name><br />account=<your_account_number><br />region=<your_region_code></pre> | AWS 全般 | 
| バケットの通知設定を削除する | CloudShell 作業フォルダから次のコマンドを実行して、Amazon S3 イベント通知設定を削除します。<pre>aws s3api put-bucket-notification-configuration \<br />--bucket=$bucket \<br />--notification-configuration="{}"</pre> | AWS 全般 | 
| Lambda 関数の削除 | CloudShell 作業フォルダから次のコマンドを入力して、EBCDIC コンバーターの Lambda 関数を削除します。<pre>aws lambda delete-function \<br />--function-name E2A</pre> | AWS 全般 | 
| IAM ロールと IAM ポリシーの削除 | CloudShell 作業フォルダから次のコマンドを入力して、EBCDIC コンバータロールとポリシーを削除します。<pre>aws iam delete-role-policy \<br />--role-name E2AConvLambdaRole \<br />--policy-name E2AConvLambdaPolicy<br /><br />aws iam delete-role \<br />--role-name E2AConvLambdaRole</pre> | AWS 全般 | 
| Amazon S3 バケットで生成されたファイルを削除する | CloudShell 作業フォルダから次のコマンドを入力して、Amazon S3 バケットで生成されたファイルを削除します。<pre>aws s3 rm s3://$bucket/layout --recursive<br />aws s3 rm s3://$bucket/input --recursive<br />aws s3 rm s3://$bucket/CLIENT.ASCII.txt</pre> | AWS 全般 | 
| 作業フォルダの削除 | CloudShell 作業フォルダから次のコマンドを入力して、`workdir` とその内容を削除します。<pre>cd ..; rm -Rf workdir</pre> | AWS 全般 | 

## 関連リソース
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-resources"></a>
+ [メインフレームデータユーティリティのREADME](https://github.com/aws-samples/mainframe-data-utilities/blob/main/README.md) (GitHub)
+ [EBCDIC 文字セット](https://www.ibm.com/docs/en/zos-basic-skills?topic=mainframe-ebcdic-character-set) (IBM ドキュメント)
+ [EBCDIC から ASCII への変換](https://www.ibm.com/docs/en/iis/11.7.0?topic=tables-ebcdic-ascii) (IBM ドキュメント)
+ [COBOL](https://www.ibm.com/docs/en/i/7.6.0?topic=languages-cobol) (IBM ドキュメント)
+ [Amazon S3 トリガーを使用して Lambda 関数を呼び出す](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) (AWS Lambda ドキュメント)

# Micro Focusを使用して複雑なレコードレイアウトのメインフレームデータファイルを変換
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus"></a>

*Peter West (Amazon Web Services)*

## 概要
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-summary"></a>

注: AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization サービス (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[AWS Mainframe Modernization  可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

このパターンは、テキスト以外のデータや複雑なレコードレイアウトを含むメインフレームデータファイルを、Micro Focus 構造ファイルを使用して EBCDIC (拡張バイナリコード 10 進数交換コード) 文字エンコーディングから ASCII (米国情報交換標準コード) 文字エンコーディングに変換する方法を示しています。ファイルの変換を完了するには、以下の手順を実行する必要があります。

1. メインフレーム環境のすべてのデータ項目とレコードレイアウトを記述した単一のソースファイルを準備します。

1. Micro Focus Classic データファイルツールまたはデータファイルツールの一部として Micro Focus データファイルエディタを使用して、データのレコードレイアウトを含む構造ファイルを作成します。構造ファイルはテキスト以外のデータを識別するので、メインフレームファイルをEBCDICからASCIIに正しく変換できます。

1. クラシックデータファイルツールまたはデータファイルツールを使用して構造ファイルをテストします。

## 前提条件と制限
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ Windows 用 Micro Focus エンタープライズデベロッパー、「[AWS Mainframe Modernization](https://aws.amazon.com/mainframe-modernization/)」を通じて利用可能

**製品バージョン**
+ Micro Focus エンタープライズサーバー 7.0 以降

## ツール
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-tools"></a>
+ [Micro Focus エンタープライズデベロッパー](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GUID-8D6B7358-AC35-4DAF-A445-607D8D97EBB2.html)は、エンタープライズデベロッパーのあらゆる統合開発環境 (IDE) バリアントで作成されたアプリケーションの実行環境を提供します。
+ Micro Focus [クラシックデータファイルツール](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GUID-06115324-0FBC-4CB7-BE9D-04BCFEA5821A.html)は、データファイルの変換、ナビゲート、編集、作成に役立ちます。クラシックデータファイルツールには、[データファイルコンバータ](https://www.microfocus.com/documentation/visual-cobol/vc60/VS2017/BKFHFHDFCV.html)、[レコードレイアウトエディタ](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/BKFHFHRLMF.html)、および[データファイルエディタ](https://www.microfocus.com/documentation/visual-cobol/vc60/VS2017/BKFHFHDFED.html)が含まれます。
+ Micro Focus [データファイルツール](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GUID-B1BCB613-6947-451C-8F71-72FB8254076A.html)はデータファイルの作成、編集、移動に役立ちます。データファイルツールには、[データファイルエディタ](https://www.microfocus.com/documentation/visual-cobol/vc60/VS2017/BKFHFHDFED.html)、[ファイル変換ユーティリティ](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/BKFHFHCONV.html)、および[データファイル構造コマンドラインユーティリティ](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GUID-E84348EB-A93A-481A-A47C-61B0E1C076E6.html)が含まれます。

## エピック
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-epics"></a>

### ソースファイルの準備
<a name="prepare-the-source-file"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースコンポーネントを特定する。 | テキスト以外のデータを含む再定義を含め、ファイルで使用できるすべてのレコードレイアウトを特定します。再定義を含むレイアウトがある場合は、それらのレイアウトを、データ構造の各組み合わせを説明する固有のレイアウトに因数分解する必要があります。通常、データファイルのレコードレイアウトは次の原型で記述できます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html)複雑なレコードレイアウトを含むファイルのフラット化されたレコードレイアウトの作成について詳しくは、「[メインフレーム移行のための ASCII 環境でのEBCDICアプリケーションの再ホスト](https://docs.aws.amazon.com/prescriptive-guidance/latest/mainframe-rehost-ebcdic-ascii/introduction.html)」を参照してください。 | アプリ開発者 | 
| レコードレイアウトの条件を特定する。 | 複数のレコード レイアウトを持つファイル、またはリデファイン節を持つ複雑なレイアウトを含むファイルでは、変換中に使用するレイアウトを定義するために使用できるレコード内のデータと条件を特定します。この作業については、これらのファイルを処理するプログラムを理解している対象分野の専門家 (SME) と話し合うことをお勧めします。たとえば、1 つのファイルに、テキスト以外のデータを含む 2 つのレコードタイプが含まれている場合があります。ソースを調べると、以下のようなコードが見つかる可能性があります。<pre>MOVE "M" TO PART-TYPE<br /> MOVE "MAIN ASSEMBLY" TO PART-NAME<br />MOVE "S" TO PART-TYPE<br /> MOVE "SUB ASSEMBLY 1" TO PART-NAME</pre>このコードは、以下の識別に役立ちます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html)このフィールドで使用される値を文書化して、レコードレイアウトをファイル内の正しいデータレコードに関連付けることができます。 | アプリ開発者 | 
| ソースファイルをビルドします。 | ファイルが複数のソースファイルにまたがって記述されている場合、またはレコードレイアウトに REDEFINES 句に従属する非テキストデータが含まれている場合は、レコードレイアウトを含む新しいソースファイルを作成します。新しいプログラムでは、SELECT ステートメントと FD ステートメントを使用してファイルを記述する必要はありません。このプログラムでは、レコードの説明をワーキングストレージ内に 01 レベルとして格納するだけで済みます。データファイルごとにソースファイルを作成することも、すべてのデータファイルを記述したマスターソースファイルを作成することもできます。 | アプリ開発者 | 
| ソースコードをコンパイルします。 | ソースファイルをコンパイルしてデータディクショナリを構築します。EBCDIC 文字セットを使用してソースファイルをコンパイルすることをお勧めします。IBMCOMP ディレクティブまたは ODOSLIDE ディレクティブを使用している場合は、ソースファイルでもこれらのディレクティブを使用する必要があります。IBMCOMP は COMP フィールドのバイトストレージに影響し、ODOSLIDE は OCCURS VARYING 構造のパディングに影響します。これらのディレクティブが正しく設定されていないと、変換ツールはデータレコードを正しく読み込めません。その結果、変換されたファイルのデータが不正になります。 | アプリ開発者 | 

### (オプション A) クラシックデータファイルツールを使用して構造ファイルを作成します。
<a name="option-a-create-the-structure-file-using-classic-data-file-tools"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ツールを起動し、辞書をロードします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | アプリ開発者 | 
| デフォルトのレコードレイアウトを作成します。 | どの条件付きレイアウトにも一致しないすべてのレコードには、デフォルトのレコードレイアウトを使用してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html)デフォルトレイアウトは「**レイアウト**」ペインに表示され、赤いフォルダアイコンで識別できます。 | アプリ開発者 | 
| 条件付きレコードレイアウトを作成します。 | 条件付きレコードレイアウトは、1 つのファイルに複数のレコードレイアウトがある場合に使用します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | アプリ開発者 | 

### (オプション B) データファイルツールを使用して構造ファイルを作成します。
<a name="option-b-create-the-structure-file-using-data-file-tools"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ツールを起動し、辞書をロードします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | アプリ開発者 | 
| デフォルトのレコードレイアウトを作成します。 | どの条件付きレイアウトにも一致しないすべてのレコードには、デフォルトのレコードレイアウトを使用してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html)**[レイアウト]** ペインにデフォルトレイアウトが表示され、青い「D」アイコンで識別されます。 | アプリ開発者 | 
| 条件付きレコードレイアウトを作成します。 | 条件付きレコードレイアウトは、1 つのファイルに複数のレコードレイアウトがある場合に使用します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | アプリ開発者 | 

### (オプション A) クラシックデータファイルツールを使用して構造ファイルをテストします。
<a name="option-a-test-the-structure-file-using-classic-data-file-tools"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EBCDIC データファイルをテストする。 | 構造ファイルを使用して EBCDIC テストデータファイルを正しく表示できることを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | アプリ開発者 | 

### (オプション B) データファイルツールを使用して構造ファイルをテストします。
<a name="option-b-test-the-structure-file-using-data-file-tools"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EBCDIC データファイルをテストする。 | 構造ファイルを使用して EBCDIC テストデータファイルを正しく表示できることを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | アプリ開発者 | 

### データファイルの変換をテストします。
<a name="test-data-file-conversion"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EBCDIC ファイルの変換をテストします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | アプリ開発者 | 

## 関連リソース
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-resources"></a>
+ [マイクロフォーカス](https://www.microfocus.com/en-us/products/enterprise-suite/overview) (Micro Focus ドキュメンテーション)
+ [メインフレームとレガシーコード](https://aws.amazon.com/blogs/?awsf.blog-master-category=category%23mainframe-and-legacy) (AWS ブログ投稿)
+ [AWS 規範ガイダンス](https://docs.aws.amazon.com/prescriptive-guidance/) (AWS ドキュメント)
+ [AWS ドキュメント](https://docs.aws.amazon.com/index.html) (AWS ドキュメント)
+ [AWS ジェネラルリファレンス](https://docs.aws.amazon.com/general/latest/gr/Welcome.html) (AWS ドキュメント)
+ [AWS 用語集](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html) (AWS ドキュメント)

# Terraform を使用して、コンテナ化された Blu Age アプリケーションの環境をデプロイする
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform"></a>

*Richard Milner-Watts (Amazon Web Services)*

## 概要
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-summary"></a>

従来のメインフレームワークロードを最新のクラウドアーキテクチャに移行することで、メインフレームを維持するコストを削減できます。このコストは、環境が古くなるにつれて増加する一方です。ただし、メインフレームからジョブを移行することには固有の課題があります。社内リソースはジョブのロジックに慣れていないかもしれませんし、こうした特殊なタスクでメインフレームの高いパフォーマンスを発揮することは、市販の一般的な CPU と比較すると再現するのが難しい場合があります。これらのジョブを書き直すのは大変な作業で、多大な労力を必要とします。

Blu Age は従来のメインフレームワークロードを最新の Java コードに変換し、それをコンテナとして実行できます。

このパターンは、Blu Age ツールでモダナイズされたコンテナ化されたアプリケーションを実行するサンプルサーバーレスアーキテクチャです。付属の HashiCorp Terraform ファイルは、バッチタスクとリアルタイムサービスの両方をサポートし、Blu Age コンテナのオーケストレーションの安全なアーキテクチャを構築します。

Blu Age と AWS のサービスを使用してワークロードをモダナイズする方法の詳細については、以下の AWS 規範ガイダンス出版物を参照してください。
+ [Blu Age でモダナイズされたメインフレームワークロードを AWS のサーバーレスインフラストラクチャ上で実行する](https://docs.aws.amazon.com/prescriptive-guidance/latest/run-bluage-modernized-mainframes/)
+ [Blu Age によってモダナイズされたメインフレームワークロードをコンテナ化する](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html)

Blu Ageを使用してメインフレームワークロードをモダナイズする方法については、[Blu Age の Web サイト](https://www.bluage.com/)で [**Contact our experts（専門家に連絡）**] を選択して、Blu Age チームにお問い合わせください。最新のワークロードを AWS に移行したり、AWS のサービスと統合したり、それらを本番環境に移行したりするためのサポートが必要な場合は、AWS アカウントマネージャーにお問い合わせいただくか、[AWS プロフェッショナルサービスフォーム](https://pages.awscloud.com/AWS-Professional-Services.html)にご記入ください。

## 前提条件と制限
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-prereqs"></a>

**前提条件**
+ [Blu Age によってモダナイズされたメインフレームのコンテナ化](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html)パターンによって提供された、コンテナ化された Blu Age アプリケーションのサンプル。サンプルアプリケーションには、最新化されたアプリケーションの入出力処理を処理するロジックが用意されており、このアーキテクチャと統合できます。
+ これらのリソースをデプロイするには Terraform が必要です。

**制限**
+ Amazon Elastic Container Service (Amazon ECS) は、コンテナで使用可能なタスクリソースに制限を設けます。これらのリソースには CPU、RAM、ストレージが含まれます。たとえば、Amazon ECS を AWS Fargate で使用する場合は、[タスクリソースの制限が適用されます](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)。

**製品バージョン**

このソリューションは次のバージョンでテスト済みです。
+ Terraform 1.3.6
+ Terraform AWS Provider 4.46.0

## アーキテクチャ
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-architecture"></a>

**ソーステクノロジースタック**
+ Blu Age
+ Terraform

**ターゲットテクノロジースタック**
+ Amazon Aurora PostgreSQL 互換エディション
+ AWS Backup
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon ECS
+ AWS Identity and Access Management (IAM)
+ AWS Key Management Service (AWS KMS)
+ AWS Secrets Manager
+ Amazon Simple Notiﬁcation Service (Amazon SNS)
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Step Functions
+ AWS Systems Manager

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

ソリューションアーキテクチャを次の図に示します。

![\[図の説明を次に示します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/12825490-2622-4f0b-80c9-2c5076d50fa3/images/c0708b0a-aa36-458a-8d6c-d42e3dec7727.png)


1. このソリューションは次の IAM ロールをデプロイします。
   + バッチタスクロール
   + バッチタスク実行ロール
   + サービスタスクロール
   + サービスタスク実行ロール
   + 段階関数ロール
   + AWS Backup ロール
   + RDS 拡張モニタリングロール

   ロールは最小特権アクセスの原則に準拠しています。

1. Amazon ECR は、このパターンによってオーケストレーションされたコンテナイメージの保存に使用されます。

1. AWS Systems Manager Parameter Store は、実行時に各環境に関する設定データを Amazon ECS タスク定義に提供します。

1. AWS Secrets Manager は、ランタイムに各環境に関する機密設定データを Amazon ECS タスク定義に提供します。データは AWS KMS によって暗号化されています。

1. Terraform モジュールは、すべてのリアルタイムタスクとバッチタスクの Amazon ECS タスク定義を作成します。

1. Amazon ECS は、コンピュートエンジンとして AWS Fargate を使用してバッチタスクを実行します。これは短寿命のタスクで、必要に応じて AWS Step Functions によって開始されます。

1. Amazon Aurora PostgreSQL 互換は、モダナイズされたアプリケーションをサポートするデータベースを提供します。これは IBM Db2 または IBM IMS DB などのメインフレームデータベースに代わるものです。

1. Amazon ECS は長寿命のサービスを実行して、最新のリアルタイムワークロードを提供します。これらのステートレスアプリケーションは、アベイラビリティーゾーンに分散されたコンテナで永続的に実行されます。

1. Network Load Balancer は、リアルタイムワークロードへのアクセス権付与に使用されます。Network Load Balancer は、IBM CICS などの旧プロトコルをサポートしています。または、HTTP ベースのワークロードで Application Load Balancer を使用できます。

1. Amazon S3 は、ジョブの入出力用のオブジェクトストレージを提供します。コンテナは Amazon S3 へのプル操作とプッシュ操作を処理して、Blu Age アプリケーションの作業ディレクトリを準備する必要があります。

1. AWS Step Functions サービスは、Amazon ECS タスクの実行を調整してバッチワークロードを処理するために使用されます。

1. 各バッチワークロードの SNS トピックは、モダナイズされたアプリケーションを E メールなどの他のシステムと統合、Amazon S3 から FTP への出力オブジェクトの配信などの追加アクションの開始に使用されます。

**注記**  
デフォルトでは、ソリューションはインターネットにアクセスできません。このパターンは、仮想プライベートクラウド (VPC) が [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/) などのサービスを使用して他のネットワークに接続されることを前提としています。そのため、ソリューションが使用する AWS サービスへのアクセスを付与するために、複数のインターフェイス VPC エンドポイントがデプロイされます。インターネットへの直接アクセスを有効にするために、Terraform モジュールのトグルを使用して VPC エンドポイントをインターネットゲートウェイと関連リソースに置き換えできます。

**自動化とスケール**

このパターン全体でサーバーレスリソースを使用することで、スケールアウトによって設計の規模にほとんど制限がないことを確認できます。これにより、元のメインフレームで体験する可能性のあるコンピュートリソースの競合など、*近隣のノイズ懸念*が軽減されます。バッチタスクは、必要に応じて同時に実行するようスケジュールできます。

各コンテナは、Fargate がサポートしている最大サイズで制限されます。詳細については、Amazon ECS ドキュメントの[https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html#fargate-tasks-size](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html#fargate-tasks-size)セクションを参照してください。

[リアルタイムワークロードを水平方向にスケール](https://nathanpeck.com/amazon-ecs-scaling-best-practices/)するために、コンテナを追加できます。

## ツール
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-tools"></a>

**AWS のサービス**
+ [Amazon Aurora PostgreSQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)は、PostgreSQL デプロイのセットアップ、運用、スケーリングに役立つ、フルマネージド型のACID準拠のリレーショナルデータベースエンジンです。
+ [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) は、データ保護をクラウド、オンプレミス AWS のサービス、および 間で一元化および自動化するのに役立つフルマネージドサービスです。
+ 「[Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)」 は、セキュリティ、スケーラビリティ、信頼性を備えたマネージドコンテナイメージレジストリサービスです。
+ 「[Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)」 は、クラスターでのコンテナの実行、停止、管理を支援する、高速でスケーラブルなコンテナ管理サービスです。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) は、誰を認証し、誰に使用を認可するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) は、データの保護に役立つ暗号キーを作成および管理する上で役立ちます。
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) は、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールに置き換えて、シークレットをプログラムで取得する上で役立ちます。
+ 「[Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)」は、ウェブサーバーやメールアドレスなど、パブリッシャーとクライアント間のメッセージの交換を調整および管理するのに役立ちます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) は、 AWS Lambda 関数やその他の を組み合わせてビジネスクリティカルなアプリケーション AWS のサービス を構築するのに役立つサーバーレスオーケストレーションサービスです。
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) は､設定データ管理とシークレット管理用の安全な階層型ストレージを提供します。

**その他のサービス**
+ [HashiCorp Terraform](https://www.terraform.io/docs) は、コードを使用してクラウドインフラストラクチャとリソースを割り当てて管理するのに役立つ Infrastructure as Code (IaC) ツールです。このパターンでは、Terraform を使用してサンプルアーキテクチャを作成します。

**コードリポジトリ**

このパターンのソースコードは、GitHub [Blu Age サンプル ECS インフラストラクチャ (Terraform)](https://github.com/aws-samples/aws-blu-age-sample-ecs-infrastructure-using-terraform#aws-blu-age-sample-ecs-infrastructure-terraform) リポジトリにあります。

## ベストプラクティス
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-best-practices"></a>
+ テスト環境では、最新のアプリケーションを設定する `forceDate` オプションなどの機能を使用して、既知の期間に常に実行することで一貫したテスト結果を生成します。
+ 各タスクを個別に調整して、最適な量のリソースを消費します。[Amazon CloudWatch Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html) を使用すると、潜在的なボトルネックに関するガイダンスを取得できます。

## エピック
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-epics"></a>

### デプロイの環境を準備する
<a name="prepare-the-environment-for-deployment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソリューションソースコードを複製します。 | [GitHub プロジェクト](https://github.com/aws-samples/aws-blu-age-sample-ecs-infrastructure-using-terraform)からソリューションコードを複製します。 | DevOps エンジニア | 
| Terraform の状態を保存するリソースをデプロイして、環境をブートストラップします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html) | DevOps エンジニア | 

### ソリューションインフラストラクチャをデプロイする
<a name="deploy-the-solution-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Terraform の設定を確認および更新します。 | ルートディレクトリで `main.tf,` ファイルを開き、内容を確認し、以下の更新を検討します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html) | DevOps エンジニア | 
| Terraform ファイルをデプロイします。 | ターミナルから、`terraform apply` コマンドを実行してすべてのリソースをデプロイします。Terraform によって生成された変更を確認し、**はい**と入力してビルドを開始します。このインフラストラクチャのデプロイには 15 分以上かかる場合がある点に注意してください。 | DevOps エンジニア | 

### (オプション) 有効な Blu Age コンテナ化アプリケーションをデプロイする
<a name="optional-deploy-a-valid-blu-age-containerized-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Blu Age コンテナイメージを Amazon ECR にプッシュします。 | 前のエピックで作成した Amazon ECR リポジトリにコンテナをプッシュします。手順については、[Amazon ECR ドキュメント](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)を参照してください。コンテナイメージの URI を書き留めます。 | DevOps エンジニア | 
| Blu Age のコンテナイメージを参照する Terraform を更新します。 | アップロードしたコンテナイメージを参照する、`main.tf`** ** ファイルを更新します。 | DevOps エンジニア | 
| Terraform ファイルを再デプロイします。 | ターミナルから `terraform apply` を実行して、すべてのリソースをデプロイします。Terraform から提案された更新を確認してから、**はい**と入力してデプロイを続行します。 | DevOps エンジニア | 

## 関連リソース
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-resources"></a>
+ [Blu Age](https://www.bluage.com/)
+ [Blu Age でモダナイズされたメインフレームワークロードを AWS のサーバーレスインフラストラクチャ上で実行する](https://docs.aws.amazon.com/prescriptive-guidance/latest/run-bluage-modernized-mainframes/)
+ [Blu Age によってモダナイズされたメインフレームワークロードをコンテナ化する](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html)

# Quick Sight で AWS Mainframe Modernization と Amazon Q を使用して Db2 z/OS データインサイトを生成する
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight"></a>

*Amazon Web Services、Shubham Roy、Roshna Razack、Santosh Kumar Singh*

## 概要
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-summary"></a>

注: AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) に似た機能については、 AWS Mainframe Modernization サービス (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[AWS Mainframe Modernization  可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

組織がビジネスクリティカルなデータを IBM Db2 メインフレーム環境でホストしている場合、そのデータからインサイトを得ることは、成長とイノベーションを促進するために不可欠です。メインフレームデータをロック解除することで、迅速、安全、スケーラブルなビジネスインテリジェンスを構築し、Amazon Web Services (AWS) クラウドでデータ駆動型の意思決定、成長、イノベーションを加速することができます。

このパターンでは、ビジネスインサイトを生成し、IBM Db2 for z/OS テーブル内のメインフレームデータから共有可能な説明文を作成するためのソリューションを示します。メインフレームデータの変更は、[AWS Mainframe Modernization Data Replication with Precisely](https://docs.aws.amazon.com/m2/latest/userguide/precisely.html) を使用して [Amazon Managed Streaming for Apache Kafka (Amazon MSK)](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) トピックにストリーミングされます。[Amazon Redshift ストリーミング取り込み](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-streaming-ingestion.html)を使用すると、Amazon MSK トピックデータは Amazon Quick Sight での分析のために [Amazon Redshift Serverless](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-whatis.html) データウェアハウステーブルに保存されます。

Quick Sight でデータが利用可能になったら、[Amazon Q in Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/quicksight-gen-bi.html) で自然言語プロンプトを使用して、データの概要を作成し、質問し、データストーリーを生成することができます。SQL クエリを記述したり、ビジネスインテリジェンス (BI) ツールを学習したりする必要はありません。

**ビジネスコンテキスト**

このパターンでは、メインフレームデータ分析とデータインサイトのユースケースのソリューションを示します。パターンを使用して、会社のデータのビジュアルダッシュボードを構築します。このソリューションを実証するために、このパターンでは、米国のメンバーに医療的、歯科的、眼科的なプランを提供する医療会社を使用しています。この例では、メンバーの人口統計データとプラン情報が IBM Db2 for z/OS データテーブルに保存されます。ビジュアルダッシュボードでは以下について確認できます。
+ リージョン別のメンバーの分布
+ 性別別のメンバーの分布
+ 年齢別のメンバーの分布
+ プランタイプ別のメンバーの分布
+ 予防接種を完了していないメンバー

リージョン別のメンバーの分布と、予防接種を完了していないメンバーの例については、「追加情報」セクションを参照してください。

ダッシュボードを作成したら、前の分析からのインサイトを示すデータストーリーを生成します。データストーリーでは、予防接種を完了したメンバーの数を増やすための推奨事項を提供します。

## 前提条件と制限
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-prereqs"></a>

**前提条件**
+ アクティブ AWS アカウント。このソリューションは、Amazon Elastic Compute Cloud (Amazon EC2) の Amazon Linux 2 で構築およびテストされました。
+ サブネットを持つ仮想プライベートクラウド (VPC) にメインフレームシステムからアクセスできること。
+ ビジネスデータを含むメインフレームデータベース。このソリューションの構築とテストに使用されるデータの例については、「*添付ファイル*」セクションを参照してください。
+ Db2 z/OS テーブルで変更データキャプチャ (CDC) が有効になっていること。Db2 z/OS で CDC を有効にするには、[IBM のドキュメント](https://www.ibm.com/docs/en/daafz/7.5?topic=cdc-enabling-data-capture-changes)を参照してください。
+ ソースデータベースをホストしている z/OS システムに Precisely Connect CDC for z/OS がインストールされていること。Precisely Connect CDC for z/OS イメージは、[AWS Mainframe Modernization – Data Replication for IBM z/OS](https://aws.amazon.com/marketplace/pp/prodview-doe2lroefogia?applicationId=AWSMPContessa&ref_=beagle&sr=0-1) Amazon マシンイメージ (AMI) 内の zip ファイルとして提供されます。Precisely Connect CDC for z/OS をメインフレームにインストールするには、[Precisely のインストールドキュメント](https://help.precisely.com/r/AWS-Mainframe-Modernization/Latest/en-US/AWS-Mainframe-Modernization-Data-Replication-for-IBM-z/OS/Install-Precisely-Connect-CDC-z/OS)を参照してください。

**制限事項**
+ メインフレーム Db2 データは、Precisely Connect CDC でサポートされているデータ型である必要があります。サポートされているデータ型のリストについては、[Precisely Connect CDC のドキュメント](https://help.precisely.com/r/AWS-Mainframe-Modernization/Latest/en-US/AWS-Mainframe-Modernization-Data-Replication-for-IBM-z/OS/Data-replication-overview/Supported-source-data-types)を参照してください。
+ Amazon MSK のデータは、Amazon Redshift でサポートされているデータ型である必要があります。サポートされているデータ型のリストについては、[Amazon Redshift のドキュメント](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html)を参照してください。
+ Amazon Redshift には、データ型ごとに異なる動作とサイズ制限があります。詳細については、[Amazon Redshift のドキュメント](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-streaming-ingestion.html#materialized-view-streaming-ingestion-limitations)を参照してください。
+ Quick Sight のほぼリアルタイムのデータは、Amazon Redshift データベースに設定された更新間隔によって異なります。
+ 一部の AWS のサービス は では使用できません AWS リージョン。リージョンの可用性については、「[AWS のサービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。Amazon Q in Quick Sight は現在、Quick Sight をサポートするすべてのリージョンで利用できるわけではありません。特定のエンドポイントについて確認するには、「[Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」ページを参照し、サービスのリンクを選択してください。

**製品バージョン**
+ AWS Mainframe Modernization Precisely バージョン 4.1.44 によるデータレプリケーション
+ Python バージョン 3.6 以降
+ Apache Kafka バージョン ** **3.5.1

## アーキテクチャ
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-architecture"></a>

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

次の図に、[AWS Mainframe Modernization Data Replication with Precisely](https://aws.amazon.com/mainframe-modernization/capabilities/data-replication/) と Amazon Q in Quick Sight を使用して、メインフレームデータからビジネスインサイトを生成するためのアーキテクチャを示します。

![\[z/OS メインフレームから Amazon QuickSight への 7 ステップのプロセス。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/cddb6d20-14ae-4276-90d8-14df435db824.png)


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

1. Precisely ログリーダーエージェントが Db2 ログからデータを読み取り、メインフレームの OMVS ファイルシステムの一時ストレージに書き込みます。

1. パブリッシャーエージェントが一時ストレージから未処理の Db2 ログを読み取ります。

1. オンプレミスコントローラーデーモンが、オペレーションの認証、認可、モニタリング、管理を行います。

1. 事前設定された AMI を使用して、Apply エージェントが Amazon EC2 にデプロイされます。TCP/IP を使用し、コントローラーデーモンを介してパブリッシャーエージェントに接続されます。Apply エージェントは、高スループットを実現するため、複数のワーカーを使用してデータを Amazon MSK にプッシュします。

1. ワーカーが、データを JSON 形式で Amazon MSK トピックに書き込みます。レプリケートされたメッセージの中間ターゲットとして、Amazon MSK は高可用性と自動フェイルオーバー機能を備えています。

1. Amazon Redshift ストリーミング取り込み機能により、Amazon MSK から Amazon Redshift Serverless データベースへの高速・低遅延のデータインジェストを実行します。Amazon Redshift のストアドプロシージャは、Amazon Redshift テーブルへのメインフレームデータの変更 (挿入/更新/削除) を調整します。これらの Amazon Redshift テーブルは、Quick Sight のためのデータ分析ソースとして機能します。

1. ユーザーが、分析とインサイトのために Quick Sight のデータにアクセスします。Amazon Q in Quick Sight を使用して、自然言語プロンプトを使用してデータを操作できます。

## ツール
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-tools"></a>

**AWS のサービス**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。必要な数の仮想サーバーを起動し、迅速なスケールアップおよびスケールダウンができます。
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) は、データの保護に役立つ暗号化キーの作成と制御に役立ちます。
+ 「[Amazon Managed Streaming for Apache Kafka (Amazon MSK)](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html)」 は、Apache Kafka を使ってストリーミングデータを処理するアプリケーションを、構築および実行することを支援するフルマネージドサービスです。
+ [Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) は、視覚化、分析、レポート生成に使用できるクラウドスケールのビジネスインテリジェンス (BI) サービスです。このパターンでは、Amazon Q in Quick Sight の生成 BI 機能を使用します。
+ [Amazon Redshift Serverless](https://aws.amazon.com/redshift/redshift-serverless/) は Amazon Redshift のサーバーレスオプションであり、データウェアハウスインフラストラクチャの設定と管理を行わなくても、数秒で分析の実行とスケーリングをより効率的に行うことができます。
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) を使用すると、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールで置き換えて、プログラムでシークレットを取得することができます。

**その他のツール**
+ [Precisely Connect CDC](https://support.precisely.com/products/connect-cdc-formerly-sqdata/) は、レガシーシステムからデータを収集し、クラウドおよびデータプラットフォームに統合します。

**コードリポジトリ**

このパターンのコードは、GitHub 内の 「[Mainframe\$1DataInsights\$1change\$1data\$1reconciliation](https://github.com/aws-samples/Mainframe_DataInsights_change_data_reconcilition)」リポジトリで入手できます。このコードは、Amazon Redshift のストアドプロシージャです。このストアドプロシージャは、Amazon MSK から Amazon Redshift テーブルへのメインフレームデータの変更 (挿入、更新、削除) を調整します。これらの Amazon Redshift テーブルは、Quick Sight のためのデータ分析ソースとして機能します。

## ベストプラクティス
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-best-practices"></a>
+ Amazon MSK クラスターをセットアップするときは、[ベストプラクティス](https://docs.aws.amazon.com/msk/latest/developerguide/bestpractices.html)に従ってください。
+ パフォーマンスを改善するには、Amazon Redshift の「[パフォーマンス改善に向けたデータ解析のベストプラクティス](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-streaming-ingestion.html#materialized-view-streaming-recommendations)」に従ってください。
+ Precisely セットアップ用の AWS Identity and Access Management (IAM) ロールを作成するときは、最小特権の原則に従い、タスクの実行に必要な最小限のアクセス許可を付与します。詳細については、IAM ドキュメントの「[最小限の特権を認める。](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv)」と「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。

## エピック
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-epics"></a>

### Amazon EC2 で Precisely を使用して AWS Mainframe Modernization データレプリケーションを設定する
<a name="set-up-m2long-data-replication-with-precisely-on-ec2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| セキュリティグループをセットアップする。 | コントローラーデーモンと Amazon MSK クラスターに接続するには、EC2 インスタンス用の[セキュリティグループを作成します](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html)。以下のインバウンドルールおよびアウトバウンドルールを追加します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)セキュリティグループの名前を書き留めておきます。この名前は、EC2 インスタンスを起動し、Amazon MSK クラスターを設定するときに参照する必要があります。 | DevOps エンジニア、AWS DevOps | 
| IAM ポリシーと IAM ロールを作成する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | DevOps エンジニア、AWS システム管理者 | 
| EC2 インスタンスをプロビジョニングする。 | Precisely CDC を実行して Amazon MSK に接続するように EC2 インスタンスをプロビジョニングするには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | AWS 管理者、DevOps エンジニア | 

### Amazon MSK をセットアップする
<a name="set-up-msk"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon MSK クラスターを作成します。 | Amazon MSK クラスターを作成するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)一般的なプロビジョニング済みクラスターの作成には最大 15 分かかります。クラスターが作成されると、そのステータスは**作成中**から**アクティブ**に変わります。 | AWS DevOps、クラウド管理者 | 
| SASL/SCRAM 認証をセットアップする。 | Amazon MSK クラスターの SASL/SCRAM 認証をセットアップするには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | クラウドアーキテクト | 
| Amazon SNS トピックを作成する。 | Amazon MSK トピックを作成するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | クラウド管理者 | 

### Amazon EC2 で Precisely Apply Engine を設定する
<a name="configure-the-precisely-apply-engine-on-ec2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データ変更をレプリケートするように Precisely スクリプトをセットアップする。 | 変更されたデータをメインフレームから Amazon MSK トピックにレプリケートするように Precisely Connect CDC スクリプトをセットアップするには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html).ddl ファイルの例は、「[追加情報](#generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-additional)」セクションを参照してください。 | アプリ開発者、クラウドアーキテクト | 
| ネットワーク ACL キーを生成する。 | ネットワークアクセスコントロールリスト (ネットワーク ACL) キーを生成するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | クラウドアーキテクト、AWS DevOps | 

### メインフレームのソース環境を準備する
<a name="prepare-the-mainframe-source-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ISPF 画面でデフォルトを設定する。 | Interactive System Productivity Facility (ISPF) でデフォルト設定を設定するには、[Precisely ドキュメント](https://help.precisely.com/r/AWS-Mainframe-Modernization/Latest/en-US/AWS-Mainframe-Modernization-Data-Replication-for-IBM-z/OS/Install-Precisely-Connect-CDC-z/OS/Start-ISPF-Panel-Interface)の指示に従います。 | メインフレームシステム管理者 | 
| コントローラーデーモンを設定する。 | コントローラーデーモンを設定するには、以下を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | メインフレームシステム管理者 | 
| Configure the publisher。 | パブリッシャーを設定するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | メインフレームシステム管理者 | 
| デーモン設定ファイルを更新する。 | コントローラーデーモン設定ファイルのパブリッシャーの詳細を更新するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | メインフレームシステム管理者 | 
| コントローラーデーモンを開始するジョブを作成する。 | ジョブを作成するには、以下の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | メインフレームシステム管理者 | 
| キャプチャパブリッシャー JCL ファイルを生成する。 | キャプチャパブリッシャー JCL ファイルを生成するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | メインフレームシステム管理者 | 
| CDC を確認して更新する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | メインフレームシステム管理者 | 
| JCL ファイルを送信する。 | 前のステップで設定した次の JCL ファイルを送信します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)JCL ファイルが送信されれば、EC2 インスタンスで Precisely の Apply Engine を起動できるようになります。 | メインフレームシステム管理者 | 

### CDC を実行して検証する
<a name="run-and-validate-cdc"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Apply Engine を起動し、CDC を検証する。 | EC2 インスタンスで Apply Engine を起動し、CDC を検証するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | クラウドアーキテクト、アプリ開発者 | 
| Amazon MSK トピックのレコードを検証する。 | Kafka トピックからメッセージを読み取るには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | アプリ開発者、クラウドアーキテクト | 

### Amazon Redshift Serverless データウェアハウスにメインフレーム変更データを保存する
<a name="store-mainframe-change-data-in-an-rsslong-data-warehouse"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Redshift Serverless を設定する。 | Amazon Redshift Serverless データウェアハウスを作成するには、[AWS ドキュメント](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html)の指示に従います。Amazon Redshift Serverless ダッシュボードで、名前空間とワークグループが作成され、使用可能であることを確認します。このパターン例では、プロセスに 2～5 分かかる場合があります。 | データエンジニア | 
| ストリーミング取り込みに必要な IAM ロールと信頼ポリシーをセットアップする。 | Amazon MSK からの Amazon Redshift Serverless ストリーミング取り込みをセットアップするには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | データエンジニア | 
| Amazon Redshift Serverless を Amazon MSK に接続する。 | Amazon MSK トピックに接続するには、Amazon Redshift Serverless で外部スキーマを作成します。Amazon Redshift Query Editor V2 で、次の SQL コマンドを実行します。`'iam_role_arn'` は、前に作成したロールに置き換え、`'MSK_cluster_arn` はクラスターの ARN に置き換えてください。<pre>CREATE EXTERNAL SCHEMA member_schema<br />FROM MSK<br />IAM_ROLE 'iam_role_arn'<br />AUTHENTICATION iam<br />URI 'MSK_cluster_arn';</pre> | 移行エンジニア | 
| マテリアライズドビューを作成する。 | Amazon Redshift Serverless で Amazon MSK トピックのデータを使用するには、マテリアライズドビューを作成します。Amazon Redshift Query Editor V2 で、次の SQL コマンドを実行します。`<MSK_Topic_name>` は、Amazon MSK トピックの名前に置き換えてください。<pre>CREATE MATERIALIZED VIEW member_view<br />AUTO REFRESH YES<br />AS SELECT<br />kafka_partition, <br />kafka_offset, <br />refresh_time, <br />json_parse(kafka_value) AS Data<br />FROM member_schema.<MSK_Topic_name><br />WHERE CAN_JSON_PARSE(kafka_value); <br /></pre> | 移行エンジニア | 
| Amazon Redshift でターゲットテーブルを作成する。 | Amazon Redshift テーブルは、Quick Sight の入力となります。このパターンでは、メインフレームのソース Db2 テーブルと一致するテーブル `member_dtls` と `member_plans` を使用します。Amazon Redshift で 2 つのテーブルを作成するには、Amazon Redshift Query Editor V2 で次の SQL コマンドを実行します。<pre>-- Table 1: members_dtls<br />CREATE TABLE members_dtls (<br /> memberid INT ENCODE AZ64,<br /> member_name VARCHAR(100) ENCODE ZSTD,<br /> member_type VARCHAR(50) ENCODE ZSTD,<br /> age INT ENCODE AZ64,<br /> gender CHAR(1) ENCODE BYTEDICT,<br /> email VARCHAR(100) ENCODE ZSTD,<br /> region VARCHAR(50) ENCODE ZSTD<br />) DISTSTYLE AUTO;<br /><br />-- Table 2: member_plans<br />CREATE TABLE member_plans (<br /> memberid INT ENCODE AZ64,<br /> medical_plan CHAR(1) ENCODE BYTEDICT,<br /> dental_plan CHAR(1) ENCODE BYTEDICT,<br /> vision_plan CHAR(1) ENCODE BYTEDICT,<br /> preventive_immunization VARCHAR(50) ENCODE ZSTD<br />) DISTSTYLE AUTO;</pre> | 移行エンジニア | 
| Amazon Redshift でストアドプロシージャを作成して保存する。 | このパターンでは、ストアドプロシージャを使用して、Quick Sight での分析のために、ソースメインフレームからターゲット Amazon Redshift データウェアハウステーブルに変更データ (`INSERT`、`UPDATE`、`DELETE`) を同期します。Amazon Redshift でストアドプロシージャを作成するには、Query Editor v2 を使用して、GitHub リポジトリにあるストアドプロシージャコードを実行します。 | 移行エンジニア | 
| ストリーミングマテリアライズドビューから読み取り、ターゲットテーブルにロードする。 | ストアドプロシージャは、ストリーミングマテリアライズドビューからデータ変更を読み取り、ターゲットテーブルにロードします。ストアドプロシージャを実行するには、次のコマンドを実行します。<pre>call SP_Members_Load();</pre>[Amazon EventBridge](https://aws.amazon.com/eventbridge/) を使用して、データレイテンシー要件に基づいてこのストアドプロシージャを呼び出すように Amazon Redshift データウェアハウス内でジョブをスケジュールすることができます。EventBridge は、一定の間隔でジョブを実行します。プロシージャへの前回の呼び出しが完了したかどうかをモニタリングするには、[AWS Step Functions](https://aws.amazon.com/step-functions/) ステートマシンなどのメカニズムを使用する必要がある場合があります。詳細については、以下のリソースを参照してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)もう 1 つのオプションは、Amazon Redshift Query Editor V2 を使用して更新をスケジュールすることです。詳細については、「[クエリエディタ v2 でスケジュールされたクエリ](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-schedule-query.html)」を参照してください。 | 移行エンジニア | 

### Quick Sight を Amazon Redshift のデータに接続する
<a name="connect-quick-sight-to-data-in-rs"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Quick Sight をセットアップする。 | Quick Sight をセットアップするには、[AWS ドキュメント](https://docs.aws.amazon.com/quicksight/latest/user/setting-up.html)の指示に従います。 | 移行エンジニア | 
| Quick Sight と Amazon Redshift 間の安全な接続をセットアップする。 | Quick Sight と Amazon Redshift 間の安全な接続をセットアップするには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | 移行エンジニア | 
| Quick Sight のデータセットを作成する。 | Amazon Redshift から Quick Sight のデータセットを作成するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | 移行エンジニア | 
| データセットを結合する。 | Quick Sight で分析を作成するには、[AWS ドキュメント](https://docs.aws.amazon.com/quicksight/latest/user/joining-data.html#create-a-join)の指示に従って 2 つのテーブルを結合します。**[結合設定]** ペインで、**[結合タイプ]** に **[左]** を選択します。**[結合句]** で、`memberid from member_plans = memberid from members_details` を使用します。 | 移行エンジニア | 

### Amazon Q in Quick Sight を使用してメインフレームデータからビジネスインサイトを取得する
<a name="get-business-insights-from-the-mainframe-data-by-using-qdev-in-quick-sight"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Q in Quick Sight を設定する。 | Amazon Q in Quick Sight の生成 BI 機能をセットアップするには、[AWS ドキュメント](https://docs.aws.amazon.com/quicksight/latest/user/generative-bi-get-started.html)の指示に従います。 | 移行エンジニア | 
| メインフレームデータを分析し、ビジュアルダッシュボードを構築する。 | Quick Sight でデータを分析および視覚化するには、以下を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)それらが完了したら、ダッシュボードを公開して、組織内の他のユーザーと共有することができます。例については、「[追加情報](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html#generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-additional)」セクションの「*メインフレームビジュアルダッシュボード*」を参照してください。 | 移行エンジニア | 

### メインフレームデータから Amazon Q in Quick Sight を使用してデータストーリーを作成する
<a name="create-a-data-story-with-qdev-in-quick-sight-from-mainframe-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データストーリーを作成する。 | 前の分析からのインサイトを説明するデータストーリーを作成し、メンバーの予防接種を促進するための推奨事項を生成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | 移行エンジニア | 
| 生成されたデータストーリーを表示する。 | 生成されたデータストーリーを表示するには、**[データストーリー]** ページでそのストーリーを選択します。 | 移行エンジニア | 
| 生成されたデータストーリーを編集する。 | データストーリーのフォーマット、レイアウト、ビジュアルを変更するには、[AWS ドキュメント](https://docs.aws.amazon.com/quicksight/latest/user/working-with-stories-edit.html)の指示に従います。 | 移行エンジニア | 
| データストーリーを共有する。 | データストーリーを共有するには、[AWS ドキュメント](https://docs.aws.amazon.com/quicksight/latest/user/working-with-stories-share.html)の指示に従います。 | 移行エンジニア | 

## トラブルシューティング
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| Quick Sight から Amazon Redshift へのデータセットの作成で、`Validate Connection` に失敗した。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | 
| EC2 インスタンスで Apply Engine を起動しようとすると、次のエラーが返される。`-bash: sqdeng: command not found` | 次のコマンドを実行して、`sqdata` インストールパスをエクスポートしてください。<pre>export PATH=$PATH:/usr/sbin:/opt/precisely/di/sqdata/bin</pre> | 
| Apply Engine を起動しようとすると、次のいずれかの接続エラーが返される。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | メインフレームスプールをチェックして、コントローラーデーモンジョブが実行されていることを確認してください。 | 

## 関連リソース
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-resources"></a>
+ [Quick Sight で AWS Mainframe Modernization と Amazon Q を使用してインサイトを生成する](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html?did=pg_card&trk=pg_card) (パターン)
+ [Quick Sight で AWS Mainframe Modernization と Amazon Q を使用してデータインサイトを生成する](https://youtu.be/F8b7l79p6TM?si=gASuQtFbMVuEm7IJ) (デモ)
+ [AWS Mainframe Modernization - IBM z/OS のデータレプリケーション](https://aws.amazon.com/marketplace/pp/prodview-doe2lroefogia?sr=0-4&ref_=beagle&applicationId=AWSMPContessa)
+ [Amazon Redshift streaming ingestion to a materialized view](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-streaming-ingestion.html)

## 追加情報
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-additional"></a>

**.ddl ファイルの例**

*members\$1details.ddl*

```
CREATE TABLE MEMBER_DTLS (
memberid INTEGER NOT NULL,
member_name VARCHAR(50),
member_type VARCHAR(20),
age INTEGER,
gender CHAR(1),
email VARCHAR(100),
region VARCHAR(20)
);
```

*member\$1plans.ddl*

```
CREATE TABLE MEMBER_PLANS (
memberid INTEGER NOT NULL,
medical_plan CHAR(1),
dental_plan CHAR(1),
vision_plan CHAR(1),
preventive_immunization VARCHAR(20)
);
```

**.sqd ファイルの例**

****`<kafka topic name>` は Amazon MSK トピック名に置き換えてください。

*script.sqd*

```
-- Name: DB2ZTOMSK: DB2z To MSK JOBNAME DB2ZTOMSK;REPORT EVERY 1;OPTIONS CDCOP('I','U','D');-- Source Descriptions
JOBNAME DB2ZTOMSK;
REPORT EVERY 1;
OPTIONS CDCOP('I','U','D');

-- Source Descriptions 
BEGIN GROUP DB2_SOURCE; 
DESCRIPTION DB2SQL /var/precisely/di/sqdata/apply/DB2ZTOMSK/ddl/mem_details.ddl AS MEMBER_DTLS;
DESCRIPTION DB2SQL /var/precisely/di/sqdata/apply/DB2ZTOMSK/ddl/mem_plans.ddl AS MEMBER_PLANS; 
END GROUP;
-- Source Datastore 
DATASTORE cdc://<zos_host_name>/DB2ZTOMSK/DB2ZTOMSK
OF UTSCDC 
AS CDCIN 
DESCRIBED BY GROUP DB2_SOURCE ;
-- Target Datastore(s)
DATASTORE 'kafka:///<kafka topic name>/key'
OF JSON
AS TARGET
DESCRIBED BY GROUP DB2_SOURCE;
PROCESS INTO TARGET
SELECT
{
REPLICATE(TARGET)
}
FROM CDCIN;
```

**メインフレームビジュアルダッシュボード**

次のデータビジュアルは、分析の質問 `show member distribution by region`** のために Amazon Q in Quick Sight によって作成されました。

![\[北東部と南西部のメンバーは 8 人、南西部のメンバーは 5 人、中西部のメンバーは 4 人です。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/b40a784c-c1fc-444b-b6df-8bd1f7a6abaa.png)


次のデータビジュアルは、質問 `show member distribution by Region who have not completed preventive immunization, in pie chart` のために Amazon Q in Quick Sight によって作成されました。

![\[南東部は 6 人、南西部は 5 人、中西部は 4 人を示しています。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/8a95da3c-df4a-458b-9cfe-44e34f80a235.png)


**データストーリーの出力**

次のスクリーンショットに、プロンプト `Build a data story about Region with most numbers of members. Also show the member distribution by age, member distribution by gender. Recommend how to motivate members to complete immunization. Include 4 points of supporting data for this pattern` のために Amazon Q in Quick Sight によって作成されたデータストーリーのセクションを示します。

概要でデータストーリーにより推奨されているのは、予防接種の取り組みから最大の効果を得られるようにメンバー数が最も多い地域を選択することです。

![\[メンバーベースの地理的、人口統計、年齢に基づく分析の概要画面。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/40f13957-2db4-42b7-b7a4-a0dd3dad6899.png)


データストーリーでは、4 つのリージョンのメンバー数の分析を示します。メンバーが多いのは、北東部、南西部、および南東部リージョンです。

![\[北東部および南西部リージョンには 8 人のメンバーがいて、南東部には 6 人のメンバー、中西部には 4 人のメンバーがいます。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/fc6ed0a0-b79c-4397-95ac-a2fc4c87482a.png)


データストーリーは、年齢別のメンバーの分析を示しています。

![\[メンバーベースが若年および中年の成人に偏っていることを示すグラフ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/8c56f1ec-3a2e-47a6-bbc4-3631782aa333.png)


データストーリーは、中西部での予防接種の取り組みに焦点を当てています。

![\[個人へのアウトリーチキャンペーンとリージョンの課題に関する推奨事項。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/84a647e8-c7d5-4637-94f0-03a611f899b3.png)


![\[データストーリー分析の継続と、期待される成果および結論。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/fc9094fc-2a20-485d-b238-e5e4ec70f1d3.png)


## アタッチメント
<a name="attachments-18e72bcb-1b9a-406a-8220-83aca7743ad2"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/18e72bcb-1b9a-406a-8220-83aca7743ad2/attachments/attachment.zip)」

# Quick Sight で AWS Mainframe Modernization と Amazon Q を使用してデータインサイトを生成する
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight"></a>

*Amazon Web Services、Shubham Roy、Roshna Razack、Santosh Kumar Singh*

## 概要
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-summary"></a>

注: AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization サービス (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[AWS Mainframe Modernization  可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

組織がビジネスクリティカルなデータをメインフレーム環境でホストしている場合、そのデータからインサイトを得ることは、成長とイノベーションを促進するために不可欠です。メインフレームデータをロック解除することで、迅速、安全、スケーラブルなビジネスインテリジェンスを構築し、Amazon Web Services (AWS) クラウドでデータ駆動型の意思決定、成長、イノベーションを加速することができます。

このパターンでは、[AWS Mainframe Modernization File Transfer](https://docs.aws.amazon.com/m2/latest/userguide/filetransfer.html) with BMC と [Amazon Q in Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/quicksight-gen-bi.html) を使用してビジネスインサイトを生成し、メインフレームデータから共有可能な説明文を作成するためのソリューションを示します。メインフレームデータセットは、BMC での AWS Mainframe Modernization ファイル転送を使用して [Amazon Simple Storage Service (Amazon S3) ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)に転送されます。 AWS Lambda 関数は、Quick Sight にロードするためのメインフレームデータファイルをフォーマットして準備します。

Quick Sight でデータが利用可能になったら、[Amazon Q in Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/quicksight-gen-bi.html) で自然言語プロンプトを使用して、データの概要を作成し、質問し、データストーリーを生成することができます。SQL クエリを記述したり、ビジネスインテリジェンス (BI) ツールを学習したりする必要はありません。

**ビジネスコンテキスト**

このパターンでは、メインフレームデータ分析とデータインサイトのユースケースのソリューションを示します。パターンを使用して、会社のデータのビジュアルダッシュボードを構築します。このソリューションを実証するために、このパターンでは、米国のメンバーに医療的、歯科的、眼科的なプランを提供する医療会社を使用しています。この例では、メンバーの人口統計データとプランの情報がメインフレームデータセットに保存されます。ビジュアルダッシュボードでは以下について確認できます。
+ リージョン別のメンバーの分布
+ 性別別のメンバーの分布
+ 年齢別のメンバーの分布
+ プランタイプ別のメンバーの分布
+ 予防接種を完了していないメンバー

ダッシュボードを作成したら、前の分析からのインサイトを示すデータストーリーを生成します。データストーリーでは、予防接種を完了したメンバーの数を増やすための推奨事項を提供します。

## 前提条件と制限
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ ビジネスデータを含むメインフレームデータセット
+ メインフレームにファイル転送エージェントをインストールするためのアクセス権

**制限事項**
+ メインフレームデータファイルは、Quick Sight でサポートされているファイル形式のいずれかである必要があります。サポートされているファイル形式のリストについては、「[Supported data sources](https://docs.aws.amazon.com/quicksuite/latest/userguide/supported-data-sources.html)」を参照してください。
+ このパターンでは、Lambda 関数を使用してメインフレームファイルを Quick Sight でサポートされている形式に変換します。

## アーキテクチャ
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-architecture"></a>

次の図は、Quick Sight の BMC と Amazon Q で AWS Mainframe Modernization ファイル転送を使用してメインフレームデータからビジネスインサイトを生成するためのアーキテクチャを示しています。

![\[アーキテクチャ図の説明は、図の後に示します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/6fe0f1d9-961c-4089-a746-e5b8d5fd6c1e.png)


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

1. ビジネスデータを含むメインフレームデータセットは、BMC での AWS Mainframe Modernization ファイル転送を使用して Amazon S3 に転送されます。

1. Lambda 関数により、ファイル転送の送信先 S3 バケットにあるファイルがカンマ区切り値 (CSV) 形式に変換されます。

1. Lambda 関数により、変換されたファイルが送信元データセット S3 バケットに送信されます。

1. ファイル内のデータが Quick Sight によって取り込まれます。

1. ユーザーが Quick Sight のデータにアクセスします。Amazon Q in Quick Sight を使用して、自然言語プロンプトを使用してデータを操作できます。

## ツール
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-tools"></a>

**AWS のサービス**
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
+ [AWS Mainframe Modernization BMC を使用したファイル転送](https://docs.aws.amazon.com/m2/latest/userguide/filetransfer.html)は、メインフレームのモダナイゼーション、移行、拡張のユースケースのために、メインフレームデータセットを変換して Amazon S3 に転送します。
+ [Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) は、データの視覚化、分析、レポート生成を 1 つのダッシュボードでできるクラウドスケールの BI サービスです。このパターンでは、[Amazon Q in Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/working-with-quicksight-q.html) の生成 BI 機能を使用します。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

## ベストプラクティス
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-best-practices"></a>
+ BMC と Lambda 関数を使用して AWS Mainframe Modernization ファイル転送用の AWS Identity and Access Management (IAM) ロールを作成するときは、[最小特権](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)の原則に従います。
+ 送信元データセットが、Quick Sight 用に[サポートされているデータ型](https://docs.aws.amazon.com/quicksight/latest/user/supported-data-types-and-values.html)であることを確認します。送信元データセットにサポートされていないデータ型が含まれている場合は、サポートされているデータ型に変換します。サポートされていないメインフレームデータ型と、Amazon Q in Quick Sight でサポートされるデータ型に変換する方法については、「[関連リソース](#generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-resources)」セクションを参照してください。

## エピック
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-epics"></a>

### BMC で AWS Mainframe Modernization ファイル転送を設定する
<a name="set-up-m2long-file-transfer-with-bmc"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| File Transfer エージェントをインストールする。 |  AWS Mainframe Modernization ファイル転送エージェントをインストールするには、 [AWS ドキュメント](https://docs.aws.amazon.com/m2/latest/userguide/m2-agent-installation.html)の指示に従います。 | メインフレームシステム管理者 | 
| メインフレームのファイル転送用の S3 バケットを作成する。 | BMC でのファイル転送からの出力 AWS Mainframe Modernization ファイルを保存する [S3 バケットを作成します](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。アーキテクチャ図では、これはファイル転送の送信先バケットです。 | 移行エンジニア | 
| データ転送のエンドポイントを作成する | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html) | AWS Mainframe Modernization スペシャリスト | 

### Quick Sight 統合用にメインフレームのファイル名の拡張子を変換する
<a name="convert-the-mainframe-file-name-extension-for-quick-sight-integration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットを作成する。 | 変換されたメインフレームファイルを送信元バケットから最終的な送信先バケットにコピーするための、Lambda 関数用の [S3 バケットを作成します](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。 | 移行エンジニア | 
| Lambda 関数を作成する。 | ファイル拡張子を変更し、メインフレームファイルを送信先バケットにコピーする Lambda 関数を作成するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html) | 移行エンジニア | 
| Lambda 関数を呼び出すための Amazon S3 トリガーを作成する。 | Lambda 関数を呼び出すトリガーを設定するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html)詳細については、[チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html)を参照してください。 | 移行リード | 
| Lambda 関数の IAM アクセス権限を付与する。 | Lambda 関数がファイル転送の送信先と送信元のデータセット S3 バケットにアクセスするには、IAM アクセス権限が必要です。ファイル転送の送信先 S3 バケットの**** `s3:GetObject` および `s3:DeleteObject`** **アクセス権と、送信元データセット S3 バケットの `s3:PutObject` アクセス権を付与して、Lambda 関数実行ロールに関連付けられたポリシーを更新します。詳細については、「*チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す*」の「[許可ポリシーを作成する](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html#with-s3-example-create-policy)」****を参照してください。 | 移行リード | 

### メインフレームのデータ転送タスクを定義する
<a name="define-a-mainframe-data-transfer-task"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| メインフレームのファイルを S3 バケットにコピーするための転送タスクを作成する。 | メインフレームのファイルの転送タスクを作成するには、[AWS Mainframe Modernization ドキュメント](https://docs.aws.amazon.com/m2/latest/userguide/filetransfer-transfer-tasks.html)の指示に従います。**[ソースコードページ]** のエンコーディングを「**IBM1047**」として指定し、**[ターゲットコードページ]** のエンコーディングを「**UTF-8**」として指定します。 | 移行エンジニア | 
| 転送タスクを確認する。 | データ転送が成功したことを確認するには、[AWS Mainframe Modernization ドキュメント](https://docs.aws.amazon.com/m2/latest/userguide/filetransfer-transfer-tasks.html#filetransfer-ts-view-console)の指示に従います。メインフレームのファイルがファイル転送の送信先 S3 バケットにあることを確認します。 | 移行リード | 
| Lambda コピー関数を確認する。 | Lambda 関数が開始され、ファイルが .csv 拡張子付きで送信元データセット S3 バケットにコピーされていることを確認します。Lambda 関数によって作成された .csv ファイルは、Quick Sight の入力データファイルです。データの例については、「[添付ファイル](#attachments-53572abb-06c6-4dd7-add4-8fad7e9bfa68)」セクションの `Sample-data-member-healthcare-APG` ファイルを参照してください。 | 移行リード | 

### Quick Sight をメインフレームデータに接続する
<a name="connect-quick-sight-to-the-mainframe-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Quick Sight をセットアップする。 | Quick Sight をセットアップするには、[AWS ドキュメント](https://docs.aws.amazon.com/quicksight/latest/user/setting-up.html)の指示に従います。 | 移行リード | 
| Quick Sight のデータセットを作成する。 | Quick Sight のデータセットを作成するには、[AWS ドキュメント](https://docs.aws.amazon.com/quicksight/latest/user/create-a-data-set-s3.html)の指示に従います。入力データファイルは、メインフレームデータ転送タスクを定義したときに作成された、変換されたメインフレームファイルです。 | 移行リード | 

### Amazon Q in Quick Sight を使用してメインフレームデータからビジネスインサイトを取得する
<a name="get-business-insights-from-the-mainframe-data-by-using-qdev-in-quick-sight"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Q in Quick Sight を設定する。 | この機能には Enterprise Edition が必要です。Amazon Q in Quick Sight を設定するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html) | 移行リード | 
| メインフレームデータを分析し、ビジュアルダッシュボードを構築する。 | Quick Sight でデータを分析および視覚化するには、以下を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html)それらが完了したら、ダッシュボードを公開して、組織内の他のユーザーと共有することができます。例については、「[追加情報](#generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-additional)」セクションの「*メインフレームビジュアルダッシュボード*」を参照してください。 | 移行エンジニア | 

### メインフレームデータから Amazon Q in Quick Sight を使用してデータストーリーを作成する
<a name="create-a-data-story-with-qdev-in-quick-sight-from-the-mainframe-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データストーリーを作成する。 | 前の分析からのインサイトを説明するデータストーリーを作成し、メンバーの予防接種を促進するための推奨事項を生成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html) | 移行エンジニア | 
| 生成されたデータストーリーを表示する。 | 生成されたデータストーリーを表示するには、[AWS ドキュメント](https://docs.aws.amazon.com/quicksight/latest/user/working-with-stories-view.html)の指示に従います。 | 移行リード | 
| 生成されたデータストーリーを編集する。 | データストーリーのフォーマット、レイアウト、ビジュアルを変更するには、[AWS ドキュメント](https://docs.aws.amazon.com/quicksight/latest/user/working-with-stories-edit.html)の指示に従います。 | 移行リード | 
| データストーリーを共有する。 | データストーリーを共有するには、[AWS ドキュメント](https://docs.aws.amazon.com/quicksight/latest/user/working-with-stories-share.html)の指示に従います。 | 移行エンジニア | 

## トラブルシューティング
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| BMC とのファイル転送で**転送タスクを作成する**の**データセットの検索条件**に入力されたメインフレーム AWS Mainframe Modernization ファイルまたはデータセットを検出できません。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html) | 

## 関連リソース
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-resources"></a>

[PACKED-DECIMAL (COMP-3)](https://www.ibm.com/docs/en/cobol-zos/6.3?topic=v6-packed-decimal-comp-3) や [BINARY (COMP または COMP-4)](https://www.ibm.com/docs/en/cobol-zos/6.3?topic=v6-binary-comp-comp-4) などのメインフレームのデータ型を Quick Sight でサポートされている[データ型](https://docs.aws.amazon.com/quicksight/latest/user/supported-data-types-and-values.html)に変換するには、次のパターンを参照してください。
+ [Python AWS を使用して で EBCDIC データを ASCII に変換および解凍する](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html)
+ [を使用して Amazon S3 でメインフレームファイルを EBCDIC 形式から文字区切りの ASCII 形式に変換する AWS Lambda](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda.html)

## 追加情報
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-additional"></a>

**S3CopyLambda.py**

次の Python コードは、IDE の Amazon Q でプロンプトを使用して生成されました。

```
#Create a lambda function triggered by S3. display the S3 bucket name and key
import boto3
s3 = boto3.client('s3')
def lambda_handler(event, context):
print(event)
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
print(bucket, key)
#If key starts with object_created, skip copy, print "copy skipped". Return lambda with key value.
if key.startswith('object_created'):
print("copy skipped")
return {
'statusCode': 200,
'body': key
}
# Copy the file from the source bucket to the destination bucket. Destination_bucket_name = 'm2-filetransfer-final-opt-bkt'. Destination_file_key = 'healthdata.csv'
copy_source = {'Bucket': bucket, 'Key': key}
s3.copy_object(Bucket='m2-filetransfer-final-opt-bkt', Key='healthdata.csv', CopySource=copy_source)
print("file copied")
#Delete the file from the source bucket.
s3.delete_object(Bucket=bucket, Key=key)
return {
'statusCode': 200,
'body': 'Copy Successful'
}
```

**メインフレームビジュアルダッシュボード**

次のデータビジュアルは、分析の質問 `show member distribution by region`** のために Amazon Q in Quick Sight によって作成されました。

![\[南西部、中西部、北東部、南東部のメンバー数を示すグラフ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/e5c1d049-407d-42ff-bc51-28f9d2b24d4f.png)


次のデータビジュアルは、質問 `show member distribution by Region who have not completed preventive immunization, in pie chart` のために Amazon Q in Quick Sight によって作成されました。

![\[Pie chart showing preventive immunization incompletion by region: Southeast 40%, Southwest 33%, Midwest 27%.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/47efa1c1-54c9-47cc-b668-416090021d34.png)


**データストーリーの出力**

次のスクリーンショットに、プロンプト `Build a data story about Region with most numbers of members. Also show the member distribution by medical plan, vision plan, dental plan. Recommend how to motivate members to complete immunization. Include 4 points of supporting data.` のために Amazon Q in Quick Sight によって作成されたデータストーリーのセクションを示します。

概要でデータストーリーにより推奨されているのは、予防接種の取り組みから最大の効果を得られるようにメンバー数が最も多い地域を選択することです。

![\[予防接種の完了率に焦点を当てたデータストーリーの概要ページ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/4612fcc7-51fd-48a5-bc58-b6b0aa9b0ef3.png)


データストーリーでは、上位 3 地域のメンバー数の分析を示し、南西部を予防接種の取り組みで重視すべき主要な地域として指定しています。

![\[Pie chart showing member distribution by region, with Southwest and Northeast leading at 31% each.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/30d3b56b-3b92-4748-9cef-a73ff9339fee.png)


**注記**  
南西部地域と北東部地域には、それぞれ 8 人のメンバーがいます。ただし、南西部にはワクチン接種が不十分なメンバーがそれ以上に多いため、予防接種の完了率を高めるための取り組みが効果をもたらす可能性が高くなります。

## アタッチメント
<a name="attachments-53572abb-06c6-4dd7-add4-8fad7e9bfa68"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/53572abb-06c6-4dd7-add4-8fad7e9bfa68/attachments/attachment.zip)」

# AWS Blu Age モダナイズされたメインフレームアプリケーションで Microsoft Entra ID ベースの認証を実装する
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application"></a>

*Vishal Jaswani と Rimpy Tewani、Amazon Web Services*

## 概要
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-summary"></a>

**注記**  
AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization サービス (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[AWS Mainframe Modernization  可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

Refactor with [AWS Mainframe ModernizationAWS Blu Age](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html) などのリファクタリングパターンを使用してモダナイズされるメインフレームアプリケーションでは、認証メカニズムを新しいアプリケーションアーキテクチャに慎重に統合する必要があります。この統合は通常、モダナイズ後のアクティビティとして処理されます。タスクは複雑になる可能性があり、最新のセキュリティ基準やクラウドネイティブプラクティスに合わせて既存の認証システムを移行または外部化することがよくあります。開発者は、モダナイズされたアプリケーションのランタイム環境とライブラリの制約内で作業しながら、認証を効果的に実装する方法を検討する必要があります。モダナイゼーションの後、 は AWS Blu Age の最新のコードを [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) や [Microsoft Entra ID](https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id) (旧 Azure AD) などのアイデンティティおよびアクセス管理システムと簡単に統合する方法 AWS を提供します。

このパターンでは、認証プロバイダーが Microsoft Entra ID の場合に、調査やトライアルに時間を費やすことなく、モダナイズされたアプリケーションに認証メカニズムを実装する方法について説明します。このパターンで提供する内容は次のとおりです。
+ 認証実装に不可欠な Microsoft Authentication Library (MSAL) およびその他の Microsoft Entra ID ドキュメントのフィールドテスト済みの、関連する Angular ライブラリ。 
+ OAuth 2.0 を使用して Spring Security を有効にするために必要な AWS Blu Age ランタイムの設定。
+ 認証されたユーザーの ID をキャプチャし、 AWS Blu Age ランタイムに渡すライブラリ。
+ 実装することが推奨されるセキュリティ対策。
+ Microsoft Entra ID のセットアップでよく発生する問題のトラブルシューティングのヒント。

**注記**  
このパターンでは、[AWS プロフェッショナルサービス](https://aws.amazon.com/professional-services/)エンゲージメントの一環としてお客様に提供される AWS Blu Age OAuth 拡張機能ライブラリを使用します。このライブラリは AWS Blu Age ランタイムの一部ではありません。

## 前提条件と制限
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-prereqs"></a>

**前提条件**
+  AWS Blu Age メインフレームモダナイゼーションリファクタリングツールによって生成されたモダナイズされたアプリケーション。このパターンでは、[CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo) をサンプルオープンソースメインフレームアプリケーションとして使用します。
+  AWS Blu Age OAuth 拡張機能ライブラリ。[AWS プロフェッショナルサービスと](https://aws.amazon.com/professional-services/)のエンゲージメント中に AWS Blu Age チームによって提供されます。
+ モダナイズされたアプリケーションをデプロイしてテスト AWS アカウント するアクティブな 。
+  AWS Blu Age 設定ファイルと Microsoft Entra ID の基礎に精通していること。

**制限事項**
+ このパターンでは、OAuth 2.0 認証と基本的なトークンベースの承認フローについて説明します。高度な承認シナリオときめ細かなアクセスコントロールメカニズムは対象範囲外です。
+ 一部の AWS のサービス は では使用できません AWS リージョン。利用可能なリージョンについては、「[AWS のサービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。特定のエンドポイントについては、「[Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」で、サービスのリンクを選択してご確認ください。

**製品バージョン**

このパターンの開発には、以下を使用しています。
+ AWS Blu Age ランタイムバージョン 4.1.0 (このパターンは下位互換性があるそれ以降のバージョンでも機能します)
+ MSAL ライブラリ、バージョン 3.0.23
+ Java 開発キット (JDK) バージョン 17。
+ Angular バージョン 16.1

## アーキテクチャ
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-architecture"></a>

**ソーステクノロジースタック**

一般的なメインフレーム環境では、認証はユーザープロファイルを通じて実装されます。これらのプロファイルは、システムに対してユーザーを識別し、サインインできるユーザーを定義し、ユーザーがシステムリソースで実行できる関数を指定します。ユーザープロファイルは、セキュリティ担当者またはセキュリティ管理者によって管理されます。

**ターゲットテクノロジースタック**
+ Microsoft Entra ID
+ モダナイズされた Java Spring Boot ベースのバックエンド
+ AWS Blu Age ランタイム
+ OAuth 2.0 を使用した Spring Security
+ Angular 単一ページアプリケーション (SPA)

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

AWS Blu Age ランタイムはデフォルトで OAuth 2.0 ベースの認証をサポートしているため、パターンはその標準を使用してバックエンド APIsを保護します。

以下の図に、プロセスフローを示します。

**注記**  
この図には、データベースのモダナイズの例として Amazon Aurora が含まれていますが、Aurora はこのパターンのステップに含まれていません。

![\[AWS Blu Age アプリケーション用の Entra ID ベース認証のプロセスフロー。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/e51f24b8-178f-4974-aae9-23a0cc8540f5/images/0fdcdb22-9e46-4b02-86b2-395cba3e2f81.png)


各パラメータの意味は次のとおりです。

1. ユーザーが Microsoft Entra ID で認証を試みます。

1. Microsoft Entra ID が、アプリケーションが後続の呼び出しで使用する更新、アクセス、および ID トークンを返します。

1. MSAL インターセプターは、 AWS Blu Age ランタイムを呼び出す HTTPS リクエストの`Authorization`ヘッダーにアクセストークンを含めます。

1.  AWS Blu Age `extension-oauth`ライブラリは、 AWS Blu Age ランタイム設定ファイル (`application-main.yml`) を使用して ヘッダーからユーザー情報を抽出し、この情報を`SharedContext`オブジェクトに配置して、ビジネスロジックがそれを消費できるようにします。
**注記**  
`SharedContext` は Blu Age AWS が提供するランタイムコンポーネントで、モダナイズされたアプリケーション全体のアプリケーションコンテキストと状態情報を管理します。 AWS Blu Age ランタイムのコンポーネントと更新の詳細については、 AWS Mainframe Modernization ドキュメントの [AWS Blu Age リリースノート](https://docs.aws.amazon.com/m2/latest/userguide/ba-release-notes.html)を参照してください。`application-main.yml` ファイルの詳細については、 AWS Mainframe Modernization ドキュメントの[AWS 「Blu Age ランタイムの設定をセットアップする](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-config.html)」を参照してください。

1.  AWS Blu Age ランタイムは、トークンが存在するかどうかを確認します。 

   1. トークンが存在する場合、Microsoft Entra ID と通信してトークンの有効性をチェックします。 

   1. トークンが存在しない場合、 AWS Blu Age ランタイムは HTTP ステータスコード 403 のエラーを返します。

1. トークンが有効な場合、 AWS Blue Age ランタイムはビジネスロジックの続行を許可します。トークンが無効の場合、 AWS Blu Age ランタイムは HTTP ステータスコード 403 のエラーを返します。

**OAuth 2.0 のワークフロー**

OAuth 2.0 のワークフローの概要図については、[Microsoft Entra のドキュメント](https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow#protocol-details)を参照してください。

## ツール
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-tools"></a>

**AWS のサービス**

[AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html) には、メインフレームから AWS マネージドランタイム環境への移行とモダナイゼーションの計画と実装に役立つツールとリソースが用意されています。 AWS Blu Age が提供するこのサービスのリファクタリング機能を使用して、レガシーメインフレームアプリケーションを変換およびモダナイズできます。

**注記**  
AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization サービス (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[AWS Mainframe Modernization  可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

**コードリポジトリ**

Microsoft Entra ID との統合を実証するために、CardDemo アプリケーションが更新されました。コードには、[このパターン用の GitHub リポジトリ](https://github.com/aws-samples/sample-microsoft-entra-id-based-auth-in-aws-bluage-modernized-mainframe-app)からアクセスできます。

**バックエンド設定**

このパターンでは、バックエンドアプリケーションで OAuth 2.0 を使用して Spring Security を有効にするために、`application-main.yml`** **設定ファイルを変更する必要があります。 `.yml` ファイルは次のようになります。

```
gapwalk-application.security: enabled
gapwalk-application:
  security: 
    identity: oauth
    issuerUri: ${issuerUrl}
    claim:
      claims:
        -
          claimName: upn
          claimMapValue: username
spring:
  autoconfigure:
    exclude:
     - org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration
     - org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration
  security:
    oauth2:
      client:
        registration: 
          azure:
            client-id: {clientId}
            client-secret: ${clientSecret}
            provider: azure
            authorization-grant-type: authorization_code
            redirect-uri: ${redirectUri}
            scope: openid
           
        provider:
          azure:
            authorization-uri: ${gapwalk-application.security.issuerUri}/oauth2/v2.0/authorize
            token-uri:  ${gapwalk-application.security.issuerUri}/oauth2/v2.0/token
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys
```

**AWS Blu Age OAuth 拡張フィルターライブラリ**

 AWS Blu Age OAuth 拡張機能ライブラリは、[AWS プロフェッショナルサービスと](https://aws.amazon.com/professional-services/)のエンゲージメント中に AWS Blu Age チームによって提供されます。

このライブラリは、前のコードブロックに示されている `application-main.yml` ファイルの `claim.claims` 設定を読み取ります。この設定はリストです。リストの各項目では、`claimName` と `claimMapValue` の 2 つの値が得られます。`claimName` はフロントエンドによって送信される JSON ウェブトークン (JWT) のキー名を表し、`claimMapValue` は `SharedContext` のキーの名前です。例えば、バックエンドでユーザー ID をキャプチャする場合は、`claimName` を Microsoft Entra ID によって提供される `userId` を保持する JWT のキー名に設定し、`claimMapValue` を、バックエンドコードでユーザー ID を取得するためのキー名に設定します。

例えば、`claimMapValue` で `UserId` を設定した場合、次のコードを使用してユーザー ID を抽出することができます。

```
SharedContext.get().getValue("userId", [UserId]);
```

## ベストプラクティス
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-best-practices"></a>

このパターンの実装では、以下の重要なセキュリティ上の考慮事項を考慮してください。

**重要**  
このパターンでは、認証統合の基礎を説明します。本番環境にデプロイする前に、ビジネス要件に基づいて、このセクションで説明しているセキュリティ対策以外のセキュリティ対策も実装することをお勧めします。
+ **AWS 設定のセキュリティ。 **機密設定値`application-main.yml`を から に移動します AWS Secrets Manager。例えば、Secrets Manager を使用して次のプロパティを設定します。

  ```
  security:
      oauth2:
        client:
          registration: 
            azure:
              client-id: {clientId}
              client-secret: ${clientSecret}
  ```

  Secrets Manager を使用して AWS Blu Age パラメータを設定する方法の詳細については、 AWS Mainframe Modernization ドキュメントの[AWS 「Blu Age ランタイムシークレット](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-config-app-secrets.html)」を参照してください。
+ **ランタイム環境の保護。**適切な AWS セキュリティコントロールを使用して、モダナイズされたアプリケーション環境を設定します。

  ```
  server: 
    tomcat: 
      remoteip: 
       protocol-header: X-Forwarded-Proto 
       remote-ip-header: X-Forwarded-For 
    forward-headers-strategy: NATIVE
  ```
+ **Amazon CloudWatch ログ。**ファイル `logback-spring.xml to src/main/resources` の追加を検討してください。

  ```
  <configuration> 
   <appender name="CLOUDWATCH" class="com.amazonaws.services.logs.logback.CloudWatchAppender">  
     <logGroup>/aws/bluage/application</logGroup> 
     <logStream>${AWS_REGION}-${ENVIRONMENT}</logStream> 
     <layout> 
      <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> 
     </layout> 
   </appender> 
  
   <root level="INFO"> 
   <appender-ref ref="CLOUDWATCH"/> 
   </root> 
  </configuration>
  ```

  CloudWatch でトレースを有効にする方法については、CloudWatch ドキュメントの「[ログ相関のトレースを有効にする](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-TraceLogCorrelation.html)」を参照してください。
+ **トークンの設定と処理。**セキュリティ要件に合わせて Microsoft Entra ID でトークンの有効期間を設定します。アクセストークンを 1 時間以内に期限切れになるよう設定し、24 時間以内に期限切れになるように更新します。 AWS Blu Age ランタイム設定 (`application-main.yml`) で、JWT 検証が Entra ID アプリケーション登録の正確な発行者 URI とオーディエンス値で正しく設定されていることを確認します。

  トークンの有効期限が切れて更新された場合:

  1. Angular アプリケーションのエラーインターセプターが、MSAL を介して新しいトークンを取得することにより 401 レスポンスを処理します。

  1. 新しいトークンが、後続のリクエストと一緒に送信されます。

  1.  AWS Blu Age ランタイムの OAuth フィルターは、新しいトークンを検証し、現在のユーザー情報`SharedContext`で自動的に更新します。これにより、ビジネスロジックは `SharedContext.get().getValue()` 呼び出しを通じて有効なユーザーコンテキストに引き続きアクセスできます。

   AWS Blu Age ランタイムコンポーネントとその更新の詳細については、[AWS 「Blu Age リリースノート](https://docs.aws.amazon.com/m2/latest/userguide/ba-release-notes.html)」を参照してください。
+ **AWS Blu Age ランタイムのセキュリティ。** AWS Blu Age が提供する`oauth2-ext`ライブラリは、適切なファイルアクセス許可を持つ正しい共有ディレクトリの場所 (`{app-server-home}/shared/`) に配置する必要があります。ログの `SharedContext` オブジェクト母集団をチェックして、ライブラリが JWT からユーザー情報を正常に抽出していることを確認します。
+ **特定のクレーム設定。**`application-main.yml` で、Microsoft Entra ID から必要なクレームを明示的に定義します。例えば、ユーザーの E メールとロールをキャプチャするには、以下を指定します。

  ```
  gapwalk-application:
    security:
      claim:
        claims:
          - claimName: upn
            claimMapValue: username
          - claimName: roles
            claimMapValue: userRoles
          - claimName: email
            claimMapValue: userEmail
  ```
+ **エラー処理。**Angular アプリケーションで認証失敗に対処するためのエラー処理を追加します。次に例を示します。

  ```
  @Injectable()
  export class AuthErrorInterceptor implements HttpInterceptor {
    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
      return next.handle(request).pipe(
        catchError((error: HttpErrorResponse) => {
          if (error.status === 401) {
            // Handle token expiration
            this.authService.login();
          }
          if (error.status === 403) {
            // Handle unauthorized access
            this.router.navigate(['/unauthorized']);
          }
          return throwError(() => error);
        })
      );
    }
  }
  ```
+ **セッションタイムアウトの設定。** AWS Blu Age ランタイムと Microsoft Entra ID の両方でセッションタイムアウト設定を構成します。例えば、`application-main.yml` ファイルに次のコードを追加します。

  ```
  server:
    servlet:
      session:
        timeout: 3600 # 1 hour in seconds
  ```
+ **MsalGuard。**不正アクセスを防ぐために、保護するすべてのルートに MsalGuard 機能を実装する必要があります。例えば、次のようになります。

  ```
  const routes: Routes = [
      { path: '', redirectTo: '/transaction-runner', pathMatch: 'full' },
      { path: 'transaction-runner', component: TransactionRunnerComponent, canActivate:guards },
      { path: 'user-info', component: UserInfoComponent, canActivate:guards },
      { path: 'term/:transid/:commarea', component: TermComponent, canActivate:guards },
  	{ path: 'code', component: TransactionRunnerComponent  }
  ];
  ```

  MsalGuard 保護が適用されていないルートには認証なしでアクセスできるため、機密機能が公開される可能性があります。認証を必要とするすべてのルートの設定にガードが含まれていることを確認してください。

## エピック
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-epics"></a>

### Microsoft Entra ID をセットアップする
<a name="set-up-a-microsoft-entra-id"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Microsoft Azure アカウントをセットアップして Entra ID を作成する。 | オプションと手順については、[Microsoft Azure のウェブサイト](https://azure.microsoft.com/en-us/free/)を参照してください。 | アプリ開発者 | 
| アプリケーションで Microsoft Entra ID をセットアップする。 | Microsoft Entra ID B2C (Azure AD B2C) 認証を Angular SPA に追加する方法については、[Microsoft のドキュメント](https://learn.microsoft.com/en-us/azure/active-directory-b2c/enable-authentication-angular-spa-app#add-the-authentication-components)を参照してください。具体的には次のとおりです。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.html) | アプリ開発者 | 

### リポジトリのクローンを作成し、 AWS Blu Age コードをデプロイする
<a name="clone-the-repository-and-deploy-your-aws-blu-age-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 認証に必要な Angular コードを取得するために、GitHub リポジトリのクローンを作成する。 | 次のコマンドを実行して、このパターンで提供している [GitHub リポジトリ](https://github.com/aws-samples/sample-microsoft-entra-id-based-auth-in-aws-bluage-modernized-mainframe-app)をローカルの現在の作業ディレクトリにクローンします。<pre>git clone https://github.com/aws-samples/sample-microsoft-entra-id-based-auth-in-aws-bluage-modernized-mainframe-app.git</pre> | アプリ開発者 | 
| 認証を実装するために、 AWS Blu Age モダナイズされたコードを Tomcat サーバーにデプロイします。 | Tomcat と Angular 開発サーバーを含むローカル環境を設定するには、 AWS プロフェッショナルサービスとのカスタマーエンゲージメントの一環として AWS Blu Age チームが提供するインストール手順に従います。 | アプリ開発者 | 

### 認証ソリューションを構築する
<a name="build-the-authentication-solution"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS Blu Age REST API エンドポイントを保護するために、AWS Blu Age ランタイムセキュリティを有効にする。 |  AWS Blu Age ランタイムが使用する`application-main.yml`ファイルを次のように設定します。このファイルの例については、このパターンの前半の「[コードリポジトリ](#implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-tools)」セクションを参照してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.html) | アプリ開発者 | 
| ローカル環境のサンプルコードを Blu Age によりモダナイズされた Angular コードベースに組み込む。 |  AWS Blu Age のモダナイズされた Angular コードベースに例を組み込む方法については、このパターンの前半の[コードリポジトリ](#implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-tools)セクションを参照してください。 | アプリ開発者 | 
| `oauth2-ext` ライブラリを共有ディレクトリに配置する。 | ****AWS Blu Age によりモダナイズされたアプリケーションで使用できるように、`oauth2-ext` ライブラリをアプリケーションサーバーの****共有ディレクトリに配置します**。**以下の コマンドを実行します。<pre>cd oauth2-ext/target<br />cp extension-oauth-filter-<version>.jar /{app-server-home}/shared/</pre> | アプリ開発者 | 

### 認証ソリューションをデプロイする
<a name="deploy-the-authentication-solution"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| フロントエンドアプリケーションをデプロイする。 | 以下のコマンドを実行して、フロントエンドアプリケーションをローカルで起動します。<pre>npm install <br />ng serve --ssl<br />npm start</pre>`ng serve` コマンドに `--ssl` フラグを付加すると、開発サーバーで HTTPS を使用するようにできます。HTTPS は他のプロトコルよりも安全であり、本番環境の優れたシミュレーションが行えます。 | アプリ開発者 | 
| バックエンドアプリケーションを起動する。 | Eclipse で Tomcat サーバーを起動します。 | アプリ開発者 | 

### アプリケーションをテストする
<a name="test-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ログイン機能をテストする。 | ローカルにデプロイされたアプリケーションに `http://localhost:4200` でアクセスし、ユーザーが自分の ID の確認を求められることを検証します。ここでは、デモのために HTTP を使用します。本番稼働環境やその他のパブリックにアクセス可能な環境では、セキュリティのために HTTPS を使用する必要があります。ローカル開発であっても、可能であれば HTTPS をセットアップすることをお勧めします。Microsoft ログインプロンプトが表示され、Microsoft Entra ID で設定されたユーザーにアプリケーションへのアクセスが許可される必要があります。 | アプリ開発者 | 
| リクエストで送信した認可ヘッダーをテストする。 | 以下の手順では、例として [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo) アプリケーションを使用します。他の最新のアプリケーションのテスト手順は異なります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.html) | アプリ開発者 | 
| ログアウト機能をテストする。 | **[終了]** を選択してログアウトし、アプリケーションにもう一度アクセスしてみてください。新しいログインプロンプトが表示されるはずです。 | アプリデベロッパー | 

## トラブルシューティング
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| Microsoft Entra ID によって発行されたトークンに、Spring Boot OAuth 2.0 セキュリティとの互換性がない。 | 問題の解決については、OAuth ブログの「[Microsoft Entra ID OAuth Flow](https://authguidance.com/azure-ad-troubleshooting/)」を参照してください。 | 
| トークン関連の一般的な質問。 | JWT トークンの内容をデコードして表示するには、[https://jwt.io/](https://jwt.io/) ウェブサイトを使用してください。 | 

## 関連リソース
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-resources"></a>
+  AWS Blu Age を使用したアプリケーションのリファクタリングについては、 [AWS Mainframe Modernization ドキュメント](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html)を参照してください。
+ OAuth 2.0 の動作については、[OAuth 2.0 のウェブサイト](https://oauth.net/2/)を参照してください。
+ Microsoft Authentication Library (MSAL) の概要については、[Microsoft Entra のドキュメント](https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-overview)を参照してください。
+ AS/400 システムのユーザープロファイルの詳細については、[IBM i (AS400) チュートリアル](https://www.go4as400.com/subsystem-jobs-user-profile-in-as400/jobs.aspx?cid=14)を参照してください。
+ Microsoft ID プラットフォームの OAuth 2.0 および OpenID Connect (OIDC) 認証フローについては、[Microsoft Entra のドキュメント](https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols)を参照してください。

# Stonebranch ユニバーサルコントローラーと AWS Mainframe Modernizationを統合
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization"></a>

*Amazon Web Services、Vaidy Sankaran および Pablo Alonso Prieto*

*Stonebranch、Robert Lemieux および Huseyin Gomleksizoglu*

## 概要
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-summary"></a>

注: AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization サービス (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[AWS Mainframe Modernization  可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

このパターンは、「[Stonebranch ユニバーサルオートメーションセンター (UAC) のワークロードオーケストレーション](https://www.stonebranch.com/stonebranch-platform/universal-automation-center)」を「[Amazon Web Services AWS Mainframe Modernizationサービス](https://aws.amazon.com/mainframe-modernization/)」と統合する方法を説明しています。AWS Mainframe Modernizationサービスは、メインフレームアプリケーションを AWS クラウドに移行して最新化します。エンタープライズテクノロジーによる「[AWS Mainframe Modernization Replatform with Micro Focus](https://aws.amazon.com/mainframe-modernization/patterns/replatform/)」と、AWS Blu Age による「[AWS Mainframe Modernization Automated Refactor](https://aws.amazon.com/mainframe-modernization/patterns/refactor/?mainframe-blogs.sort-by=item.additionalFields.createdDate&mainframe-blogs.sort-order=desc)」の 2 つのパターンがあります。 

Stonebranch UAC は、リアルタイムの IT 自動化およびオーケストレーションプラットフォームです。UAC は、オンプレミスから AWS までのハイブリッド IT システム全体のジョブ、アクティビティ、ワークフローを自動化および調整するように設計されています。メインフレームシステムを使用する企業クライアントは、クラウド中心の最新のインフラストラクチャとアプリケーションに移行しつつあります。Stonebranch のツールとプロフェッショナルサービスは、既存のスケジューラと自動化機能の AWS クラウドへの移行を容易にします。

AWS Mainframe Modernizationサービスを使用してメインフレームプログラムを AWS クラウドに移行または最新化すると、この統合を使用してバッチスケジューリングを自動化し、敏捷性を高め、メンテナンスを改善し、コストを削減できます。

このパターンでは、[Stonebranch スケジューラ](https://www.stonebranch.com/)を、AWS Mainframe Modernization サービス Micro Focus Enterprise ランタイムに移行されたメインフレームアプリケーションと統合する手順を説明します。このパターンは、ソリューションアーキテクト、開発者、コンサルタント、移行スペシャリスト、および移行、モダナイゼーション、運用、またはDevOpsに携わる他の人々を対象としています。

**ターゲットを絞った成果**

このパターンは、以下の目標となる成果を提供することに重点を置いています。
+ 「Stonebranch ユニバーサルコントローラー」から「AWS Mainframe Modernizationサービス (Microfocus ランタイム)」で実行されているメインフレームバッチジョブをスケジュール、自動化、実行する機能。
+ Stonebranch ユニバーサルコントローラからアプリケーションのバッチプロセスを監視します。
+ Stonebranch ユニバーサルコントローラからバッチプロセスを自動または手動で開始/再開/再実行/停止します。
+ AWS Mainframe Modernizationのバッチプロセスの結果を取得します。
+ Stonebranch ユニバーサルコントローラーのバッチジョブの「[AWS CloudWatch](https://aws.amazon.com/cloudwatch/)」ログをキャプチャします。

## 前提条件と制限
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ ジョブ制御言語 (JCL) ファイルと AWS Mainframe Modernization サービス (Micro Focus ランタイム) 環境にデプロイされたバッチプロセスを備えた Micro Focus [Bankdemo](https://d1vi4vxke6c2hu.cloudfront.net/demo/bankdemo_runtime.zip) アプリケーション
+ Micro Focus 「[Enterprise Server](https://www.microfocus.com/media/data-sheet/enterprise_server_ds.pdf)」上で動作するメインフレームアプリケーションを構築してデプロイする方法に関する基本的な知識
+ 「Stonebranch ユニバーサルコントローラー」の基礎知識
+ ストーンブランチトライアルライセンス (「[ストーンブランチ](https://www.stonebranch.com/)」にお問い合わせください)
+ 4 コア最低、8 GB のメモリ、2 GB のディスク容量を備えた Windows または Linux Amazon Elastic Compute Cloud (Amazon EC2) インスタンス (例えば、xlarge)
+ Apache Tomcat バージョン 8.5.x または 9.0.x
+ Oracle Java ランタイム環境 (JRE) または OpenJDK バージョン 8 または 11
+ [Amazon Aurora MySQL-Compatible Edition](https://aws.amazon.com/rds/aurora/)
+ エクスポートリポジトリ用「[Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/)」バケット
+ 高可用性 (HA) を実現するエージェントストーンブランチユニバーサルメッセージサービス (OMS) 接続用の 「[Amazon Elastic File System (Amazon EFS)](https://aws.amazon.com/efs/)」
+ Stonebranch ユニバーサルコントローラー 7.2 ユニバーサルエージェント 7.2 インストールファイル
+ AWS Mainframe Modernization「[タスクスケジューリングテンプレート](https://github.com/aws-samples/aws-mainframe-modernization-stonebranch-integration/releases)」 (.zip ファイルの最新リリースバージョン)

**制限事項**
+ 製品とソリューションはOpenJDK 8と11でのみテストされ、互換性が検証されています。
+ 「[aws-mainframe-modernization-stonebranch-integration](https://github.com/aws-samples/aws-mainframe-modernization-stonebranch-integration/releases)」タスクスケジューリングテンプレートは、AWS Mainframe Modernizationサービスでのみ機能します。
+ このタスクスケジューリングテンプレートは、Stonebranch エージェントの UNIX、Linux、または Windows エディションでのみ機能します。
+ 一部の AWS サービスは、利用できない AWS リージョンもあります。利用可能なリージョンについては「[AWS サービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。特定のエンドポイントについては、「[サービスエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」を参照して、サービスのリンクを選択してください。

## アーキテクチャ
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-architecture"></a>

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

次の図表は、このパイロットに必要な AWS 環境の例を示しています。

![\[AWS Mainframe Modernization 環境とやり取りする Stonebranch UAC。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/4a7bea37-0a5b-4663-902b-9b051e92f0cb.png)


1. Stonebranch ユニバーサルオートメーションセンター (UAC) には、ユニバーサルコントローラーとユニバーサルエージェントの 2 つの主要コンポーネントがあります。Stonebranch OMS はコントローラと個々のエージェント間のメッセージバスとして使用されます。

1. Stonebranch UAC データベースはユニバーサルコントローラによって使用されます。データベースは、MySQL、Microsoft SQL Server、Oracle、または Aurora MySQL と互換性があります。

1. AWS Mainframe Modernizationサービス — 「[BankDemo アプリケーションがデプロイされた](https://aws.amazon.com/blogs/aws/modernize-your-mainframe-applications-deploy-them-in-the-cloud/)」 Micro Focus ランタイム環境。BankDemo アプリケーションファイルは S3 バケットに保存されます。このバケットにはメインフレーム JCL ファイルも含まれています。

1. Stonebranch UAC は、バッチ実行時に以下の機能を実行できます。

   1. AWS Mainframe Modernizationサービスにリンクされている S3 バケットにある JCL ファイル名を使用してバッチジョブを開始します。

   1. バッチジョブのステータスを実行させます。

   1. バッチジョブの実行が完了するまでお待ちください。

   1. バッチジョブ実行のログを取得します。

   1. 失敗したバッチジョブを再実行します。

   1. ジョブの実行中にバッチジョブをキャンセルします。

1. Stonebranch UAC はアプリケーションに対して以下の機能を実行できます。

   1. アプリケーションの開始

   1. アプリケーションのステータスを取得

   1. アプリケーションが起動または停止するまでお待ちください。

   1. アプリケーションの停止

   1. アプリケーション操作のログを取得

**ストーンブランチのジョブ変換**

次の図は、近代化の過程におけるストーンブランチの転職プロセスを表しています。ジョブスケジュールとタスク定義を、AWS Mainframe Modernizationバッチタスクを実行できる互換性のある形式に変換する方法について説明します。

![\[メインフレームから Amazon S3 の JCL ファイルを使用して Amazon EC2 上のジョブスケジューラに変換するプロセス。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/4d2ed890-f143-455e-8180-4d967b71c494.png)


1. 変換プロセスでは、ジョブ定義が既存のメインフレームシステムからエクスポートされます。

1. JCL ファイルはメインフレームモダナイゼーションアプリケーションの S3 バケットにアップロードできます。これにより、これらの JCL ファイルを AWS Mainframe Modernizationサービスでデプロイできます。

1. 変換ツールは、エクスポートされたジョブ定義を UAC タスクに変換します。

1. すべてのタスク定義とジョブスケジュールが作成されると、これらのオブジェクトは Universal Controller にインポートされます。変換されたタスクは、メインフレームで実行するのではなく、AWS Mainframe Modernizationサービス内のプロセスを実行します。

**ストーンブランチ UAC アーキテクチャ**

以下のアーキテクチャ図は、高可用性 (HA) ユニバーサルコントローラのアクティブ-アクティブ-パッシブモデルを表しています。Stonebranch UAC は複数のアベイラビリティーゾーンにデプロイされ、高可用性を提供し、ディザスタリカバリ (DR) をサポートします。

![\[DR とコントローラー、Amazon EFS、Aurora、バックアップ用の S3 バケットを備えたマルチ AZ 環境。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/3f94b855-c146-4fcb-902c-5d343438a558.png)


*ユニバーサルコントローラー*

2 台の Linux サーバーがユニバーサルコントローラーとしてプロビジョニングされます。どちらも同じデータベースエンドポイントに接続します。各サーバーにはユニバーサルコントローラアプリケーションと OMS が格納されています。ユニバーサルコントローラーの最新バージョンは、プロビジョニング時に使用されます。

ユニバーサルコントローラーは Tomcat Web アプリにドキュメント ROOT としてデプロイされ、ポート 80 で提供されます。このデプロイにより、フロントエンドロードバランサーの設定が容易になります。

Stonebranch ワイルドカード証明書 (例：`https://customer.stonebranch.cloud`) を使用して TLS または HTTPS 経由の HTTP を有効にします。これにより、ブラウザとアプリケーション間の通信が保護されます。

OMS

ユニバーサルエージェントと OMS (Opswise メッセージサービス) は各ユニバーサルコントローラサーバに常駐しています。顧客側からデプロイされたすべてのユニバーサルエージェントは、両方の OMS サービスに接続するように設定されます。OMS はユニバーサルエージェントとユニバーサルコントローラ間の共通のメッセージングサービスとして機能します。

Amazon EFS は各サーバーにスプールディレクトリをマウントします。OMS は、この共有スプールディレクトリを使用して、コントローラやエージェントからの接続情報やタスク情報を保持します。OMS は高可用性のモードで動作します。アクティブな OMS がダウンした場合、パッシブ OMS はすべてのデータにアクセスでき、アクティブな操作を自動的に再開します。ユニバーサルエージェントはこの変更を検出し、新しいアクティブ OMS に自動的に接続します。

*データベース*

Amazon Relational Database Service (Amazon RDS) には、Amazon Aurora MySQL 互換のエンジンを使用する UAC データベースが格納されています。Amazon RDS は、定期的なバックアップの管理と提供に役立ちます。ユニバーサルコントローラのインスタンスは両方とも同じデータベースエンドポイントに接続します。

*ロードバランサー*

Application Load Balancer はインスタンスごとに設定されます。ロードバランサーはいつでもトラフィックをアクティブコントローラーに転送します。インスタンスドメイン名はそれぞれのロードバランサーエンドポイントを指します。

URL

次の例に示しているように、各インスタンスには URL があります。


| 
| 
| 環境 | インスタンス | 
| --- |--- |
| **本番稼働用** | `customer.stonebranch.cloud` | 
| **開発 (ノンプロダクション)** | `customerdev.stonebranch.cloud` | 
| **テスト (ノンプロダクション)** | `customertest.stonebranch.cloud` | 

**注記**  
  非実稼働用のインスタンス名は必要に応じて設定できます。

高可用性

ハイアベイラビリティ (HA) とは、指定された期間、システムを障害なく継続的に運用できることです。このような障害には、ストレージ、CPU やメモリの問題によるサーバー通信応答の遅延、ネットワーク接続などが含まれますが、これらに限定されません。

HA 要件を満たすには：
+ EC2 インスタンス、データベース、その他の設定はすべて、同じ AWS リージョン内の 2 つの別々のアベイラビリティーゾーンにミラーリングされます。
+ コントローラーは、2 つのアベイラビリティーゾーンにある 2 つの Linux サーバーで Amazon マシンイメージ (AMI) を介してプロビジョニングされます。例えば、ヨーロッパ eu-west-1 リージョンでプロビジョニングされている場合、アベイラビリティーゾーン eu-west-1a とアベイラビリティーゾーン eu-west-1c にユニバーサルコントローラーがあります。
+ アプリケーションサーバー上でジョブを直接実行することはできず、データをこれらのサーバーに保存することもできません。
+ Application Load Balancer は、各ユニバーサルコントローラーのヘルスチェックを実行してアクティブなコントローラーを特定し、トラフィックをそのユニバーサルコントローラーに転送します。1 つのサーバーに問題が発生した場合、ロードバランサーはパッシブユニバーサルコントローラーを自動的にアクティブ状態に昇格させます。その後、ロードバランサーはヘルスチェックから新しいアクティブな Universal Controller インスタンスを識別し、トラフィックの転送を開始します。フェイルオーバーは 4 分以内に行われ、ジョブが失われることはありません。フロントエンド URL は変わりません。
+ Aurora MySQL 互換のデータベースサービスには、ユニバーサルコントローラーのデータが保存されます。本番環境では、1 つのAWSリージョン内の 2 つの異なるアベイラビリティゾーンにある 2 つのデータベースインスタンスでデータベースクラスターを構築します。どちらのユニバーサルコントローラも、単一のデータベースクラスターエンドポイントを指す Java Database Connectivity (JDBC) インターフェイスを使用します。1 つのデータベースインスタンスで問題が発生した場合、データベースクラスターエンドポイントは正常なインスタンスを動的に参照します。手動による介入は必要ありません。

*バックアップとパージ*

Stonebranch ユニバーサルコントローラは、表に示されているスケジュールに従って古いデータをバックアップおよび消去するように設定されています。


| 
| 
| タイプ | スケジュール | 
| --- |--- |
| **アクティビティ** | 7 日間 | 
| **監査**  | 90 日間 | 
| **履歴** | 60 日 | 

表示されている日付より古いBackup データは、.xml 形式にエクスポートされ、ファイルシステムに保存されます。バックアッププロセスが完了すると、古いデータはデータベースから削除され、本番インスタンスでは最大 1 年間 S3 バケットにアーカイブされます。

このスケジュールはユニバーサルコントローラーのインターフェイスで調整できます。ただし、これらの時間枠を長くすると、メンテナンス中のダウンタイムが長くなる可能性があります。

## ツール
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-tools"></a>

**AWS サービス**
+ [AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html) サービスは、メインフレームアプリケーションを AWS クラウドネイティブなマネージドランタイム環境にモダナイズするのに役立ちます。移行とモダナイズの計画および実装に役立つツールとリソースを提供します。
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) は、Amazon EC2 インスタンスで使用するためのブロックレベルのストレージボリュームを提供します。
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) は、 AWS クラウドでの共有ファイルシステムの作成と設定に役立ちます。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。このパターンでは Amazon Aurora MySQL–Compatible Edition を使用しています。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ 「[Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)」は、受信するアプリケーションまたはネットワークのトラフィックを複数のターゲットに分散します。例えば、1 つ以上のアベイラビリティーゾーンの Amazon EC2 インスタンス、コンテナ、および IP アドレスにトラフィックを分散できます。このパターンでは、Application Load Balancer を使用します。

**ストーンブランチ**
+ 「[ユニバーサルオートメーションセンター (UAC)](https://stonebranchdocs.atlassian.net/wiki/spaces/SD/pages/239239169/Universal+Automation+Center)」は、エンタープライズワークロード自動化製品のシステムです。このパターンでは次の UAC コンポーネントを使用します。
  + Tomcat Web コンテナ内で動作する Java Web アプリケーションである「[ユニバーサルコントローラは](https://www.stonebranch.com/documentation-universal-controller)」は、「ユニバーサルオートメーションセンター」のエンタープライズジョブスケジューラおよびワークロードオートメーションブローカーソリューションです。Controller は、コントローラー情報の作成、監視、設定を行うためのユーザーインターフェイスを提供し、スケジューリングロジックの処理、「ユニバーサルエージェント」との間で送受信されるすべてのメッセージの処理、ユニバーサルオートメーションセンターの「高可用性」運用の大部分の同期を行います。
  + 「[Universal Agent](https://www.stonebranch.com/documentation-universal-agent)」はベンダーに依存しないスケジューリングエージェントで、レガシーおよび分散型を問わず、すべての主要なコンピューティングプラットフォーム上の既存のジョブスケジューラと連携します。z/シリーズ、I/シリーズ、UNIX、Linux、または Windows で動作する全てのスケジューラがサポートされています。
+ 「[Universal Agent](https://www.stonebranch.com/documentation-universal-agent)」はベンダーに依存しないスケジューリングエージェントで、レガシーおよび分散型を問わず、すべての主要なコンピューティングプラットフォーム上の既存のジョブスケジューラと連携します。z/シリーズ、I/シリーズ、UNIX、Linux、または Windows で動作する全てのスケジューラがサポートされています。
+ 「[Stonebranch aws-メインフレーム-モダナイゼイション-stonebranch-インテグレーション AWS Mainframe Modernizationユニバーサルエクステンション](https://github.com/aws-samples/aws-mainframe-modernization-stonebranch-integration/releases)」は、AWS Mainframe Modernizationプラットフォームでバッチジョブを実行、監視、再実行するための統合テンプレートです。

**コード**

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

## エピック
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-epics"></a>

### Amazon EC2 へのユニバーサルコントローラとユニバーサルエージェントのインストール
<a name="install-universal-controller-and-universal-agent-on-amazon-ec2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| インストールファイルをダウンロードします。 | Stonebranch サーバーからインストールをダウンロードします。インストールファイルを入手するには、Stonebranch に連絡してください。 | クラウドアーキテクト | 
| EC2 インスタンスを起動します。 | ユニバーサルコントローラとユニバーサルエージェントのインストールには、約 3 GB の追加スペースが必要です。そのため、インスタンスには少なくとも 30 GB のディスクスペースを確保してください。アクセスできるようにセキュリティグループにポート 8080 を追加します。 | クラウドアーキテクト | 
| 前提条件をチェックします。 | インストールの前に、以下を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | クラウド管理者、Linux 管理者 | 
| ユニバーサルコントローラーをインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | クラウドアーキテクト、Linux 管理者 | 
| ユニバーサルエージェントをインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | クラウド管理者、Linux 管理者 | 
| OMS をユニバーサルコントローラに追加します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | ユニバーサルコントローラー管理者 | 

### AWS Mainframe Modernizationユニバーサルエクステンションをインポートしてタスクを作成する
<a name="import-aws-mainframe-modernization-universal-extension-and-create-a-task"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 統合テンプレートをインポートします。 | このステップには、「[AWS Mainframe Modernizationユニバーサルエクステンション](https://github.com/aws-samples/aws-mainframe-modernization-stonebranch-integration/releases)」が必要です。.zip ファイルの最新リリースバージョンがダウンロードされていることを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html)統合テンプレートをインポートすると、「**利用可能なサービス**」の下に「**AWS Mainframe Modernizationタスク**」が表示されます。 | ユニバーサルコントローラー管理者 | 
| 解決可能な認証情報を有効にする。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | ユニバーサルコントローラー管理者 | 
| タスクを起動します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | ユニバーサルコントローラー管理者 | 

### バッチジョブの開始をテストする
<a name="test-starting-a-batch-job"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| バッチジョブのタスクを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | ユニバーサルコントローラー管理者 | 
| タスクを起動します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | ユニバーサルコントローラー管理者 | 

### 複数のタスクのワークフローを作成する
<a name="create-a-workflow-for-multiple-tasks"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| タスクをコピーしてください。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | ユニバーサルコントローラー管理者 | 
| タスクを更新します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | ユニバーサルコントローラー管理者 | 
| ワークフローを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | ユニバーサルコントローラー管理者 | 
| ワークフロー実行のステータスを確認します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | ユニバーサルコントローラー管理者 | 

### 失敗したバッチジョブのトラブルシューティングと再実行
<a name="troubleshoot-failed-batch-jobs-and-rerun"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 失敗したタスクを修正して再実行してください。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | ユニバーサルコントローラー管理者 | 

### アプリケーションの開始タスクとアプリケーションの停止タスクの作成
<a name="create-start-application-and-stop-application-tasks"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 「アプリケーションを開始」アクションを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | ユニバーサルコントローラー管理者 | 

### バッチキャンセル実行タスクの作成
<a name="create-a-cancel-batch-execution-task"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 「バッチをキャンセル」アクションを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) |  | 

## 関連リソース
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-resources"></a>
+ [ユニバーサルコントローラー](https://stonebranchdocs.atlassian.net/wiki/spaces/UC77/overview)
+ [ユニバーサルエージェント](https://stonebranchdocs.atlassian.net/wiki/spaces/UA77/overview)
+ [LDAP 設定](https://stonebranchdocs.atlassian.net/wiki/spaces/UC77/pages/794552355/LDAP+Settings)
+ [SAML シングルサインオン](https://stonebranchdocs.atlassian.net/wiki/spaces/UC77/pages/794553130/SAML+Single+Sign-On)
+ [エクスプレス・コンバージョン・ツール](https://www.stonebranch.com/resources/xpress-conversion-windows)

## 追加情報
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-additional"></a>

**ワークフローエディターのアイコン**

![\[RUNHELLO タスクを一番上、FOOBAR を中央、残りのタスクを第 3 レベルに配置。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/837430ee-3159-4fe2-8e17-65168294ef1e.png)


**すべてのタスクが接続されている**

![\[RUNHELLO は FOOBAR に接続し、FOOBAR は残りの 3 つのタスクに接続します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/fe483348-9a6f-450b-87e6-ceae6b2bdaad.png)


**ワークフローステータス**

![\[FOOBAR タスクは失敗し、残りの 3 つのタスクは待機中です。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/5ea4e239-fbbe-4fa4-9ffa-b7a9443b7975.png)


# Precisely からのConnect を使用して VSAM ファイルを Amazon RDS または Amazon MSK に移行およびレプリケート
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely"></a>

*Amazon Web Services、Prachi Khanna、Boopathy GOPALSAMY*

## 概要
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-summary"></a>

このパターンは、「[Connect](https://www.precisely.com/product/precisely-connect/connect)」 from Precisely を使用して、メインフレームから AWS クラウドのターゲット環境に仮想ストレージアクセス方法 (VSAM) ファイルを移行および複製する方法を示しています。このパターンで対象となる環境には、Amazon Relational Database Service (Amazon RDS) と Amazon Managed Streaming for Apache Kafka (Amazon MSK) などがあります。Connect は、「[変更データキャプチャ (CDC)](https://www.precisely.com/resource-center/productsheets/change-data-capture-with-connect)」を使用してソース VSAM ファイルへの更新を継続的に監視し、これらの更新を 1 つ以上の AWS ターゲット環境に転送します。このパターンを使用して、アプリケーションのモダナイゼーションやデータ分析の目標を達成できます。たとえば、Connect を使用して VSAM アプリケーションファイルを低レイテンシーで AWS クラウドに移行したり、VSAM データを AWS データウェアハウスまたはデータレイクに移行して、アプリケーションのモダナイゼーションに必要以上の同期レイテンシーに耐えられる分析を行うことができます。

## 前提条件と制限
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-prereqs"></a>

**前提条件**
+ 「[IBM z/OS V2R1](https://www-40.ibm.com/servers/resourcelink/svc00100.nsf/pages/zosv2r1-pdf-download?OpenDocument)」またはそれ以降
+ 「[z/OS 用 CICS トランザクションサーバ (CICS TS) V5.1](https://www.ibm.com/support/pages/cics-transaction-server-zos-51-detailed-system-requirements)」以降 (CICS/VSAM データキャプチャ)
+ 「[IBM MQ 8.0](https://www.ibm.com/support/pages/downloading-ibm-mq-80)」またはそれ以降
+ 「[z/OS セキュリティ要件](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Installation/Install-Connect-CDC-SQData-on-zOS/Prerequisites-for-z/OS/Security-authorization-requirements-for-z/OS)」(SQData ロードライブラリの APF 認可など) への準拠
+ VSAM リカバリーログがオンになっています
+ （オプション）「[CDC ログを自動的にキャプチャする CICS VSAM リカバリバージョン（CICS VR）](https://www.ibm.com/docs/en/cics-vr/5.1?topic=started-introducing-cics-vr)」
+ アクティブなAWS アカウント
+ レガシープラットフォームからアクセス可能なサブネットを持つ「[ Amazon 仮想プライベートクラウド (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html)」 
+ Precisely が提供する VSAM Connect ライセンス

**制限事項**
+ Connect は、ソース VSAM スキーマまたはコピーブックに基づくターゲットテーブルの自動作成をサポートしていません。ターゲットテーブル構造は初めて定義する必要があります。
+ Amazon RDS などの非ストリーミングターゲットの場合は、Apply Engine 設定スクリプトに変換ソースからターゲットへのマッピングを指定する必要があります。
+ ロギング、モニタリング、アラート機能は API を通じて実装され、完全に動作するには外部コンポーネント (Amazon CloudWatch など) が必要です。

製品バージョン
+ z/OS 用 SQData 40134
+ Amazon Elastic Compute Cloud (Amazon EC2) 上の Amazon マシンイメージ (AMI) 用 SQData 4.0.43

## アーキテクチャ
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-architecture"></a>

**ソーステクノロジースタック**
+ Job コントロール言語 (JCL)
+ z/OS UNIX シェルとインタラクティブ・システム・プロダクティビティ・ファシリティ (ISPF)
+ VSAM ユーティリティ (IDCAMS)

**ターゲットテクノロジースタック**
+ Amazon EC2
+ Amazon MSK
+ Amazon RDS
+ Amazon VPC

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

VSAM ファイルを Amazon RDS に移行する

次の図は、ソース環境 (オンプレミスのメインフレーム) では CDC エージェント/パブリッシャー、ターゲット環境 (AWS クラウド) では 「[Apply Engine](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Apply-engine)」を使用して、VSAM ファイルを Amazon RDS などのリレーショナルデータベースにリアルタイムまたはほぼリアルタイムで移行する方法を示しています。

![\[Diagram showing VSAM file migration from on-premises mainframe to AWS クラウド using CDC and Apply Engine.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/4ee183bd-1c0d-449d-8cdc-eb6e2c41a695/images/47cefbde-e0c8-4c36-ba48-cccc2c443074.png)


この図は、次のバッチワークフローを示しています。

1. Connect は、バックアップファイルの VSAM ファイルを比較して変更を特定することでファイルへの変更をキャプチャし、その変更をログストリームに送信します。

1. パブリッシャーはシステムログストリームのデータを消費します。

1. パブリッシャーは、キャプチャしたデータ変更を TCP/IP 経由でターゲットエンジンに伝えます。 Controller デーモンは、ソースとターゲット環境の間の通信を認証します。

1. ターゲット環境のApply Engineは、パブリッシャーエージェントから変更を受け取り、リレーショナルデータベースまたは非リレーショナルデータベースに適用します。

この図は、次のオンラインワークフローを示しています。

1. Connect は、ログ複製を使用してオンラインファイルの変更をキャプチャし、キャプチャした変更をログストリームにストリーミングします。

1. パブリッシャーはシステムログストリームのデータを消費します。

1. パブリッシャーは、キャプチャしたデータ変更を TCP/IP 経由でターゲットエンジンに伝えます。Controller デーモンは、ソースとターゲット環境の間の通信を認証します。

1. ターゲット環境のApply Engineは、パブリッシャーエージェントから変更を受け取り、リレーショナルデータベースまたは非リレーショナルデータベースに適用します。

VSAM ファイルを Amazon MSK に移行しています。

次の図は、VSAM データ構造をメインフレームから Amazon MSK にハイパフォーマンスモードでストリーミングし、Amazon MSK と統合する JSON または AVRO スキーマ変換を自動的に生成する方法を示しています。

![\[Diagram showing data flow from on-premises mainframe to AWS クラウド services via Amazon VPC.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/4ee183bd-1c0d-449d-8cdc-eb6e2c41a695/images/13eb27ad-c0d2-489b-91e1-5b2a729fb8dd.png)


この図は、次のバッチワークフローを示しています。

1. Connect は、CICS VR を使用するか、バックアップファイルの VSAM ファイルを比較して変更を特定することにより、変更をファイルにキャプチャします。キャプチャされた変更はログストリームに送信されます。

1. パブリッシャーはシステムログストリームのデータを消費します。

1. パブリッシャーは、キャプチャしたデータ変更を TCP/IP 経由でターゲットエンジンに伝えます。Controller デーモンは、ソースとターゲット環境の間の通信を認証します。

1. parallel 処理モードで動作している Replicator Engine は、データをワークキャッシュ単位に分割します。

1. ワーカースレッドは、キャッシュからデータをキャプチャします。

1. データはワーカースレッドから Amazon MSK トピックに公開されます。

1. [ユーザーは、コネクタを使用して Amazon MSK の変更を Amazon DynamoDB、Amazon Simple Storage Service (Amazon S3)、または Amazon OpenSearch Service などのターゲットに適用します。](https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-connectors.html)

この図は、次のオンラインワークフローを示しています。

1. オンラインファイル内の変更は、ログ複製を使用してキャプチャされます。キャプチャされた変更がログストリームにストリームされます。

1. パブリッシャーはシステムログストリームのデータを消費します。

1. パブリッシャーは、キャプチャしたデータ変更を TCP/IP 経由でターゲットエンジンに伝えます。Controller デーモンは、ソースとターゲット環境の間の通信を認証します。

1. parallel 処理モードで動作している Replicator Engine は、データをワークキャッシュ単位に分割します。

1. ワーカースレッドは、キャッシュからデータをキャプチャします。

1. データはワーカースレッドから Amazon MSK トピックに公開されます。

1. ユーザーは、「[コネクタ](https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-connectors.html)」を使用して Amazon MSK からの変更を DynamoDB、Amazon S3、OpenSearch Service などのターゲットに適用します。

## ツール
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-tools"></a>
+ 「[Amazon Managed Streaming for Apache Kafka (Amazon MSK)](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html)」 は、Apache Kafka を使ってストリーミングデータを処理するアプリケーションを、構築および実行することを支援するフルマネージドサービスです。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。

## エピック
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-epics"></a>

### ソース環境 (メインフレーム) の準備
<a name="prepare-the-source-environment-mainframe"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Connect CDC 4.1 をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | IBM メインフレーム開発者/管理者 | 
| zFS ディレクトリーをセットアップします。 | zFS ディレクトリをセットアップするには、Precisely ドキュメントの 「[zFS 変数ディレクトリ](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Installation/Install-Connect-CDC-SQData-on-zOS/Prerequisites-for-z/OS/Security-authorization-requirements-for-z/OS/zFS-variable-directories)」の指示に従ってください。コントローラーデーモンとキャプチャ/パブリッシャーエージェントの設定は z/OS UNIX システムサービスファイルシステム (zFS と呼ばれる) に保存されます。コントローラーデーモン、キャプチャ、ストレージ、パブリッシャーの各エージェントには、少数のファイルを保存するための事前定義済みの zFS ディレクトリ構造が必要です。 | IBM メインフレーム開発者/管理者 | 
| TCP/IP ポートを設定します。 | TCP/IP ポートを設定するには、Precisely ドキュメントの 「[TCP/IP](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Installation/Install-Connect-CDC-SQData-on-UNIX/Prerequisites-for-UNIX/Security-authorization-requirements-for-UNIX/TCP/IP-ports)」 ポートに記載されている指示に従ってください。コントローラーデーモンには、ソースシステムの TCP/IP ポートが必要です。ポートはターゲットシステム (キャプチャされた変更データが処理される) のエンジンによって参照されます。 | IBM メインフレーム開発者/管理者 | 
| z/OS ログストリームを作成します。 | 「[z/OS ログストリーム](https://www.ibm.com/docs/en/was/8.5.5?topic=SSEQTP_8.5.5/com.ibm.websphere.installation.zseries.doc/ae/cins_logstrm.html)」を作成するには、Precisely ドキュメントの 「[z/OS システムログストリームの作成](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/IMS-z/OS/IMS-TM-EXIT-capture/Prepare-environment/Create-z/OS-system-logStreams?tocId=wy6243SXlIiEczwR8JE8WA)」 の指示に従ってください。Connect は、移行中にログストリームを使用してソース環境とターゲット環境間でデータをキャプチャし、ストリーミングします。z/OS LogStream を作成する JCL の例については、Precisely ドキュメントの 「[z/OS システムログストリームの作成](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/IMS-z/OS/IMS-TM-EXIT-capture/Prepare-environment/Create-z/OS-system-logStreams?tocId=wy6243SXlIiEczwR8JE8WA)」を参照してください。 | IBM メインフレームデベロッパー | 
| zFS ユーザーとスターティッドタスクの ID を識別して承認します。 | RACF を使用して OMVS zFS ファイルシステムへのアクセスを許可します。JCL の例については、Precisely ドキュメントの 「[zFS ユーザー ID とスターティッドタスク ID の識別と承認](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/IMS-z/OS/IMS-log-reader-capture/Prepare-environment/Identify-and-authorize-zFS-user-and-started-task-IDs?tocId=MrBXpFu~N0iAy~8VTrH0tQ)」を参照してください。 | IBM メインフレーム開発者/管理者 | 
| z/OS 公開鍵/秘密鍵と認証鍵ファイルを生成します。 | JCL を実行してkey pair を生成します。例としては、このパターンの「*追加情報*」セクションの「*キーペアの例*」を参照してください。手順については、Precisely ドキュメントの 「[z/OS 公開鍵、秘密鍵、および認証鍵ファイルの生成](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/Db2-z/OS/Prepare-the-environment/Generate-z/OS-public-and-private-keys-and-authorized-key-file?tocId=fceE77dWT8smZsSaE~FeMQ)」を参照してください。 | IBM メインフレーム開発者/管理者 | 
| CICS VSAM ログ複製をアクティブ化し、ログストリームに添付します。 | 次の JCL スクリプトを実行します。<pre> //STEP1 EXEC PGM=IDCAMS<br /> //SYSPRINT DD SYSOUT=*<br /> //SYSIN DD *<br />   ALTER SQDATA.CICS.FILEA -<br />   LOGSTREAMID(SQDATA.VSAMCDC.LOG1) -<br />   LOGREPLICATE</pre> | IBM メインフレーム開発者/管理者 | 
| FCT を使用して VSAM ファイル回復ログを有効にします。 | 次のパラメータ変更を反映するようにファイル制御テーブル (FCT) を変更します。<pre> Configure FCT Parms<br />   CEDA ALT FILE(name) GROUP(groupname)<br />   DSNAME(data set name)<br />   RECOVERY(NONE|BACKOUTONLY|ALL)<br />   FWDRECOVLOG(NO|1–99)<br />   BACKUPTYPE(STATIC|DYNAMIC)<br />   RECOVERY PARAMETERS<br />   RECOVery : None | Backoutonly | All<br />   Fwdrecovlog : No | 1-99<br />   BAckuptype : Static | Dynamic</pre> | IBM メインフレーム開発者/管理者 | 
| パブリッシャーエージェント用に CDCZlog を設定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | IBM メインフレーム開発者/管理者 | 
| コントローラーデーモンを有効にします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | IBM メインフレーム開発者/管理者 | 
| パブリッシャーを有効にします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | IBM メインフレーム開発者/管理者 | 
| ログストリームをアクティブ化します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | IBM メインフレーム開発者/管理者 | 

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスに Precisely をインストールします。 | Amazon EC2 用の Amazon Linux AMI に Connect from Precisely をインストールするには、Precisely ドキュメントの「[UNIX へのConnect CDC (SQData) のインストール](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Installation/Install-Connect-CDC-SQData-on-UNIX)」の手順に従ってください。 | AWS 全般 | 
| TCP/IP ポートを開きます。 | インバウンドアクセスとアウトバウンドアクセス用のコントローラーデーモンポートを含むようにセキュリティグループを変更するには、Precisely ドキュメントの「[TCP/IP](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/Change-data-capture/Transient-storage-and-publishing/TCP/IP)」の指示に従ってください。 | AWS 全般 | 
| ファイルディレクトリを作成する。 | ファイルディレクトリを作成するには、Precisely ドキュメントの「[ターゲット適用環境の準備](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-targets/Kafka/Prepare-target-apply-environment)」の指示に従ってください。 | AWS 全般 | 
| Apply Engine の設定ファイルを作成します。 | Apply Engine のワーキングディレクトリに Apply Engine 設定ファイルを作成します。次の例の設定ファイルは、ターゲットとして Apache Kafka を示しています。<pre>builtin.features=SASL_SCRAM<br />  security.protocol=SASL_SSL<br />  sasl.mechanism=SCRAM-SHA-512<br />  sasl.username=<br />  sasl.password=<br />  metadata.broker.list=</pre>詳細については、Apache Kafka ドキュメントの「[セキュリティ](https://kafka.apache.org/documentation/#security)」を参照してください。 | AWS 全般 | 
| Apply Engine 処理用のスクリプトを作成します。 | Apply Engine のスクリプトを作成してソースデータを処理し、ソースデータをターゲットに複製します。詳しくは、Precisely ドキュメントの「[適用エンジンスクリプトの作成](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Apply-engine/Apply-engine-script-development/Create-an-apply-engine-script)」を参照してください。 | AWS 全般 | 
| スクリプトを実行します。 |  `SQDPARSE` と `SQDENG` コマンドを使用して、スクリプトを実行します。詳細については、Precisely ドキュメントの 「[ZoS 用のスクリプトを解析する](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Apply-engine/Apply-engine-script-development/Parse-a-script/Parse-a-script-for-zOS)」 を参照してください。 | AWS 全般 | 

### 環境を検証します。
<a name="validate-the-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CDC 処理の対象となる VSAM ファイルとターゲットテーブルのリストを検証します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | AWS 全般、メインフレーム | 
| Connect CDC SQData プロダクトがリンクされていることを確認します。 | テストジョブを実行し、このジョブからのリターンコードが 0 (成功) であることを確認します。Connect CDC SQData Apply Engine のステータスメッセージには、アクティブな接続メッセージが表示されるはずです。 | AWS 全般、メインフレーム | 

### テストケースの実行と検証 (Batch)
<a name="run-and-validate-test-cases-batch"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| メインフレームでバッチジョブを実行します。 | 変更した JCL を使用してバッチアプリケーションジョブを実行します。変更した JCL には、次の処理を行うステップを含めてください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | AWS 全般、メインフレーム | 
| ステップログを確認します。 | ログストリームをチェックして、完了したメインフレームのバッチジョブの変更データが表示されることを確認します。 | AWS 全般、メインフレーム | 
| ソースデルタ変更とターゲットテーブルの数を検証します。 | レコードが集計されていることを確認するには、以下を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | AWS 全般、メインフレーム | 

### テストケースの実行と検証 (オンライン)
<a name="run-and-validate-test-cases-online"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CICS リージョンでオンライントランザクションを実行する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | IBM メインフレームデベロッパー | 
| ステップログを確認します。 | ログストリームに特定のレコードレベルの変更が反映されていることを確認します。 | AWS メインフレームデベロッパー | 
| ターゲットデータベースの数を確認します。 | Apply Engine でレコードレベルのカウントを監視します。 | 正確には Linux です。 | 
| ターゲットデータベースのレコード数とデータレコードを検証します。 | ターゲットデータベースにクエリを実行して、レコード数とデータレコードを検証します。 | AWS 全般 | 

## 関連リソース
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-resources"></a>
+ 「[VSAM z/OS](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/VSAM-z/OS)」 (正確なドキュメンテーション)
+ 「[適用エンジン](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Apply-engine)」 (Precisely ドキュメンテーション)
+ 「[レプリケーターエンジン](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Replicator-engine)」 (Precisely ドキュメンテーション)
+ 「[ログストリーム](https://www.ibm.com/docs/en/zos/2.3.0?topic=logger-log-stream)」 (IBM ドキュメント)

## 追加情報
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-additional"></a>

設定ファイルの例

これは、ソース環境がメインフレーム、ターゲット環境が Amazon MSK であるログストリームの設定ファイルの例です。

```
 
  -- JOBNAME -- PASS THE SUBSCRIBER NAME
  -- REPORT  progress report will be produced after "n" (number) of Source records processed.
  
  JOBNAME VSMTOKFK;
  --REPORT EVERY 100;
  -- Change Op has been ‘I’ for insert, ‘D’ for delete , and ‘R’ for Replace. For RDS it is 'U' for update
  -- Character Encoding on z/OS is Code Page 1047, on Linux and UNIX it is Code Page 819 and on Windows, Code Page 1252
  OPTIONS
  CDCOP('I', 'U', 'D'),
  PSEUDO NULL = NO,
  USE AVRO COMPATIBLE NAMES,
  APPLICATION ENCODING SCHEME = 1208;
  
  --       SOURCE DESCRIPTIONS
  
  BEGIN GROUP VSAM_SRC;
  DESCRIPTION COBOL ../copybk/ACCOUNT AS account_file;
  END GROUP;
  
  --       TARGET DESCRIPTIONS
  
  BEGIN GROUP VSAM_TGT;
  DESCRIPTION COBOL ../copybk/ACCOUNT AS account_file;
  END GROUP;
  
  --       SOURCE DATASTORE (IP & Publisher name)
  
  DATASTORE cdc://10.81.148.4:2626/vsmcdct/VSMTOKFK
  OF VSAMCDC
  AS CDCIN
  DESCRIBED BY GROUP VSAM_SRC ACCEPT ALL;
  
  --       TARGET DATASTORE(s) - Kafka and topic name
  
  DATASTORE 'kafka:///MSKTutorialTopic/key'
  OF JSON
  AS CDCOUT
  DESCRIBED BY GROUP VSAM_TGT FOR INSERT;
  
  --       MAIN SECTION
  
  PROCESS INTO
  CDCOUT
  SELECT
  {
  SETURL(CDCOUT, 'kafka:///MSKTutorialTopic/key')
  REMAP(CDCIN, account_file, GET_RAW_RECORD(CDCIN, AFTER), GET_RAW_RECORD(CDCIN, BEFORE))
  REPLICATE(CDCOUT, account_file)
  }
  FROM CDCIN;
```

キーペアの例

JCL を実行してkey pair を生成する方法の例を次に示します。

```
//SQDUTIL EXEC PGM=SQDUTIL //SQDPUBL DD DSN=&USER..NACL.PUBLIC, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=21200), // DISP=(,CATLG,DELETE),UNIT=SYSDA, // SPACE=(TRK,(1,1)) //SQDPKEY DD DSN=&USER..NACL.PRIVATE, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=21200), // DISP=(,CATLG,DELETE),UNIT=SYSDA, // SPACE=(TRK,(1,1)) //SQDPARMS DD  keygen //SYSPRINT DD SYSOUT= //SYSOUT DD SYSOUT=* //SQDLOG DD SYSOUT=* //*SQDLOG8 DD DUMMY
```

# を使用して CardDemo メインフレームアプリケーションをモダナイズする AWS Transform
<a name="modernize-carddemo-mainframe-app"></a>

*Amazon Web Services、Santosh Kumar Singh、Cheryl du Preez*

## 概要
<a name="modernize-carddemo-mainframe-app-summary"></a>

[AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html) は、メインフレームアプリケーションのモダナイズの迅速化を目的に設計されています。生成 AI を使用することでメインフレームのモダナイズプロセスを合理化します。レガシーコード分析、メインフレームドキュメント、ビジネスルールの抽出、モノリシックアプリケーションのビジネスドメインへの分解、コードリファクタリングなどの複雑なタスクを自動化します。アプリケーション分析や移行シーケンス計画などの複雑なタスクを自動化することで、モダナイズプロジェクトを迅速に実行します。モノリシックアプリケーションを分解する場合、 はメインフレームアプリケーションの変換 AWS Transform をインテリジェントにシーケンスします。これにより、ビジネス機能を並行して 変換できます。 AWS Transform は意思決定を加速し、運用の俊敏性と移行効率を向上させることができます。

このパターンでは、オープンソースのメインフレームアプリケーションのサンプルである [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo) AWS Transform を使用して、 のメインフレームモダナイゼーション機能をテストするのに役立つstep-by-stepの手順を示します。

## 前提条件と制限
<a name="modernize-carddemo-mainframe-app-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ [有効な](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)AWS IAM アイデンティティセンター
+ 管理者が を有効にできるようにする[アクセス許可](https://docs.aws.amazon.com/transform/latest/userguide/security_iam_id-based-policy-examples.html#id-based-policy-examples-admin-enable-transform) AWS Transform
+ 管理者が AWS Transform ウェブアプリケーションの Amazon Simple Storage Service (Amazon S3) 接続リクエストを受け入れることを許可する[アクセス許可](https://docs.aws.amazon.com/transform/latest/userguide/security_iam_id-based-policy-examples.html#id-based-policy-examples-admin-connector) 

**制限事項**
+ AWS Transform は一部の でのみ使用できます AWS リージョン。対応リージョンのリスト全文は「[Supported Regions for AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/regions.html)」よりご確認ください。
+ AWS Transform は、共通ビジネス指向言語 (COBOL) から Java へのコード分析、ドキュメント生成、ビジネスルールの抽出、分解、リファクタリングをサポートしています。詳しくは「[Capabilities and key features](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-features)」および「[Supported file types for transformation of mainframe applications](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-supported-files)」をご確認ください。
+  AWS Transformのメインフレーム変換機能では Service Quota があります。詳細については、「[AWS Transformのクォータ](https://docs.aws.amazon.com/transform/latest/userguide/transform-limits.html)」を参照してください。
+ 共有ワークスペースでコラボレーションするには、すべてのユーザーが、 AWS Transform ウェブアプリケーションのインスタンス AWS IAM アイデンティティセンター に関連付けられている の同じインスタンスの登録済みユーザーである必要があります。
+ Amazon S3 バケット と は、同じ AWS アカウント とリージョンにある AWS Transform 必要があります。

## アーキテクチャ
<a name="modernize-carddemo-mainframe-app-architecture"></a>

このパターンで構築するアーキテクチャを次の図に示します。

![\[AWS Transform を使用して、Amazon S3 バケットに保存されているメインフレームアプリケーションをモダナイズします。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/0e539474-b733-452d-b0fb-6b3f4cbd5075/images/75be6d78-5b43-448c-ad07-bf74b9ae14ad.png)


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

1. AWS Transform はコネクタを使用して、Amazon S3 バケットに保存されている CardDemo メインフレームアプリケーションにアクセスします。

1. AWS Transform は AWS IAM アイデンティティセンター を使用してユーザーアクセスと認証を管理します。システムは、認証、認可、暗号化、アクセス管理のための複数のセキュリティコントロールを実行し、処理中のコードとアーティファクトを保護します。ユーザーはチャットインターフェイスを介して AWS Transform エージェントとやり取りします。特定のタスクに関する指示を AI エージェントに英語で提供できます。詳細については、 AWS Transform ドキュメントの「[Human in the loop (HITL)](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-hitl)」を参照してください。

1. AI エージェントは、ユーザーの指示を解釈し、ジョブプランを作成し、ジョブを実行可能なタスクに分割して、自律的にアクションを実行します。ユーザーは変換を確認して承認できます。変換タスクには以下が含まれます。
   + **コード分析** – ファイル名、ファイルタイプ、コード行、パスなどの詳細について、各ファイルのコードを AWS Transform 分析します。エージェントはソースコードを分析し、分類の実行、依存関係マッピングの作成、欠落しているアーティファクトの特定を行います。また、重複するコンポーネントも識別します。
   + **ドキュメント生成** – メインフレームアプリケーションのドキュメント AWS Transform を生成します。コードを分析することで、レガシーシステムに存在するビジネスロジック、フロー、統合、依存関係の説明など、アプリケーションプログラムの詳細なドキュメントを自動的に作成できます。
   + **ビジネスロジック抽出** – COBOL プログラム AWS Transform を分析してコアビジネスロジックを文書化し、基本的なビジネスロジックを理解するのに役立ちます。
   + **コード分解** – プログラムとコンポーネント間の依存関係を考慮したドメインにコードを AWS Transform 分解します。同じドメイン内で関連ファイルとプログラムをグループ化すると、組織が改善され、より小さなコンポーネントに分割するときにアプリケーションの論理構造が保持されます。
   + **移行ウェーブ計画** – 分解フェーズで作成したドメインに基づいて、 は推奨されるモダナイゼーション順序で移行ウェーブ計画 AWS Transform を生成します。
   + **コードリファクタリング** – すべてのドメインファイルまたは選択したドメインファイルのコードを Java コードに AWS Transform リファクタリングします。この動作は、アプリケーションの重要なビジネスロジックを維持しながら、モダナイズされたクラウド最適化 Java アプリケーションにリファクタリングすることを目的としています。

1. AWS Transform は、リファクタリングされたコード、生成されたドキュメント、関連するアーティファクト、ランタイムライブラリを Amazon S3 バケットに保存します。以下を行うことができます。
   + Amazon S3 バケットのランタイムフォルダにアクセスします。
   +  AWS Transform ドキュメントの「モ[ダナイズされたアプリケーションのリファクタリング後のビルドとデプロイ」に従って、アプリケーションを](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow-build-deploy.html)ビルドおよびデプロイします。
   + チャットインターフェイスを使用して、サンプル AWS CloudFormation AWS Cloud Development Kit (AWS CDK)、または Hashicorp Terraform テンプレートをリクエストしてダウンロードします。これらのテンプレートは、リファクタリングされたアプリケーションをサポートするために必要な AWS リソースをデプロイするのに役立ちます。
   + [リフォージ](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-refactor-code-reforge)を使用すると、大規模言語モデル (LLM) を利用してリファクタリング済みのコード品質が向上します。リファクタリングエンジンは、COBOL を Java コードに変換しながら、COBOL の機能的同等性を維持します。リフォージは、変換後に実行できるオプション手順です。このステップでは LLM を使用してネイティブ Java とよく似たコードを再構築します。これにより、可読性と保守性が向上します。リフォージは、コードの理解に役立つ人間が読めるコメントを追加し、最新のコーディングパターンとベストプラクティスを実行します。

## ツール
<a name="modernize-carddemo-mainframe-app-tools"></a>

**AWS のサービス**
+ [AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html) はエージェンティック AI を使用して、.NET、メインフレーム、VMware ワークロードなどのレガシーワークロードのモダナイズを加速します。
+ [AWS IAM アイデンティティセンター](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) を使用すると、 AWS アカウント およびクラウドアプリケーションへのシングルサインオン (SSO) アクセスを一元管理できます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

**コードリポジトリ**

オープンソースの AWS [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo) メインフレームアプリケーションをサンプルアプリケーションとして使用して、メインフレームのモダナイゼーションを開始できます。

## ベストプラクティス
<a name="modernize-carddemo-mainframe-app-best-practices"></a>
+ **小規模から始める** – メインフレームアプリケーションの AWS Transform 分析と変換の方法を理解するために、小規模で複雑ではないコード (15,000～20,000 行のコード) から始めます。
+ **人間の専門知識と組み合わせる** – 人間の専門知識を適用して最適な結果を得ると同時に、アクセラレータ AWS Transform ーとして使用します。
+ **レビューとテストを徹底する** – 変換されたコードを注意深く確認し、包括的なテストを実行して、変換後の機能同等性を検証します。
+ **フィードバックを提供する** – 改善のためのフィードバックと提案を提供するには、 の**「フィードバックを送信する**」ボタンを使用する AWS マネジメントコンソール か、 でケースを作成します[AWS サポート](https://support.console.aws.amazon.com/)。詳細については、「[サポートケースの作成](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html)」を参照してください。いただいたフィードバックを元に、サービス改善と将来的な開発を行います。

## エピック
<a name="modernize-carddemo-mainframe-app-epics"></a>

### メインフレームアプリケーションを準備する
<a name="prepare-the-mainframe-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| バケットを作成します。 |  AWS Transform が有効になっているのと同じ AWS アカウント およびリージョンに Amazon S3 バケットを作成します。このバケットを使用してメインフレームアプリケーションコードを保存し、このバケット AWS Transform を使用して、生成されたドキュメント、リファクタリングされたコード、および変換に関連付けられたその他のファイルを保存します。手順については、Amazon S3 ドキュメントの「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」を参照してください。 | AWS 全般 | 
| サンプルメインフレームアプリケーションを準備します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html) | アプリ開発者、DevOps エンジニア | 

### IAM Identity Center と を設定する AWS Transform
<a name="configure-sso-and-trn"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| IAM アイデンティティセンターにユーザーを追加します。 | IAM アイデンティティセンターに見込みユーザーを追加します。 AWS Transform ドキュメントの[「IAM Identity Center でのユーザーの追加](https://docs.aws.amazon.com/transform/latest/userguide/transform-user-management.html#transform-add-idc-users)」の手順に従います。 | AWS 管理者 | 
| ユーザーを有効に AWS Transform して追加します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html) | AWS 管理者 | 
|  AWS Transform ウェブアプリケーションへのユーザーアクセスを設定します。 | 各ユーザーは、 AWS Transform ウェブアプリケーションにアクセスするための招待を受け入れる必要があります。 AWS Transform ドキュメントの[「招待を受け入れる](https://docs.aws.amazon.com/transform/latest/userguide/transform-user-onboarding.html#transform-user-invitation)」の手順に従います。 | アプリ開発者、アプリオーナー | 
|  AWS Transform ウェブアプリケーションにログインします。 | [「 にサインインする AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/transform-user-onboarding.html#transform-user-signin)」の手順に従います。 | アプリ開発者、アプリオーナー | 
| ワークスペースをセットアップします。 | ユーザーが AWS Transform ウェブアプリケーションでコラボレーションできるワークスペースを設定します。 AWS Transform ドキュメントの[「プロジェクトを開始する](https://docs.aws.amazon.com/transform/latest/userguide/transform-environment.html#start-workflow)」の手順に従います。 | AWS 管理者 | 

### メインフレームアプリケーションの変換
<a name="transform-the-mainframe-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 変換ジョブを作成します。 | CardDemo メインフレームアプリケーションをモダナイズする変換ジョブを作成します。手順については、 AWS Transform ドキュメント[の「ジョブの作成と開始](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-start-job)」を参照してください。 AWS Transform チャットインターフェイスで目標を設定するように求められたら、**メインフレームモダナイゼーションの実行 (IBM z/OS から へ AWS)** を選択し、**コードの分析、技術ドキュメントの生成、ビジネスロジック、コードの分解、移行シーケンスの計画、コードを Java に変換を選択します**。 | アプリ開発者、アプリオーナー | 
| コネクタをセットアップします。 | CardDemo メインフレームアプリケーションを含む Amazon S3 バケットへのコネクタを構築します。このコネクタにより AWS Transform 、 はバケット内のリソースにアクセスし、連続する変換関数を実行できます。手順については、 AWS Transform ドキュメント[の「コネクタのセットアップ](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-setup-connector)」を参照してください。 | AWS 管理者 | 
| コード分析を実行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)詳細については、 AWS Transform ドキュメントの[「コード分析](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-code-analysis)」を参照してください。 | アプリ開発者、アプリオーナー | 
| 技術ドキュメントを生成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)詳細については、 [ドキュメントの「技術ドキュメントの生成](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-generate-documentation)」を参照してください。 AWS Transform  | アプリ開発者、アプリオーナー | 
| ビジネスロジックを抽出します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)詳細については、 AWS Transform ドキュメントの[「Extract business logic](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-extract-business-logic)」を参照してください。 | アプリ開発者、アプリオーナー | 
| コードを分解します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)分解とシードの詳細については、 AWS Transform ドキュメントの[「分解](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-decomposition)」を参照してください。 | アプリ開発者、アプリオーナー | 
| 移行ウェーブを計画する | CardDemo アプリケーションの移行ウェーブを計画します。「 AWS Transform ドキュメント」の[「移行ウェーブ計画](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-wave-planning)」の指示に従って、ウェーブ計画を確認して編集します。 | アプリ開発者、アプリオーナー | 
| コードをリファクタリングします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html) | アプリ開発者、アプリオーナー | 
| (オプション) Reforge を使用して Java コードを改善します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)詳細については、 AWS Transform ドキュメントの[「リフォージ](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-refactor-code-reforge)」を参照してください。 | アプリ開発者、アプリオーナー | 
| デプロイを合理化します。 | AWS Transform は、CloudFormation、 AWS CDK、または Terraform の infrastructure as code (IaC) テンプレートを提供できます。これらのテンプレートは、コンピューティング、データベース、ストレージ、セキュリティリソースなどのコアコンポーネントをデプロイするのに役立ちます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)詳細については、 AWS Transform ドキュメントの[「デプロイ機能](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-features-deployment)」を参照してください。 | アプリ開発者、アプリオーナー | 

## トラブルシューティング
<a name="modernize-carddemo-mainframe-app-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
|  AWS Transform ウェブアプリケーションでソースコードまたは生成されたドキュメントを表示できません。 | Amazon S3 バケットの CORS アクセス許可にポリシーを追加して、 をオリジン AWS Transform として許可します。詳細については、 AWS Transform ドキュメント[のS3 バケット CORS アクセス許可](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-setup-connector-s3)」を参照してください。 | 

## 関連リソース
<a name="modernize-carddemo-mainframe-app-resources"></a>

**AWS ドキュメント**
+ [メインフレームアプリケーションの変換](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html) (AWS Transform ドキュメント)

**その他の AWS リソース**
+ [で AI エージェントを使用して Mainframe Modernization ジャーニーを加速する AWS Transform](https://aws.amazon.com/blogs/migration-and-modernization/accelerate-your-mainframe-modernization-journey-using-ai-agents-with-aws-transform/) (AWS ブログ記事)
+ [AWS Transform よくある質問](https://aws.amazon.com/transform/faq/)
+ [AWS IAM アイデンティティセンター よくある質問](https://aws.amazon.com/iam/identity-center/faqs/)

**動画とチュートリアル**
+ [Amazon Q Developer の概要: 変換](https://explore.skillbuilder.aws/learn/courses/21893/aws-flash-introduction-to-amazon-q-developer-transform) (AWS スキルビルダー)
+ [AWS re:Invent 2024 - Amazon Q Developer を使用してメインフレームアプリケーションをより迅速にモダナイズ](https://www.youtube.com/watch?v=pSi0XtYfY4o)する (YouTube)
+ [AWS re:Invent 2024 - 移行とモダナイゼーションを自動化してトランスフォーメーションを加速する](https://www.youtube.com/watch?v=9FjxnEoH5wg) (YouTube)
+ [AWS re:Invent 2024 - トヨタが gen AI でイノベーションを推進し、運用効率を高める](https://www.youtube.com/watch?v=_NXc1MJenw4) (YouTube)

**注記**  
AWS Transform は、以前は*メインフレームの Amazon Q Developer 変換*と呼ばれていました。

# と Terraform を使用してメインフレームアプリケーションをモダナイズ AWS Transform およびデプロイする
<a name="modernize-mainframe-app-transform-terraform"></a>

*Amazon Web Services、Mason Cahill、Polaris Jhandi、Prachi Khanna、Sivasubramanian Ramani、Santosh Kumar Singh*

## 概要
<a name="modernize-mainframe-app-transform-terraform-summary"></a>

[AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html) は、.NET、メインフレーム、VMware ワークロードの大規模モダナイズを加速します。評価、コード分析、リファクタリング、分解、依存関係マッピング、検証、変換計画などの複雑なタスクを自動化する特殊な AI エージェントをデプロイします。このパターンは、 AWS Transform を使用してメインフレームアプリケーションをモダナイズし、[Hashicorp Terraform ](https://developer.hashicorp.com/terraform/intro)を使用して AWS インフラストラクチャにデプロイする方法を示しています。この手順はオープンソースのメインフレームアプリケーションのサンプルである [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo) を、COBOL から最新の Java アプリケーションに変換する際に利用できます。

## 前提条件と制限
<a name="modernize-mainframe-app-transform-terraform-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+  AWS リソースを作成してアプリケーションをデプロイするための管理アクセス許可
+ [設定済み](https://developer.hashicorp.com/terraform/tutorials/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS)の Terraform バージョン 1.5.7 以降
+ AWS Terraform のプロバイダー、[設定](https://registry.terraform.io/providers/hashicorp/aws/2.36.0/docs#authentication)済み
+ [有効な](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)AWS IAM アイデンティティセンター
+ [有効な](https://docs.aws.amazon.com/transform/latest/userguide/getting-started.html)AWS Transform
+ 変換ジョブを実行できるコントリビューターロールを持つ AWS Transform ワークスペースに[オンボードされた](https://docs.aws.amazon.com/transform/latest/userguide/transform-user-management.html)ユーザー

**制限事項**
+ AWS Transform は一部の でのみ使用できます AWS リージョン。対応リージョンのリスト全文は「[Supported Regions for AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/regions.html)」よりご確認ください。
+  AWS Transformのメインフレーム変換機能では Service Quota があります。詳細については、「[AWS Transformのクォータ](https://docs.aws.amazon.com/transform/latest/userguide/transform-limits.html)」を参照してください。
+ 共有ワークスペースでコラボレーションするには、すべてのユーザーが、 AWS Transform ウェブアプリケーションのインスタンス AWS IAM アイデンティティセンター に関連付けられている の同じインスタンスの登録済みユーザーである必要があります。
+ Amazon Simple Storage Service (Amazon S3) バケット と は、同じ AWS アカウント とリージョンにある AWS Transform 必要があります。

## アーキテクチャ
<a name="modernize-mainframe-app-transform-terraform-architecture"></a>

次の図は、レガシーアプリケーションのエンドツーエンドのモダナイズと、 AWS クラウドへのデプロイを示しています。アプリケーションとデータベースの認証情報は に保存され AWS Secrets Manager、Amazon CloudWatch はモニタリングおよびログ記録機能を提供します。

![\[AWS Transform は、Terraform を使用してメインフレームアプリケーションとデプロイをモダナイズします。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/78bc1e6e-cd3d-4c6d-ae4b-0675a6898fd9/images/332ccf35-f55a-449e-a05d-7e321b3867b7.png)


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

1. を通じて AWS IAM アイデンティティセンター、ユーザーは AWS Transform で認証とアクセスを行います AWS アカウント。

1. ユーザーは COBOL メインフレームコードを Amazon S3 バケットにアップロードし、 AWS Transformで変換を開始します。

1. AWS Transform は COBOL コードをクラウドネイティブの Java コードにモダナイズし、モダナイズされたコードを Amazon S3 バケットに保存します。

1. Terraform は、Application Load Balancer、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、Amazon Relational Database Service (Amazon RDS) データベースなど、モダナイズされたアプリケーションをデプロイするための AWS インフラストラクチャを作成します。Terraform は、モダナイズされたコードを Amazon EC2 インスタンスにデプロイします。

1. VSAM ファイルは Amazon EC2 にアップロードされ、Amazon EC2 から Amazon RDS データベースに移行されます。

## ツール
<a name="modernize-mainframe-app-transform-terraform-tools"></a>

**AWS のサービス**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。このパターンでは、SQL Server フェイルオーバークラスターインスタンスは Amazon EC2 インスタンスにインストールされます。
+ [AWS IAM アイデンティティセンター](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) を使用すると、 AWS アカウント およびクラウドアプリケーションへのシングルサインオン (SSO) アクセスを一元管理できます。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、 AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) を使用すると、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールで置き換えて、プログラムでシークレットを取得することができます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ [AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html) はエージェンティック AI を使用して、.NET、メインフレーム、VMware ワークロードなどのレガシーワークロードのモダナイズを加速します。

**その他のツール**
+ [Apache Maven](https://maven.apache.org/) は、Java プロジェクト用のオープンソースのソフトウェアプロジェクト管理およびビルド自動化ツールです。
+ [Apache Tomcat](https://tomcat.apache.org/) は、Java コード用のオープンソースの Servlet コンテナおよびウェブサーバーです。
+ [HashiCorp Terraform](https://www.terraform.io/docs) は、コードを使用してクラウドインフラストラクチャとリソースをプロビジョニングして管理するのに役立つ infrastructure as code (IaC) ツールです。
+ [Spring Boot](https://spring.io/projects/spring-boot) は、Java の Spring Framework 上に構築されたオープンソースフレームワークです。

**コードリポジトリ**

このパターンで使用するコードは、GitHub 内の「[Mainframe Transformation E2E](https://github.com/aws-samples/sample-mainframe-transformation-e2e)」リポジトリから取得できます。このパターンでは、オープンソースの AWS [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo) メインフレームアプリケーションをサンプルアプリケーションとして使用します。

## ベストプラクティス
<a name="modernize-mainframe-app-transform-terraform-best-practices"></a>
+ 移行対象となるコードとリソースの完全な所有権を割り当てます。
+ 完全な移行にスケーリングする前に、概念実証を開発してテストします。
+ すべてのステークホルダーからのコミットメントを得てください。
+ 明確なコミュニケーションチャネルを確立します。
+ 実用最小限の製品 (MVP) 要件を定義し文書化します。
+ 明確な成功基準を設定します。

## エピック
<a name="modernize-mainframe-app-transform-terraform-epics"></a>

### メインフレームアプリケーションコードの準備とアップロード
<a name="prepare-and-upload-the-mainframe-application-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| バケットを作成します。 |  AWS Transform が有効になっているのと同じ AWS アカウント およびリージョンに Amazon S3 バケットを作成します。このバケットを使用して、アプリケーションのビルドと実行に必要なメインフレームアプリケーションコード、データ、その他のスクリプトを保存します。 は、このバケット AWS Transform を使用して、リファクタリングされたコードと、変換に関連するその他のファイルを保存します。手順については、Amazon S3 ドキュメントの「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」を参照してください。 | 一般的な AWS、AWS 管理者 | 
| バケットの CORS アクセス許可を設定します。 | アクセス用にバケットを設定するときは AWS Transform 、バケットの Cross-Origin Resource Sharing (CORS) を設定する必要があります。正しく設定されていないと、 AWS Transformのインライン表示またはファイル比較機能が使用できなくなる場合があります。バケットの CORS を設定する方法について、詳しくは Amazon S3 バケットの「[Cross−Origin Resource Sharing (CORS) の使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html)」をご確認ください。ポリシーについては、 AWS Transform ドキュメントの[S3 バケット CORS アクセス許可](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-setup-connector-s3)」を参照してください。 | 一般的な AWS、AWS 管理者 | 
| サンプルメインフレームアプリケーションコードを準備します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | AWS 全般、アプリ開発者 | 

### メインフレームアプリケーションの変換
<a name="transform-the-mainframe-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  AWS Transform ジョブをセットアップします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、アプリオーナー | 
| コネクタをセットアップします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、アプリオーナー | 
| コードを変換します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、アプリオーナー | 

### Terraform を使用してインフラストラクチャをデプロイする
<a name="deploy-the-infrastructure-through-terraform"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| テンプレートを更新します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html)本番稼働および本番稼働に近い環境では、追加のセキュリティコンポーネントを設定します。例えば、[[AWS WAF Application Load Balancer の保護]](https://aws.amazon.com/about-aws/whats-new/2024/02/aws-application-load-balancer-one-click-waf-integrations/) を有効にします。 | 一般的な AWS、AWS 管理者 | 
| インフラストラクチャを準備します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Terraform | 

### Amazon EC2 インスタンスに Apache Tomcat をインストールして設定する
<a name="install-and-configure-apache-tomcat-on-the-ec2-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 必要なソフトウェアをインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、移行エンジニア | 
| ソフトウェアのインストールを確認します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、移行エンジニア | 

### モダナイズされたアプリケーションコードをコンパイルしてパッケージ化する
<a name="compile-and-package-the-modernized-application-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 生成されたコードをダウンロードして抽出します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、移行エンジニア | 
| モダナイズされたアプリケーションを構築します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、移行エンジニア | 

### データベースの移行
<a name="migrate-the-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データベースと JICS スキーマを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、移行エンジニア | 
| データベースの作成を検証します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、移行エンジニア | 
| データを JICS データベースに移行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、移行エンジニア | 

### モダナイズされたアプリケーションをインストールする
<a name="install-the-modernized-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| モダナイズ済みのアプリケーションを Amazon EC2 インスタンスにインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、クラウドアーキテクト | 
| Tomcat サーバーを再起動します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、クラウドアーキテクト | 
| VSAM データセットを移行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、移行エンジニア | 
| Groovy スクリプトのパラメータを更新します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者 | 

### アプリケーションをテストする
<a name="test-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| モダナイズされたアプリケーションをテストします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、テストエンジニア | 
| バッチスクリプトを確認します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | アプリ開発者、テストエンジニア | 

### クリーンアップ
<a name="clean-up"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| インフラストラクチャを削除する準備をします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | AWS 全般 | 
| インフラストラクチャを削除します。 | これらのステップにより、リソースは完全に削除されます。先に進む前に、重要なデータをバックアップしていることを確認してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | AWS 全般 | 

## トラブルシューティング
<a name="modernize-mainframe-app-transform-terraform-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| Terraform 認証 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 
| Tomcat 関連のエラー | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 
| URL 名がロードされない | Application Load Balancer セキュリティグループに、ソースとしてインバウンドルールに IP アドレスがあることを確認します。 | 
| Tomcat ログの認証の問題 | のデータベースシークレットパスワード AWS Secrets Manager と **server.xml** のパスワードが一致していることを確認します。 | 

## 関連リソース
<a name="modernize-mainframe-app-transform-terraform-resources"></a>

**AWS 規範ガイダンス**
+ [Modernize the CardDemo mainframe application by using AWS Transform](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)

**AWS サービスドキュメント**
+ [AWS Blu Age Blusam 管理コンソール](https://docs.aws.amazon.com/m2/latest/userguide/ba-shared-bac-userguide.html)
+ [AWS Blu Age ランタイムのインフラストラクチャセットアップ要件 (非マネージド型)](https://docs.aws.amazon.com/m2/latest/userguide/ba-infrastructure-setup.html)
+ [AWS Blu Age ランタイムのオンボーディング](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-setup-onboard.html)
+ [メインフレームアプリケーションのモダナイゼーション](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/transform-app-mainframe.html)
+ [AWS Blu Age ランタイムの設定](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-config.html)

**AWS ブログ投稿**
+ [で AI エージェントを使用して Mainframe Modernization ジャーニーを加速する AWS Transform](https://aws.amazon.com/blogs/migration-and-modernization/accelerate-your-mainframe-modernization-journey-using-ai-agents-with-aws-transform/)

# Rocket Enterprise Server と LRS PageCenterX AWS を使用してメインフレーム出力管理をモダナイズする
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx"></a>

*Amazon Web Services、Shubham Roy*

*Micro Focus、Abraham Rondon*

*Levi、Ray and Shoup Inc、Guy Tucker*

## 概要
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-summary"></a>

メインフレームの出力管理を最新化することで、コスト削減を実現し、レガシーシステムを維持することによる技術的負担を軽減し、DevOps とAmazon Web Services（AWS）のクラウドネイティブテクノロジーによる耐障害性と敏捷性を向上させることができます。このパターンは、ビジネスクリティカルなメインフレーム出力管理ワークロードを AWS クラウドで最新化する方法を示しています。このパターンでは、[Rocket Enterprise Server](https://www.rocketsoftware.com/en-us/products/enterprise-suite/enterprise-server) をモダナイズ対象のメインフレームアプリケーションのランタイムとして使用し、Levi, Ray & Shoup, Inc. (LRS) の VPSX/MFI (Micro Focus Interface) をプリントサーバー、LRS PageCenterx をアーカイブサーバーとして使用します。LRS PageCenterx は、表示、インデックス作成、検索、アーカイブを行い、ビジネスアウトプットへのアクセスを保護するためのアウトプット管理ソリューションを提供します。

このパターンは、「[リプラットフォーム](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/)」のメインフレーム近代化アプローチに基づいています。メインフレームアプリケーションは「[AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html)」により、Amazon Elastic Compute Cloud (Amazon EC2) に移行されます。メインフレームの出力管理ワークロードは Amazon EC2 に移行され、IBM Db2 for z/OS などのメインフレームデータベースは Amazon Relational Database Service (Amazon RDS) に移行されます。LRS Directory Integration Server（LRS/DIS）は、Microsoft Active DirectoryのAWS Directory Serviceと連携して、出力管理ワークフロー認証と認可を行います。

## 前提条件と制限
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ メインフレームの出力管理ワークロード。
+ Rocket Enterprise Server 上で動作するメインフレームアプリケーションを再構築して配信する方法に関する基本知識。詳しくは、Rocket Software ドキュメントの「[Rocket Enterprise Server](https://www.rocketsoftware.com/sites/default/files/resource_files/enterprise-server.pdf)」のデータシートをご確認ください。
+ LRS クラウド印刷ソリューションとコンセプトに関する基本知識。詳細については、LRS ドキュメントの「*Output Modernization*」を参照してください。
+ Rocket Enterprise Server のソフトウェアとライセンス。詳しくは [Rocket Software](https://www.rocketsoftware.com/products/enterprise-suite/request-contact) にお問い合わせください。
+ LRS VPSX/MFI、LRS PageCenterx、LRS/Queueおよび LRS/DIS ソフトウェアとライセンス。詳しくは [LRS](https://www.lrsoutputmanagement.com/about-us/contact-us/) にお問い合わせください。LRS 製品がインストールされる EC2 インスタンスのホスト名を指定する必要があります。


| 
| 
| メインフレーム出力管理ワークロードの設定上の考慮事項の詳細については、このパターンの「[追加情報](#modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional)」セクションの「*考慮事項*」を参照してください。 | 
| --- |

**製品バージョン**
+ [Rocket Enterprise Server 10.0](https://www.rocketsoftware.com/products/enterprise-suite/enterprise-test-server)
+ 「[LRS VPSX/MFI](https://www.lrsoutputmanagement.com/products/modernization-products/)」
+ 「[LRS PageCenterX](https://www.lrsoutputmanagement.com/products/content-management/pagecenterx-for-open-systems/)」V1R3 以降

## アーキテクチャ
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-architecture"></a>

**ソーステクノロジースタック**
+ オペレーティングシステム — IBM z/OS
+ プログラミング言語 — 共通ビジネス指向言語 (COBOL)、ジョブ制御言語 (JCL) と顧客情報管理システム (CICS)
+ データベース — IBM Db2 for z/OS、IBM 情報管理システム (IMS) データベースおよび仮想ストレージアクセス方法 (VSAM)
+ セキュリティ — Resource Access Control Facility (RACF)、CA Top Secret for z/OS、Access Control Facility 2 (ACF2)
+ 印刷およびアーカイブソリューション — IBM メインフレーム z/OS 出力および印刷製品 (z/OS、LRSおよび CA Deliver 用 IBM InfoPrint サーバー) およびアーカイブソリューション (CA デリバリー、ASG Mobiusまたは CA バンドル)

ソースアーキテクチャ

次の図は、メインフレームの出力管理ワークロードの一般的な現状のアーキテクチャを示しています。

![\[メインフレーム出力プロセスを 7 つのステップで実行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f9ad041d-b9f0-4a9a-aba7-40fdc3088b27/images/d170394a-c9b2-43c0-a3d4-677b5f7c2473.png)


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

1. ユーザーは、COBOL で書かれた IBM CICS アプリケーション上に構築されたエンゲージメントシステム (SoE) 上でビジネストランザクションを実行します。

1. SoE はメインフレームサービスを呼び出し、IBM DB2 for z/OS などの記録システム (SoR) データベースにビジネストランザクションデータを記録します。

1. SoR は SoE からのビジネスデータを永続化します。

1. バッチジョブスケジューラは印刷出力を生成するためにバッチ・ジョブを開始します。

1. バッチジョブはデータベースからデータを抽出します。ビジネスニーズに基づき、データをフォーマットし、請求明細書、ID カード、ローン明細書などのビジネス出力を生成します。最後に、バッチジョブは出力を出力管理にルーティングし、ビジネスニーズに基づき、出力フォーマット、公開、保存を行います。

1. 出力管理はバッチジョブからの出力を受け取ります。出力管理は、LRS PageCenterx ソリューション（このパターンで示されている）や CA View などの出力管理システム内の指定された宛先に出力を索引付け、整と公開を行います。

1. ユーザーは出力の表示、検索、取得を行うことができます。

**ターゲットテクノロジースタック**
+ オペレーティングシステム — Amazon EC2 上で実行される Windows サーバー
+ コンピューティング — Amazon EC2
+ ストレージ — Amazon Elastic Block Store (Amazon EBS) と Amazon FSx for Windows File Server
+ プログラミング言語 — COBOL、JCL と CICS
+ データベース— Amazon RDS
+ セキュリティ — AWS Managed Microsoft AD
+ 印刷とアーカイブ — AWS での LRS 印刷 (VPSX) とアーカイブ (PageCenterX) ソリューション
+ メインフレームランタイム環境 — Rocket Enterprise Server

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

次の図は、AWS クラウドにデプロイされるメインフレームのバッチ印刷ワークロードのアーキテクチャを示しています。

![\[7 つのステップでバッチアプリケーションと出力管理のターゲットアーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f9ad041d-b9f0-4a9a-aba7-40fdc3088b27/images/3e25ab03-bf3a-4fea-b5eb-38cea9e50138.png)


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

1. バッチジョブスケジューラはバッチジョブを開始して、請求明細書、ID カード、ローン明細書などの出力を生成します。

1. メインフレームのバッチジョブ (「[Amazon EC2 にリプラットフォーム](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/)」) は、Rocket Enterprise Server ランタイムを使用してアプリケーションデータベースからデータを抽出し、データにビジネスロジックを適用し、データをフォーマットします。次に、[Rocket Software プリンターの返しモジュール](https://www.microfocus.com/documentation/enterprise-developer/ed100/ED-Eclipse/HCOMCMJCLOU020.html) (「OpenText Micro Focus ドキュメント」) により、データを出力先に送信します。

1. アプリケーションデータベース (Amazon RDS 上で実行する SoR) は、印刷出力用のデータを永続化します。

1. LRS VPSX/MFI プリンティングソリューションは Amazon EC2 にデプロイされ、そのオペレーションデータが Amazon EBS に保存されます。LRS VPSX/MFI は TCP/IP ベースの LRS/キュートランスミッションエージェントにより、Rocket Software JES 印刷終了 API を通じて出力データを収集します。

   LRS VPSX/MFI は EBCDIC から ASCII への変換などデータの前処理を行います。また、IBM Advanced Function Presentation (AFP) や Xerox ラインコンディショニングデータストリーム (LCDS) などのメインフレーム専用データストリームを、プリンターコマンド言語 (PCL) や PDF などのより一般的な表示と印刷データストリームに変換するなど、より複雑なタスクも実行します。

   LRS PageCenterx のメンテナンスウィンドウの間、LRS VPSX/MFI は出力キューを保持し、出力キューのバックアップとして使用します。LRS VPSX/MFI は LRS/Queue プロトコルで LRS PageCenterx に接続し、出力を送信します。LRS/Queue はジョブの準備完了と交換完了を実行し、データ転送が確実に行われるようにします。

   **注意**:

   Rocket Software Print Exit から LRS/Queue に渡される印刷データと LRS VPSX/MFI がサポートするメインフレームのバッチメカニズムについて、詳しくは「[追加情報](#modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional)」セクションの「*印刷データキャプチャ*」を参照してください。

   注: LRS VPSX/MFI はプリンターフリートレベルでもヘルスチェックを実行できます。詳細は、「[追加情報](#modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional)」セクションの「*プリンターフリートのヘルスチェック*」を参照してください。

1. LRS PageCenterx 出力管理ソリューションは Amazon EC2 にデプロイされ、その運用データは Amazon FSx for Windows File Server に保存されます。LRS PageCenterX は、LRS PageCenterx にインポートされたすべてのファイルと、そのファイルにアクセスできるすべてのユーザーを一元的に管理するレポート管理システムを提供しています。ユーザーは特定のファイルコンテンツを表示しまたは複数のファイルを検索して条件に一致するものを探すことができます。

   LRS/netX コンポーネントは、LRS PageCenterx アプリケーションと他の LRS アプリケーションに共通のランタイム環境を提供するマルチスレッド Web アプリケーションサーバーです。LRS/Web Connect コンポーネントは Web サーバーにインストールし、Web サーバーから LRS/NetX Web アプリケーションサーバーへのコネクタを提供しています。

1. LRS PageCenterx はファイルシステムオブジェクト用のストレージを提供しています。LRS PageCenterx の運用データは、Amazon FSx for Windows File Server に保存されています。

1. 出力管理認証と認可は、LRS/DIS を使用して AWS が管理する Microsoft AD によって実行されます。

**注記**  
ターゲットソリューションでは通常、IBM AFP や Xerox LCDS などのメインフレームフォーマット言語に対応するためにアプリケーションを変更する必要はありません。

AWS インフラストラクチャアーキテクチャ

次の図は、メインフレームの出力管理ワークロード用で、その可用性が高く安全な AWS インフラストラクチャアーキテクチャを示しています。

![\[7 つのステップでワークフローを使用するマルチ AZ AWS インフラストラクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f9ad041d-b9f0-4a9a-aba7-40fdc3088b27/images/8d8aa995-b576-4ecd-8a7c-5f566740a515.png)


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

1. バッチスケジューラはバッチプロセスを開始し、高可用性 (HA) のために複数の「[アベイラビリティーゾーン](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)」にわたって Amazon EC2 にデプロイされます。
**注記**  
このパターンはバッチスケジューラの実装には適用されません。実装の詳細については、スケジューラのソフトウェアベンダードキュメントを参照してください。

1. メインフレームのバッチジョブ (JCL や COBOL などのプログラミング言語で書かれる) は、コアビジネスロジックを使用して、請求明細書、ID カード、ローン明細書などの印刷出力を処理し生成します。バッチジョブは、HA 用の 2 つのアベイラビリティーゾーンにわたって Amazon EC2 にデプロイされます。Rocket Software Print Exit API により、印刷出力を LRS VPSX/MFI にルーティングし、データの前処理を行います。

1. LRS VPSX/MFI プリントサーバーは、HA (アクティブ/スタンバイ冗長ペア) 用の 2 つのアベイラビリティーゾーンにわたって Amazon EC2 にデプロイされます。「[Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)」を運用データストアとして使用します。Network Load Balancer は LRS VPSX/MFI EC2 インスタンスのヘルスチェックを実行します。アクティブなインスタンスが異常な状態である場合、ロードバランサーは他のアベイラビリティーゾーンのホットスタンバイインスタンスにトラフィックをルーティングします。印刷リクエストは、各 EC2 インスタンスの LRS Job Queue にローカルに保持されます。障害が生じた場合、LRS サービスが印刷リクエストの処理を再開する前に、障害が生じたインスタンスを再起動する必要があります。
**注記**  
LRS VPSX/MFI はプリンターフリートレベルでもヘルスチェックを実行できます。詳細は、「[追加情報](#modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional)」セクションの「*プリンターフリートのヘルスチェック*」を参照してください。

1. LRS PageCenterX 出力管理は、HA (アクティブ/スタンバイ冗長ペア) 用の 2 つのアベイラビリティーゾーンにわたって Amazon EC2 にデプロイされます。「[Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html)」「を運用データストアとして使用します。アクティブなインスタンスが異常な状態である場合、ロードバランサーは LRS PageCenterx EC2 インスタンスのヘルスチェックを実行し、トラフィックを他のアベイラビリティーゾーンのスタンバイインスタンスにルーティングします。

1. 「[Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)」は、LRS VPSX/MFI サーバーを LRS PageCenterx と統合するための DNS 名を提供します。
**注記**  
LRS PageCenterX はレイヤー 4 ロードバランサーをサポートします。

1. LRS PageCenterx は、HA の 2 つのアベイラビリティーゾーンにデプロイされた運用データストアとして Amazon FSx for Windows File Server を使用します。LRS PageCenterx は、ファイル共有内のファイルのみを解析し、外部データベース内のファイルは解析しません。

1. 「[AWS マネージド Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)」は LRS/DIS と組み合わせて使用し、出力管理ワークフローの認証と認可を行います。詳しくは「[追加情報](#modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional)」セクションの「*出力認証と認可の印刷*」を参照してください。

## ツール
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-tools"></a>

** サービス**
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) により、ディレクトリ対応型ワークロードと AWS リソースが、AWS クラウドの Microsoft Active Directory を使用できるようになります。
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) は、 Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで使用するブロックレベルストレージのボリュームを提供します。
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。必要な数の仮想サーバーを起動することができ、迅速にスケールアップまたはスケールダウンができます。
+ 「[Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)」は、受信したアプリケーションまたはネットワークのトラフィックを複数のターゲットに分散させます。例えば、1 つ以上のアベイラビリティーゾーンの Amazon EC2 インスタンス、コンテナと IP アドレスにトラフィックを分散できます。このパターンは、Network Load Balancer を使用します。
+ 「[Amazon FSx](https://docs.aws.amazon.com/fsx/?id=docs_gateway)」は、業界標準の接続プロトコルをサポートし、AWS リージョン全体で高い可用性とレプリケーションを提供するファイルシステムを提供しています。このパターンは Amazon FSx for Windows File Server を使用します。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。

その他のツール
+ 「[LRS PageCenterx](https://www.lrsoutputmanagement.com/products/content-management/pagecenterx-for-open-systems/)」ソフトウェアは、スケーラブルなドキュメントおよびレポートコンテンツ管理ソリューションを提供することで、自動インデックス作成、暗号化、高度な検索機能によってユーザーが情報から最大限の価値を引き出せるようにします。
+ [LRS VPSX/MFI (Micro Focus Interface)](https://www.lrsoutputmanagement.com/products/modernization-products/) は、LRS と Rocket Software と連携して、Rocket Enterprise Server JES スプールからの出力をキャプチャし、指定された印刷先に確実に配信します。
+ LRS/キューは TCP/IP に基づいた転送エージェントです。LRS VPSX/MFI は LRS/Queue により、Rocket Software JES Print Exit プログラミングインターフェイスで印刷データを収集しまたはキャプチャします。
+ LRS ディレクトリ統合サーバー (LRS/DIS) は、印刷ワークフローにおける認証と認可に使用されます。
+ [Rocket Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed80/ES-WIN/GUID-F7D8FD6E-BDE0-4169-8D8C-96DDFFF6B495.html) は、メインフレームアプリケーション用アプリケーションのデプロイです。Rocket Enterprise Developer の任意のバージョンで移行または作成されたメインフレームアプリケーション用のランタイム環境を提供しています。

## エピック
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-epics"></a>

### Rocket ランタイムを設定し、メインフレームのバッチアプリケーションをデプロイします。
<a name="set-up-the-rocket-runtime-and-deploy-a-mainframe-batch-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ランタイムを設定し、デモアプリケーションをデプロイします。 | Amazon EC2 に Rocket Enterprise Server を設定し、Rocket Software BankDemo デモンストレーションアプリケーションをデプロイするには、AWS Mainframe Modernization の「[ユーザーガイド](https://docs.aws.amazon.com/m2/latest/userguide/mf-runtime-setup.html)」の指示に従ってください。BankDemo アプリケーションは、印刷出力を作成して開始するメインフレームのバッチアプリケーションです。 | クラウドアーキテクト | 

### Amazon EC2 で LRS プリントサーバーを設定
<a name="set-up-an-lrs-print-server-on-amazon-ec2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon EC2 Windows インスタンスを作成します。 | Amazon EC2 ドキュメントの「[Amazon EC2 インスタンスの起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)」に記載の指示に従って、Amazon EC2 Windows インスタンスを起動します。LRS 製品ライセンスに使用されたホスト名と同じものを使用してください。インスタンスは、LRS VPSX/MFI に対する次のハードウェア要件とソフトウェア要件を満たしている必要があります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html)前述のハードウェア要件とソフトウェア要件は、小規模なプリンターフリート (約 500～1000 台) を対象としています。すべての要件については、LRS と AWS の担当者にお問い合わせください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| EC2 インスタンスに LRS VPSX/MFI をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| LRS/Queue をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| LRS/DIS をインストールします。 | LLRS/DIS製品は通常、LRS VPSXインストールに含まれています。ただし、LRS/DIS が LRS VPSX と一緒にインストールされなかった場合は、次の手順に従い、インストールしてください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| ターゲットグループを作成します。 | 「[Network Load Balancer のターゲットグループを作成する](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-target-group.html)」の指示に従って、ターゲットグループを作成します。ターゲットグループを作成したら、LRS VPSX/MFI EC2 インスタンスをターゲットとして登録します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| Network Load Balancer を作成します。 | Network Load Balancer を作成するには、「[Elastic Load Balancing ドキュメント」の指示に従ってください 」](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html)。Network Load Balancer は、Rocket Enterprise Server から LRS VPSX/MFI EC2 インスタンスにトラフィックをルーティングします。Network Load Balancer を作成するときは、**[リスナーとルーティング]** ページで次の値を選択します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 

### Rocket Enterprise Server を LRS/Queue と LRS/ VPSX/MFI に統合する
<a name="integrate-rocket-enterprise-server-with-lrs-queue-and-lrs-vpsx-mfi"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| LRS/Queue 統合用に Rocket Enterprise Server を設定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| LRS VPSX/MFI 統合用に Rocket Enterprise Server を設定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 

### 印刷キューと印刷ユーザーを設定
<a name="set-up-the-print-queue-and-the-print-users"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Rocket Software Print Exit モジュールを Rocket Enterprise Server のバッチプリンターサーバー実行プロセスに関連付けます。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| LRS VPSX/MFI で印刷出力キューを作成し、LRS PageCenterX と統合します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| LRS VPSX/MFI でプリントユーザーを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 

### Amazon EC2 で LRS PageCenterx サーバーを設定
<a name="set-up-an-lrs-pagecenterx-server-on-amazon-ec2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon EC2 Windows インスタンスを作成します。 | Amazon EC2 ドキュメントの「[ステップ 1: インスタンスを起動する](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-launch-instance)」の次の指示に従い、Amazon EC2 Windows インスタンスを起動します。LRS 製品ライセンスに使用したホスト名と同じものを使用してください。インスタンスは、LRS PageCenterx のため次のハードウェア要件とソフトウェア要件を満たす必要があります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html)前述のハードウェア要件とソフトウェア要件は、小規模なプリンターフリート (約 500～1000 台) を対象としています。すべての要件については、LRS と AWS の担当者にお問い合わせください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| EC2 インスタンスに LRS PageCenterX をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| LRS/DIS をインストールします。 | LLRS/DIS製品は通常、LRS VPSXインストールに含まれています。ただし、LRS/DIS が LRS VPSX と一緒にインストールされなかった場合は、次の手順に従い、インストールしてください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| ターゲットグループを作成します。 | 「[Network Load Balancer のターゲットグループを作成する](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-target-group.html)」の指示に従い、ターゲットグループを作成します。ターゲットグループを作成したら、LRS PageCenterx EC2 インスタンスをターゲットとして登録します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| Network Load Balancer を作成します。 | Network Load Balancer を作成するには、「[Elastic Load Balancing ドキュメント」の指示に従ってください 」](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html)。Network Load Balancer は、LRS VPSX/MFI からのトラフィックを LRS PageCenterx EC2 インスタンスにルーティングします。Network Load Balancer を作成するときは、**[リスナーとルーティング]** ページで次の値を選択します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 

### LRS PageCenterX に出力管理機能を設定します。
<a name="set-up-output-management-features-in-lrs-pagecenterx"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| LRS PageCenterX のインポート機能を有効にします。 | LRS PageCenterx インポート機能を使用すると、LRS PageCenterx に表示される出力をJob 名やフォーム ID などの基準で認識できます。その後、出力を LRS PageCenterx の特定のフォルダにルーティングできます。インポート機能を有効にするには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| ドキュメント保存ポリシーを設定します。 | LRS PageCenterx はドキュメント保存ポリシーにより、LRS PageCenterx にドキュメントを保存する期間を決定します。ドキュメント保存ポリシーを設定するには、以下を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| 出力ドキュメントを LRS PageCenterx の特定のフォルダにルーティングするルールを作成します。 | LRS PageCenterx では、**レポート定義**がこの**送信先**を呼び出したときに、出力が送信されるフォルダパスが決定されます この例では、レポート定義の **Form ID** フォルダに基づくフォルダを作成し、出力をそのフォルダに保存します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| レポート定義を作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 

### アウトプット管理の認証と認可を設定します。
<a name="set-up-authentication-and-authorization-for-output-management"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ユーザーとグループを持つ AWS Managed Microsoft AD ドメインを作成ます。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| EC2 インスタンスを AWS Managed Microsoft AD ドメインに参加させます。 | LRS VPSX/MFI および LRS PageCenterX EC2 インスタンスを AWS マネージド Microsoft AD ドメインに 「[ 自動 ](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-systems-manager-dx-domain/)」 (AWS ナレッジセンターのドキュメント) または 「[ 手動 ](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html)」 (AWS Directory Service ドキュメント) で結合します。 | クラウドアーキテクト | 
| LRS PageCenterx EC2 インスタンス用に LRS/DIS を AWS Managed Microsoft AD と設定して統合します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| LRS VPSX から LRS PageCenterX に出力をインポートするようにインポートグループを設定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| セキュリティルールをインポートグループに追加します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| LRS PageCenterX にユーザーを作成して、LRS VPSX/MFI からの出力インポートを実行します。 | LRS PageCenterX でユーザーを作成して出力インポートを実行する場合、ユーザー名は LRS VPSX/MFI の印刷出力キューの **VPSX ID** と同じようにする必要があります。この例では、VPSX ID は **VPS1** です。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| LRS PageCenterX インポートユーザーをインポート専用グループに追加します。 | LRS VPSX から LRS PageCenterx へのドキュメントのインポートに必要な権限を与えるには、次の操作を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 
| LRS VPSX/MFI EC2 インスタンス用に AWS Managed Microsoft AD で LRS/DIS を設定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 

### Amazon FSx for Windows File Server を LRS PageCenterx の運用データストアとして設定します。
<a name="configure-amazon-fsx-for-windows-file-server-as-the-operational-data-store-for-lrs-pagecenterx"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| LRS PageCenterx 用のファイルシステムを作成します。 | Multi-AZ 環境で Amazon FSx for Windows File Server を LRS PageCenterX の運用データストアとして使用するには「[Step 1: Create your file system](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/getting-started-step1.html)」に記載の指示に従ってください。 | クラウドアーキテクト | 
| ファイル共有を LRS PageCenterx EC2 インスタンスにマッピングします。 | 前のステップで作成したファイル共有を LRS PageCenterX EC2 インスタンスにマッピングするには、「[ステップ 2: Windows サーバーを実行する EC2 インスタンスへファイル共有をマッピング](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/getting-started-step2.html)」の指示に従います。 | クラウドアーキテクト | 
| LRS PageCenterX Control DirectoryとMaster Folder Directoryを Amazon FSx ネットワーク共有ドライブにマッピングします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | クラウドアーキテクト | 

### 出力管理ワークフローのテスト
<a name="test-an-output-management-workflow"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Rocket Software BankDemo アプリからバッチ印刷リクエストを開始します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | テストエンジニア | 
| LRS PageCenterX の印刷出力をチェックします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | テストエンジニア | 

## 関連リソース
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-resources"></a>
+ 「[LRS](https://www.lrsoutputmanagement.com/products/modernization-products)」
+ 「[Advanced Function Presentationデータストリーム](https://www.ibm.com/docs/en/i/7.4?topic=streams-advanced-function-presentation-data-stream)」 (IBM ドキュメント)
+ 「[ラインコンディショニングデータストリーム (LCDS)](https://www.compart.com/en/lcds)」(Compart ドキュメント)
+ 「[Empowering Enterprise Mainframe Workloads on AWS with Micro Focus](https://aws.amazon.com/blogs/apn/empowering-enterprise-grade-mainframe-workloads-on-aws-with-micro-focus/)」 (ブログ記事)
+ 「[メインフレームのオンライン印刷ワークロードを AWS で最新化](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)」 (AWS 規範ガイダンス)
+ 「[メインフレームのバッチ印刷ワークロードを AWS で最新化](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)」 (AWS 規範ガイダンス)

## 追加情報
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional"></a>

**考慮事項**

モダナイゼーションを進める中で、メインフレームのバッチプロセスとオンラインプロセスおよびそれらにより生成される出力について、さまざまな構成を検討する必要があるかもしれません。メインフレームプラットフォームは、印刷に直接影響する特定の要件に合わせて、使用するすべての顧客とベンダーによってカスタマイズされています。例えば、現在のプラットフォームでは、IBM AFP データストリームや Xerox LCDS が現在のワークフローに組み込まれている場合があります。さらに、「[メインフレームのキャリッジコントロール文字](https://www.ibm.com/docs/en/cmofz/10.5.0?topic=tips-ansi-machine-carriage-controls)」や「[チャネルコマンドワード](https://www.ibm.com/docs/en/zos/3.1.0?topic=devices-channel-command-words)」が印刷ページの外観に影響を与える場合があり、特別な処理が必要な場合もあります。モダナイゼーション計画プロセスの一環として、特定の印刷環境における構成を評価し、理解しておくことをお勧めします。 

印刷データキャプチャ

Rocket Software Print Exit は、LRS VPSX/MFI がスプールファイルを効果的に処理するために必要な情報を渡します。この情報は、関連する制御ブロックに渡される次のようなフィールドで構成されています。
+ JobName
+ 所有者 (ユーザー ID)
+ 送信先
+ フォーム
+ ファイル名
+ 書き込み

LRS VPSX/MFI は、Rocket Enterprise Server からデータをキャプチャするための以下のメインフレームバッチメカニズムをサポートしています。
+ 標準 z/OS JCL SYSOUT DD/OUTPUT ステートメントを使用して COBOL の印刷/スプール処理をバッチ処理します。
+ 標準 z/OS JCL CA-SPOOL SUBSYS DD ステートメントを使用して COBOL 印刷/スプールをバッチ処理します。
+ CBLTDLI インターフェイスを使用した IMS/COBOL プリント/スプール処理。サポートされているメソッドとプログラミング例の完全なリストについては、「製品ライセンスに含まれている LRS ドキュメント」を参照してください。

プリンターフリートのヘルスチェック

LRS VPSX/MFI (LRS LoadX) は、デバイス管理や運用の最適化など、詳細なヘルスチェックを実行できます。デバイス管理では、プリンターデバイスの障害を検出し、印刷要求を正常なプリンターに転送できます。プリンターデバイスの詳細なヘルスチェックについて、詳しくは、製品ライセンスに付属の「LRSドキュメント」を参照してください。

印刷認証と認可

LRS/DISを使用すると、LRSアプリケーションはMicrosoft Active DirectoryサーバーまたはLightweight Directory Access Protocol(LDAP)サーバーを使用してユーザー ID とパスワードを認証できます LRS/DIS は、基本的な印刷認可に加えて、次のようなユースケースでも粒度レベルの印刷セキュリティ制御を適用できます。
+ プリンタージョブを参照できるユーザーを管理します。
+ 他のユーザーのジョブの参照レベルを管理します。
+ 保留やリリース、削除、変更、コピー、ルート変更などのコマンドレベルのセキュリティなどの運用タスクを管理します。セキュリティは Active Directory セキュリティグループと LDAP グループと同様に、ユーザー ID またはグループのいずれかで設定できます。

## アタッチメント
<a name="attachments-f9ad041d-b9f0-4a9a-aba7-40fdc3088b27"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/f9ad041d-b9f0-4a9a-aba7-40fdc3088b27/attachments/attachment.zip)」

# Rocket Enterprise Server と LRS VPSX/MFI を使用して AWS 、 でメインフレームのバッチ印刷ワークロードをモダナイズする
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi"></a>

*Amazon Web Services、Shubham Roy、Kevin Yung*

*Micro Focus、Abraham Rondon*

*Levi、Ray and Shoup Inc、Guy Tucker*

## 概要
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-summary"></a>

このパターンは、最新のメインフレームアプリケーションのランタイムとして Rocket Enterprise Server を使用し、プリントサーバーとして LRS VPSX/MFI (Micro Focus Interface) を使用することで、Amazon Web Services (AWS) クラウド上のビジネスクリティカルなメインフレームのバッチ印刷ワークロードをモダナイズする方法を示しています。このパターンは、「[リプラットフォーム](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/)」のメインフレーム近代化アプローチに基づいています。このアプローチでは、メインフレームのバッチジョブを Amazon Elastic Compute Cloud (Amazon EC2) に、メインフレームデータベース (IBM DB2 for z/OS など) を Amazon Relational Database Service (Amazon RDS) に移行します。最新の印刷ワークフローの認証と認可は、AWS Managed Microsoft AD としても知られる Microsoft Active Directory のための AWS Directory Service によって実行されます。LRS Directory Information Server (LRS/DIS) は AWS Managed Microsoft AD と統合されています。バッチ印刷ワークロードを最新化することで、IT インフラストラクチャコストの削減、レガシーシステムの維持に伴う技術的負担の軽減、データサイロの排除、DevOps モデルによる敏捷性と効率性の向上、AWS クラウドのオンデマンドリソースと自動化の活用が可能になります。

## 前提条件と制限
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ メインフレームの印刷または出力管理のワークロード
+ Rocket Enterprise Server上で動作するメインフレームアプリケーションを再構築して配信する方法に関する基本知識 (詳しくは Rocket ドキュメントの「[Rocket Enterprise Server](https://www.rocketsoftware.com/sites/default/files/resource_files/enterprise-server.pdf)」を参照してください)
+ [LRS クラウド印刷](https://www.lrsoutputmanagement.com/solutions/solutions-cloud-printing/)ソリューションとコンセプトに関する基本知識
+ Rocket Enterprise Server のソフトウェアとライセンス (詳しくは [Rocket 営業担当](https://www.rocketsoftware.com/en-us/products/enterprise-suite/request-contact)にお問い合わせください)
+ LRS VPSX/MFI、LRS/Queue、LRS/DIS のソフトウェアとライセンス (詳細については、「[LRS の営業担当](https://www.lrsoutputmanagement.com/about-us/contact-us/)」にお問い合わせください)。

**注記**  
メインフレームのバッチ印刷ワークロードの設定上の考慮事項について、詳細は、このパターンの「[追加情報](#modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-additional)」セクションの「*考慮事項*」を参照してください。

**製品バージョン**
+ [Rocket Enterprise Server](https://www.microfocus.com/en-us/products/enterprise-server/overview?utm_campaign=7018e000000PgfnAAC&utm_content=SCH-BR-AMC-AppM-AMS&gclid=EAIaIQobChMIoZCQ6fvS9wIVxQN9Ch2MzAOlEAAYASAAEgKx2fD_BwE) 6.0 (製品アップデート 7)
+ 「[LRS VPSX/MFI](https://www.lrsoutputmanagement.com/products/vpsx-enterprise/)」 V1R3 以上

## アーキテクチャ
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-architecture"></a>

**ソーステクノロジースタック**
+ オペレーティングシステム — IBM z/OS
+ プログラミング言語 — 共通ビジネス指向言語 (COBOL)、ジョブ制御言語 (JCL) と顧客情報管理システム (CICS)
+ データベース — IBM DB2 for z/OS および仮想ストレージアクセス方法 (VSAM)
+ セキュリティ — Resource Access Control Facility (RACF)、CA Top Secret for z/OS、Access Control Facility 2 (ACF2)
+ 印刷と出力管理 — IBM メインフレーム z/OS 印刷製品 (IBM Tivoli Output Manager for z/OS、LRS と CA View)

**ターゲットテクノロジースタック**
+ オペレーティングシステム — Amazon EC2 上で実行する Microsoft Windows Server
+ コンピューティング — Amazon EC2
+ プログラミング言語 — COBOL、JCL と CICS
+ データベース — Amazon RDS
+ セキュリティ — AWS Managed Microsoft AD
+ 印刷と出力管理 — AWS での LRS 印刷ソリューション
+ メインフレームランタイム環境 — Rocket Enterprise Server

**ソースアーキテクチャ**

次の図は、メインフレームのバッチ印刷ワークロードの一般的な現状のアーキテクチャを示しています。

![\[ユーザーからメインフレームサービス、Db2 for z/OS、ジョブスケジューラ、バッチジョブ、出力までを 6 つのステップで実行できます。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/36de7312-4860-4702-a325-c01cf74c4f33/images/83d82435-0aa6-4eb8-a5c8-0920102afb09.png)


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

1. ユーザーは、COBOL で書かれた IBM CICS アプリケーション上に構築されたエンゲージメントシステム (SoE) 上でビジネストランザクションを実行します。

1. SoE はメインフレームサービスを呼び出し、IBM DB2 for z/OS などの記録システム (SoR) データベースにビジネストランザクションデータを記録します。

1. SoR は SoE からのビジネスデータを永続化します。

1. バッチジョブスケジューラは、バッチジョブを開始して印刷出力を生成します。

1. バッチジョブは、データベースからデータを抽出し、ビジネス要件に基づいてデータをフォーマットしてから、請求明細書、IDカード、ローン明細書などのビジネス出力を生成します。最後に、バッチジョブは出力を印刷出力管理にルーティングし、ビジネス要件に基づいて処理と出力配信を行います。 

1. 印刷出力管理は、バッチジョブからの印刷出力を受け取り、その出力を電子メール、セキュア FTP を使用するファイル共有、LRS 印刷ソリューション (このパターンで示されている) を使用する物理プリンター、IBM Tivoli などの指定された宛先に配信します。

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

次の図は、AWS クラウドにデプロイされるメインフレームのバッチ印刷ワークロードのアーキテクチャを示しています。

![\[スケジューラ、Rocket Enterprise Server、データベースを使用して AWS でアプリケーションを 4 つのステップでバッチ処理します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/36de7312-4860-4702-a325-c01cf74c4f33/images/8cdd4ef7-3cbd-476a-9aa4-c1c0924f17c6.png)


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

1. バッチジョブスケジューラはバッチジョブを開始して、請求明細書、ID カード、ローン明細書などの印刷出力を作成します。

1. メインフレームバッチジョブ (「[Amazon EC2 にリプラットフォーム](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/)」) は、Rocket Enterprise Server ランタイムを使用してアプリケーションデータベースからデータを抽出し、ビジネスロジックをデータに適用し、データをフォーマットしてから、「[Rocket Software Print Exit](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/HCOMCMJCLOU020.html)」(Micro Focus のドキュメント) を使用してデータを印刷先に送信します。

1. アプリケーションデータベース (Amazon RDS 上で実行する SoR) は、印刷出力用のデータを永続化します。

1. LRS VPSX/MFI 印刷ソリューションは Amazon EC2 にデプロイされ、運用データは Amazon Elastic Block Store (Amazon EBS) に保存されます。LRS VPSX/MFI は TCP/IP ベースの LRS/キュートランスミッションエージェントを使用して、Rocket Software JES Print Exit API を介して印刷データを収集し、そのデータを指定されたプリンター宛先に配信します。

**注記**  
通常、ターゲットソリューションでは、IBM Advanced Function Presentation (AFP) や Xerox Line Condition Data Stream (LCDS) などのメインフレームフォーマット言語に対応するためにアプリケーションを変更する必要はありません。Rocket Software を使用して AWS 上のメインフレームアプリケーションの移行とモダナイズを行う方法について詳しくは、ブログ記事「[Empowering Enterprise Mainframe Workloads on AWS with Micro Focus](https://aws.amazon.com/blogs/apn/empowering-enterprise-grade-mainframe-workloads-on-aws-with-micro-focus/)」をご確認ください。

AWS インフラストラクチャアーキテクチャ

次の図は、メインフレームのバッチ印刷ワークロードに向けた可用性と安全性に優れた AWS インフラストラクチャアーキテクチャを示しています。

![\[Rocket Software と LRS コンポーネントを使用した AWS へのマルチ AZ 配置を 7 つのステップで実行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/36de7312-4860-4702-a325-c01cf74c4f33/images/287dd143-338c-4d83-a9b2-8e39214a81b0.png)


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

1. バッチスケジューラはバッチプロセスを開始し、高可用性 (HA) のために複数の「[アベイラビリティーゾーン](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)」にわたって Amazon EC2 にデプロイされます。
**注記**  
このパターンはバッチスケジューラの実装には適用されません。実装の詳細については、スケジューラのソフトウェアベンダーのドキュメントを参照してください。

1. メインフレームバッチジョブ (JCL や COBOL などのプログラミング言語で書かれている) は、コアビジネスロジックで、請求明細書、ID カード、ローン明細書などの印刷出力を処理し、生成します。ジョブは、HA を実現するために Amazon EC2 で 2 つのアベイラビリティーゾーンにまたがってデプロイされます。また、Rocket Software Print Exit で印刷出力を LRS VPSX/MFI にルーティングし、エンドユーザーが印刷できるようにします。

1. LRS VPSX/MFI は TCP/IP ベースの LRS/Queue 送信エージェントを使用して、Rocket Software JES Print Exit プログラミングインターフェイスから印刷データを収集またはキャプチャします。Print Exit は、LRS VPSX/MFI がスプールファイルを効果的に処理し、LRS/Queue コマンドを動的に作成できるようにするために必要な情報を渡します。その後、Rocket Software の標準ビルトイン関数を使用してコマンドが実行されます。
**注記**  
Rocket Software Print Exit から LRS/Queue に渡される印刷データと LRS VPSX/MFI がサポートするメインフレームのバッチメカニズムの詳細については、このパターンの「[追加情報](#modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-additional)」セクションの「*印刷データキャプチャ*」を参照してください。

1. 
**注記**  
[Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) は、Rocket Enterprise Server を LRS VPSX/MFI と統合するための DNS 名を提供します。: LRS VPSX/MFI はレイヤー 4 ロードバランサーをサポートします。また、Network Load Balancer は LRS VPSX/MFI の基本的なヘルスチェックを行い、登録されている正常なターゲットにトラフィックをルーティングします。

1. 
**注記**  
LRS VPSX/MFI プリントサーバーは、高可用性を実現するために Amazon EC2 で 2 つのアベイラビリティーゾーン (AZ) にまたがってデプロイされており、運用データストアとして「[Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/what-is-ebs.html)」を使用しています。LRS VPSX/MFI は、アクティブ-アクティブとアクティブ-パッシブの両方のサービスモードをサポートします。このアーキテクチャでは、アクティブ/パッシブペアの複数の AZ をアクティブスなホットスタンバイとして使用します。アクティブなインスタンスの状態が異常な場合、Network Load Balancer は LRS VPSX/MFI EC2 インスタンスのヘルスチェックを実行し、別の AZ のホットスタンバイインスタンスにトラフィックをルーティングします。印刷リクエストは、各 EC2 インスタンスの LRS Job Queue にローカルに保持されます。復旧した場合、LRS サービスが印刷リクエストの処理を再開するには、障害が発生したインスタンスを再起動する必要があります。: LRS VPSX/MFI はプリンターフリートレベルでもヘルスチェックを実行できます。詳しくは「[追加情報](#modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-additional)」セクションの「*プリンターフリートのヘルスチェック*」をご確認ください。

1. [AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) は LRS/DIS と統合して、印刷ワークフローの認証と認可を行います。詳しくは「[追加情報](#modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-additional)」 セクションの「*認証と認可の印刷*」を参照してください。

1. LRS VPSX/MFI はブロックストレージに Amazon EBS を使用しています。アクティブな EC2 インスタンスからAmazon EBS データをポイントインタイムスナップショットとして Amazon S3 にバックアップし、ホットスタンバイ EBS ボリュームに復元できます。Amazon EBS ボリュームスナップショットの作成、保持、削除を自動化するには、「[Amazon Data Lifecycle Manager](https://aws.amazon.com/blogs/aws/new-lifecycle-management-for-amazon-ebs-snapshots/)」で自動スナップショットの頻度を設定し、「[RTO/RPO 要件](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html)」に基づいて復元することができます。

## ツール
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-tools"></a>

**AWS サービス**
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/ebs/latest/userguide/what-is-ebs.html) は、EC2 インスタンスで使用するためのブロックレベルのストレージボリュームを提供します。EBS ボリュームの動作は、未初期化のブロックデバイスに似ています。これらのボリュームは、デバイスとしてインスタンスにマウントできます。
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。Amazon EC2 を使用して必要な分だけ仮想サーバーを起動できます。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) は、AWS クラウドでリレーショナルデータベースを簡単にセットアップし、運用し、拡張することのできるウェブサービスです。リレーショナルデータベース向けに、コスト効率に優れ、サイズ変更可能な容量を提供し、一般的なデータベース管理タスクを管理します。
+ AWS Managed Microsoft AD とも呼ばれる [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) を使用することで、ディレクトリ対応型ワークロードと AWS リソースが、AWS クラウドの Microsoft Active Directory を使用できるようになります。

**その他のツール**
+ [LRS VPSX/MFI (Micro Focus Interface)](https://www.lrsoutputmanagement.com/products/vpsx-enterprise/) は、LRS と Rocket Software と連携して、Rocket Enterprise Server JES スプールからの出力をキャプチャし、指定された印刷先に確実に配信します。
+ LRS Directory Information Server (LRS/DIS) は、印刷ワークフロー中の認証と認可に使用されます。
+ LRS VPSX/MFI は TCP/IP ベースの LRS/Queue 送信エージェントを利用し、Rocket Software JES Print Exit プログラミングインターフェイスから印刷データを収集またはキャプチャします。
+ [Rocket Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-A2F23243-962B-440A-A071-480082DF47E7.html) は、メインフレームアプリケーション用アプリケーションのデプロイです。Rocket Software Enterprise Developer の任意のバージョンで移行または作成されたメインフレームアプリケーションの実行環境を提供します。

## エピック
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-epics"></a>

### Amazon EC2 で Rocket Enterprise Server を設定し、メインフレームバッチアプリケーションをデプロイします。
<a name="set-up-rocket-enterprise-server-on-amazon-ec2-and-deploy-a-mainframe-batch-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Rocket Enterprise Server を設定し、デモアプリケーションをデプロイします。 | Amazon EC2 で Rocket Enterprise Server を設定し、Rocket Software BankDemo デモアプリケーションを Amazon EC2 にデプロイします。BankDemo アプリケーションは、印刷出力を作成して開始するメインフレームのバッチアプリケーションです。 | クラウドアーキテクト | 

### Amazon EC2 で LRS プリントサーバーを設定
<a name="set-up-an-lrs-print-server-on-amazon-ec2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 印刷用の LRS 製品ライセンスを取得します。 | LRS VPSX/MFI、LRS/Queue と LRS/DIS の LRS 製品ライセンスを取得するには、「[LRS Output Management チーム](https://www.lrsoutputmanagement.com/about-us/contact-us/)」にお問い合わせください。LRS 製品をインストールする EC2 インスタンスのホスト名を指定する必要があります。 | ビルドリード | 
| Amazon EC2 Windows インスタンスを作成して LRS VPSX/MFI を作成します。 | Amazon EC2 ドキュメントの「[Amazon EC2 インスタンスの起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)」に記載の指示に従って、Amazon EC2 Windows インスタンスを起動します。インスタンスは、LRS VPSX/MFI に対する次のハードウェア要件とソフトウェア要件を満たしている必要があります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html)前述のハードウェア要件とソフトウェア要件は、小規模なプリンターフリート (約 500～1000 台) を対象としています。すべての要件については、LRS と AWS の担当者にお問い合わせください。Windows インスタンスの作成時に、次のようにしてください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| EC2 インスタンスに LRS VPSX/MFI をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| LRS/Queue をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| LRS/DIS をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| ターゲットグループを作成し、LRS VPSX/MFI EC2 をターゲットとして登録します。 | Elastic Load Balancing ドキュメントの「[Network Load Balancer のターゲットグループを作成する](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-target-group.html)」の次の指示に従い、ターゲットグループを作成します。ターゲットグループを作成する際には、以下のようにしてください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| Network Load Balancer を作成します。 | 「Elastic Load Balancing ドキュメント」の「[Network Load Balancer を作成する](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html)」の次の指示に従います。Network Load Balancer は、Rocket Enterprise Server から LRS VPSX/MFI EC2 にトラフィックをルーティングします。Network Load Balancer を作成し、**[リスナーとルーティング]** ページで次の操作を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 

### Rocket Enterprise Server を LRS VPSX/MFI と LRS/Queue に統合する
<a name="integrate-rocket-enterprise-server-with-lrs-vpsx-mfi-and-lrs-queue"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| LRS/Queue 統合用に Rocket Enterprise Server を設定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html)LRS は現在 DNS 名の最大文字数を 50 文字まで制限していますが、今後変更される可能性があります。DNS 名が 50文字 より大きい場合は、代わりに Network Load Balancer の IP アドレスを使用できます。 | クラウドアーキテクト | 
| LRS VPSX/MFI 統合用に Rocket Enterprise Server を設定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 

### Rocket Enterprise Server と LRS VPSX/MFI にプリンターとプリントユーザーを設定します。
<a name="set-up-printers-and-print-users-in-rocket-enterprise-server-and-lrs-vpsx-mfi"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Rocket Software Print Exit モジュールを Rocket Enterprise Server のバッチプリンターサーバー実行プロセスに関連付けます。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html)設定の詳細については、「Micro Focus のドキュメント」の「[Exit の使用](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/HCOMCMJCLOS025.html)」を参照してください。 | クラウドアーキテクト | 
| LRS VPSX/MFI にプリンターを追加してください。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| LRS VPSX/MFI でプリントユーザーを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 

### 印刷認証と認可の設定
<a name="set-up-print-authentication-and-authorization"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ユーザーとグループを持つ AWS Managed Microsoft AD ドメインを作成ます。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| LRS VPSX/MFI EC2 を AWS Managed Microsoft AD ドメインに接続します。 | LRS VPSX/MFI EC2 を AWS Managed Microsoft AD ドメイン   に「[自動](https://repost.aws/knowledge-center/ec2-systems-manager-dx-domain)」(AWS ナレッジセンターのドキュメント) または「[手動」](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/launching_instance.html)(AWS Directory Service ドキュメント) で参加させます。 | クラウドアーキテクト | 
| LRS/DIS を AWS Managed Microsoft AD と設定し、統合します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 

### 印刷ワークフローのテスト
<a name="test-a-print-workflow"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Rocket Software BankDemo アプリからバッチ印刷リクエストを開始します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | テストエンジニア | 
| LRS VPSX/MFI のプリント出力を確認します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html)これで、**アカウント No.**、**説明**、**日付**、**金額**および**残高**の列を含む取引明細書が印刷されます。例として、このパターンの **[batch\$1print\$1output]** 添付ファイルを参照してください。 | テストエンジニア | 

## 関連リソース
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-resources"></a>
+ 「[LRS 出力のモダナイゼーション](https://www.lrsoutputmanagement.com/)」(LRS ドキュメント)
+ 「[ANSI とマシンキャリッジ制御](https://www.ibm.com/docs/en/cmofz/9.5.0?topic=tips-ansi-machine-carriage-controls)」(IBM ドキュメント)
+ 「[チャネルコマンドワード](https://www.ibm.com/docs/en/zos/2.3.0?topic=devices-channel-command-words)」(IBM ドキュメント)
+ 「[Micro Focus による AWS 上のエンタープライズメインフレームワークロードの強化](https://aws.amazon.com/blogs/apn/empowering-enterprise-grade-mainframe-workloads-on-aws-with-micro-focus/)」(AWS パートナー ネットワークブログ)
+ 「[Amazon EC2 Auto Scaling とSystems Manager による Micro Focus エンタープライズサーバー PAC の構築](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.html)」(AWS 規範ガイダンスのドキュメント)
+ 「[Advanced Function Presentation (AFP) データストリーム](https://www.ibm.com/docs/en/i/7.4?topic=streams-advanced-function-presentation-data-stream)」(IBM ドキュメント)
+ 「[ラインコンディショニングデータストリーム (LCDS)](https://www.compart.com/en/lcds)」(Compart ドキュメント)

## 追加情報
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-additional"></a>

**考慮事項**

モダナイゼーションを進める中で、メインフレームのバッチプロセスとそれらが生成する出力について、さまざまな構成を検討するかもしれません。メインフレームプラットフォームは、印刷に直接影響する特定の要件に合わせて、使用するすべての顧客とベンダーによってカスタマイズされています。例えば、現在のプラットフォームでは、IBM Advanced Function Presentation (AFP) や Xerox Line Condition Data Stream (LCDS) が現在のワークフローに組み込まれている場合があります。さらに、「[メインフレームのキャリッジコントロール文字](https://www.ibm.com/docs/en/cmofz/9.5.0?topic=tips-ansi-machine-carriage-controls)」や「[チャネルコマンドワード](https://www.ibm.com/docs/en/zos/2.3.0?topic=devices-channel-command-words)」は、印刷ページの外観に影響を与える可能性があり、特別な処理が必要な場合もあります。モダナイゼーション計画プロセスの一環として、特定の印刷環境における構成を評価し、理解しておくことをお勧めします。

印刷データキャプチャ

Rocket Software Print Exit は、LRS VPSX/MFI がスプールファイルを効果的に処理するために必要な情報を渡します。この情報は、関連する制御ブロックに渡される次のようなフィールドで構成されます。
+ JobName
+ 所有者 (ユーザー ID)
+ 送信先
+ フォーム
+ ファイル名
+ 書き込み

LRS VPSX/MFI は、Rocket Enterprise Server からデータをキャプチャするための以下のメインフレームバッチメカニズムをサポートしています。
+ 標準の z/OS JCL SYSOUT DD/OUTPUT ステートメントにより、COBOL 印刷/スプールをバッチ処理します。
+ 標準の z/OS JCL CA-SPOOL SUBSYS DD ステートメントにより、BATCH COBOL 印刷/スプールをバッチ処理します。
+ CBLTDLI インターフェイスを使用した IMS/COBOL 印刷/スプール処理 (サポートされているメソッドとプログラミング例の全リストについては、製品ライセンスに含まれている LRS ドキュメントを参照してください)。

プリンターフリートのヘルスチェック

LRS VPSX/MFI (LRS LoadX) は、デバイス管理や運用の最適化など、詳細なヘルスチェックを実行できます。デバイス管理では、プリンターデバイスの障害を検出し、印刷要求を正常なプリンターに転送できます。プリンターフリートの詳細なヘルスチェックについて、詳細は、製品ライセンスに含まれている LRS のドキュメントを参照してください。

印刷認証と認可

LRS/DIS を使用すると、LRS アプリケーションは Microsoft Active Directory または LDAP サーバーでユーザー ID とパスワードを認証できます。LRS/DIS は、基本的な印刷認可に加えて、次のようなユースケースでも粒度レベルの印刷セキュリティ制御を適用できます。
+ プリンタージョブを参照できるユーザーを管理します。
+ 他のユーザーのジョブの参照レベルを管理します。
+ 運用タスクを管理します。例えば、保留/リリース、削除、変更、コピー、ルート変更などのコマンドレベルのセキュリティなど。セキュリティは、ユーザー ID またはグループ (AD グループや LDAP グループと同様) のいずれかで設定できます。

## アタッチメント
<a name="attachments-36de7312-4860-4702-a325-c01cf74c4f33"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/36de7312-4860-4702-a325-c01cf74c4f33/attachments/attachment.zip)」

# メインフレームのモダナイゼーション: Rocket Software Enterprise Suite AWS を使用した での DevOps
<a name="mainframe-modernization-devops-on-aws-with-micro-focus"></a>

*Amazon Web Services、Kevin Yung*

## 概要
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-summary"></a>

**お客様の課題**

メインフレームハードウェアでコアアプリケーションを実行する組織では、デジタルイノベーションの要求を満たすためにハードウェアをスケールアップする必要がある場合、通常、いくつかの課題に直面します。これらの課題には、以下の制約があります。 
+ メインフレームの開発環境とテスト環境は、メインフレームのハードウェアコンポーネントには柔軟性がなく、変更には高いコストがかかるため、拡張することができません。
+ 新規開発者は従来のメインフレーム開発ツールに慣れておらず、興味もないため、メインフレーム開発はスキル不足に直面しています。コンテナ、継続的統合/継続的デリバリー (CI/CD) パイプライン、最新のテストフレームワークなどの最新テクノロジーは、メインフレーム開発では利用できません。

**パターンアウトカム**

これらの課題に対処するため、Amazon Web Services (AWS) と AWS Partner Network (APN) パートナーである Rocket Software Micro Focus は共同でこのパターンを作成しました。このソリューションが以下の成果達成に役立つように設計されています。
+ 開発者の生産性が向上されました。開発者は、新しいメインフレーム開発インスタンスを数分で取得できます。
+ を使用して AWS クラウド 、実質的に無制限の容量で新しいメインフレームテスト環境を作成します。
+ 新しいメインフレーム CI/CD インフラストラクチャの迅速なプロビジョニング。でのプロビジョニングは、 AWS CloudFormation と を使用して 1 時間以内に完了 AWS できます AWS Systems Manager。
+ 、、Amazon Elastic Container Registry (Amazon ECR) など AWS CodeBuild AWS CodeCommit AWS CodePipeline AWS CodeDeploy、メインフレーム開発用の AWS DevOps ツールのネイティブ使用。
+ 従来のウォーターフォール開発をメインフレームプロジェクトのアジャイル開発に変換します。

**テクノロジーの概要**

このパターンでは、ターゲットスタックには以下のコンポーネントが含まれます。


| 
| 
| 論理コンポーネント | 実装ソリューション | 説明 | 
| --- |--- |--- |
| ソースコードリポジトリ | Rocket Software AccuRev Server、CodeCommit、Amazon ECR  | ソースコード管理 – このソリューションでは 2 種類のソースコードを使用します。 COBOL、JCL などのメインフレームソースコード AWS インフラストラクチャテンプレートと自動化スクリプト どちらのタイプのソースコードもバージョン管理が必要ですが、異なる SCM で管理されます。メインフレームまたは Rocket Software Enterprise Server にデプロイされたソースコードは Rocket Software Micro Focus AccuRev Server で管理 AWS され、自動化スクリプトは CodeCommit で管理されます。Amazon ECR は Docker イメージリポジトリに使用されます。 | 
| エンタープライズ開発者インスタンス | Amazon Elastic Compute Cloud (Amazon EC2)、Rocket Software Enterprise Developer for Eclipse | メインフレーム開発者は、Rocket Software Enterprise Developer for Eclipse を使用して Amazon EC2 でコードを開発できます。これにより、コードの作成やテストをメインフレームのハードウェアに依存しなくても構わないです。  | 
| Rocket Software Enterprise Suite ライセンス管理 | Rocket Software Enterprise Suite License Manager | Rocket Software Enterprise Suite のライセンス管理とガバナンスを一元化するために、このソリューションは Rocket Software Enterprise Suite License Manager を使用して、必要なライセンスをホストします。 | 
| CI/CD パイプライン | CodePipeline、CodeBuild、CodeDeploy、コンテナの Rocket Software Enterprise Developer、コンテナの Rocket Software Enterprise Test Server、Rocket Software Micro Focus Enterprise Server | メインフレーム開発チームには、コードのコンパイル、統合テスト、および回帰テストを実行するための CI/CD パイプラインが必要です。では AWS、CodePipeline と CodeBuild は、コンテナ内の Rocket Software Enterprise Developer と Enterprise Test Server をネイティブに操作できます。 | 

## 前提条件と制限事項
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-prereqs"></a>

**前提条件**


| 
| 
| 名前 | 説明 | 
| --- |--- |
| py3270 | py3270 は IBM 3270 ターミナルエミュレーター x3270 への Python インターフェイスです。x3270 または s3270 サブプロセスに API を提供します。 | 
| 3270 | x3270 は X ウィンドウシステムと Windows の IBM 3270 ターミナルエミュレーターです。 開発者はこれをローカルでのユニットテストに使用できます。 | 
| ロボット-フレームワーク-メインフレーム-3270-ライブラリ | メインフレーム3270 は py3270 プロジェクトベースのロボットフレームワークのライブラリです。 | 
| Rocket Software Verastream | Rocket Software Verastream は、モバイルアプリ、ウェブアプリケーション、SOA ウェブサービスのテストと同じ方法でメインフレームアセットのテストを可能にする統合プラットフォームです。 | 
| Rocket Software Unified Functional Testing (UFT) インストーラとライセンス | Rocket Software Unified Functional Testing は、ソフトウェアアプリケーションおよび環境の機能テストと回帰テストを自動化するソフトウェアです。 | 
| Rocket Software Enterprise Server のインストーラとライセンス | エンタープライズサーバーはメインフレームアプリケーション用のランタイム環境を提供します。 | 
| Rocket Software Enterprise Test Server のインストーラとライセンス | Rocket Software Enterprise Test Server は、IBM メインフレームアプリケーションのテスト環境です。 | 
| サーバー用の Rocket Software AccuRev インストーラとライセンス、Windows および Linux オペレーティングシステム用の Rocket Software Micro Focus AccuRev インストーラとライセンス  | AccuRev はソースコード管理 (SCM) を提供します。AccuRev システムは、複数のファイルを開発するチームによる使用を想定して設計されています。 | 
| Rocket Software Enterprise Developer for Eclipse インストーラ、パッチ、ライセンス | エンタプライズ開発者に、メインフレームの中核となるオンラインおよびバッチアプリケーションの開発と保守を行うためのプラットフォームを提供します。 | 

**制限事項**
+ Windows Docker イメージのビルドはCodeBuild に適用されません。この[報告された問題には](https://github.com/docker-library/docker/issues/49) 、Windows カーネル/HCS チームと Docker チームからのサポートが必要です。回避策は、システムマネージャーを使用して Docker イメージビルドランブックを作成することです。このパターンでは、回避策を使用して Rocket Software Enterpise Developer for Eclipse と Rocket Software Micro Focus Enterprise Test Server のコンテナイメージをビルドします。 
+ CodeBuild からの仮想プライベートクラウド (VPC) 接続は Windows ではまだサポートされていないため、このパターンでは、OpenText Rocket Software Enterprise Developer および Rocket Software Enterprise Test Server コンテナ内のライセンスを管理するために Rocket Software License Manager を使用しません。

**製品バージョン**
+ Rocket Software Enterprise Developer 5.5 以降
+ Rocket Software Enterprise Test Server 5.5 以降
+ Rocket Software Enterprise Server 5.5 以降
+ Rocket Software AccuRev 7.x 以降
+ Rocket Software Enterprise Developer および Enterprise Test Server 用 Windows Docker ベースイメージ: **microsoft/dotnet-framework-4.7.2-runtime**
+ AccuRev クライアントの Linux Docker ベースイメージ：**amazonlinux:2**

## アーキテクチャ
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-architecture"></a>

**メインフレーム環境**

従来のメインフレーム開発では、開発者はメインフレームのハードウェアを使用してプログラムの開発とテストを行う必要がありました。開発/テスト環境では毎秒100万命令 (MIPS) という制限があるなど、容量の制限に直面して、メインフレーム・コンピューターで利用できるツールに依存する必要があります。

多くの組織では、メインフレーム開発はウォーターフォール型の開発手法に従い、チームは変更をリリースするために長いサイクルに頼っています。通常、これらのリリースサイクルはデジタル製品開発よりも長くなります。  

次の図表では、複数のメインフレームプロジェクトがメインフレームハードウェアを共有して開発している様子を示しています。メインフレームハードウェアでは、開発環境とテスト環境をスケールアウトしてより多くのプロジェクトに対応させるにはコストがかかります。

![\[Diagram showing mainframe architecture with z/OS, databases, programming languages, and user groups.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/84e717fc-5aea-41a6-977a-d7e7a7ca5da7.png)


 

 

*AWS*** アーキテクチャー**

このパターンでは、メインフレーム開発を AWS クラウドにまで拡張します。まず、AccuRev SCM を使用してメインフレームソースコードをホストします AWS。その後、Enterprise Developer と Enterprise Test Server は、 AWSでメインフレームコードのビルドとテストに使用できるようになります。 

次のセクションでは、パターンの 3 つの主要コンポーネントについて説明します。

**1. SCM**

このパターンでは AWS、AccuRev を使用してメインフレームソースコードの SCM ワークスペースとバージョン管理のセットを作成します。ストリームベースのアーキテクチャにより、複数のチームでメインフレームを並行開発できます。AccuRev では、変更をマージするためにプロモートというコンセプトを使用します。AccuRev では、変更を他のワークスペースに追加するには、更新コンセプトを使用します。

プロジェクトレベルでは、各チームが AccuRev に 1 つ以上のストリームを作成して、プロジェクトレベルの変更を追跡できます。これらはプロジェクトストリームと呼ばれます。これらのプロジェクトストリームは同じ親ストリームから継承されます。親ストリームでは、異なるプロジェクトストリームからの変更をマージするために使用されます。

各プロジェクトストリームはコードを AccuRev に昇格させることができ、 AWS CI/CD パイプラインを開始するように昇格ポストトリガーが設定されます。プロジェクトストリーム変更のビルドが成功した場合、親ストリームにプロモートして、さらに回帰テストを行うことができます。 

通常、親ストリームはシステム統合トリームと呼ばれます。プロジェクトストリームからシステム統合ストリームへのプロモーションが行われると、プロモーション後のトリガーが別の CI/CD パイプラインを起動して回帰テストを実行します。

メインフレームコードに加えて、このパターンには AWS CloudFormation テンプレート、Systems Manager Automation ドキュメント、スクリプトが含まれます。Infrastructure as Code のベストプラクティスに従い、CodeCommit ではバージョン管理されています。 

メインフレームコードをメインフレーム環境に同期してデプロイする必要がある場合、Rocket Software は、AccuRev SCM のコードをメインフレーム SCM に同期する Enterprise Sync ソリューションを提供しています。

**2。開発者とテスト環境**

大規模な組織では、メインフレーム開発者を100人以上、あるいは1000人以上規模に拡大することは困難です。この制約に対処するため、このパターンでは、開発に Amazon EC2 Windows インスタンスを使用します。インスタンスには、Enterprise Developer for Eclipse ツールがインストールされます。開発者はすべてのメインフレームコードのテストとデバッグをインスタンス上でローカルに実行できます。 

AWS Systems Manager ステートマネージャーとオートメーションのドキュメントは、開発者インスタンスのプロビジョニングを自動化するために使用されます。開発者インスタンスの作成にかかる平均時間は 15 分以内です。以下のソフトウェアと構成が用意されています。
+ AccuRev にソースコードをチェックアウトして AccuRev にコミットするための Windows クライアント
+ メインフレームコードをローカルで記述、テスト、デバッグするための Enterprise Developers for Eclipse ツール
+ オープンソースのテストフレームワーク Python 動作駆動開発 (BDD) テストフレームワーク Behave、py3270、およびアプリケーションをテストするためのスクリプト作成のx3270 エミュレーター
+ エンタープライズテストサーバー Docker コンテナーでエンタプライズテストサーバーイメージを構築し、アプリケーションをテストするための Docker 開発者ツール。 

開発サイクルでは、開発者は EC2 インスタンスを使用して、メインフレームコードをローカルで開発およびテストします。ローカルの変更が正常にテストされる場合、開発者は変更を AccuRev サーバーにプロモートします。 

**3. CI/CD パイプライン**

このパターンでは、CI/CD パイプラインは本番環境にデプロイする前の統合テストや回帰テストに使用されます。 

SCM セクションで説明したように、AccuRev はプロジェクトストリームと統合ストリームの 2 種類のストリームを使用します。各ストリームが CI/CD パイプラインに接続されます。AccuRev サーバーと の統合を実行するために AWS CodePipeline、このパターンは AccuRev 昇格後スクリプトを使用して CI/CD を開始するイベントを作成します。

例えば、開発者が AccuRev のプロジェクトストリームへの変更を推進する場合、AccuRev サーバーで実行される推進後のスクリプトが開始されます。次に、スクリプトは変更のメタデータを Amazon Simple Storage Service (Amazon S3) バケットにアップロードし、Amazon S3 イベントを作成します。このイベントでは、CodePipeline で設定されたパイプラインの実行を開始します。 

同じイベント開始メカニズムが統合ストリームとそれに関連するパイプラインに使用されます。 

CI/CD パイプラインでは、CodePipeline は AccuRev Linux クライアントコンテナで CodeBuild を使用して AccuRev ストリームから最新のコードをチェックアウトします。次に、パイプラインでは CodeBuild を起動し、Enterprise Developer Windows コンテナを使用して、ソースコードをコンパイルし、CodeBuild の Enterprise Test Server Windows コンテナを使用して、メインフレームアプリケーションをテストします。

CI/CD パイプラインは CloudFormation テンプレートを使用して構築され、ブループリントは新しいプロジェクトに使用されます。テンプレートを使用すれば、プロジェクトが AWSで新しい CI/CD パイプラインを作成するのに 1 時間もかかりません。

メインフレームテスト機能をスケールするために AWS、このパターンは Rocket Software DevOps テストスイート、Verastream、UFT サーバーを構築します。最新の DevOps ツールを使用すると、 AWS 必要な数のテストを で実行できます。

Rocket Software on を使用したメインフレーム開発環境の例を次の図 AWS に示します。

![\[AWS development pipeline with shared components for multiple project teams.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/27da6a52-4573-44cb-8716-1ac49430f618.png)


 

*ターゲットテクノロジースタック*

このセクションでは、パターンの各コンポーネントのアーキテクチャを詳しく見ていきます。

**1. ソースコードリポジトリ – AccuRev SCM**

AccuRev SCM は、メインフレームのソースコードバージョンを管理するようにセットアップされています。高可用性を実現するため、AccuRev にプライマリモードとレプリカモードが適用されます。オペレータは、プライマリノードでメンテナンスを行う際に、レプリカにフェイルオーバーできます。 

CI/CD パイプラインの応答速度を上げるために、このパターンでは Amazon CloudWatch Eventsを使用してソースコードの変更を検出し、パイプラインの開始を開始します。

1. パイプラインは Amazon S3 ソースを使用するようにセットアップされています。

1. CloudWatch イベントルールは、ソース S3 バケットから S3 イベントをキャプチャするように設定されています。

1. CloudWatch イベントルールは、パイプラインにターゲットを設定します。

1. AccuRev SCM は、プロモーションの完了後にプロモーション後のスクリプトをローカルで実行するように設定されています。

1. AccuRev SCM はプロモーションのメタデータを含む XML ファイルを生成し、スクリプトはその XML ファイルをソース S3 バケットにアップロードします。

1. アップロード後、ソース S3 バケットは CloudWatch イベントルールと一致するイベントを送信し、CloudWatch イベントルールはパイプラインの実行を開始します。 

パイプラインが実行されると、AccuRev Linux クライアントコンテナを使用して、関連する AccuRev ストリームから最新のメインフレームコードをチェックアウトする CodeBuild プロジェクトが開始されます。  

次の図表では、AccuRev サーバーのセットアップを示しています。

![\[AWS クラウド diagram showing AccuRev setup with primary and replica instances across availability zones.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/e60345cc-2283-4b03-8f57-e3dac1770978.png)


**2. エンタープライズデベロッパーテンプレート** 

このパターンでは、Amazon EC2 テンプレートを使用して開発者インスタンスを簡単に作成できます。ステータスマネージャーを使用して、ソフトウェアとライセンスの設定を EC2 インスタンスに一貫して適用できます。

Amazon EC2 テンプレートには VPC コンテキスト設定とデフォルトインスタンス設定がビルドインされ、企業のタグ付け要件に準拠しています。テンプレートを使用して、チームは独自の新しい開発インスタンスを作成できます。 

開発者インスタンスが起動する時、タグと関連付けることで、システムマネージャーはステータスマネージャーを使用して自動化を適用します。自動化には以下の一般的なステップが含まれます。

1. Enterprise Developer ソフトウェアをインストールし、パッチをインストールします。

1. Windows 用の AccuRev クライアントをインストールします。

1. 開発者が AccuRev ストリームに参加できるように、事前設定済みのスクリプトをインストールします。Eclipse ワークスペースを初期化します。

1. x3270、py3270、Docker などの開発ツールをインストールします。

1. License Manager ロードバランサーを指定するようにライセンス設定を行います。

次の図は、Amazon EC2 テンプレートによって作成されたエンタープライズ開発者インスタンスと、State Manager によってインスタンスに適用されたソフトウェアと設定を示しています。エンタープライズ開発者インスタンスは に接続 AWS License Manager してライセンスをアクティブ化します。

![\[AWS クラウド diagram showing Enterprise Developer Instance setup with License Manager and Systems Manager components.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/7ca8f538-8362-4a11-a842-7ecff6fa0248.png)


 

**3.  CI/CD パイプライン**

 AWS アーキテクチャセクションで説明したように、パターンにはプロジェクトレベルの CI/CD パイプラインとシステム統合パイプラインがあります。メインフレームの各プロジェクトチームは、プロジェクトで開発しているプログラムを構築するためのパイプラインを 1 つまたは複数の CI/CD パイプラインを作成します。これらのプロジェクトの CI/CD パイプラインは、関連する AccuRev ストリームからソースコードをチェックアウトします。 

プロジェクトチームでは、開発者は関連の AccuRev ストリームでコードを宣伝します。その後、プロモーションはプロジェクトパイプラインを開始し、コードをビルドして統合テストを実行します。 

各プロジェクトの CI/CD パイプラインは、Enterprise Developer ツールの Amazon ECR イメージと Enterprise Test Server ツールの Amazon ECR イメージを備えた CodeBuild プロジェクトを使用します。 

CodePipeline とCodeBuild は CI/CDS パイプラインの作成に使用されます。CodeBuild と CodePipeline には前払い料金や契約がないため、お支払いは実際に使用した分のみです。メインフレームハードウェアと比較して、この AWS ソリューションはハードウェアプロビジョニングのリードタイムを大幅に短縮し、テスト環境のコストを削減します。

現代の開発では、複数のテスト方法論が使用されています。例えば、テスト駆動開発 (TDD)、BDD、ロボットフレームワークなどです。このパターンでは、開発者はこれらの最新ツールをメインフレームテストに使用できます。例えば、x3270、py3270、および Behas python テストツールを使用することで、オンラインアプリケーションの動作を定義できます。これらの CI/CD パイプラインでは、ビルドメインフレーム 3270 ロボットフレームワークを使用することもできます。

次の図表は、チームストリーム CI/CD パイプラインを示しています。 

![\[AWS クラウド CI/CD pipeline showing CodeCommit, CodePipeline, and CodeBuild with Micro Focus tools integration.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/da59f837-2f23-404f-948b-41402cc6fe0c.png)


次の図は、CodePipeline がメインフレーム3270ロボットフレームワークで作成したプロジェクトCI/CDテストレポートを示します。

![\[Test report summary showing 100% pass rate for 3 test cases in 2.662 seconds.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/4752321a-c60d-455c-ac2f-6f0e2bc3dca0.png)


次の図は、CodePipeline によって Py3270 と Behave BDD で作成されたプロジェクト CI/CD テストレポートを示します。

![\[Test report summary showing 100% pass rate for 2 test cases in a pipeline.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/d005466e-aeb8-4fd6-8342-743ed049f98a.png)


プロジェクトレベルのテストに合格した後、テストされたコードは手動で AccuRev SCM の統合ストリームにプロモートされます。チームがプロジェクトパイプラインのテスト対象範囲に確信が持てたら、このステップを自動化できます。

コードがプロモートされる場合、システム統合 CI/CD パイプラインはマージされたコードをチェックアウトし、回帰テストを実行します。マージされたコードは、すべての並行プロジェクトストリームからプロモートされます。

どの程度きめ細かなテスト環境が必要かにもよりますが、お客様は UAT、プリプロダクションなど、さまざまな環境でより多くのシステム統合 CI/CD パイプラインを構築できます。 

このパターンにおいて、システム統合パイプラインで使用されるツールは、Enterprise Test Server、UFT Server、および Verastream です。これらのツールはすべて Docker コンテナにデプロイして CodeBuild で使用できます。

メインフレームプログラムのテストに成功する場合、アーティファクトはバージョン管理を行って S3 バケットに保存されます。 

次の図は、システム統合 CI/CD パイプラインを示しています。

![\[CI/CD pipeline showing AWS のサービス and Micro Focus tools for source, build, test, and promote stages.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/693212e5-1cd0-4f82-a910-39b00d977c38.png)


 

アーティファクトがシステム統合 CI/CD パイプラインで正常にテストされた後に、本番環境へのデプロイに移行できます。 

ソースコードをメインフレームにデプロイする必要がある場合、Rocket Software は AccuRev のソースコードを Mainframe Endeavour に同期させる Enterprise Sync ソリューションを提供しています。

次の図は、アーティファクトを Enterprise Servers にデプロイするプロダクション CI/CD パイプラインを示しています。この例では、CodeDeploy はテスト済みのメインフレームアーティファクトの Enterprise Server へのデプロイを調整します。

![\[CI/CD pipeline diagram showing CodePipeline, CodeBuild, and CodeDeploy stages for artifact deployment.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/56749c2a-e038-4e56-9487-b2ff83894725.png)


CI/CD パイプラインのアーキテクチャチュートリアルに加えて、CodeBuild および CodePipeline でのメインフレームアプリケーションのテストの詳細については、 AWS DevOps ブログ記事「Micro Focus Enterprise Suite を使用して で何千ものメインフレームテストを自動化する」を参照してください。 [AWS](https://aws.amazon.com/blogs/devops/automate-mainframe-tests-on-aws-with-micro-focus/)(Micro Focus は Rocket Software になりました。） メインフレームテストのベストプラクティスと詳細については、ブログ記事を参照してください AWS。

## ツール
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-tools"></a>

**AWS オートメーションツール**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html)
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)

**Rocket Software ツール**
+ [Rocket Enterprise Developer for Eclipse](https://www.microfocus.com/documentation/enterprise-developer/ed60/ED-Eclipse/GUID-8D6B7358-AC35-4DAF-A445-607D8D97EBB2.html)
+ [Rocket Enterprise Test Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ETS-help/GUID-ECA56693-D9FE-4590-8798-133257BFEBE7.html)
+ [Rocket Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/es_60/) (本番デプロイ)
+ [Rocket Software AccuRev](https://supportline.microfocus.com/documentation/books/AccuRev/AccuRev/6.2/webhelp/wwhelp/wwhimpl/js/html/wwhelp.htm)
+ [Rocket Software Enterprise Suite License Manager](https://www.microfocus.com/documentation/slm/)
+ [Rocket Software Verastream Host Integrator](https://www.microfocus.com/documentation/verastream-host-integrator/)
+ [Rocket Software UFT One](https://admhelp.microfocus.com/uft/en/24.4/UFT_Help/Content/User_Guide/Ch_UFT_Intro.htm)

**その他のツール**
+ x3270
+ [py3270](https://pypi.org/project/py3270/)
+ [Robot-Framework-Mainframe-3270-Library](https://github.com/Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library)

## エピック
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-epics"></a>

### AccuRev SCM インフラストラクチャの作成
<a name="create-the-accurev-scm-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CloudFormation を使用して、プライマリ AccuRev SCM サーバーをデプロイします。 |  | AWS CloudFormation | 
| AccuRev 管理者ユーザーを作成します。 | AccuRev SCM サーバにログインし、CLI コマンドを実行して管理者ユーザを作成します。 | AccuRev SCM サーバ管理者 | 
| AccuRev ストリームを作成します。 | プロダクション、システム統合、チームストリームの順に、上位ストリームから継承する AccuRev ストリームを作成します。 | AccuRev SCM 管理者 | 
| 開発者の AccuRev ログインアカウントを作成します。 | AccuRev SCM CLI コマンドを使用して、メインフレーム開発者用の AccuRev ユーザーログインアカウントを作成します。 | AccuRev SCM 管理者 | 

### エンタープライズデベロッパー Amazon EC2 起動テンプレートを作成
<a name="create-the-enterprise-developer-ec2-launch-template"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CloudFormation を使用して Amazon EC2 起動テンプレートをデプロイします。 | CloudFormation を使用して、Enterprise Developer インスタンスの Amazon EC2 起動テンプレートをデプロイします。テンプレートには、Rocket Enterprise Developer インスタンスの Systems Manager Automation ドキュメントが含まれています。 | AWS CloudFormation | 
| Amazon EC2 テンプレートからエンタープライズ開発者インスタンスを作成します。 |  | AWS コンソールログインとメインフレーム開発者スキル | 

### Enterprise Developer ツールの Docker イメージを作成する
<a name="create-the-enterprise-developer-tool-docker-image"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Enterprise Developer ツールの Docker イメージを作成します。 | Docker コマンドと Enterprise Developer ツール Dockerfile を使用して Docker イメージを作成します。 | Docker | 
| Amazon ECR で、Docker リポジトリを作成します。 | Amazon ECR コンソールで、Enterprise Developer Docker イメージのリポジトリを作成します。 | Amazon ECR | 
| Enterprise Developer ツールの Docker イメージを Amazon ECR にプッシュします。 | Docker プッシュコマンドを実行して、エンタープライズデベロッパーツールの Docker イメージをプッシュし、Amazon ECR の Docker リポジトリに保存します。 | Docker | 

### Enterprise Test Server の Docker イメージを作成する
<a name="create-the-enterprise-test-server-docker-image"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Enterprise Test Server の Docker イメージを作成します。 | Docker コマンドと Enterprise Test Server Dockerfile を使用して Docker イメージを作成します。 | Docker | 
| Amazon ECR で、Docker リポジトリを作成します。 | Amazon ECR コンソールで、Enterprise Test Server Docker イメージの Amazon ECR リポジトリを作成します。 | Amazon ECR | 
| Enterprise Test Server の Docker イメージを Amazon ECR にプッシュします。 | Docker プッシュコマンドを実行して、エンタープライズテストサーバーの Docker イメージを Amazon ECR にプッシュして保存します。 | Docker | 

### チームストリーム CI/CD パイプラインの作成
<a name="create-the-team-stream-ci-cd-pipeline"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CodeCommit リポジトリを作成します。 | CodeCommit コンソールで、インフラストラクチャと CloudFormation コード用の Git ベースのリポジトリを作成します。 | AWS CodeCommit | 
| CloudFormation テンプレートとオートメーションコードを CodeCommit リポジトリにアップロードします。 | Git プッシュコマンドを実行して、CloudFormation テンプレートとオートメーションコードをリポジトリにアップロードします。 | Git | 
| CloudFormation を使用してチームストリーム CI/CD パイプラインをデプロイします。 | 準備した CloudFormation テンプレートを使用して、チームストリーム CI/CD パイプラインをデプロイします。 | AWS CloudFormation | 

### システム統合 CI/CD パイプラインの作成
<a name="create-the-system-integration-ci-cd-pipeline"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| UFT Docker イメージを作成します。 | Docker コマンドと UFT Dockerfile を使用して Docker イメージを作成します。 | Docker | 
| Amazon ECR に UFT イメージの Docker リポジトリを作成します。 | Amazon ECR コンソールで、UFT イメージ用の Docker リポジトリを作成します。 | Amazon ECR | 
| Amazon ECR に UFT Docker イメージをプッシュします。 | Docker プッシュコマンドを実行して、エンタープライズテストサーバーの Docker イメージを Amazon ECR にプッシュして保存します。 | Docker | 
| Verastream Docker イメージを作成します。 | Docker コマンドと Verastream Dockerfile を使用して Docker イメージを作成します。 | Docker | 
| Amazon ECR に Verastream イメージ用の Docker リポジトリを作成します。 | Amazon ECR コンソールで、Verastream イメージの Docker リポジトリを作成します。 | Amazon ECR | 
| CloudFormation を使用してシステム統合 CI/CD パイプラインをデプロイします。 | 準備した CloudFormation テンプレートを使用して、システム統合 CI/CD パイプラインをデプロイします。 | AWS CloudFormation | 

### 本番デプロイCI/CD パイプラインの作成
<a name="create-production-deployment-ci-cd-pipeline"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  AWS クイックスタートを使用して Enterprise Server をデプロイします。 | CloudFormation を使用して Enterprise Server をデプロイするには、 AWS クイックスタートで Enterprise Server を起動します。 | AWS CloudFormation | 
| 本番デプロイCI/CD パイプラインをデプロイします。 | CloudFormation コンソールで、CloudFormation テンプレートを使用してプロダクションデプロイ CI/CD パイプラインをデプロイします。 | AWS CloudFormation | 

## 関連リソース
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-resources"></a>

**リファレンス**
+ [AWS DevOps ブログ - Micro Focus Enterprise Suite AWS を使用して、 で何千ものメインフレームテストを自動化します](https://aws.amazon.com/blogs/devops/automate-mainframe-tests-on-aws-with-micro-focus/) (Micro Focus は Rocket Software になりました）。
+ [py3270/py3270 GitHub リポジトリ](https://github.com/py3270/py3270)
+ [Altran-PT-GDC/Robot-Framework-Mainframe-3270-ライブラリ GitHub リポジトリ](https://github.com/Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library)
+ [ビヘイブようこそ！](https://behave.readthedocs.io/en/latest/index.html)
+ [APN パートナーブログ - タグ: Micro フォーカス](https://aws.amazon.com/blogs/apn/tag/micro-focus/) (Micro Focus は Rocket Software になりました。)
+ [起動テンプレートからのインスタンスの起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html)

**AWS Marketplace**
+ [Rocket Software UFT One](https://aws.amazon.com/marketplace/pp/B01EGCA5OS?ref_=srh_res_product_title)

**AWS クイックスタート**
+ [上の Rocket Enterprise Server AWS](https://aws.amazon.com/quickstart/architecture/micro-focus-enterprise-server/)

# Micro Focus Enterprise ServerとLRS VPSX/MFIを使用して、AWS 上のメインフレームのオンライン印刷ワークロードを最新化
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi"></a>

*Amazon Web Services、Shubham Roy、Kevin Yung*

*Micro Focus、Abraham Rondon*

*Levi、Ray and Shoup Inc、Guy Tucker*

## 概要
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-summary"></a>

このパターンは、最新のメインフレームアプリケーションのランタイムとしてMicro Focus Enterprise Serverを使用し、プリントサーバーとしてLRS VPSX/MFI（Micro Focus Interface）を使用することで、Amazon Web Services（AWS）クラウド上のビジネスクリティカルなメインフレームのオンライン印刷ワークロードを最新化する方法を示しています。このパターンは、「[リプラットフォーム](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/)」のメインフレーム近代化アプローチに基づいています。このアプローチでは、メインフレームのオンラインアプリケーションを Amazon Elastic Compute Cloud (Amazon EC2) に、メインフレームデータベース (IBM DB2 for z/OS など) を Amazon Relational Database Service (Amazon RDS) に移行します。最新の印刷ワークフローの認証と認可は、AWS Managed Microsoft AD としても知られる Microsoft Active Directory のための AWS Directory Service によって実行されます。LRS Directory Information Server (LRS/DIS) は AWS Managed Microsoft AD と統合されており、印刷ワークフローの認証と認可を行います。オンライン印刷ワークロードを最新化することで、IT インフラストラクチャコストの削減、レガシーシステムの維持に伴う技術的負担の軽減、データサイロの排除、DevOps モデルによる敏捷性と効率性の向上、AWS クラウドのオンデマンドリソースと自動化の活用が可能になります。

## 前提条件と制限
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ メインフレームのオンライン印刷または出力管理のワークロード
+ Micro Focus Enterprise Server上で動作するメインフレームアプリケーションを再構築して配信する方法に関する基本知識 (詳細については、Micro Focus ドキュメントの「[Enterprise Server](https://www.microfocus.com/media/data-sheet/enterprise_server_ds.pdf)」を参照してください)。
+ LRS クラウドプリンティングソリューションとコンセプトに関する基本知識 (詳細については、LRS ドキュメントの「[Output Modernization](https://www.lrsoutputmanagement.com/products/modernization-products)」を参照してください)。
+ Micro Focus Enterprise Serverのソフトウェアとライセンス (詳細については、「[Micro Focusの営業担当](https://www.microfocus.com/en-us/contact/contactme)」にお問い合わせください)。
+ LRS VPSX/MFI、LRS/Queue、LRS/DIS のソフトウェアとライセンス (詳細については、「[LRS の営業担当](https://www.lrsoutputmanagement.com/about-us/contact-us/)」にお問い合わせください)。

**注記**  
メインフレームのオンライン印刷ワークロードの設定上の考慮事項について、詳しくは「*追加情報*」セクションの「*考慮事項*」を参照してください。

**製品バージョン**
+ [Micro Focus Enterprise Server](https://www.microfocus.com/en-us/products/enterprise-server/overview?utm_campaign=7018e000000PgfnAAC&utm_content=SCH-BR-AMC-AppM-AMS&gclid=EAIaIQobChMIoZCQ6fvS9wIVxQN9Ch2MzAOlEAAYASAAEgKx2fD_BwE) 8.0 以降
+ 「[LRS VPSX/MFI V1R3](https://www.lrsoutputmanagement.com/products/modernization-products/)」以降

## アーキテクチャ
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-architecture"></a>

**ソーステクノロジースタック**
+ オペレーティングシステム — IBM z/OS
+ プログラミング言語 — 共通ビジネス指向言語 (COBOL) と顧客情報管理システム (CICS) 
+ データベース — IBM DB2 for z/OS IBM 情報管理システム (IMS) と仮想ストレージアクセス方法 (VSAM)
+ セキュリティ — Resource Access Control Facility (RACF)、CA Top Secret for z/OS、Access Control Facility 2 (ACF2)
+ 印刷と出力管理 — IBM メインフレーム z/OS 印刷製品 (IBM Infoprint Server for z/OS、LRS と CA View)

**ターゲットテクノロジースタック**
+ オペレーティングシステム — Amazon EC2 上で実行する Microsoft Windows Server
+ コンピューティング — Amazon EC2
+ プログラミング言語 — COBOL と CICS
+ データベース — Amazon RDS
+ セキュリティ — AWS Managed Microsoft AD
+ 印刷と出力管理 — AWS での LRS 印刷ソリューション
+ メインフレームランタイム環境 — Micro Focus Enterprise Server

ソースアーキテクチャ

次の図は、メインフレームのオンライン印刷ワークロードの一般的な現状のアーキテクチャを示しています。

![\[表示可能な出力を生成する 6 ステップのプロセス。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/924cdae7-9265-4fc9-8e5e-bb2da5368e7e/images/293368f5-d102-4f4e-b290-71da4aeff347.png)


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

1. ユーザーは、COBOL で書かれた IBM CICS アプリケーション上に構築されたエンゲージメントシステム (SoE) 上でビジネストランザクションを実行します。

1. SoE はメインフレームサービスを呼び出し、IBM DB2 for z/OS などの記録システム (SoR) データベースにビジネストランザクションデータを記録します。

1. SoR は SoE からのビジネスデータを永続化します。

1. CICS SoE は印刷要求を処理する印刷トランザクションアプリケーションを起動しますが、ユーザーは CICS SoE から印刷出力を生成する要求を開始します。 

1. 印刷トランザクションアプリケーション (CICS や COBOL プログラムなど) は、データベースからデータを抽出し、ビジネス要件に従い、データをフォーマットし、請求明細書、ID カード、ローン明細書などのビジネス出力 (印刷データ) を生成します。次に、アプリケーションは Virtual Telecommunications Access Method (VTAM) を使用して印刷要求を送信します。z/OS 印刷サーバー (IBM Infoprint Server など) は NetSpool または類似の VTAM コンポーネントで印刷要求をインターセプトし、JES 出力パラメータで JES スプールに印刷出力データセットを作成します。JES 出力パラメータは、印刷サーバーが特定のネットワークプリンターに出力を送信するために使用されるルーティング情報を指定します。*VTAM* という用語は z/OS Communications Server と System Network Architecture (SNA) サービス要素を指します。

1. 印刷出力送信コンポーネントは、JES スプールからの出力印刷データセットを、LRS (このパターンで示されている)、IBM InfoPrint Server、または電子メールの宛先などのリモートプリンターまたは印刷サーバーに送信します。

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

次の図は、AWS クラウドにデプロイされるメインフレームのオンライン印刷ワークロードのアーキテクチャを示しています。

![\[印刷リクエストの開始から AWS での LRS 印刷の処理までの 4 ステップのプロセス。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/924cdae7-9265-4fc9-8e5e-bb2da5368e7e/images/07c97b6f-1a86-493d-a4e0-b8321b46f9b7.png)


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

1. ユーザーはオンライン (CICS) ユーザーインターフェイスから印刷リクエストを開始し、請求明細書、ID カード、ローン明細書などの印刷出力を作成します。

1. メインフレームオンラインアプリケーション (「[Amazon EC2にリプラットフォーム](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/)」) は、Micro Focus Enterprise Serverランタイムを使用してアプリケーションデータベースからデータを抽出し、ビジネスロジックをデータに適用し、データをフォーマットしてから、「[Micro Focus CICS Print Exit](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/HCOMCMJCLOU020.html)」(DFHUPRNT) を使用してデータを印刷先に送信します。 

1. アプリケーションデータベース (Amazon RDS 上で実行する SoR) は、印刷出力用のデータを永続化します。

1. LRS VPSX/MFI 印刷ソリューションは Amazon EC2 にデプロイされ、運用データは Amazon Elastic Block Store (Amazon EBS) に保存されます。LRS VPSX/MFI は TCP/IP ベースの LRS/キュートランスミッションエージェントで、Micro Focus CICS Print Exit API (DFHUPRNT) を介して印刷データを収集し、そのデータを指定されたプリンター宛先に配信します。最新の CICS アプリケーションで使用される元の TERMID (TERM) が VPSX/MFI Queue 名として使用されます。 

**注記**  
通常、ターゲットソリューションでは、IBM Advanced Function Presentation (AFP) や Xerox Line Condition Data Stream (LCDS) などのメインフレームフォーマット言語に対応するためにアプリケーションを変更する必要はありません。Micro Focus を使用して AWS 上のメインフレームアプリケーションの移行とモダナイズを行う方法の詳細については、AWS ドキュメントの「[Micro Focus による AWS で Empowering Enterprise Mainframe Workloads の強化](https://aws.amazon.com/blogs/apn/empowering-enterprise-grade-mainframe-workloads-on-aws-with-micro-focus/)」を参照してください。

AWS インフラストラクチャアーキテクチャ

次の図は、メインフレームのオンライン印刷ワークロードに向けた可用性と安全性に優れた AWS インフラストラクチャアーキテクチャを示しています。

![\[EC2、Amazon RDS、および LRS 印刷上の Micro Focus Enterprise サーバーを備えた 2 つのアベイラビリティーゾーン。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/924cdae7-9265-4fc9-8e5e-bb2da5368e7e/images/093555a1-342c-420c-bb90-e9440d2e8650.png)


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

1. メインフレームオンラインアプリケーション (CICS や COBOL などのプログラミング言語で書かれている) は、コアビジネスロジックで、請求明細書、ID カード、ローン明細書などの印刷出力を処理し、生成します。オンラインアプリケーションは、高可用性 (HA) を実現するために Amazon EC2 で 2 つの「[アベイラビリティーゾーン](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)」(AZ) にまたがってデプロイされます。また、Micro Focus CICS Print Exit で印刷出力を LRS VPSX/MFI にルーティングし、エンドユーザーが印刷できるようにします。

1. LRS VPSX/MFI は TCP/IP ベースの LRS/Queue 送信エージェントで、Micro Focus オンラインPrint Exitプログラミングインターフェイスから印刷データを収集またはキャプチャします。オンライン Print Exit は、LRS VPSX/MFI が印刷ファイルを効果的に処理し、LRS/Queue コマンドを動的に作成できるようにするために必要な情報を渡します。
**注記**  
印刷用のさまざまな CICS アプリケーションプログラミング方法と、それらが Micro Focus Enterprise サーバーと LRS VPSX/MFI でどのようにサポートされているかについての詳細は、このパターンの「*追加情報*」セクションの「*印刷データキャプチャ*」を参照してください。

1. 
**注記**  
「[Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)」は、Micro Focus Enterprise ServerをLRS VPSX/MFI と統合するための DNS 名を提供しています。: LRS VPSX/MFI はレイヤー 4 ロードバランサーをサポートします。また、Network Load Balancer は LRS VPSX/MFI の基本的なヘルスチェックを行い、登録されている正常なターゲットにトラフィックをルーティングします。

1. LRS VPSX/MFI プリントサーバーは、高可用性を実現するために Amazon EC2 で 2 つのアベイラビリティーゾーン (AZ) にまたがってデプロイされており、運用データストアとして「[Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)」を使用しています。LRS VPSX/MFI は、アクティブ-アクティブとアクティブ-パッシブの両方のサービスモードをサポートします。このアーキテクチャでは、アクティブ/パッシブペアの複数の Availability Zones をアクティブスなホットスタンバイとして使用します。アクティブなインスタンスの状態が異常な場合、Network Load Balancer は LRS VPSX/MFI EC2 インスタンスのヘルスチェックを実行し、別の Availability Zones のホットスタンバイインスタンスにトラフィックをルーティングします。印刷リクエストは、各 EC2 インスタンスの LRS Job Queue にローカルに保持されます。復旧した場合、LRS サービスが印刷リクエストの処理を再開するには、障害が発生したインスタンスを再起動する必要があります。
**注記**  
LRS VPSX/MFI はプリンターフリートレベルでもヘルスチェックを実行できます。詳しくは「*追加情報*」セクションの「*プリンターフリートのヘルスチェック*」をご確認ください。

1. [AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) は LRS/DIS と統合して、印刷ワークフローの認証と認可を行います。詳しくは「*追加情報*」 セクションの「*認証と認可の印刷*」を参照してください。

1. LRS VPSX/MFI はブロックストレージに Amazon EBS を使用しています。アクティブな EC2 インスタンスからAmazon EBS データをポイントインタイムスナップショットとして Amazon S3 にバックアップし、ホットスタンバイ EBS ボリュームに復元できます。Amazon EBS ボリュームスナップショットの作成、保持、削除を自動化するには、「[Amazon Data Lifecycle Manager](https://aws.amazon.com/blogs/aws/new-lifecycle-management-for-amazon-ebs-snapshots/)」で自動スナップショットの頻度を設定し、「[RTO/RPO 要件](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html)」に基づいて復元することができます。

## ツール
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-tools"></a>

**AWS サービス**
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) は、Amazon EC2 インスタンスで使用するためのブロックレベルのストレージボリュームを提供します。EBS ボリュームの動作は、未初期化のブロックデバイスに似ています。これらのボリュームは、デバイスとしてインスタンスにマウントできます。
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。必要な数の仮想サーバーを起動することができ、迅速にスケールアップまたはスケールダウンができます。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。
+ 「[Microsoft Active Directory (AD) 用 AWS Directory Service](https://aws.amazon.com/directoryservice/active-directory/)」は、AWS Managed Microsoft Active Directory とも呼ばれ、ディレクトリ対応のワークロードと AWS リソースが AWS のマネージド型 Active Directory を使用できるようにします。

その他のツール
+ 「[LRS VPSX/MFI (Micro Focus Interface)](https://www.lrsoutputmanagement.com/products/modernization-products/)」は、LRS と Micro Focusと連携して、Micro Focus Enterprise Server JES スプールからの出力をキャプチャし、指定された印刷先に確実に配信します。
+ LRS Directory Information Server (LRS/DIS) は、印刷ワークフロー中の認証と認可に使用されます。
+ LRS/Queue は TCP/IP ベースの LRS/Queue 送信エージェントで、LRS VPSX/MFIに使用され、Micro Focus オンラインPrint Exitプログラミングインターフェイスから印刷データを収集またはキャプチャします。
+ 「[Micro Focus Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-A2F23243-962B-440A-A071-480082DF47E7.html)」は、メインフレームアプリケーション用アプリケーションのデプロイです。Micro Focus Enterprise Developer の任意のバージョンで移行または作成されたメインフレームアプリケーションの実行環境を提供します。

## エピック
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-epics"></a>

### Amazon EC2 で Micro Focus Enterprise Server を設定し、メインフレームオンラインアプリケーションをデプロイします。
<a name="set-up-micro-focus-enterprise-server-on-amazon-ec2-and-deploy-a-mainframe-online-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Micro Focus Enterprise Server を設定し、デモオンラインアプリケーションをデプロイします。 | Amazon EC2 で Micro Focus Enterprise Server を設定し、「Micro Focus ドキュメント」の「[Tutorial: CICS Support](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GMWALK00.html)」の指示に従い、Micro Focus Account Demo アプリケーション (ACCT Demo) を Amazon EC2 にデプロイします。ACCT Demo アプリケーションは、印刷出力を作成して開始するメインフレームオンライン (CICS) アプリケーションです。 | クラウドアーキテクト | 

### Amazon EC2 で LRS プリントサーバーを設定
<a name="set-up-an-lrs-print-server-on-amazon-ec2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 印刷用の LRS 製品ライセンスを取得します。 | LRS VPSX/MFI、LRS/Queue と LRS/DIS の LRS 製品ライセンスを取得するには、「[LRS Output Management チーム](https://www.lrsoutputmanagement.com/about-us/contact-us/)」にお問い合わせください。LRS 製品をインストールする EC2 インスタンスのホスト名を指定する必要があります。 | ビルドリード | 
| Amazon EC2 Windows インスタンスを作成して LRS VPSX/MFI を作成します。 | Amazon EC2 ドキュメントの「[ステップ 1: インスタンスを起動する](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-launch-instance)」の次の指示に従い、Amazon EC2 Windows インスタンスを起動します。インスタンスは、LRS VPSX/MFI に対する次のハードウェア要件とソフトウェア要件を満たしている必要があります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)前述のハードウェア要件とソフトウェア要件は、小規模なプリンターフリート (約 500～1000 台) を対象としています。すべての要件については、LRS と AWS の担当者にお問い合わせください。Windows インスタンスの作成時に、次のようにしてください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| EC2 インスタンスに LRS VPSX/MFI をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| LRS/Queue をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| LRS/DIS をインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| ターゲットグループを作成し、LRS VPSX/MFI EC2 をターゲットとして登録します。 | Elastic Load Balancing ドキュメントの「[Network Load Balancer のターゲットグループを作成する](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-target-group.html)」の次の指示に従い、ターゲットグループを作成します。ターゲットグループを作成する際には、以下のようにしてください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| Network Load Balancer を作成します。 | 「Elastic Load Balancing ドキュメント」の「[Network Load Balancer を作成する](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html)」の次の指示に従います。Network Load Balancer は、Micro Focus Enterprise Server から LRS VPSX/MFI EC2 にトラフィックをルーティングします。Network Load Balancer を作成し、**[リスナーとルーティング]** ページで次の操作を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 

### Micro Focus Enterprise Serverを LRS VPSX/MFI と LRS/Queue と統合
<a name="integrate-micro-focus-enterprise-server-with-lrs-vpsx-mfi-and-lrs-queue"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| LRS/LRS/Queue 統合用に Micro Focus Enterprise Serverを設定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| CICS Print Exit (DFHUPRNT) を Micro Focus Enterprise Server の初期化に使用できるようにします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)Micro Focus Enterprise Server が CICS Print Exit (DFHUPRNT) を検出したことを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| CICS プリンターの端末 ID (TERMID) を Micro Focus Enterprise Server として定義します。 | MMicro Focus Enterprise Server で 3270 印刷を有効にします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)**CICS プリンターの端末を Micro Focus Enterprise Server として定義します**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 

### Micro Focus Enterprise Server と LRS VPSX/MFI にプリンターとプリントユーザーを設定します。
<a name="set-up-printers-and-print-users-in-micro-focus-enterprise-server-and-lrs-vpsx-mfi"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| LRS VPSX にプリントキューを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)印刷キューは、Micro Focus Enterprise Server で作成された印刷用 TermID と同等である必要があります。 | クラウドアーキテクト | 
| LRS VPSX/MFI でプリントユーザーを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 

### 印刷認証と認可の設定
<a name="set-up-print-authentication-and-authorization"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ユーザーとグループを持つ AWS Managed Microsoft AD ドメインを作成ます。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 
| LRS VPSX/MFI EC2 を AWS Managed Microsoft AD ドメインに接続します。 | LRS VPSX/MFI EC2 を AWS Managed Microsoft AD ドメイン   に「[自動](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-systems-manager-dx-domain/)」(AWS ナレッジセンターのドキュメント) または「[手動」](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html)(AWS Directory Service ドキュメント) で参加させます。 | クラウドアーキテクト | 
| LRS/DIS を AWS Managed Microsoft AD と設定し、統合します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | クラウドアーキテクト | 

### オンライン印刷ワークフローのテスト
<a name="test-an-online-print-workflow"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Micro Focus ACCT Demo アプリからオンライン印刷リクエストを開始します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)画面下部に「印刷リクエストがスケジュールされました」というメッセージが表示されます。これにより、ACCT Demo アプリケーションからオンライン印刷要求が生成され、印刷処理のために LRS VPS/MFI に送信されたことが確認されます。  | クラウドアーキテクト | 
| LRS VPSX/MFI のプリント出力を確認します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)これで、Account No.、SURNAME、FIRST、ADDRESS、TELEPHONE No.、Cards Issued、Date issued、Amount と Balance の各列を含む勘定取引明細書の印刷出力を確認できるようになりました。例として、このパターンの **online\$1print\$1output** 添付ファイルを参照してください。 | テストエンジニア | 

## 関連リソース
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-resources"></a>
+ 「[LRS 出力のモダナイゼーション](https://www.lrsoutputmanagement.com/products/modernization-products)」(LRS ドキュメント)
+ 「[VTAM ネットワークの概念](https://www.ibm.com/docs/en/zos/2.1.0?topic=guide-vtam-networking-concepts)」(IBM ドキュメント)
+ 「[論理ユニット (LU) タイプの概要](https://www.ibm.com/docs/en/wsfz-and-o/1.1?topic=installation-summary-logical-unit-lu-types)」(IBM ドキュメント)
+ 「[ANSI とマシンキャリッジ制御](https://www.ibm.com/docs/en/cmofz/9.5.0?topic=tips-ansi-machine-carriage-controls)」(IBM ドキュメント)
+ 「[Micro Focus による AWS 上のエンタープライズメインフレームワークロードの強化](https://aws.amazon.com/blogs/apn/empowering-enterprise-grade-mainframe-workloads-on-aws-with-micro-focus/)」(AWS パートナー ネットワークブログ)
+ 「[Amazon EC2 Auto Scaling とSystems Manager による Micro Focus エンタープライズサーバー PAC の構築](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.html)」(AWS 規範ガイダンスのドキュメント)
+ 「[Advanced Function Presentation (AFP) データストリーム](https://www.ibm.com/docs/en/i/7.4?topic=streams-advanced-function-presentation-data-stream)」(IBM ドキュメント)
+ 「[ラインコンディショニングデータストリーム (LCDS)](https://www.compart.com/en/lcds)」(Compart ドキュメント)

## 追加情報
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-additional"></a>

**考慮事項**

モダナイゼーションを進める中で、メインフレームのオンラインプロセスとそれらが生成する出力について、さまざまな構成を検討するかもしれません。メインフレームプラットフォームは、印刷に直接影響する特定の要件に合わせて、使用するすべての顧客とベンダーによってカスタマイズされています。例えば、現在のプラットフォームでは、IBM Advanced Function Presentation (AFP) や Xerox Line Condition Data Stream (LCDS) が現在のワークフローに組み込まれている場合があります。さらに、「[メインフレームのキャリッジコントロール文字](https://www.ibm.com/docs/en/cmofz/9.5.0?topic=tips-ansi-machine-carriage-controls)」や「[チャネルコマンドワード](https://www.ibm.com/docs/en/zos/2.3.0?topic=devices-channel-command-words)」は、印刷ページの外観に影響を与える可能性があり、特別な処理が必要な場合もあります。モダナイゼーション計画プロセスの一環として、特定の印刷環境における構成を評価し、理解しておくことをお勧めします。

印刷データキャプチャ

このセクションでは、IBM メインフレーム環境で印刷に使用できる CICS アプリケーションプログラミング方法をまとめています。LRS VPSX/MFI コンポーネントは、同じアプリケーションプログラムが同じ方法でデータを作成できるようにする技術を提供しています。次の表は、AWS と LRS VPSX/MFI プリントサーバーを備えた Micro Focus Enterprise Server で実行される最新の CICS アプリケーションで、各アプリケーションプログラミング方法がどのようにサポートされているかを示しています。


| 
| 
| Method | 説明 | モダナイズされた環境でのメソッドに対するサポート | 
| --- |--- |--- |
| EEXEC CICS SEND TEXT..    or EXEC CICS SEND MAP.. | これらの CICS メソッドと VTAM メソッドは、3270/SCS 印刷データストリームを作成して LUTYPE0、LUTYPE1 と LUTYPE3 プリントデバイスに配信する役割を果たします。 | Micro Focus オンライン Print Exit (DFHUPRNT) アプリケーションプログラムインターフェイス (API) を使用すると、これらの方法のいずれかを使用して 3270/SCS 印刷データストリームが作成されたときに、VPSX/MFI で印刷データを処理できます。 | 
| EEXEC CICS SEND TEXT..    or EXEC CICS SEND MAP.. (第三者のIBMメインフレームソフトウェアとの連携) | この CICS メソッドと VTAM メソッドは、3270/SCS 印刷データストリームを作成して LUTYPE0、LUTYPE1 と LUTYPE3 プリントデバイスに配信する役割を果たします。第三者のソフトウェア製品は印刷データをインターセプトし、そのデータを ASA/MCH 制御文字を含む標準印刷形式のデータに変換し、データを JES スプールに配置して、JES を使用するメインフレームベースの印刷システムで処理します。 | Micro Focus オンライン Print Exit (DFHUPRNT) API を使用すると、これらの方法のいずれかを使用して 3270/SCS 印刷データストリームが作成されたときに、VPSX/MFI で印刷データを処理できます。 | 
| EXEC CICS SPOOLOPEN  | このメソッドは CICS アプリケーションプログラムが JES スプールに直接データを書き込むことに使用します。その後、このデータは JES を使用するメインフレームベースの印刷システムで処理できるようになります。 | Micro Focus Enterprise Serverはデータをエンタープライズサーバースプールにスプールし、そこでデータをVPSXにスプールするVPSX/MFI Batch Print Exit (LRSPRTE6) で処理できます。 | 
| DRS/API | 印刷データを JES に書き込むには、LRS 提供のプログラムインターフェイスが使用されます。 | VPSX/MFI は、印刷データを VPSX に直接スプールする代替インターフェイスを提供しています。 | 

プリンターフリートのヘルスチェック

LRS VPSX/MFI (LRS LoadX) は、デバイス管理や運用の最適化など、詳細なヘルスチェックを実行できます。デバイス管理では、プリンターデバイスの障害を検出し、印刷要求を正常なプリンターに転送できます。プリンターフリートの詳細なヘルスチェックについて、詳細は、製品ライセンスに含まれている LRS のドキュメントを参照してください。

印刷認証と認可

LRS/DIS を使用すると、LRS アプリケーションは Microsoft Active Directory または LDAP サーバーでユーザー ID とパスワードを認証できます。LRS/DIS は、基本的な印刷認可に加えて、次のようなユースケースでも粒度レベルの印刷セキュリティ制御を適用できます。
+ プリンタージョブを参照できるユーザーを管理します。
+ 他のユーザーのジョブの参照レベルを管理します。
+ 運用タスクを管理します。例えば、保留/リリース、削除、変更、コピー、ルート変更などのコマンドレベルのセキュリティなど。セキュリティは、ユーザー ID またはグループ (AD グループまたは LDAP グループと同様) のいずれかで設定できます。

## アタッチメント
<a name="attachments-924cdae7-9265-4fc9-8e5e-bb2da5368e7e"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/924cdae7-9265-4fc9-8e5e-bb2da5368e7e/attachments/attachment.zip)」

# Transfer Family を使用して、メインフレームファイルを Amazon S3 に直接移動する
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family"></a>

*Amazon Web Services、Luis Gustavo Dantas*

## 概要
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-summary"></a>

モダナイゼーションの一環として、オンプレミスサーバーとAmazon Web Services (AWS) クラウド間でファイルを転送するという課題に直面する可能性があります。メインフレームからのデータ転送は、重要な課題となり得るのは、メインフレームは通常、Amazon Simple Storage Service (Amazon S3)、Amazon Elastic Block Store (Amazon EBS)、Amazon Elastic File System (Amazon EFS)のような最新のデータストアにアクセスできないからです。

多くのお客様は、オンプレミスの Linux、Unix、Windows サーバーなどの中間ステージングリソースを使用して、AWS クラウドにファイルを転送します。AWS Transfer Family とSecure Shell (SSH File Transfer Protocol (SFTP) を使用してメインフレームのファイルを Amazon S3 に直接アップロードすることで、この間接的な方法を回避できます。

## 前提条件と制限
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ レガシープラットフォームからアクセス可能なサブネットを持つ仮想プライベートクラウド (VPC)
+ VPC のTransfer Family エンドポイント
+ メインフレーム仮想ストレージアクセス方法 (VSAM) 「[ファイルをシーケンシャルの固定長ファイルに変換しました](https://www.ibm.com/docs/en/zos/2.1.0?topic=reports-converting-vb-fb)」 (IBM ドキュメント)

機能制限
+ SFTP はデフォルトでバイナリモードでファイルを転送します。つまり、ファイルは EBCDIC エンコーディングを保持したまま Amazon S3 にアップロードされます。ファイルにバイナリデータやパックデータが含まれていない場合は、**sftp**「[ascii サブコマンド](https://www.ibm.com/docs/en/zos/2.3.0?topic=version-what-zos-openssh-supports)」(IBM ドキュメント) を使用して転送中にファイルをテキストに変換できます。
+ ターゲット環境でこれらのファイルを使用するには、パックされた「[バイナリコンテンツを含むメインフレームファイル](https://apg-library.amazonaws.com/content/f5907bfe-7dff-4cd0-8523-57015ad48c4b)」 (AWS 規範ガイダンス) を解凍する必要があります。
+ Amazon S3 オブジェクトのサイズは最低 0 バイトから最大 5 TB までの範囲に設定することができます。Amazon S3 の諸機能について詳しくは、「[Amazon S3 よくある質問](https://aws.amazon.com/s3/faqs/?nc1=h_ls)」 を参照してください。

## アーキテクチャ
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-architecture"></a>

**ソーステクノロジースタック**
+ Job 制御言語 (JCL)
+ z/OS UNIX シェルと ISPF
+ SFTP
+ VSAM とフラットファイル

**ターゲットテクノロジースタック**
+ Transfer Family
+ Amazon S3
+ Amazon Virtual Private Cloud (Amazon VPC)

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

次の図は、Transfer Family と SFTP を使用してメインフレームファイルを S3 バケットに直接アップロードするためのリファレンスアーキテクチャを示しています。

![\[Transfer Family と SFTP を使用してメインフレームファイルを S3 バケットに直接アップロードする\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/1f4fa1fd-b681-41bc-81d8-d556426b14c2/images/110491d5-b58d-4451-8de9-e742756bb192.png)


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

1. JCL ジョブを使用して、Direct Connect を通じてメインフレームファイルをレガシーメインフレームから AWS クラウドに転送します。

1. Direct Connect を使用すると、ネットワークトラフィックを AWS グローバルネットワークに留め、パブリックインターネットをバイパスできます。Direct Connect では、ネットワーク速度も向上し、50 Mbps から始まり、100 Gbps までスケールアップできます。

1. VPC エンドポイントは、パブリックインターネットを使用せずに VPC リソースとサポートされているサービス間の接続を可能にします。Transfer Family と Amazon S3 へのアクセスは、2 つのプライベートサブネットとアベイラビリティーゾーンにある伸縮自在なネットワークインターフェイスを通じて行われるため、高可用性が実現されます。

1. Transfer Family は、ユーザーを認証し、SFTP を使用してレガシー環境からファイルを受け取り、S3 バケットに移動します。

**自動化とスケール**

Transfer Family サービスの導入後は、JCL ジョブを SFTP クライアントとして使用して、メインフレームから Amazon S3 に無制限の数のファイルを転送できます。メインフレームファイルを転送する準備ができたら、メインフレームのバッチジョブスケジューラを使用して SFTP ジョブを実行することで、File Transfer を自動化することもできます。

## ツール
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-tools"></a>
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。この仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークに似ていますが、AWS のスケーラブルなインフラストラクチャを使用できるというメリットがあります。
+ 「[AWS Transfer Family](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-family.html)」 を使用すると、SFTP、FTPS、および FTP プロトコルを使用して、Amazon S3 と Amazon EFS への定期的な企業間 File Transfer を安全にスケールすることができます。

## エピック
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-epics"></a>

### S3 バケットとアクセスポリシーを作成します。
<a name="create-the-s3-bucket-and-the-access-policy"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットを作成する。 | 「[S3 バケットを作成して](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」、レガシー環境から転送するファイルをホストします。 | AWS 全般 | 
| IAM ロールとポリシーを作成します。 | Transfer Family は、AWS Identity and Access Management (IAM) ロールを使用して、前の手順で作成した S3 バケットへのアクセスを許可します。以下の「[IAM ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」 を含む 「[IAM ロールを作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)」します。<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "UserFolderListing",<br />            "Action": [<br />                "s3:ListBucket",<br />                "s3:GetBucketLocation"<br />            ],<br />            "Effect": "Allow",<br />            "Resource": [<br />                "arn:aws:s3:::<your-bucket-name>"<br />            ]<br />        },<br />        {<br />            "Sid": "HomeDirObjectAccess",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:PutObject",<br />                "s3:GetObjectAcl",<br />                "s3:GetObject",<br />                "s3:DeleteObjectVersion",<br />                "s3:DeleteObject",<br />                "s3:PutObjectAcl",<br />                "s3:GetObjectVersion"<br />            ],<br />            "Resource": "arn:aws:s3:::<your-bucket-name>/*"<br />        }<br />    ]<br />}</pre>IAM ロールを作成するときは、Transfer ユースケースを選択する必要があります。 | AWS 全般 | 

### 転送サービスの定義
<a name="define-the-transfer-service"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SFTP サーバを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html)SFTP サーバーの設定方法の詳細については、「[Create an SFTP-enabled server](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html)」(AWS Transfer Family ユーザーガイド) を参照してください。 | AWS 全般 | 
| サーバーのアドレスを取得します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html) | AWS 全般 | 
| SFTP クライアント key pair を作成します。 | 「[Microsoft Windows](https://docs.aws.amazon.com/transfer/latest/userguide/key-management.html#windows-ssh)」 または 「[macOS/Linux/UNIX](https://docs.aws.amazon.com/transfer/latest/userguide/key-management.html#macOS-linux-unix-ssh)」 用の SSH key pair を作成します。 | AWS 全般、SSH | 
| SFTP ユーザーを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html) | AWS 全般 | 

### メインフレームファイルの転送
<a name="transfer-the-mainframe-file"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SSH 秘密鍵をメインフレームに送信します。 | SFTP または SCP を使用して SSH プライベートキーをレガシー環境に送信します。Transfer for SFTP<pre>sftp [USERNAME@mainframeIP]<br />[password]<br />cd [/u/USERNAME]<br />put [your-key-pair-file]</pre>SCP の例<pre>scp [your-key-pair-file] [USERNAME@MainframeIP]:/[u/USERNAME]</pre>次に、後でFile Transferバッチジョブ (例: `/u/CONTROLM`) を実行するユーザー名で SSH キーを z/OS UNIX ファイルシステムに保存します。 z/OS Unix シェルについて、詳しくは「[An introduction to the z/OS shells](https://www.ibm.com/docs/en/zos/2.2.0?topic=shells-introduction-zos)」(IBM ドキュメント) をご確認ください。 | メインフレーム、z/OS UNIX シェル、FTP、SCP | 
| JCL SFTP クライアントを作成します。 | メインフレームにはネイティブ SFTP クライアントがないため、BPXBATCH ユーティリティを使用して z/OS Unix シェルから SFTP クライアントを実行する必要があります。ISPF エディターで JCL SFTP クライアントを作成します。例えば、次のようになります。<pre>//JOBNAM JOB ...<br />//**********************************************************************<br />//SFTP EXEC PGM=BPXBATCH,REGION=0M <br />//STDPARM DD * <br />SH cp "//'MAINFRAME.FILE.NAME'" filename.txt; <br />echo 'put filename.txt' > uplcmd; <br />sftp -b uplcmd -i ssh_private_key_file ssh_username@<transfer service ip or DNS>; <br />//SYSPRINT DD SYSOUT=* <br />//STDOUT DD SYSOUT=* <br />//STDENV DD * <br />//STDERR DD SYSOUT=*</pre>z/OS Unix シェルでコマンドを実行する方法について、詳しくは「[The BPXBATCH utility](https://www.ibm.com/docs/en/zos/2.2.0?topic=ispf-bpxbatch-utility)」(IBM ドキュメント) をご確認ください。z/OS で JCL ジョブを作成または編集する方法の詳細については、「[ISPF とは](https://www.ibm.com/docs/en/zos-basic-skills?topic=interfaces-what-is-ispf)」 および 「[ISPF エディター](https://www.ibm.com/docs/en/zos-basic-skills?topic=ispf-editor)」 (IBM ドキュメンテーション)を参照してください。 | JCL、メインフレーム、z/OS UNIX シェル | 
| JCL SFTP クライアントを実行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html)バッチジョブのアクティビティを確認する方法について、詳しくは「[z/OS SDSF User's Guide](https://www.ibm.com/docs/en/zos/2.4.0?topic=sdsf-zos-users-guide) 」(IBM ドキュメント) をご確認ください。 | メインフレーム、JCL、ISPF | 
| File Transferを検証します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html) | AWS 全般 | 
| JCL SFTP クライアントを自動化します。 | ジョブスケジューラを使用して JCL SFTP クライアントを自動的にトリガーします。[BMC Control-M](https://www.bmcsoftware.pt/it-solutions/control-m.html) や [CA Workload Automation](https://www.broadcom.com/products/mainframe/workload-automation/ca7) などのメインフレームジョブスケジューラを使用して、時間やその他のバッチジョブの依存関係に基づいて File Transfer のバッチジョブを自動化できます。 | ジョブスケジューラー | 

## 関連リソース
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-resources"></a>
+ 「[AWS Transfer Family の仕組み](https://docs.aws.amazon.com/transfer/latest/userguide/how-aws-transfer-works.html)」

# AWS Blu Age モダナイズされたアプリケーションのパフォーマンスを最適化する
<a name="optimize-performance-aws-blu-age-modernized-application"></a>

*Amazon Web Services、Vishal Jaswani、Manish Roy、Himanshu Sah*

## 概要
<a name="optimize-performance-aws-blu-age-modernized-application-summary"></a>

 AWS Blu Age でモダナイズされたメインフレームアプリケーションは、本番環境にデプロイする前に、機能とパフォーマンスの同等性テストが必要です。パフォーマンステストでは、モダナイズされたアプリケーションは、特に複雑なバッチジョブで、レガシーシステムよりも動作が遅くなる可能性があります。このギャップは、メインフレームアプリケーションがモノリシックであるのに対し、最新のアプリケーションが多層アーキテクチャを使用していることに由来します。このパターンは、[AWS Blu Age で自動リファクタリング](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html)を使用してモダナイズされたアプリケーションのパフォーマンスギャップに対処するための最適化手法を示しています。

このパターンでは、ネイティブ Java およびデータベース調整機能を備えた AWS Blu Age モダナイゼーションフレームワークを使用して、パフォーマンスのボトルネックを特定して解決します。このパターンでは、プロファイリングとモニタリングを使用して、SQL 実行時間、メモリ使用率、I/O パターンなどのメトリクスに関するパフォーマンスの問題を特定する方法について説明します。次に、データベースクエリの再編成、キャッシュ、ビジネスロジックの改良など、ターゲットを絞った最適化を適用する方法について説明します。

バッチ処理時間とシステムリソース使用率の向上により、モダナイズされたシステムのメインフレームパフォーマンスレベルを一致させることができます。このアプローチは、最新のクラウドベースのアーキテクチャへの移行中も機能的同等性を維持します。

このパターンを使用するには、「[エピック](#optimize-performance-aws-blu-age-modernized-application-epics)」セクションの手順に従ってシステムを設定してパフォーマンスホットスポットを特定し、「[アーキテクチャ](#optimize-performance-aws-blu-age-modernized-application-architecture)」セクションで詳述されている最適化手法を適用してください。

## 前提条件と制限
<a name="optimize-performance-aws-blu-age-modernized-application-prereqs"></a>

**前提条件**
+  AWS Blu Age モダナイズされたアプリケーション
+ [JProfiler ライセンス](https://www.ej-technologies.com/store/jprofiler)
+ データベースクライアントとプロファイリングツールをインストールするための管理者権限
+ AWS Blu Age [レベル 3 認定](https://bluinsights.aws/certification/)
+  AWS Blu Age フレームワーク、生成されたコード構造、Java プログラミングに関する中級レベルの理解

**制限事項**

以下の最適化機能と機能は、このパターンの範囲外です。
+ アプリケーション層間のネットワークレイテンシーの最適化
+ Amazon Elastic Compute Cloud (Amazon EC2) インスタンスタイプとストレージの最適化によるインフラストラクチャレベルの最適化
+ 同時ユーザー負荷テストとストレステスト

**製品バージョン**
+ JProfiler バージョン 13.0 以降 (最新バージョンを推奨)
+ pgAdmin バージョン 8.14 以降

## アーキテクチャ
<a name="optimize-performance-aws-blu-age-modernized-application-architecture"></a>

このパターンでは、JProfiler や pgAdmin などのツールを使用して AWS Blu Age アプリケーションのプロファイリング環境を設定します。 AWS Blu Age が提供する DAOManager API と SQLExecutionBuilder APIs による最適化をサポートしています。

このセクションの残りの部分では、モダナイズされたアプリケーションのパフォーマンスホットスポットと最適化戦略を特定するための詳細情報と例を示します。「[エピック](#optimize-performance-aws-blu-age-modernized-application-epics)」セクションのステップでは、詳細なガイダンスのためにこの情報を参照します。

**モダナイズされたメインフレームアプリケーションでのパフォーマンスホットスポットの特定**

モダナイズされたメインフレームアプリケーションにおいて、*パフォーマンスホットスポット*とは、大幅な速度低下や非効率を引き起こすコード内の特定の領域を指します。ホットスポットが生まれる要因として、メインフレームアプリケーションとモダナイズされたアプリケーション間のアーキテクチャ上の違いが挙げられます。こうしたパフォーマンスのボトルネックを特定し、モダナイズされたアプリケーションのパフォーマンスを最適化するには、SQL ログ記録、`EXPLAIN` プランのクエリ、JProfiler 分析の 3 つの手法を使用できます。

*ホットスポット特定手法: SQL ログ記録*

 AWS Blu Age を使用してモダナイズされたアプリケーションを含む最新の Java アプリケーションには、SQL クエリをログに記録する機能が組み込まれています。 AWS Blu Age プロジェクトで特定のロガーを有効にして、アプリケーションによって実行される SQL ステートメントを追跡および分析できます。この手法は、過剰な個々のクエリや構造化されていないデータベース呼び出しなど、バッチ処理やクエリの改良によって最適化される可能性のある非効率的なデータベースアクセスパターンを特定するのに特に役立ちます。

 AWS Blu Age モダナイズされたアプリケーションで SQL ログ記録を実装するには、 `application.properties` ファイル内の SQL ステートメント`DEBUG`のログレベルを に設定して、クエリ実行の詳細をキャプチャします。

```
level.org.springframework.beans.factory.support.DefaultListableBeanFactory : WARN
level.com.netfective.bluage.gapwalk.runtime.sort.internal: WARN
level.org.springframework.jdbc.core.StatementCreatorUtils: DEBUG
level.com.netfective.bluage.gapwalk.rt.blu4iv.dao: DEBUG
level.com.fiserv.signature: DEBUG
level.com.netfective.bluage.gapwalk.database.support.central: DEBUG
level.com.netfective.bluage.gapwalk.rt.db.configuration.DatabaseConfiguration: DEBUG
level.com.netfective.bluage.gapwalk.rt.db.DatabaseInteractionLoggerUtils: DEBUG
level.com.netfective.bluage.gapwalk.database.support.AbstractDatabaseSupport: DEBUG
level.com.netfective.bluage.gapwalk.rt: DEBUG
```

最適化ターゲットを特定するために、ログに記録されたデータを使用して高頻度およびパフォーマンスの低いクエリをモニタリングします。バッチプロセス内のクエリは通常、パフォーマンスへの影響が最も大きいため、それらに焦点を当てます。

*ホットスポット特定手法: EXPLAIN プランをクエリする*

このメソッドは、リレーショナルデータベース管理システムのクエリ計画機能を使用します。PostgreSQL や MySQL の `EXPLAIN` や、Oracle などの `EXPLAIN PLAN` コマンドを使用することで、データベースが特定のクエリをどのように実行するか調べることができます。これらのコマンドの出力は、インデックスを使用するか、完全なテーブルスキャンを実行するかなど、クエリ実行戦略に関する貴重なインサイトを提供します。この情報は、クエリのパフォーマンスを最適化するために重要であり、適切なインデックス作成により実行時間が大幅に短縮される場合には特に重要です。

アプリケーションログから最も反復的な SQL クエリを抽出し、データベースに固有の `EXPLAIN` コマンドを使用して、パフォーマンスの低いクエリの実行パスを分析します。PostgreSQL データベースの例を次に示します。

クエリ:

```
SELECT * FROM tenk1 WHERE unique1 < 100;
```

`EXPLAIN` コマンド:

```
EXPLAIN SELECT * FROM tenk1 where unique1 < 100;
```

出力:

```
Bitmap Heap Scan on tenk1 (cost=5.06..224.98 rows=100 width=244) 
Recheck Cond: (unique1 < 100) 
-> Bitmap Index Scan on tenk1_unique1 (cost=0.00..5.04 rows=100 width=0)
Index Cond: (unique1 < 100)
```

`EXPLAIN` 出力は以下のように解釈できます。
+ `EXPLAIN` 計画を最も内側から外側 (下から上) のオペレーションに読み取ります。
+ 主要な用語を探します。例えば、`Seq Scan` はフルテーブルスキャンを示し、`Index Scan` はインデックスの使用状況を示します。
+ コスト値を確認する: 最初の数値は起動コスト、2 番目の数値は合計コストです。
+ 推定出力行数の `rows` の値を参照してください。

この例では、クエリエンジンはインデックススキャンを使用して一致する行を検索し、それらの行のみを取得します (`Bitmap Heap Scan`)。これは、個々の行アクセスのコストが高いにもかかわらず、テーブル全体をスキャンするよりも効率的です。

`EXPLAIN` プランの出力のテーブルスキャンオペレーションは、インデックスが欠落していることを示します。最適化には、適切なインデックスを作成する必要があります。

*ホットスポット特定手法: JProfiler 分析*

JProfiler は包括的な Java プロファイリングツールです。低速のデータベース呼び出しと CPU 負荷の高い呼び出しを特定することで、パフォーマンスのボトルネックを解決できます。このツールは、遅い SQL クエリと非効率的なメモリ使用を特定するのに特に効果的です。

クエリの分析例:

```
select evt. com.netfective.bluage.gapwalk.rt.blu4iv.dao.Blu4ivTableManager.queryNonTrasactional
```

JProfiler ホットスポットビューには、次の情報が表示されます。
+ **時間**列
  + 合計実行時間を表示します (例: 329 秒)
  + 合計アプリケーション時間の割合を表示します (例: 58.7%)
  + 最も時間のかかるオペレーションを特定するのに役立ちます
+ **平均時間**列
  + 実行あたりの時間を表示します (例: 2,692 マイクロ秒)
  + 個々のオペレーションパフォーマンスを示します
  + 個々のオペレーションが遅い場合の発見に役立ちます
+ **イベント**列
  + 実行数を表示します (例: 122,387 回)
  + オペレーションの頻度を示します
  + 頻繁に呼び出されるメソッドの特定に役立ちます

サンプル結果:
+ 高頻度: 実行数 122,387 回は、最適化の可能性を示します
+ パフォーマンス上の懸念: 平均時間 2,692 マイクロ秒は、非効率を示します
+ 重大な影響: 合計時間の 58.7% は、重大なボトルネックを示します

JProfiler は、アプリケーションのランタイム動作を分析して、静的コード分析や SQL ログ記録では明白ではなかった可能性のあるホットスポットを明らかにすることができます。これらのメトリクスは、最適化が必要なオペレーションを特定し、最も効果的な最適化戦略を決定するのに役立ちます。JProfiler の各機能について、詳しくは [JProfiler ドキュメント](https://www.ej-technologies.com/resources/jprofiler/help/doc/main/introduction.html)をご確認ください。

これらの 3 つの手法 (SQL ログ記録、`EXPLAIN` プランのクエリ、JProfiler) を組み合わせて使用すると、アプリケーションのパフォーマンス特性を包括的に把握できます。最も重要なパフォーマンスホットスポットを特定して対処することで、元のメインフレームアプリケーションとモダナイズされたクラウドベースのシステムの間のパフォーマンスギャップを埋めることができます。

アプリケーションのパフォーマンスホットスポットを特定したら、次のセクションで説明する最適化戦略を適用できます。

**メインフレームモダナイズの最適化戦略**

このセクションでは、メインフレームシステムからモダナイズされたアプリケーションを最適化するための主要な戦略の概要を説明します。既存 API の利用、効果的なキャッシュの実装、ビジネスロジックの最適化の 3 つの戦略に焦点を当てています。

*最適化戦略: 既存の API を使用する*

AWS Blu Age は、パフォーマンスを最適化するために使用できる DAO インターフェイスにいくつかの強力な APIs を提供します。DAOManager と SQLExecutionBuilder の 2 つのプライマリインターフェイスは、アプリケーションのパフォーマンスを向上させる機能を提供します。

**DAOManager**

DAOManager は、モダナイズされたアプリケーションのデータベースオペレーションのプライマリインターフェイスとして機能します。データベースオペレーションを強化し、アプリケーションのパフォーマンスを向上させる複数の方法を提供するものであり、特に簡単な作成、読み取り、更新、削除 (CRUD) オペレーションとバッチ処理に役立ちます。
+ **SetMaxResults を使用します。**DAOManager API では、**SetMaxResults** メソッドを使用して、単一のデータベースオペレーションで取得するレコードの最大数を指定できます。デフォルトでは、DAOManager は一度に取得するレコード数は 10 に限られるため、大規模なデータセットを処理する際には複数のデータベース呼び出しが発生する可能性があります。この最適化は、アプリケーションが多数のレコードを処理する必要があり、それらを取得するために現在複数のデータベース呼び出しを実行している場合に使用します。これは、大規模なデータセットを反復処理するバッチ処理シナリオで特に役立ちます。次の例では、左側のコード (最適化前) は、デフォルトのデータ取得値である 10 レコードを使用しています。右側のコード (最適化後) では、一度に 100,000 件のレコードを取得するように **setMaxResults** を設定しています。  
![\[SetMaxResults を使用して複数のデータベース呼び出しを回避する例。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/beb9623e-e7a8-45ef-adc6-19a249224b05.png)
**注記**  
より大きなバッチサイズを慎重に選択し、オブジェクトのサイズを確認します。この最適化によりメモリフットプリントが増加するためです。
+ **SetOnGreatorOrEqual を SetOnEqual に置き換えます。**この最適化では、レコードを取得するための条件設定に使用する方法を変更する必要があります。**SetOnGreatorOrEqual** メソッドは指定された値以上のレコードを取得しますが、**SetOnEqual** は指定された値と正確に一致するレコードのみを取得します。

  正確な一致が必要であり、現在 **SetOnGreatorOrEqual** メソッドの後に **readNextEqual()** を使用している場合は、以下のコード例に示すように **SetOnEqual** を使用してください。この最適化により、不要なデータの取得が軽減されます。  
![\[SetOnEqual を使用して完全一致に基づいてレコードを取得する例。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/5ce0dac9-f281-4862-a71f-1614493a83f0.png)
+ **バッチ書き込みおよび更新オペレーションを使用します。**バッチオペレーションを使用して、複数の書き込みまたは更新オペレーションを 1 つのデータベーストランザクションにグループ化できます。これにより、データベース呼び出しの数が減少し、複数のレコードを含むオペレーションのパフォーマンスが大幅に向上します。

  次の例では、左側のコードがループで書き込みオペレーションを実行するため、アプリケーションのパフォーマンスが低下します。このコードは、バッチ書き込みオペレーションを使用して最適化できます。`WHILE` ループのイテレーションのたびに、バッチサイズが所定のサイズである 100 に達するまでレコードをバッチに追加します。その後、バッチが所定のバッチサイズに達したときにバッチをフラッシュしてから、残りのレコードをデータベースにフラッシュできます。これは、更新が必要な大規模なデータセットを処理するシナリオで特に役立ちます。  
![\[複数のオペレーションを 1 つのデータベーストランザクションにグループ化する例。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/e3bd60d4-06f5-4c1c-9cbd-463f6835a1ba.png)
+ **インデックスを追加します。**インデックスの追加は、クエリのパフォーマンスを大幅に向上させるデータベースレベルの最適化です。インデックスを使用すると、データベースはテーブル全体をスキャンすることなく、特定の列値を持つ行をすばやく見つけることができます。`WHERE` 句、`JOIN` 条件、または `ORDER BY` ステートメントで頻繁に使用される列のインデックス作成を使用します。これは、大きなテーブルや、迅速なデータ取得が重要な場合に特に重要です。

**SQLExecutionBuilder**

SQLExecutionBuilder は柔軟な API であり、実行される SQL クエリを制御したり、特定の列のみを取得したり、`SELECT` を利用した `INSERT` を実行したり、動的なテーブル名を使用したりすることができます。次の例では、SQLExecutorBuilder は定義したカスタムクエリを使用します。

![\[カスタムクエリで SQLExecutorBuilder を使用する例。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/364e9fb1-0cbc-47d0-936d-46fb3b48b608.png)


**DAOManager と SQLExecutionBuilder の選択**

これらの API の選択は、特定のユースケースによって異なります。
+  AWS Blu Age ランタイムで SQL クエリを自分で記述するのではなく生成する場合は、DAOManager を使用します。
+ データベース固有の機能を活用したり、最適な SQL クエリを作成したりするために SQL クエリを記述する必要がある場合は、SQLExecutionBuilder を選択します。

*最適化戦略: キャッシュ*

モダナイズされたアプリケーションでは、効果的なキャッシュ戦略を実装することで、データベース呼び出しを大幅に削減し、応答時間を短縮できます。これにより、メインフレーム環境とクラウド環境のパフォーマンスギャップを埋めることができます。

 AWS Blu Age アプリケーションでは、シンプルなキャッシュ実装はハッシュマップや配列リストなどの内部データ構造を使用するため、コストとコードの再編成を必要とする外部キャッシュソリューションを設定する必要はありません。このアプローチは、頻繁にアクセスされるが、頻繁に変更はされないデータに特に効果的です。キャッシュを実装するときは、メモリの制約と更新パターンを検討して、キャッシュされたデータの一貫性を維持し、実際のパフォーマンス上の利点が得られるようにします。

キャッシュを成功させるための鍵は、キャッシュする適切なデータを特定することです。次の例では、左側のコードは常にテーブルからデータを読み取りますが、ローカルハッシュマップに特定のキーの値がない場合、右側のコードはテーブルからデータを読み取ります。`cacheMap` は、プログラムのコンテキストで作成され、プログラムコンテキストのクリーンアップメソッドでクリアされるハッシュマップオブジェクトです。

DAOManager を使用したキャッシュ:

![\[DAOManager を使用したキャッシュ最適化の例。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/4efd3d22-c694-4f7d-a543-2bed341d1651.png)


SQLExecutionBuilder を使用したキャッシュ:

![\[SQLExecutionBuilder を使用したキャッシュ最適化の例。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/c8964804-96eb-4e26-b2bf-8742e62b4c33.png)


*最適化戦略: ビジネスロジックの最適化*

ビジネスロジックの最適化では、最新のアーキテクチャ機能に合わせて AWS Blu Age から自動生成されたコードを再構築することに重点を置いています。これは、生成されたコードがレガシーメインフレームコードと同じロジック構造を維持している場合に必要になります。これは、最新のシステムには適していない可能性があります。目標は、元のアプリケーションと機能的同等性を維持しながらパフォーマンスを向上させることです。

この最適化アプローチは、単純な API 調整やキャッシュ戦略にとどまりません。これには、アプリケーションがデータを処理し、データベースとやり取りする方法を変更する必要もあります。一般的な最適化には、シンプルな更新を行うための不要な読み取り操作の回避、冗長なデータベース呼び出しの削除、最新のアプリケーションアーキテクチャとの整合性を高めるためのデータアクセスパターンの再編成などがあります。ここにいくつか例を挙げます。
+ **データベース内のデータを直接更新します。**ループにより複数の DAOManager オペレーションを行う代わりに、直接 SQL 更新を使用してビジネスロジックを再構築します。例えば、次のコード (左側) は複数のデータベース呼び出しを行い、過剰なメモリを使用します。具体的には、ループ内の複数のデータベースの読み取りおよび書き込みオペレーション、バッチ処理ではなく個々の更新、イテレーションごとに不要なオブジェクトの作成を使用します。

  次の最適化されたコード (右側) では、単一の Direct SQL 更新オペレーションを使用します。具体的には、複数の呼び出しの代わりに 1 つのデータベース呼び出しを使用し、すべての更新を 1 つのステートメントで処理するため、ループは必要ありません。この最適化によって、パフォーマンスとリソース使用率が向上し、複雑さが軽減されます。これにより、SQL インジェクションが防止され、クエリ計画のキャッシュが改善され、セキュリティが向上します。  
![\[ループを使用する DAOManager オペレーションの代わりに直接 SQL 更新を使用するコードの再構築。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/7d0a7879-8db2-4cc5-b41c-ee370b3f22e5.png)
**注記**  
常にパラメータ化されたクエリを使用して SQL インジェクションを防ぎ、適切なトランザクション管理を確保します。
+ **冗長なデータベース呼び出しを削減します。**冗長なデータベース呼び出しは、特にループ内で発生する場合、アプリケーションのパフォーマンスに大きな影響を与える可能性があります。単純で効果的な最適化手法は、同じデータベースクエリを複数回繰り返さないようにすることです。次のコード比較は、`retrieve()` データベース呼び出しをループ外に移動することで、同じクエリが冗長的に実行されるのを防ぎ、効率を向上させる例を示します。  
![\[alt text not found\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/da9c15f4-bcf1-4827-b91a-73212fe35cca.png)
+ **SQL** `JOIN`** 句を使用してデータベース呼び出しを減らします。**SQLExecutionBuilder を実装して、データベースの呼び出しを最小限に抑えます。SQLExecutionBuilder は SQL 生成をより細かく制御でき、DAOManager では効率的に処理できない複雑なクエリに特に役立ちます。例えば、次のコードは複数の DAOManager 呼び出しを使用します。

  ```
  List<Employee> employees = daoManager.readAll();
  for(Employee emp : employees) {
      Department dept = deptManager.readById(emp.getDeptId());  // Additional call for each employee
      Project proj = projManager.readById(emp.getProjId());     // Another call for each employee
      processEmployeeData(emp, dept, proj);
  }
  ```

  最適化済みのコードは、SQLExecutionBuilder でデータベース呼び出しを 1 回だけ使用します。

  ```
  SQLExecutionBuilder builder = new SQLExecutionBuilder();
  builder.append("SELECT e.*, d.name as dept_name, p.name as proj_name");
  builder.append("FROM employee e");
  builder.append("JOIN department d ON e.dept_id = d.id");
  builder.append("JOIN project p ON e.proj_id = p.id");
  builder.append("WHERE e.status = ?", "ACTIVE");
  
  List<Map<String, Object>> results = builder.execute();  // Single database call
  for(Map<String, Object> result : results) {
      processComplexData(result);
  }
  ```

*最適化戦略を合わせて使用する*

これらの 3 つの戦略は相乗的に機能します。API は効率的なデータアクセスのためのツールを提供し、キャッシュはデータ取り出しを繰り返す必要性を減らし、ビジネスロジックの最適化はこれらの API を可能な限り最も効果的な方法で使用できるようにします。これらの最適化を定期的にモニタリングおよび調整することで、確実に、モダナイズされたアプリケーションの信頼性と機能を維持しながら、パフォーマンスを継続的に向上させることができます。成功の鍵は、アプリケーションの特性とパフォーマンス目標に基づいて各戦略を適用するタイミングと方法を理解することです。

## ツール
<a name="optimize-performance-aws-blu-age-modernized-application-tools"></a>
+ [JProfiler](https://www.ej-technologies.com/jprofiler) は、開発者とパフォーマンスエンジニア向けに設計された Java プロファイリングツールです。Java アプリケーションを分析して、パフォーマンスのボトルネック、メモリリーク、スレッドの問題を特定するのに役立ちます。JProfiler は、CPU、メモリ、スレッドプロファイリングや、データベースと Java 仮想マシン (JVM) のモニタリングを提供することで、アプリケーションの動作に関するインサイトを提供します。
**注記**  
JProfiler の代わりに、[Java VisualVM](https://visualvm.github.io/) を使用することもできます。これは、Java アプリケーションのパフォーマンスのプロファイリングとモニタリングを行う無料のオープンソースツールであり、CPU 使用率、メモリ消費量、スレッド管理、ガベージコレクション統計をリアルタイムでモニタリングします。Java VisualVM は組み込みの JDK ツールであるため、基本的なプロファイリングのニーズに対しては JProfiler よりもコスト効率が高くなります。
+ [pgAdmin](https://www.pgadmin.org/) はオープンソースの PostgreSQL 向け管理開発ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。pgAdmin を使用すると、単純な SQL クエリの記述から複雑なデータベースの開発まで、幅広いタスクを実行できます。その機能には、SQL エディタを強調表示する構文、サーバー側のコードエディタ、SQL、シェル、バッチタスクのスケジュールエージェント、初心者と経験豊富な PostgreSQL ユーザーの両方に対するすべての PostgreSQL 機能のサポートが含まれます。

## ベストプラクティス
<a name="optimize-performance-aws-blu-age-modernized-application-best-practices"></a>

パフォーマンスホットスポットの特定:
+ 最適化を開始する前に、パフォーマンスのベースラインメトリクスを文書化します。
+ ビジネス要件に基づき、パフォーマンス改善の明確な目標を設定します。
+ ベンチマークを行うときは、詳細なログ記録はパフォーマンスに影響する可能性があるため、無効にします。
+ パフォーマンステストスイートを設定して、定期的に実行します。
+ pgAdmin の最新バージョンを使用してください。(古いバージョンは `EXPLAIN` クエリプランに対応していません)
+ ベンチマークでは、最適化が完了したら JProfiler をデタッチします。これによりレイテンシーが増加するためです。
+ ベンチマークでは、必ずデバッグモードではなく開始モードでサーバーを実行してください。デバッグモードではレイテンシーが増加するためです。

最適化戦略:
+ `application.yaml` ファイルで **SetMaxResults** 値を設定し、システム仕様に従って適切なサイズのバッチを指定します。
+ データボリュームとメモリの制約に基づいて、**SetMaxResults** 値を設定します。
+ 後続の呼び出しが `.readNextEqual()` である場合にのみ、**SetOnGreatorOrEqual** を **SetOnEqual** に変更します。
+ バッチ書き込みまたは更新オペレーションでは、最後のバッチについては、設定されたバッチサイズより小さく、書き込みまたは更新オペレーションによって失われる可能性があるため、個別に処理します。

キャッシュ:
+ `processImpl` でキャッシュするために導入するフィールドは実行のたびに変更し、常にその `processImpl` のコンテキストで定義するようにしてください。また、フィールドは `doReset()` または `cleanUp()` メソッドを使用してクリアする必要があります。
+ インメモリキャッシュを実装する場合は、キャッシュのサイズを適正化します。メモリに非常に大きなキャッシュが保存されていると、すべてのリソースが占有され、アプリケーションの全体的なパフォーマンスに影響が及ぶ可能性があります。

SQLExecutionBuilder:
+ SQLExecutionBuilder で使用する予定のクエリの場合は、`PROGRAMNAME_STATEMENTNUMBER` などのキー名を使用します。
+ SQLExecutionBuilder を使用する場合は、常に `Sqlcod` フィールドを確認してください。このフィールドには、クエリが正しく実行されたか、エラーが発生したかを明示する値が含まれています。
+ パラメータ化されたクエリを使用して SQL インジェクションを防ぎます。

ビジネスロジックの最適化:
+ コードを再構築するときは機能的同等性を維持し、関連するプログラムのサブセットに対してリグレッションテストとデータベース比較を実行します。
+ 比較のためにプロファイリングのスナップショットを維持します。

## エピック
<a name="optimize-performance-aws-blu-age-modernized-application-epics"></a>

### JProfiler と pgAdmin をインストールする
<a name="install-jprofiler-and-pgadmin"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| JProfiler をインストールして設定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | アプリ開発者 | 
| pgAdmin をインストールして設定します。 | このステップでは、DB クライアントをインストールして自分のデータベースをクエリするように設定します。このパターンでは、データベースクライアントとして PostgreSQL データベースと pgAdmin を使用します。別のデータベースエンジンを使用する場合は、対応する DB クライアントのドキュメントに従ってください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | アプリ開発者 | 

### ホットスポットを特定する
<a name="identify-hotspots"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  AWS Blu Age アプリケーションで SQL クエリのログ記録を有効にします。 | [アーキテクチャ](#optimize-performance-aws-blu-age-modernized-application-architecture)セクションで説明されているように、 AWS Blu Age アプリケーションの `application.properties` ファイルで SQL クエリログ記録のロガーを有効にします。 | アプリ開発者 | 
| クエリ `EXPLAIN` プランを生成して分析し、データベースのパフォーマンスホットスポットを特定します。 | 詳しくは「[アーキテクチャ](#optimize-performance-aws-blu-age-modernized-application-architecture)」セクションをご確認ください。 | アプリ開発者 | 
| JProfiler のスナップショットを作成して、パフォーマンスの低いテストケースを分析します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | アプリ開発者 | 
| JProfiler スナップショットを分析し、パフォーマンスのボトルネックを特定します。 | 次の手順に従って、JProfiler スナップショットを分析します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html)JProfiler の使用について、詳しくは「[アーキテクチャ](#optimize-performance-aws-blu-age-modernized-application-architecture)」セクションおよび[ JProfiler ドキュメント](https://www.ej-technologies.com/jprofiler/docs)をご確認ください。 | アプリ開発者 | 

### ベースラインを確立する
<a name="establish-a-baseline"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 最適化を実装する前に、パフォーマンスベースラインを確立します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | アプリ開発者 | 

### 最適化戦略を適用する
<a name="apply-optimization-strategies"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 読み取りの呼び出しを最適化します。 | DAOManager **SetMaxResults** メソッドを使用して、データの取得を最適化します。手法の詳細については「[アーキテクチャ](#optimize-performance-aws-blu-age-modernized-application-architecture)」セクションをご確認ください。 | アプリ開発者、DAOManager | 
| データベースへの複数回の呼び出しを避けるために、ビジネスロジックをリファクタリングします。 | SQL `JOIN` 句を使用してデータベース呼び出しを減らします。詳細と例については、「[アーキテクチャ](#optimize-performance-aws-blu-age-modernized-application-architecture)」セクションの「*ビジネスロジックの最適化*」を参照してください。 | アプリケーション開発者、SQLExecutionBuilder | 
| コードをリファクタリングし、キャッシュを使用して読み取り呼び出しのレイテンシーを短縮します。 | この手法の詳細については、「[アーキテクチャ](#optimize-performance-aws-blu-age-modernized-application-architecture)」セクションの「*キャッシュ*」を参照してください。 | アプリ開発者 | 
| 複数の DAOManager オペレーションを使用して単純な更新オペレーションを行う非効率的なコードを書き換えます。 | データベース内のデータを直接更新する方法の詳細については、「[アーキテクチャ](#optimize-performance-aws-blu-age-modernized-application-architecture)」セクションの「*ビジネスロジックの最適化*」を参照してください。 | アプリ開発者 | 

### 最適化戦略をテストする
<a name="test-optimization-strategies"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 機能同等性を維持しながら、各最適化の変更を繰り返し検証します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html)ベースラインメトリクスをリファレンスとして使用すると、システムの信頼性を維持しながら、各最適化の影響を正確に測定できます。 | アプリデベロッパー | 

## トラブルシューティング
<a name="optimize-performance-aws-blu-age-modernized-application-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| 最新のアプリケーションを実行すると、エラー `Query_ID not found` の例外が表示されます。 | この問題を解決するには。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | 
| インデックスを追加しましたが、パフォーマンスが向上していません。 | 次の手順に従って、クエリエンジンがインデックスを使用していることを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | 
| out-of-memory の例外が発生しました。 | コードが、データ構造によって保持されていたメモリを解放していることを確認します。 | 
| バッチ書き込みオペレーションで、テーブルのレコードが欠落します。 | コードを確認し、バッチ数がゼロでない場合に追加の書き込みオペレーションが実行されていることを確認します。 | 
| SQL ログはアプリケーションログには表示されません。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | 

## 関連リソース
<a name="optimize-performance-aws-blu-age-modernized-application-resources"></a>
+ [AWS Blu Age を使用したアプリケーションの自動リファクタリング](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html) (*AWS Mainframe Modernization ユーザーガイド*)
+ [pgAdmin ドキュメント](https://www.pgadmin.org/docs/)
+ [JProfiler ドキュメント](https://www.ej-technologies.com/jprofiler/docs)

# トラステッドコンテキストを使用して、AWS の Db2 フェデレーションデータベースのユーザーアクセスを保護し、合理化する
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts"></a>

*Amazon Web Services、Sai Parthasaradhi*

## 概要
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-summary"></a>

多くの企業がレガシーメインフレームワークロードをAmazon Web Services (AWS) に移行しています。この移行には、IBM Db2 for z/OS データベースを Amazon Elastic Compute Cloud (Amazon EC2) 上の Linux、Unix、および Windows (LUW) 用の Db2 (LUW) に移行することが含まれます。オンプレミスから AWS への段階的移行中、すべてのアプリケーションとデータベースが Db2 LUW に完全に移行されるまで、ユーザーは IBM Db2 z/OS と Amazon EC2 上の Db2 LUW のデータにアクセスする必要がある場合があります。このようなリモートデータアクセスのシナリオでは、プラットフォームが異なれば使用する認証メカニズムも異なるため、ユーザー認証は難しい場合があります。

このパターンは、Db2 for z/OS をリモートデータベースとして Db2 for LUW 上にフェデレーションサーバーをセットアップする方法を網羅しています。このパターンでは、トラステッドコンテキストを使用して、リモートデータベースで再認証することなく、ユーザーの ID を Db2 LUW から Db2 z/OS に伝達します。トラステッドコンテキストについて詳しくは、「[追加情報](#secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-additional)」セクションを参照してください。

## 前提条件と制限事項
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Amazon EC2 インスタンスで実行されている Db2 インスタンス
+ オンプレミスで実行されているリモート Db2 for z/OS データベース
+ [AWS Site-to-Site VPN](https://aws.amazon.com/vpn/) または [AWS Direct Connect](https://aws.amazon.com/directconnect/) を介して AWS に接続されたオンプレミスネットワーク

## アーキテクチャ
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-architecture"></a>

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

![\[オンプレミスのメインフレームは、オンプレミスの Db2 サーバーと VPN を介して EC2 上の Db2 DB に接続します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/9e04f0fe-bae2-412a-93ac-83da50222017/images/0a384695-7907-4fb8-bb7e-d170dcc114af.png)


## ツール
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-tools"></a>

** サービス**
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。必要な数の仮想サーバーを起動することができ、迅速にスケールアップまたはスケールダウンができます。
+ [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) は、AWS で起動するインスタンスと独自のリモートネットワーク間でトラフィックを渡すのに役立ちます。

**その他のツール**
+ [db2cli](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2cli-db2-interactive-cli) は Db2 のインタラクティブコマンドラインインターフェイス (CLI)コマンドです。

## エピック
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-epics"></a>

### AWS で実行されている Db2 LUW データベースでフェデレーションを有効にする
<a name="enable-federation-on-the-db2-luw-database-running-on-aws"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| DB2 LUW データベースでフェデレーションを有効にします。 | DB2 LUW でフェデレーションを有効にするには、次のコマンドを実行します。<pre>update dbm cfg using federated YES</pre> | DBA | 
| データベースを再起動します。 | データベースを再起動するには、次のコマンドを実行します。<pre>db2stop force;<br />db2start;</pre> | DBA | 

### リモートデータベースをカタログ化する
<a name="catalog-the-remote-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リモート Db2 z/OS サブシステムをカタログ化します。 | AWS で実行されている Db2 LUW 上のリモート Db2 z/OS データベースをカタログ化するには、以下のサンプルコマンドを使用します。<pre>catalog TCPIP NODE tcpnode REMOTE mainframehost SERVER mainframeport</pre> | DBA | 
| リモートデータベースをカタログ化します。 | リモートデータベースをカタログするには、次のコマンド例を使用します。<pre>catalog db dbnam1 as ndbnam1 at node tcpnode</pre> | DBA | 

### リモートサーバー定義を作成する
<a name="create-the-remote-server-definition"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リモート Db2 z/OS データベースのユーザー認証情報を収集します。 | 次の手順に進む前に、以下の情報を収集します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts.html) | DBA | 
| DRDA ラッパーを作成します。 | DRDA ラッパーを作成するには、次のコマンドを実行します。<pre>CREATE WRAPPER DRDA;</pre> | DBA | 
| サーバー定義を作成します。 | サーバー定義を作成するには、次のコマンド例を実行します。<pre>CREATE SERVER ndbserver<br />TYPE DB2/ZOS VERSION 12<br />WRAPPER DRDA<br />AUTHORIZATION "dbuser1" PASSWORD "dbpasswd" OPTIONS ( DBNAME 'ndbnam1',FED_PROXY_USER 'ZPROXY' );</pre>この定義では、`FED_PROXY_USER` が Db2 z/OS データベースへの信頼できる接続を確立するために使用するプロキシユーザーを指定します。認可ユーザー ID とパスワードは、Db2 LUW データベースにリモートサーバーオブジェクトを作成する場合にのみ必要です。これらは後のランタイムには使用されません。 | DBA | 

### ユーザーマッピングの作成
<a name="create-user-mappings"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| プロキシユーザーのユーザーマッピングを作成します。 | プロキシユーザーのユーザーマッピングを作成するには、次のコマンドを実行します。<pre>CREATE USER MAPPING FOR ZPROXY SERVER ndbserver OPTIONS (REMOTE_AUTHID 'ZPROXY', REMOTE_PASSWORD 'zproxy');</pre> | DBA | 
| Db2 LUW で各ユーザーのユーザーマッピングを作成します。 | プロキシユーザーを介してリモートデータにアクセスする必要がある AWS 上の Db2 LUW データベース上のすべてのユーザーのユーザーマッピングを作成します。ユーザーマッピングを作成するには、次のコマンドを実行します。<pre>CREATE USER MAPPING FOR PERSON1 SERVER ndbserver OPTIONS (REMOTE_AUTHID 'USERZID', USE_TRUSTED_CONTEXT 'Y');</pre>このステートメントは、Db2 LUW (`PERSON1`) 上のユーザーがリモート Db2 z/OS データベース (`USE_TRUSTED_CONTEXT 'Y'`) への信頼できる接続を確立できることを明記しています。プロキシユーザーを介して接続が確立されると、ユーザーは Db2 z/OS ユーザー ID (`REMOTE_AUTHID 'USERZID'`) を使用してデータにアクセスできます。 | DBA | 

### トラステッドコンテキストオブジェクトを作成する
<a name="create-the-trusted-context-object"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| トラステッドコンテキストオブジェクトを作成します。 | リモート Db2 z/OS データベースにトラステッドコンテキストオブジェクトを作成するには、以下のサンプルコマンドを使用します。<pre>CREATE TRUSTED CONTEXT CTX_LUW_ZOS<br />BASED UPON CONNECTION USING SYSTEM AUTHID ZPROXY<br />ATTRIBUTES (<br />ADDRESS '10.10.10.10'<br />)<br />NO DEFAULT ROLE<br />ENABLE<br />WITH USE FOR PUBLIC WITHOUT AUTHENTICATION;</pre>この定義では、`CTX_LUW_ZOS` はトラステッドコンテキストオブジェクトの任意の名前です。このオブジェクトには、信頼できる接続の発信元となるサーバーのプロキシユーザー ID と IP アドレスが含まれます。この例では、サーバーは AWS 上の Db2 LUW データベースです。IP アドレスの代わりにドメイン名を使用できます。この条項は、信頼できる接続でのユーザー ID の切り替えがすべてのユーザー ID で許可されていることを `WITH USE FOR PUBLIC WITHOUT AUTHENTICATION` 示しています。パスワードを入力する必要はありません。 | DBA | 

## 関連リソース
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-resources"></a>
+ [IBM Resource Access Control Facility (RACF)](https://www.ibm.com/products/resource-access-control-facility)
+ [IBM Db2 LUW Federation](https://www.ibm.com/docs/en/db2/11.5?topic=federation)
+ [Trusted contexts](https://www.ibm.com/docs/en/db2-for-zos/13?topic=contexts-trusted)

## 追加情報
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-additional"></a>

**Db2 トラステッドコンテキスト**

トラステッドコンテキストは、フェデレーションサーバーとリモートデータベースサーバー間の信頼関係を定義する Db2 データベースオブジェクトです。信頼できる関係を定義するために、トラステッドコンテキストは信頼属性を指定します。信頼属性には、3 つのタイプがあります。
+ 最初のデータベース接続要求を行うシステム許可 ID
+ 接続元の IP アドレスまたはドメイン名
+ データベースサーバーとデータベースクライアント間のデータ通信の暗号化設定

接続要求のすべての属性が、サーバー上で定義されているトラステッドコンテキストオブジェクトで指定されている属性と一致すると、信頼できる接続が確立されます。信頼接続には、暗黙的な接続と明示的な接続の 2 つのタイプがあります。暗黙的な信頼接続が確立されると、その信頼された接続定義の範囲外では使用できないロールがユーザーに継承されます。明示的な信頼された接続が確立されると、ユーザーは認証の有無にかかわらず、同じ物理接続に切り替えることができます。さらに、Db2 ユーザーには、信頼できる接続内でのみ使用できる権限を指定するロールを付与できます。このパターンでは、明示的な信頼できる接続を使用します。

このパターンのトラステッドコンテキスト

パターンが完成すると、Db2 LUW 上の PERSON1 は、フェデレーテッドトラステッドコンテキストを使用して Db2 z/OS のリモートデータにアクセスします。PERSON1 への接続がトラステッドコンテキスト定義で指定されている IP アドレスまたはドメイン名から発信されている場合、PERSON1 への接続はプロキシユーザーを介して確立されます。接続が確立されると、PERSON1 の対応する Db2 z/OS ユーザー ID は再認証なしで切り替えられ、ユーザーはそのユーザーに設定された Db2 権限に基づいてデータまたはオブジェクトにアクセスできます。

フェデレーションされたトラステッドコンテキストの利点
+ このアプローチでは、すべてのユーザーが必要とするすべての特権のスーパーセットを必要とする共通のユーザー ID やアプリケーション ID を使用する必要がなくなるため、最小特権という原則が維持されます。
+ フェデレーテッドデータベースとリモートデータベースの両方でトランザクションを実行するユーザーの実際の ID は常に知られており、監査することができます。
+ フェデレーションサーバーによる再認証を必要とせずに物理接続がユーザー間で再利用されるので、パフォーマンスが向上します。

# 大規模な Db2 z/OS データを CSV ファイルで Amazon S3 に転送する
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files"></a>

*Amazon Web Services、Bruno Sahinoglu、Abhijit Kshirsagar、Ivan Schuster*

## 概要
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-summary"></a>

メインフレームは今でも多くの企業の記録システムであり、現在および過去のビジネストランザクションの記録を持つマスターデータエンティティを含む大量のデータを含んでいます。多くの場合、サイロ化されており、同じ企業内の分散システムからは簡単にはアクセスできません。クラウドテクノロジーの出現とビッグデータの民主化に伴い、企業はメインフレームデータに隠された洞察を利用して新しいビジネス機能を開発することに関心を持っています。

この目標を掲げて、エンタプライズはメインフレームの Db2 データをAmazon Web Services (AWS) クラウド環境に公開しようとしています。ビジネス上の理由はいくつかあり、転送方法はケースごとに異なります。アプリケーションをメインフレームに直接接続したい場合もあれば、データをほぼリアルタイムで複製したい場合もあります。ユースケースがデータウェアハウスまたはデータレイクへのフィードである場合、最新のコピーを用意することはもはや問題ではなく、特にサードパーティ製品のライセンスコストを避けたい場合は、このパターンで説明されている手順で十分かもしれません。別の使用例としては、移行プロジェクトのメインフレームデータ転送が挙げられます。移行シナリオでは、機能同等性テストを実行するにはデータが必要です。この記事で説明するアプローチは、Db2 データをAWS クラウド環境に転送するための費用対効果の高い方法です。

Amazon Simple Storage Service (Amazon S3) は最も統合された AWS サービスの 1 つであるため、そこからデータにアクセスし、Amazon Athena、AWS Lambda 関数、Amazon QuickSight などの他の AWS サービスを使用して直接洞察を収集できます。AWS Glue または AWS Database Migration Service (AWS DMS) を使用して Amazon Aurora または Amazon DynamoDB にデータをロードすることもできます。その目的を念頭に置いて、メインフレームで ASCII 形式の CSV ファイルの Db2 データをアンロードし、ファイルを Amazon S3 に転送する方法について説明します。

この目的のために、必要な数の Db2 テーブルをアンロードして転送するためのジョブ制御言語 (JCL) を生成するのに役立つ「[メインフレームスクリプト](https://github.com/aws-samples/unloaddb2-samples)」が開発されました。

## 前提条件と制限
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-prereqs"></a>

**前提条件**
+ 再構築拡張エグゼキューター (REXX) と JCL スクリプトを実行する権限を持つ IBM z/OS オペレーティングシステムユーザー。
+ z/OS Unix システムサービス (USS) にアクセスして SSH (セキュアシェル) のプライベートキーとパブリックキーを生成します。
+ 書き込み可能な S3 バケット。詳細については、Amazon S3 ドキュメントの「[最初の S3 バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html)」を参照してください。
+ AWS Transfer Family SSH ファイル転送プロトコル (SFTP) 対応サーバー。ID プロバイダーとして**サービスマネージド**、AWS ストレージサービスとして Amazon S3 を使用しています。詳細については、AWS Transfer Family ドキュメントの「[SFTP 対応サーバーの作成](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html)」を参照してください。

**制限事項**
+ この方法は、ほぼリアルタイムまたはリアルタイムのデータ同期には適していません。
+ データはDb2 z/OSからAmazon S3 にのみ移動でき、その逆はできません。

## アーキテクチャ
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-architecture"></a>

**ソーステクノロジースタック**
+ z/OS で Db2 を実行するメインフレーム

**ターゲットテクノロジースタック**
+ AWS Transfer Family
+ Amazon S3
+ Amazon Athena
+ Amazon QuickSight
+ AWS Glue
+ Amazon Relational Database Service (Amazon RDS)
+ Amazon Aurora
+ Amazon Redshift

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

次の図は、Db2 z/OS データを ASCII CSV 形式で生成、抽出、S3 バケットに転送するプロセスを示しています。

![\[Data flow from corporate data center to AWS クラウド, showing mainframe extraction and cloud processing steps.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/66e6fa1a-1c7d-4b7a-8404-9ba85e433b24/images/87b13e0d-0be9-4462-bdbf-67342334416c.png)


1. Db2 カタログからデータを移行するテーブルのリストが選択されます。

1. このリストは、外部フォーマットの数値列とデータ列を含むアンロードジョブの生成に使用されます。

1. その後、データは AWS Transfer Family を使用して Amazon S3 に転送されます。

1. AWS Glue の抽出、変換、ロード (ETL) ジョブでは、データを変換し、指定された形式で処理済みのバケットにロードできます。また、AWS Glue はデータをデータベースに直接フィードできます。

1. Amazon Athena と Amazon QuickSight を使用してデータをクエリしてレンダリングし、分析に役立てることができます。

次の図は、プロセス全体の論理的な流れを示しています。

![\[Flowchart showing JCL process with TABNAME, REXXEXEC, and JCL decks steps, including inputs and outputs.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/66e6fa1a-1c7d-4b7a-8404-9ba85e433b24/images/d72f2572-10c9-43f9-b6c9-7e57c9a69d52.png)


1. 最初の JCL は TABNAME と呼ばれ、Db2 ユーティリティ DSNTIAUL を使用して、Db2 からアンロードする予定のテーブルのリストを抽出し、生成します。テーブルを選択するには、SQL 入力を手動で調整して選択し、フィルター条件を追加して 1 つ以上の Db2 スキーマを含める必要があります。

1. REXXEXEC と呼び出された 2 番目の JCL は、JCL スケルトンと REXX プログラムを使用して JCL TABNAME によって作成されたテーブルリストを処理し、テーブル名ごとに 1 つの JCL を生成します。各 JCL には、テーブルをアンロードするステップと、SFTP プロトコルを使用して S3 バケットにファイルを送信するステップが 1 つずつ含まれます。

1. 最後のステップは、JCL を実行してテーブルをアンロードし、ファイルを AWS に転送することです。プロセス全体をオンプレミスまたは AWS のスケジューラーを使用して自動化できます。

## ツール
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-tools"></a>

**AWS サービス**
+ 「[Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)」は、標準 SQL を使用して Amazon Simple Storage Service (Amazon S3) 内のデータを直接分析できるようにするインタラクティブなクエリサービスです。
+ 「[Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)」はクラウド用に構築されたフルマネージド型のリレーショナルデータベースエンジンで、MySQL および PostgreSQL と互換性があります。
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) は、フルマネージド型の抽出、変換、ロード (ETL) サービスです。これにより、データストアとデータストリーム間でデータを確実に分類、整理、強化、移動できます。
+ 「[Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html)」は、クラウドスケールのビジネスインテリジェンス (BI) サービスで、データを単一のダッシュボードで可視化、分析、レポートすることができます。
+ 「[Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)」は、AWS クラウド内でのマネージド型、ペタバイトスケールのデータウェアハウスサービスです。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ 「[AWS Transfer Family](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-family.html)」は、AWS ストレージサービスとの間でファイルを送受信できる安全な転送サービスです。

メインフレームツール
+ 「[SSH ファイル転送プロトコル (SFTP)](https://www.ssh.com/academy/ssh/sftp-ssh-file-transfer-protocol)」は、サーバーへのリモートログインとサーバー間のファイル転送を可能にする安全なファイル転送プロトコルです。SSH はすべてのトラフィックを暗号化することでセキュリティを確保します。
+ 「[DSNTIAUL](https://www.ibm.com/docs/en/db2-for-zos/11?topic=dpasp-dsntiaul-sample-program)」は IBM が提供するデータをアンロードするためのサンプルプログラムです。
+ 「[DSNUTILB](https://www.ibm.com/docs/en/db2-for-zos/11?topic=sharing-recommendations-utilities-in-coexistence)」は IBM が提供するユーティリティー・バッチ・プログラムで、DSNTIAUL のさまざまなオプションを使用してデータをアンロードします。
+ 「[z/OS OpenSSH](https://www.ibm.com/docs/en/zos/2.4.0?topic=zbed-zos-openssh)」は、IBM オペレーティングシステム z/OS の Unix システムサービス上で動作するオープンソースソフトウェア SSH のポートです。SSH は TCP/IP ネットワーク上で稼働している 2 台のコンピューター間の、安全で暗号化された接続プログラムです。ssh-keygen を含む複数のユーティリティが用意されています。
+ 「[REXX (再構築拡張エグゼキューター)](https://www.ibm.com/docs/en/zos/2.1.0?topic=guide-learning-rexx-language)」スクリプトは、Db2 アンロードおよび SFTP ステップによる JCL 生成を自動化するために使用されます。

**Code**

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

## ベストプラクティス
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-best-practices"></a>

最初のアンロードでは、生成された JCL がテーブルデータ全体をアンロードする必要があります。

最初の完全アンロード後は、パフォーマンスを向上させコスト削減のために段階的にアンロードを実行します。アンロードプロセスに加えられた変更に対応できるように、テンプレート JCL デックの SQL クエリを更新します。

スキーマは手動で変換することも、Db2 SYSPUNCH を入力として Lambda のスクリプトを使用して変換することもできます。工業プロセスでは、「[AWS Schema Conversion Tool (SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.DB2zOS.html)」が推奨オプションです。

最後に、メインフレームベースのスケジューラーを使用するか、メインフレームにエージェントを配置したAWS のスケジューラーを使用して、プロセス全体の管理と自動化を支援します。

## エピック
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-epics"></a>

### S3 バケットのセットアップ
<a name="set-up-the-s3-bucket"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットを作成する。 | 手順については、「[最初の S3 バケットを作成する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html)」を参照してください。 | AWS 全般 | 

### Transfer Family サーバーを設定します。
<a name="set-up-the-transfer-family-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SFTP 対応サーバーを作成します。 | 「[AWS Transfer Family コンソール](https://console.aws.amazon.com/transfer/)」で SFTP サーバーを開いて作成するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | AWS 全般 | 
| Transfer Family 用の IAM ロールを作成します。 | Transfer Family が Amazon S3 にアクセスするための AWS Identity and Access Management (IAM) ロールを作成するには、「[IAM ロールおよびポリシーを作成する](https://docs.aws.amazon.com/transfer/latest/userguide/requirements-roles.html)」の指示に従ってください。 | AWS 管理者 | 
| Amazon S3 サービスマネージドユーザーをサーバーに追加します。 | Amazon S3 サービスマネージドユーザーを追加するには、「[AWS ドキュメント](https://docs.aws.amazon.com/transfer/latest/userguide/service-managed-users.html#add-s3-user)」の指示に従い、メインフレームユーザー ID を使用してください。 | AWS 全般 | 

### 通信プロトコルの保護
<a name="secure-the-communication-protocol"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SSH キーを作成します。 | メインフレーム USS 環境で、次のコマンドを実行します。<pre>ssh-keygen -t rsa</pre>パスフレーズの入力を求められたら、空欄のままにしてください。 | メインフレーム開発者 | 
| SSH フォルダとキーファイルに適切な権限レベルを設定します。 | デフォルトでは、パブリックキーとプライベートキーはユーザーディレクトリ `/u/home/username/.ssh` に保存されます。キーファイルには 644、フォルダーには 700 の権限を与える必要があります。<pre>chmod 644 .ssh/id_rsa<br />chmod 700 .ssh</pre> | メインフレーム開発者 | 
| Amazon S3 サービスマネージドユーザーにパブリックキーの内容をコピーします。 | USS で生成されたパブリックキーの内容をコピーするには、「[AWS Transfer Family コンソール](https://console.aws.amazon.com/transfer/)」を開きます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | メインフレーム開発者 | 

### JCL を生成する
<a name="generate-the-jcls"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 対象範囲内の Db2 テーブルリストを生成します。 | 入力 SQL を指定して、データ移行の対象となるテーブルのリストを作成します。このステップでは、SQL WHERE 句を使用して Db2 カタログテーブル SYSIBM.SYSTABLES をクエリする選択基準を指定する必要があります。フィルターは、特定のプレフィックスで始まる特定のスキーマ名やテーブル名を含むように、またはインクリメンタルアンロードのタイムスタンプに基づいてカスタマイズできます。出力はメインフレーム上のフィジカルシーケンシャル (PS) データセットに取り込まれます。このデータセットは、JCL 生成の次のフェーズの入力として機能します。JCL TABNAME (必要に応じて名前を変更できます) を使用する前に、次の変更を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)Db2 テーブルリスト抽出ジョブ<pre><Jobcard><br />//* <br />//* UNLOAD ALL THE TABLE NAMES FOR A PARTICULAR SCHEMA<br />//* <br />//STEP01  EXEC PGM=IEFBR14<br />//* <br />//DD1      DD  DISP=(MOD,DELETE,DELETE),<br />//         UNIT=SYSDA,<br />//         SPACE=(1000,(1,1)),<br />//         DSN=<HLQ1>.DSN81210.TABLIST<br />//* <br />//DD2      DD  DISP=(MOD,DELETE,DELETE),<br />//         UNIT=SYSDA,<br />//         SPACE=(1000,(1,1)),<br />//         DSN=<HLQ1>.DSN81210.SYSPUNCH <br />//* <br />//UNLOAD  EXEC PGM=IKJEFT01,DYNAMNBR=20 <br />//SYSTSPRT DD  SYSOUT=* <br />//STEPLIB  DD  DISP=SHR,DSN=DSNC10.DBCG.SDSNEXIT<br />//         DD  DISP=SHR,DSN=DSNC10.SDSNLOAD<br />//         DD  DISP=SHR,DSN=CEE.SCEERUN <br />//         DD  DISP=SHR,DSN=DSNC10.DBCG.RUNLIB.LOAD <br />//SYSTSIN  DD  *<br />  DSN SYSTEM(DBCG) <br />  RUN  PROGRAM(DSNTIAUL) PLAN(DSNTIB12) PARMS('SQL') - <br />       LIB('DSNC10.DBCG.RUNLIB.LOAD')<br />  END<br />//SYSPRINT DD SYSOUT=*<br />//* <br />//SYSUDUMP DD SYSOUT=*<br />//* <br />//SYSREC00 DD DISP=(NEW,CATLG,DELETE),<br />//            UNIT=SYSDA,SPACE=(32760,(1000,500)),<br />//            DSN=<HLQ1>.DSN81210.TABLIST <br />//* <br />//SYSPUNCH DD DISP=(NEW,CATLG,DELETE), <br />//            UNIT=SYSDA,SPACE=(32760,(1000,500)),<br />//            VOL=SER=SCR03,RECFM=FB,LRECL=120,BLKSIZE=12 <br />//            DSN=<HLQ1>.DSN81210.SYSPUNCH <br />//* <br />//SYSIN    DD * <br />   SELECT CHAR(CREATOR), CHAR(NAME)<br />     FROM SYSIBM.SYSTABLES <br />    WHERE OWNER = '<Schema>' <br />      AND NAME LIKE '<Prefix>%' <br />      AND TYPE = 'T'; <br />/* </pre> | メインフレーム開発者 | 
| JCL テンプレートを変更します。 | このパターンで提供される JCL テンプレートには、一般的なジョブカードとライブラリ名が含まれています。ただし、ほとんどのメインフレームサイトには、データセット名、ライブラリ名、ジョブカードに独自の命名規則があります。たとえば、Db2 ジョブを実行するには特定のジョブクラスが必要な場合があります。JES2 と JES3 のJob 入力サブシステム実装では、さらに変更が加えられる可能性があります。標準ロード・ライブラリーには、IBM のデフォルトである `SYS1` とは異なる第 1 修飾子が付いている場合があります。そのため、実行する前に、サイト固有の標準に合わせてテンプレートをカスタマイズしてください。スケルトン JCL UNLDSKEL に以下の変更を加えます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)JCL スケルトンをアンロードして SFTP 送信します。<pre>//&USRPFX.U JOB (DB2UNLOAD),'JOB',CLASS=A,MSGCLASS=A, <br />//         TIME=1440,NOTIFY=&USRPFX<br />//* DELETE DATASETS<br />//STEP01   EXEC PGM=IEFBR14<br />//DD01     DD DISP=(MOD,DELETE,DELETE),<br />//            UNIT=SYSDA,<br />//            SPACE=(TRK,(1,1)),<br />// DSN=&USRPFX..DB2.PUNCH.&JOBNAME<br />//DD02     DD DISP=(MOD,DELETE,DELETE),<br />//            UNIT=SYSDA,<br />//            SPACE=(TRK,(1,1)),<br />// DSN=&USRPFX..DB2.UNLOAD.&JOBNAME<br />//*<br />//* RUNNING DB2 EXTRACTION BATCH JOB FOR AWS DEMO<br />//*<br />//UNLD01   EXEC PGM=DSNUTILB,REGION=0M,<br />// PARM='<DSN>,UNLOAD'<br />//STEPLIB  DD  DISP=SHR,DSN=DSNC10.DBCG.SDSNEXIT<br />//         DD  DISP=SHR,DSN=DSNC10.SDSNLOAD<br />//SYSPRINT DD  SYSOUT=*<br />//UTPRINT  DD  SYSOUT=*<br />//SYSOUT   DD  SYSOUT=*<br />//SYSPUN01 DD  DISP=(NEW,CATLG,DELETE),<br />//             SPACE=(CYL,(1,1),RLSE),<br />// DSN=&USRPFX..DB2.PUNCH.&JOBNAME<br />//SYSREC01 DD  DISP=(NEW,CATLG,DELETE),<br />//             SPACE=(CYL,(10,50),RLSE),<br />// DSN=&USRPFX..DB2.UNLOAD.&JOBNAME<br />//SYSPRINT DD SYSOUT=*<br />//SYSIN    DD *<br />  UNLOAD<br />  DELIMITED COLDEL ','<br />  FROM TABLE &TABNAME<br />  UNLDDN SYSREC01<br />  PUNCHDDN SYSPUN01<br />  SHRLEVEL CHANGE ISOLATION UR;<br /> /*<br />//*<br />//* FTP TO AMAZON S3 BACKED FTP SERVER IF UNLOAD WAS SUCCESSFUL<br />//*<br />//SFTP EXEC PGM=BPXBATCH,COND=(4,LE),REGION=0M<br />//STDPARM DD *<br /> SH cp "//'&USRPFX..DB2.UNLOAD.&JOBNAME'"<br />   &TABNAME..csv;<br /> echo "ascii             " >> uplcmd;<br /> echo "PUT &TABNAME..csv " >>>> uplcmd;<br /> sftp -b uplcmd -i .ssh/id_rsa &FTPUSER.@&FTPSITE;<br /> rm &TABNAME..csv;<br /> //SYSPRINT DD SYSOUT=*<br /> //STDOUT DD SYSOUT=*<br /> //STDENV DD *<br /> //STDERR DD SYSOUT=*                                                </pre>  | メインフレーム開発者 | 
| 一括アンロード JCL を生成します。 | このステップでは、JCL を使用して ISPF 環境で REXX スクリプトを実行します。`TABLIST DD` 名前に対して JCL を一括生成するための入力として、最初のステップで作成したスコープ内テーブルのリストを指定します。JCL は、`ISPFILE DD` 名前に対して指定されたユーザー指定の分割データセット内のテーブル名ごとに 1 つの新しい JCL を生成します。このライブラリは事前に割り当ててください。新しい JCL にはそれぞれ 2 つのステップがあります。1 つは Db2 テーブルをファイルにアンロードするステップ、もう 1 つはファイルを S3 バケットに送信するステップです。JCL REXXEXEC で次の変更を行います (名前は変更できます)。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)JCL の一括生成ジョブ<pre>//RUNREXX JOB (CREATEJCL),'RUNS ISPF TABLIST',CLASS=A,MSGCLASS=A,      <br />//         TIME=1440,NOTIFY=&SYSUID<br />//* Most of the values required can be updated to your site specific<br />//* values using the command 'TSO ISRDDN' in your ISPF session. <br />//* Update all the lines tagged with //update marker to desired<br />//* site specific values. <br />//ISPF EXEC PGM=IKJEFT01,REGION=2048K,DYNAMNBR=25<br />//SYSPROC   DD DISP=SHR,DSN=USER.Z23D.CLIST<br />//SYSEXEC   DD DISP=SHR,DSN=<HLQ1>.TEST.REXXLIB<br />//ISPPLIB   DD DISP=SHR,DSN=ISP.SISPPENU<br />//ISPSLIB   DD DISP=SHR,DSN=ISP.SISPSENU<br />//          DD DISP=SHR,DSN=<HLQ1>.TEST.ISPSLIB<br />//ISPMLIB   DD DSN=ISP.SISPMENU,DISP=SHR<br />//ISPTLIB   DD DDNAME=ISPTABL<br />//          DD DSN=ISP.SISPTENU,DISP=SHR<br />//ISPTABL   DD LIKE=ISP.SISPTENU,UNIT=VIO<br />//ISPPROF   DD LIKE=ISP.SISPTENU,UNIT=VIO<br />//ISPLOG    DD SYSOUT=*,RECFM=VA,LRECL=125<br />//SYSPRINT  DD SYSOUT=*<br />//SYSTSPRT  DD SYSOUT=*<br />//SYSUDUMP  DD SYSOUT=*<br />//SYSDBOUT  DD SYSOUT=*<br />//SYSTSPRT  DD SYSOUT=*<br />//SYSUDUMP  DD SYSOUT=*<br />//SYSDBOUT  DD SYSOUT=*<br />//SYSHELP   DD DSN=SYS1.HELP,DISP=SHR <br />//SYSOUT    DD SYSOUT=*<br />//* Input list of tablenames<br />//TABLIST   DD DISP=SHR,DSN=<HLQ1>.DSN81210.TABLIST<br />//* Output pds<br />//ISPFILE   DD DISP=SHR,DSN=<HLQ1>.TEST.JOBGEN<br />//SYSTSIN   DD *<br />ISPSTART CMD(ZSTEPS <MFUSER> <FTPUSER> <AWS TransferFamily IP>)<br />/*</pre>REXX スクリプトを使用する前に、以下の点を変更します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)STEPS REX スクリプト<pre>/*REXX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */<br />/* 10/27/2021 - added new parms to accommodate ftp */<br />Trace "o" <br />    parse arg usrpfx ftpuser ftpsite<br />    Say "Start"<br />    Say "Ftpuser: " ftpuser "Ftpsite:" ftpsite<br />    Say "Reading table name list"<br />    "EXECIO * DISKR TABLIST (STEM LINE. FINIS"<br />    DO I = 1 TO LINE.0<br />      Say I<br />      suffix = I<br />      Say LINE.i<br />      Parse var LINE.i schema table rest<br />      tabname = schema !! "." !! table<br />      Say tabname<br />      tempjob= "LOD" !! RIGHT("0000" !! i, 5) <br />      jobname=tempjob<br />      Say tempjob<br />      ADDRESS ISPEXEC "FTOPEN "<br />      ADDRESS ISPEXEC "FTINCL UNLDSKEL"<br />      /* member will be saved in ISPDSN library allocated in JCL */<br />      ADDRESS ISPEXEC "FTCLOSE NAME("tempjob")"<br />    END<br /><br />    ADDRESS TSO "FREE F(TABLIST) "<br />    ADDRESS TSO "FREE F(ISPFILE) "<br /><br />exit 0</pre> | メインフレーム開発者 | 

### JCL を実行します。
<a name="run-the-jcls"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Db2 アンロードステップを実行する。 | JCL の生成後は、アンロードする必要のあるテーブルと同じ数の JCL が作成されます。このストーリーでは、JCL で生成された例を使用して、構造と最も重要なステップについて説明します。ユーザー操作は必要はありません。以下の情報は参考情報です。前のステップで生成した JCL を送信する場合は、スキップして「*LoDnnnnn JCL の送信*」タスクに進んでください。IBM が提供する DSNUTILB Db2 ユーティリティで JCL を使用して Db2 データをアンロードする場合は、アンロードされたデータに圧縮された数値データが含まれていないことを確認する必要があります。これを行うには、DSNUTILB `DELIMITED` パラメーターを使用します。`DELIMITED` パラメーターでは、テキストフィールドの区切り文字と二重引用符として文字を追加したり、VARCHAR 列のパディングを削除したり、DATE フィールドを含むすべての数値フィールドを EXTERNAL FORMAT に変換したりすることで、CSV 形式のデータをアンロードできます。次の例は、コンマ文字を区切り文字として使用して、生成された JCL のアンロードステップがどのように表示されるかを示しています。<pre>                            <br /> UNLOAD<br /> DELIMITED COLDEL ',' <br /> FROM TABLE SCHEMA_NAME.TBNAME<br /> UNLDDN SYSREC01<br /> PUNCHDDN SYSPUN01<br /> SHRLEVEL CHANGE ISOLATION UR;</pre> | メインフレーム開発者、システムエンジニア | 
| SFTP ステップを実行します。 | JCL から SFTP プロトコルを使用するには、BPXBATCH ユーティリティを使用してください。 SFTP ユーティリティは MVS データセットに直接アクセスすることはできません。copy コマンド (`cp`) を使用して、シーケンシャルファイル `&USRPFX..DB2.UNLOAD.&JOBNAME` を USS ディレクトリにコピーし、それを `&TABNAME..csv` に変更できます。プライベートキー (`id_rsa`) を使用し、RACF ユーザー ID をユーザー名として使用して `sftp` コマンドを実行し、AWS Transfer Family IP アドレスに接続します。<pre>SH cp "//'&USRPFX..DB2.UNLOAD.&JOBNAME'"<br />   &TABNAME..csv;<br /> echo "ascii             " >> uplcmd;<br /> echo "PUT &TABNAME..csv " >>>> uplcmd;<br /> sftp -b uplcmd -i .ssh/id_rsa &FTPUSER.@&FTP_TF_SITE;<br /> rm &TABNAME..csv; </pre> | メインフレーム開発者、システムエンジニア | 
| LoDnnnnn JCL を送信してください。 | 以前の JCL では、アンロードして CSV に変換し、S3 バケットに転送する必要があるすべての LoDnnnnn JCL テーブルが生成されています。生成されたすべての JCL で `submit` コマンドを実行します。 | メインフレーム開発者、システムエンジニア | 

## 関連リソース
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-resources"></a>

このドキュメントで使用されているさまざまなツールおよびソリューションの詳細については、次の内容を参照してください。
+ 「[z/OS OpenSSH ユーザーズガイド](https://www-01.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R4sc276806/$file/foto100_v2r4.pdf)」
+ 「[Db2 z/OS — アンロード制御ステートメントのサンプル](https://www.ibm.com/docs/en/db2-for-zos/11?topic=unload-sample-control-statements)」
+ 「[Db2 z/OS — 区切り文字付きファイルのアンロード](https://www.ibm.com/docs/en/db2-for-zos/11?topic=unload-unloading-delimited-files)」
+ 「[Transfer Family — SFTP 対応サーバーの作成](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html)」
+ 「[Transfer Family — サービス管理対象ユーザーとの連携](https://docs.aws.amazon.com/transfer/latest/userguide/service-managed-users.html)」

## 追加情報
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-additional"></a>

Amazon S3 に Db2 データを保存した後は、さまざまな方法で新しい分析情報を得ることができます。Amazon S3 は AWS データ分析サービスと統合されているため、このデータを分散側で自由に使用または公開できます。例えば、次のオペレーションを実行できます。
+ 「[Amazon S3 上にデータレイク](https://aws.amazon.com/products/storage/data-lake-storage/)」を構築し、データを移動せずにその場でのクエリ、分析、機械学習ツールを使って貴重なインサイトを引き出します。
+ AWS Transfer Family と統合されたアップロード後の処理ワークフローを設定して「[Lambda 関数](https://aws.amazon.com/lambda/)」を開始します。
+ 「[AWS Glue](https://aws.amazon.com/glue/)」を使用して、Amazon S3 または「[フルマネージドデータベース](https://aws.amazon.com/free/database/?trk=ps_a134p000007CdNEAA0&trkCampaign=acq_paid_search_brand&sc_channel=PS&sc_campaign=acquisition_FR&sc_publisher=Google&sc_category=Database&sc_country=FR&sc_geo=EMEA&sc_outcome=acq&sc_detail=amazon%20relational%20database%20service&sc_content=Relational%20Database_e&sc_matchtype=e&sc_segment=548727697660&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Database|Solution|FR|EN|Text&s_kwcid=AL!4422!3!548727697660!e!!g!!amazon%20relational%20database%20service&ef_id=CjwKCAjwzt6LBhBeEiwAbPGOgcGbQIl1-QsbHfWTgMZSSHEXzSG377R9ZyK3tCcbnHuT45L230FufxoCeEkQAvD_BwE:G:s&s_kwcid=AL!4422!3!548727697660!e!!g!!amazon%20relational%20database%20service)」のデータにアクセスするための新しいマイクロサービスを開発します。AWS Glue は、分析、機械学習、アプリケーション開発のためのデータの検出、準備、結合を容易にするサーバーレスデータ統合サービスです。

移行のユースケースでは、メインフレームから S3 にあらゆるデータを転送できるため、次のことが可能になります。
+ Amazon S3 Glacier Deep Archive を使用して、物理インフラストラクチャを廃止し、費用対効果の高いデータアーカイブ戦略を構築します。 
+ Amazon S3 や S3 Glacier や Amazon Elastic File System (Amazon EFS) などの他の AWS サービスを使用して、スケーラブルで耐久性があり、安全なバックアップおよび復元ソリューションを構築し、既存のオンプレミス機能を強化または置き換えます。

# AWS Transform カスタムを使用して Easytrieve を最新の言語に変換する
<a name="transform-easytrieve-modern-languages"></a>

*Shubham Roy、Subramanyam Malisetty、Harshitha Shashidhar、Amazon Web Services*

## 概要
<a name="transform-easytrieve-modern-languages-summary"></a>

このパターンは、 [AWS Transform カスタム](https://aws.amazon.com/transform/custom/) language-to-language 変換を使用して、メインフレームの Broadcom [Easytrieve Report Generator](https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6.html) (EZT) ワークロードを迅速かつ低リスクで変換するための規範的なガイダンスを提供します。バッチデータ処理とレポート生成に一般的に使用される、ニッチで独自のメインフレーム EZT ワークロードをモダナイズするという課題に対処します。このパターンは、独自のツールとまれなメインフレームの専門知識に依存するコストが高く、長く、エラーが発生しやすい移行アプローチを、作成したエージェント AI 自動ソリューションに置き換えます AWS Transform。

このパターンは、EZT 変換用のすぐに使用できるカスタム変換定義を提供します。定義は複数の変換入力を使用します。
+  [AWS Transform メインフレームに](https://aws.amazon.com/transform/mainframe/) を使用して抽出された EZT ビジネスルール
+ EZT プログラミングリファレンスドキュメント
+ EZT ソースコード
+ メインフレーム入出力データセット

AWS Transform カスタムは、これらの入力を使用して、Java や Python などの最新のターゲット言語で機能的に同等のアプリケーションを生成します。

変換プロセスでは、インテリジェントなテスト実行、自動デバッグ、反復修正機能を使用して、期待される出力と機能的同等性を検証します。また、継続的な学習をサポートし、カスタム変換定義が連続する変換の精度と一貫性を向上させることができます。このパターンを使用すると、組織は移行の労力とリスクを軽減し、ニッチなメインフレームの技術的負債に対処し、 で EZT ワークロードをモダナイズ AWS して、俊敏性、信頼性、セキュリティ、イノベーションを向上させることができます。

## 前提条件と制限
<a name="transform-easytrieve-modern-languages-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント 
+ 入力データと出力データを含むメインフレーム EZT ワークロード 

**制限事項**

*スコープの制限 *
+ **言語サポート** – この特定の変換パターンでは、 EZT-to-Java 変換のみがサポートされています。 
+ **範囲外 – **他のメインフレームプログラミング言語の変換には、 カスタム で新しい AWS Transform カスタム変換定義が必要です。

*プロセスの制限 *
+ **検証の依存関係** – ベースライン出力データがないと、変換を検証できません。 
+ **独自のロジック** – 高度に固有のカスタム開発ユーティリティでは、AI エージェントによって正しく解釈されるために、追加のユーザードキュメントと参考資料が必要です。

*技術的な制限事項 *
+ **サービスの制限** – AWS Transform カスタムサービスの制限とクォータについては、[AWS Transform 「 ユーザーガイド - クォータ](https://docs.aws.amazon.com/transform/latest/userguide/transform-limits.html) 」および [AWS 「 全般のリファレンス - クォータの変換](https://docs.aws.amazon.com/general/latest/gr/aws-transform.html)」を参照してください。

**製品バージョン**
+ AWS Transform CLI –  最新バージョン
+ Node.js – バージョン 20 以降
+ Git –  最新バージョン
+ ターゲット環境
  + Java – バージョン 17 以降
  + Spring Boot – リファクタリングされたアプリケーションのプライマリターゲットは バージョン 3.x です
  + Maven – バージョン 3.6 以降

## アーキテクチャ
<a name="transform-easytrieve-modern-languages-architecture"></a>

**ソーステクノロジースタック**
+ **オペレーティングシステム** – IBM z/OS
+ **プログラミング言語** – Easytrieve、ジョブコントロール言語 (JCL)
+ **データベース** – IBM DB2 for z/OS、仮想ストレージアクセス方法 (VSAM)、メインフレームフラットファイル

**ターゲットテクノロジースタック**
+ **オペレーティングシステム** – Amazon Linux
+ **コンピューティング** – Amazon Elastic Compute Cloud (Amazon EC2)
+ **プログラミング言語** – Java
+ **Database** Amazon Relational Database Service (Amazon RDS)

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

![\[AWS Transform custom を使用して EZT を最新のコードに変換するためのターゲットアーキテクチャ図。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/71f15422-42cb-4c7e-94fa-051a4f130445/images/eb89eed0-dd55-485c-a433-9869162eaad9.png)


**ワークフロー**

このソリューションでは、 AWS Transform カスタムlanguage-to-language移行変換パターンを使用して、メインフレーム Easytrieve (EZT) アプリケーションを 4 ステップの自動ワークフローを通じて Java にモダナイズします。

*ステップ 1 – Mainframe AWS Transform の にレガシーコード を指定します。*
+ コードを分析する
+ 高レベルのビジネスロジックを抽出します
+ 詳細なビジネスロジックを抽出します。

*ステップ 2 –  必要な入力を含むフォルダを作成します。*
+ メインフレーム AWS Transform に を使用して抽出された EZT ビジネスルール 
+ EZT プログラミングリファレンスドキュメント 
+ EZT ソースコード
+ メインフレーム入出力データセット

*ステップ 3 – カスタム変換定義を作成して実行する*

1.  AWS Transform CLI を使用して自然言語で変換の目的を記述します。 AWS Transform custom は BRE、ソースコード、および EZT プログラミングガイドを分析し、開発者によるレビューと承認のためのカスタム変換定義を生成します。

1. 次に、プロジェクトソースコードを使用して AWS Transform CLI を呼び出します。 AWS Transform custom は変換プランを作成し、承認時に EZT を Java に変換し、サポートファイルを生成して、実行可能 JAR を構築し、終了基準を検証します。

1. 検証エージェントを使用して、メインフレーム出力に対する 機能同等性をテストします。セルフデバッガーエージェントは問題を自動的に修正します。最終的な成果物には、検証済みの Java コードと HTML 検証レポートが含まれます。

**自動化とスケール**
+ エージェント AI マルチモード実行アーキテクチャ – AWS Transform カスタムは、3 つの実行モード (対話型、インタラクティブ、完全オートメーション) を持つエージェント AI を活用して 、コード分析、リファクタリング、変換計画、テストなどの複雑な変換タスクを自動化します。
+ アダプティブラーニングフィードバックシステム – プラットフォームは、コードサンプル分析、ドキュメント解析、および開発者フィードバックとバージョニングされた変換定義の統合を通じて、継続的な学習メカニズムを実装します。
+ 同時アプリケーション処理アーキテクチャ – このシステムでは、スケーラブルなインフラストラクチャ間で複数のアプリケーション変換オペレーションを同時に分散並列実行できます。

## ツール
<a name="transform-easytrieve-modern-languages-tools"></a>

**AWS のサービス  **
+ [AWS Transform custom](https://docs.aws.amazon.com/transform/latest/userguide/custom.html) は、従来の EZT アプリケーションを最新のプログラミング言語に変換するために使用されるエージェント AI サービスです。 
+ [AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html) はエージェンティック AI を使用して、.NET、メインフレーム、VMware ワークロードなどのレガシーワークロードのモダナイズを加速します。
+ [AWS Transform メインフレームの ](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html)は、 レガシー EZT アプリケーションを分析して埋め込みビジネスロジックを抽出し、ロジックの概要、頭字語の定義、構造化されたナレッジベースなど、包括的なビジネスルールドキュメントを生成するために使用されます。これらは AWS Transform カスタムの入力データとして機能します。 
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。Amazon S3 は、変換定義、コードリポジトリ、および処理結果を保存するための AWS Transform カスタムのプライマリストレージサービスとして機能します。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) は、誰を認証し、誰に使用する権限を付与するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。IAM は、変換オペレーションのアクセス許可とアクセスコントロールを管理する AWS Transform カスタムのセキュリティフレームワークを提供します。

**その他のツール**
+ [AWS Transform CLI](https://docs.aws.amazon.com/transform/latest/userguide/custom-command-reference.html) は AWS Transform カスタムのコマンドラインインターフェイスであり、開発者は自然言語の会話と自動実行モードを通じてカスタムコード変換を定義、実行、管理できます。 AWS Transform custom は、コードベースのスケーラブルなモダナイゼーションのためのインタラクティブセッション (atx custom def exec) と自律変換の両方をサポートしています。
+ 自動修正アプリケーション中のブランチ保護、変更追跡、ロールバック機能に使用される [Git](https://git-scm.com/doc) バージョン管理システム。 
+ 「[Java](https://www.java.com/en/)」 はこのパターンで使用されるプログラミング言語ならびに開発環境です。 

**コードリポジトリ**

このパターンのコードは、GitHub の [Easytrieve to Modern Languages Transformation with AWS Transform Custom](https://github.com/aws-samples/sample-mainframe-easytrieve-transform?tab=readme-ov-file#easytrieve-to-modern-languages-transformation-with-aws-transform-custom) で入手できます。

## ベストプラクティス
<a name="transform-easytrieve-modern-languages-best-practices"></a>
+ 標準化されたプロジェクト構造を確立する – 変換前に 4 つのフォルダ構造 (source-code、bre-doc、input-data、output-data) を作成し、完全性を検証し、その内容を文書化します。
+ 検証にベースラインファイルを使用する – 本番稼働用ベースライン入力ファイルを使用し、ベースライン出力とのbyte-by-byte比較を実行し、偏差に対するゼロトレランスを受け入れます。
+ 利用可能なすべてのリファレンスドキュメントを使用する  – 変換の精度を高めるには、ビジネス要件やコーディングチェックリストなど、利用可能なすべてのリファレンスドキュメントを提供します。
+ 品質向上のための入力を提供する  – AWS Transform カスタムは、変換実行から学習を自動的に抽出し (開発者のフィードバック、コードの問題）、ナレッジ項目を作成します。変換が成功するたびに、ナレッジ項目を確認し、将来の実行で使用する項目を承認します。これにより、将来の変換の品質が向上します。

## エピック
<a name="transform-easytrieve-modern-languages-epics"></a>

### ビジネスルール抽出を生成する (BRE)
<a name="generate-a-business-rule-extract-bre"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| メインフレーム AWS Transform 用に を設定します。 | メインフレームのモダナイゼーションワークフローをサポートするために、環境と必要な AWS Identity and Access Management (IAM) アクセス許可を設定します。詳細については、 AWS ドキュメント[の「メインフレームアプリケーションの変換](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html)」を参照してください。 | アプリ開発者 | 
| ビジネスルール抽出 (BRE) ドキュメントを生成します。 | ソース EZT または COBOL コードからビジネスロジックを抽出して、機能ドキュメントを生成します。抽出プロセスを開始し、出力を確認する方法については、 AWS Transform ドキュメントの[「Extract business logic](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-extract-business-logic)」を参照してください。 | アプリ開発者 | 

### AWS Transform カスタムをセットアップする
<a name="set-up-trn-custom"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  AWS Transform カスタム用にインフラストラクチャをプロビジョニングします。 | 安全な変換環境をホストするために必要な本番環境対応のインフラストラクチャをデプロイします。これには、Easytrieve コードを変換するために必要なツール、IAM アクセス許可、ネットワーク設定で設定されたプライベート Amazon EC2 インスタンスが含まれます。Infrastructure as Code (IaC) を使用して環境をプロビジョニングするには、[Easytrieve to Modern Languages Transformation with AWS Transform Custom](https://github.com/aws-samples/sample-mainframe-easytrieve-transform) GitHub リポジトリのデプロイ手順に従ってください。 | アプリ開発者、AWS 管理者 | 
| 変換用の入力マテリアルを準備します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | アプリ開発者 | 

###  カスタム変換定義を作成する
<a name="create-a-custom-transformation-definition"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 変換定義を作成します。 | 以下の手順に従って、機能検証による EZT から Java への変換のカスタム変換定義を作成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | アプリ開発者 | 
| 変換定義を発行します。 | 変換定義を確認して検証したら、自然言語プロンプトを使用してカスタムレジストリに AWS Transform 発行し、*Easytrieve-to-Java-Migration* などの定義名を指定できます。 | アプリ開発者 | 

### 検証用のベースラインデータを準備します。
<a name="prepare-baseline-data-for-validation"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 変換検証の概要を確認します。 | カスタム変換を実行する AWS Transform 前に、メインフレームバッチジョブの実行前にキャプチャされた必要なデータファイルがフォルダに含まれていることを確認します `input-data` 。メインフレームバッチジョブの実行後、`output-data`フォルダが結果のファイルをキャプチャしていることを確認します。すべてのファイルは、実行要件に基づいて EBCDIC エンコードを使用してSequential/Text/DB2 形式になります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | アプリ開発者 | 
| カスタム変換ジョブを実行します。 |  AWS Transform CLI コマンドを実行し、非インタラクティブまたはインタラクティブオプションを選択します。<pre>:# Non-interactive execution (fully autonomous):<br />atx custom def exec \<br />  --transformation-name "Easytrieve-to-Java-Migration" \<br />  --code-repository-path ~/root/transform-workspace/mainframe-source/source-code \<br />  --build-command "mvn clean install" \<br />  --non-interactive \<br />  --trust-all-tools \<br /><br /># Interactive execution (with human oversight):<br />atx custom def exec \<br />  -n "Easytrieve-to-Java-Migration" \<br />  -p ~/root/transform-workspace/mainframe-source/source-code \<br />  -c "mvn clean install"<br /><br /># Resume interrupted execution:<br />atx -resume<br /># OR<br />atx --conversation-id <conversation-id><br /></pre>AWS Transform は、変換の実行中にビルド/テストコマンドを使用して を自動的に検証します。 | アプリ開発者 | 

### テスト済みコードを検証して配信する
<a name="validate-and-deliver-tested-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 変換検証の概要を確認します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | アプリ開発者 | 
| 検証レポートにアクセスします。 | 以下のコマンドを入力して、詳細な検証アーティファクトを確認します。<pre># Full validation report<br />cat ~/.aws/atx/custom/$LATEST_SESSION/artifacts/validation_report.html<br /><br /># Generated code location<br />ls ~/.aws/atx/custom/$LATEST_SESSION/generated/<br /><br /># Execution logs<br />cat ~/.aws/atx/custom/$LATEST_SESSION/logs/execution.log</pre> | アプリ開発者 | 
| 継続的な学習のためにナレッジ項目を有効にします。 | 提案されたナレッジ項目を永続的な設定に昇格させることで、将来の変換精度を向上させます。変換後、エージェントは識別されたパターンとマッピングルールをローカルセッションディレクトリに保存します。これらの学習した項目を確認して適用するには、Amazon EC2 インスタンスで次のコマンドを実行します。<pre># List all knowledge items for a specific transformation definition<br />atx custom def list-ki -n <transformation-name><br /><br /># Retrieve the details of a specific knowledge item<br />atx custom def get-ki -n <transformation-name> --id <id><br /><br /># Update the status of a knowledge item (ENABLED or DISABLED)<br />atx custom def update-ki-status -n <transformation-name> --id <id> --status ENABLED<br /><br /># Update the knowledge item configuration to enable auto-approval<br />atx custom def update-ki-config -n <transformation-name> --auto-enabled TRUE</pre> | アプリデベロッパー | 

## トラブルシューティング
<a name="transform-easytrieve-modern-languages-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| *入力パスと出力パスの設定*入力ファイルが読み取られていないか、出力ファイルが正しく書き込まれていません。  | 入力ファイルが保存される完全なディレクトリパスを指定し、出力を書き込む場所を明確に指定します。これらのディレクトリに適切なアクセス許可が設定されていることを確認します。 ベストプラクティスには、相対パスではなく絶対パスを使用してあいまいさを回避し、指定されたすべてのパスが適切な読み取り/書き込みアクセス許可で存在することを確認することが含まれます。  | 
| *中断された実行の再開*実行が中断されたか、停止した場所から続行する必要があります | CLI コマンドで会話 ID を指定することで、中断した場所から実行を再開できます。前回の実行試行のログで会話 ID を見つけます。   | 
| *メモリ制約の解決*実行中にメモリ不足エラーが発生します。 | 現在のインメモリ JVM サイズを共有し、この情報に基づいてメモリ割り当てを増やす AWS Transform ように に依頼できます。この調整は、より大きな処理要件に対応するのに役立ちます。調整後もメモリ制約が続く場合は、大きなジョブを小さなバッチに分割することを検討してください。  | 
| *出力ファイルの不一致に対処する*出力ファイルが期待と一致しず、これ以上の変更ができない AWS Transform ことを示します。 | 現在の出力が正しくない理由を説明する具体的なフィードバックと技術的な理由を提供します。要件をサポートするために、追加の技術またはビジネスドキュメントを含めます。この詳細なコンテキストは AWS Transform 、コードを修正して適切な出力ファイルを生成するのに役立ちます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 

## 関連リソース
<a name="transform-easytrieve-modern-languages-resources"></a>
+ [AWS Transform カスタムドキュメント](https://docs.aws.amazon.com/transform/latest/userguide/custom.html)
+ [Easytrieve レポートジェネレーター 11.6](https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6/getting-started.html)

## アタッチメント
<a name="attachments-71f15422-42cb-4c7e-94fa-051a4f130445"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/71f15422-42cb-4c7e-94fa-051a4f130445/attachments/attachment.zip)」

# その他のパターン
<a name="mainframe-more-patterns-pattern-list"></a>

**Topics**
+ [Terraform を使用して AWS WAF ソリューションのセキュリティオートメーションをデプロイする](deploy-the-security-automations-for-aws-waf-solution-by-using-terraform.md)
+ [Precisely Connect を使用してメインフレームデータベースを AWS にレプリケート](replicate-mainframe-databases-to-aws-by-using-precisely-connect.md)