

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 大型主機
<a name="mainframe-pattern-list"></a>

**Topics**
+ [安裝 以 AWS 服務 從 IBM z/OS 存取 AWS CLI](access-aws-services-from-ibm-z-os-by-installing-aws-cli.md)
+ [使用 BMC AMI Cloud Data 將大型主機資料備份並封存至 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 將 EBCDIC 資料轉換為 AWS 上的 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)
+ [AWS 使用 Rocket Enterprise Server 和 LRS PageCenterX 在 上現代化大型主機輸出管理](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)
+ [大型主機現代化：DevOps on AWS with Rocket Software Enterprise Suite](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 系列將大型主機檔案直接移至 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)
+ [以 CSV 檔案將大規模 Db2 z/OS 資料傳輸至 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)

# 安裝 以 AWS 服務 從 IBM z/OS 存取 AWS CLI
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli"></a>

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

## 總結
<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/) 是一種開放原始碼工具，可透過在命令列 Shell 中使用命令來管理多個 AWS 服務。透過最少的組態，您可以從命令列工作階段執行命令，例如命令提示字元、終端機和 bash shell，以實作相當於瀏覽器型提供的功能 AWS 管理主控台。

API 和 AWS 管理主控台 提供 中所有 AWS 基礎設施即服務 (IaaS) 管理、管理和存取函數 AWS AWS CLI。您可以在 IBM z/OS 大型主機 AWS CLI 上安裝 ，以 AWS 服務 從 z/OS 直接存取、管理和與 互動。 AWS CLI 可讓使用者和應用程式執行各種任務，例如：
+ 在 z/OS 和 Amazon Simple Storage Service (Amazon S3) 物件儲存體之間傳輸檔案或資料集，並檢視儲存貯體的內容
+ 啟動和停止不同的 AWS 資源；例如，在 AWS Mainframe Modernization 環境中啟動批次任務
+ 呼叫 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**

  根據預設， AWS 服務 會在 TCP 連接埠 443 上使用 HTTPS 將請求 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 登入資料**

  為了與來自 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/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html)
+ **適用於 z/OS 的 IBM Python**

   AWS CLI 需要 Python 3.8 或更新版本。IBM 已使用適用於 z/OS [的 IBM Open Enterprise Python 在 z/OS ](https://www.ibm.com/products/open-enterprise-python-zos)上執行 Python。IBM Open Enterprise Python 可透過 Shopz SMP/E 免費取得，您也可以從 [IBM 網站](https://www.ibm.com/account/reg/signup?formid=urx-49465)下載 PAX 檔案。如需說明，請參閱適用於 z/OS 的 IBM Open Enterprise Python 安裝[和組態文件](https://www.ibm.com/docs/en/python-zos)。

**限制**
+ 此模式中提供的安裝指示**AWS CLI 僅適用於版本 1**。的最新版本 AWS CLI 是第 2 版。不過，此模式使用較舊的版本，因為第 2 版的安裝方法不同，而第 2 版可用的二進位可執行檔與 z/OS 系統不相容。

**產品版本**
+ AWS CLI 第 1 版
+ Python 3.8 或更高版本

## Architecture
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-architecture"></a>

**技術堆疊**
+ 執行 z/OS 的大型主機
+ 大型主機 z/OS UNIX 系統服務 (USS)
+ Mainframe Open MVS (OMVS) – z/OS UNIX shell 環境命令界面
+ 大型主機磁碟，例如直接存取儲存裝置 (DASD)
+ AWS CLI

**目標架構**

下圖顯示 IBM z/OS 上的 AWS CLI 部署。您可以從 AWS CLI 互動式使用者工作階段叫用 ，例如 SSH 和 telnet 工作階段。您也可以使用任務控制語言 (JCL) 或任何可呼叫 z/OS Unix shell 命令的程式，從批次任務叫用它。

![\[存取 AWS 服務的 IBM z/OS 大型主機上的 AWS CLI。\]](http://docs.aws.amazon.com/zh_tw/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 shell 指令碼以從 z/OS 管理您的 AWS 資源。您也可以從 z/OS 批次環境執行 AWS CLI 命令和 shell 指令碼，也可以透過與大型主機排程器整合來自動化批次任務，以在特定排程執行。 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 服務 透過命令列 shell 中的命令與 互動。

## 最佳實務
<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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 安裝 Python 3.8 或更新版本。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | 大型主機 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> | 大型主機 z/OS 管理員 | 
| 測試 Python 安裝。 | 執行 **python** 命令：<pre>python --version</pre>輸出應確認您已正確安裝 Python 3.8 或更新版本。 | 大型主機 z/OS 管理員 | 
| 驗證或安裝 **pip**。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | 大型主機 z/OS 管理員 | 
| 安裝 AWS CLI 版本 1。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | 大型主機 z/OS 管理員 | 

### 從 z/OS 設定 AWS CLI 存取權
<a name="configure-cli-access-from-z-os"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 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/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | AWS 管理員、大型主機 z/OS 管理員、大型主機 z/OS 開發人員 | 
| 測試 AWS CLI。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | 大型主機 z/OS 管理員、大型主機 z/OS 開發人員 | 

### 選項 1 ‒ 從 USS 工作階段以互動方式將資料從 USS 傳輸到 Amazon S3
<a name="option-1-transfer-data-from-uss-to-s3-interactively-from-a-uss-session"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 下載並傳輸範例 CSV 檔案。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | 應用程式開發人員、大型主機 z/OS 開發人員 | 
| 建立 S3 儲存貯體並上傳 CSV 檔案。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | 應用程式開發人員、大型主機 z/OS 開發人員 | 
| 檢視 S3 儲存貯體和上傳的檔案。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html)如需上傳物件的詳細資訊，請參閱 [Amazon S3 文件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html)中的 Amazon S3 入門。 | 一般 AWS | 
| 在 Amazon Athena 資料表上執行 SQL 查詢。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html)SQL 查詢的輸出會顯示 CSV 檔案的內容。 | General AWS，應用程式開發人員 | 

### 選項 2 ‒ 使用批次 JCL 將資料從 USS 傳輸到 Amazon S3
<a name="option-2-transfer-data-from-uss-to-s3-by-using-batch-jcl"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 上傳範例檔案。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | 大型主機 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> | 大型主機 z/OS 開發人員 | 
| 提交批次 JCL 任務。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | 大型主機 z/OS 開發人員 | 
| 檢視上傳至 S3 儲存貯體的資料集。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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 Data 將大型主機資料備份並封存至 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 大型主機軟體*

## 總結
<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 透過 TCP/IP 備份和封存資料至 ， AWS 同時利用 IBM z 整合式資訊處理器 (zIIP) 引擎來降低成本、平行處理和傳輸時間。

## 先決條件和限制
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-prereqs"></a>

**先決條件**
+ 作用中的 AWS 帳戶
+ 具有有效授權金鑰的 BMC AMI 雲端資料
+ 大型主機與 AWS 之間的 TCP/IP 連線
+ 用於讀取/寫入存取 S3 儲存貯體的 AWS Identity and Access Management (IAM) 角色
+ 具備大型主機安全產品 (RACF) 存取權以執行 BMC AMI Cloud 程序
+ BMC AMI Cloud z/OS 代理程式 (Java 版本 8 64 位元 SR5 FP16 或更新版本），具有可用的網路連接埠、允許存取 S3 儲存貯體的防火牆規則，以及專用 z/FS 檔案系統
+ BMC AMI 雲端管理伺服器[滿足的需求](https://docs.bmc.com/docs/cdacv27/management-server-requirements-1245343255.html)

**限制**
+ BMC AMI Cloud Data 將其操作資料存放在 PostgreSQL 資料庫中，該資料庫中以 Docker 容器的形式在與管理伺服器相同的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上執行。Amazon Relational Database Service (Amazon RDS) 目前不支援做為 BMC AMI Cloud Data 的後端。如需最新產品更新的詳細資訊，請參閱《BMC 文件》中的[最新消息？](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 版

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

**來源技術堆疊**
+ 執行 z/OS 的大型主機
+ 大型主機檔案，例如資料集和 z/OS UNIX System Services (USS) 檔案
+ 大型主機磁碟，例如直接存取儲存裝置 (DASD)
+ 大型主機磁帶 （虛擬或實體磁帶庫）

**目標技術堆疊**
+ Amazon S3
+ 虛擬私有雲端 (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/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/bde3b029-184e-4eb0-933b-f8caf6cc40ab/images/a24cd6c1-b131-49ea-8238-f3aea5ab8134.png)


該圖顯示以下工作流程：

1. BMC AMI Cloud Data 軟體代理程式會在大型主機邏輯分割區 (LPARs) 上執行。軟體代理程式會透過 TCP/IP 從 DASD 或磁帶直接讀取和寫入大型主機資料至 Amazon S3。

1. AWS Direct Connect 設定內部部署網路與 之間的實體隔離連線 AWS。為了增強安全性，請在 上執行site-to-site Direct Connect 以加密傳輸中的資料。

1. S3 儲存貯體會將大型主機檔案儲存為物件儲存資料，BMC AMI Cloud Data 代理程式會直接與 S3 儲存貯體通訊。憑證用於代理程式和 Amazon S3 之間所有通訊的 HTTPS 加密。Amazon S3 資料加密用於加密和保護靜態資料。

1. BMC AMI 雲端資料管理伺服器會在 EC2 執行個體上以 Docker 容器的形式執行。執行個體會與在大型主機 LPARs代理程式通訊。 S3 

1. Amazon EFS 同時掛載在主動和被動 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 雲端管理伺服器](https://docs.bmc.com/docs/cdacv27/bmc-ami-cloud-overview-1245343249.html)是一種 GUI 應用程式，在 Amazon EC2 的 Amazon Linux Amazon Machine Image (AMI) 上執行為 Docker 容器。管理伺服器提供管理 BMC AMI Cloud 活動的功能，例如報告、建立和管理政策、執行封存，以及執行備份、召回和還原。
+ [BMC AMI Cloud 代理程式](https://docs.bmc.com/docs/cdacv27/bmc-ami-cloud-overview-1245343249.html)會在內部部署大型主機 LPAR 上執行，該 LPAR 會使用 TCP/IP 直接讀取和寫入檔案至物件儲存體。已啟動的任務會在大型主機 LPAR 上執行，並負責讀取和寫入往返 Amazon S3 的備份和封存資料。
+ [BMC AMI Cloud Mainframe Command Line Interface (M9CLI)](https://docs.bmc.com/docs/cdacv27/command-line-interface-cli-reference-1245343519.html) 為您提供一組命令，讓您直接從 TSO/E 或批次操作中執行 BMC AMI Cloud 動作，而不需要依賴管理伺服器。

## 史詩
<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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 取得 BMC AMI Cloud 軟體授權。 | 若要取得軟體授權金鑰，請聯絡 [BMC AMI 雲端團隊](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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 安裝 BMC AMI Cloud 軟體代理程式。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | 大型主機基礎設施管理員 | 

### 在 EC2 執行個體上設定 BMC AMI 雲端管理伺服器
<a name="set-up-a-bmc-ami-cloud-management-server-on-an-ec2-instance"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Amazon EC2 Linux 2 執行個體。 | 依照 Amazon EC2 文件中的[步驟 1：啟動執行個體中的指示，在不同可用區域中啟動兩個 Amazon EC2 Linux 2 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-launch-instance)。 Amazon EC2 執行個體必須符合下列建議的硬體和軟體需求：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 檔案系統的指示來建立 Amazon EFS 檔案系統](https://docs.aws.amazon.com/efs/latest/ug/gs-step-two-create-efs-resources.html)。 EFS 建立檔案系統時，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | 雲端管理員、雲端架構師 | 
| 安裝 Docker 並設定管理伺服器。 | **連線至 EC2 執行個體：**遵循 Amazon EC2 文件中來自[連接至 Linux 執行個體的指示，連線至 EC2 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)。 Amazon EC2 **設定 EC2 執行個體：**對於每個 EC2 執行個體，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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 雲端管理伺服器上定義備份或封存政策
<a name="add-an-agent-and-define-a-backup-or-archive-policy-on-the-bmc-ami-cloud-management-server"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 新增客服人員。 | 新增客服人員之前，請確認下列事項：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 執行備份或封存政策。 | 手動或自動 （根據排程） 執行您先前從管理伺服器建立的資料備份或封存政策。若要手動執行政策：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用 M9CLI 執行備份或封存政策。 | 使用 M9CLI 從 TSO/E、REXX 或透過 JCLs 執行備份和還原程序，而無需在 BMC AMI 雲端管理伺服器上設定規則。**使用 TSO/E：**如果您使用 TSO/E，請確定 `M9CLI REXX` 與 串連`TSO`。若要透過 TSO/E 備份資料集，請使用 `TSO M9CLI BACKDSN <DSNAME>`命令。如需 M9CLI 命令的詳細資訊，請參閱《BMC 文件》中的 [CLI 參考](https://docs.bmc.com/docs/cdacv27/command-line-interface-cli-reference-1245343519.html)。**使用 JCLs：**若要使用 JCLs 執行備份和封存政策，請執行 `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/zh_tw/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>
+ [Mainframe Modernization with AWS](https://aws.amazon.com/mainframe/) (AWS 文件）
+ [適用於大型主機的雲端備份如何使用 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>

*Luis Gustavo Dantas 和 Eduardo Zimelewicz，Amazon Web Services*

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

**注意**  
AWS Mainframe Modernization 服務 （受管執行期環境體驗） 不再開放給新客戶。對於類似 AWS Mainframe Modernization Service （受管執行期環境體驗） 的功能，請探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS Mainframe Modernization 可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

此模式說明如何建立簡單的 AWS CodeBuild 專案，以使用 Replatform AWS Mainframe Modernization 工具預先編譯和繫結 COBOL Db2 程式。這可在 Replatform AWS Mainframe Modernization 執行時間環境中部署和執行這些程式。

COBOL 是一種業務導向的程式設計語言，由於其可靠性和可讀性，為許多關鍵應用程式提供支援。IBM Db2 是關聯式資料庫管理系統，可有效管理大量資料，並透過 SQL 與 COBOL 程式整合。COBOL 和 Db2 共同構成金融和政府等產業中關鍵任務操作的骨幹，儘管有較新的技術出現。

從大型主機環境遷移 COBOL 和 Db2 元件到其他平台會導致平台相容性、整合複雜性、資料遷移和效能最佳化等挑戰。移動這些關鍵元件需要仔細的規劃、技術專業知識和資源，以確保順利遷移，同時保持可靠性和功能。

 AWS Mainframe Modernization 此服務提供工具和資源，以重建要在 AWS 基礎設施上執行的大型主機應用程式和資料庫，例如 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。這涉及在不重大程式碼變更的情況下將大型主機工作負載移至雲端。

Db2 預先編譯和繫結程序對於最佳化資料庫應用程式的效能和可靠性至關重要。預先編譯會將內嵌 SQL 陳述式轉換為可執行程式碼，從而降低執行時間負荷並提高效率。繫結程序會將預先編譯的程式碼與資料庫結構連結，促進存取路徑和查詢最佳化。此程序可確保資料完整性、改善應用程式回應能力，並防止安全漏洞。正確預先編譯和繫結的應用程式可將資源消耗降至最低、增強可擴展性，並降低 SQL Injection 攻擊的風險。

## 先決條件和限制
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-prereqs"></a>

**先決條件 **
+  AWS 帳戶 和管理層級主控台存取。
+ IBM Db2 資料庫系統，例如 z/OS 的 IBM Db2 或 Linux、Unix 和 Windows (LUW) 的 Db2。
+ IBM Data Server Client 軟體，可從 [IBM 網站](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers)下載。如需詳細資訊，請參閱 [IBM Data Server 用戶端和資料伺服器驅動程式類型](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients)。
+ 要編譯和繫結的 COBOL Db2 程式。或者，此模式提供您可以使用的基本範例程式。
+ 上的虛擬私有雲端 (VPC) AWS 與私有網路。如需建立 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)頁面，然後選擇服務的連結。

## Architecture
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-architecture"></a>

**來源技術堆疊**

來源堆疊包括：
+ 使用 Db2 資料庫存放資料的 COBOL 程式
+ z/OS 前置編譯器的 IBM COBOL 編譯器和 Db2 
+ 大型主機設定的其他部分，例如檔案系統、交易管理員和多工緩衝處理

**目標技術堆疊**

此模式的方法適用於兩個選項：將資料從 z/OS 的 Db2 移至 LUW 的 Db2，或保留在 z/OS 的 Db2 上。目標架構包括：
+ 使用 Db2 資料庫存放資料的 COBOL 程式
+ AWS Mainframe Modernization Replatform 編譯工具
+ AWS CodeBuild 做為建置應用程式的基礎設施
+ 其他 AWS 雲端 資源，例如 Amazon Linux

**目標架構**

![\[在 AWS 上建置 COBOL Db2 程式的架構。\]](http://docs.aws.amazon.com/zh_tw/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 用戶端。

   1. 安裝和設定 IBM Data Server 用戶端。

   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 受管執行期環境的遷移和現代化。

**其他工具**
+ **Replatform 工具的 Amazon ECR AWS Mainframe Modernization 映像**。若要編譯 COBOL 應用程式，您需要使用包含 Replatform AWS Mainframe Modernization 工具的 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 S3 儲存貯體以託管 IBM Data Server 用戶端和管道成品。 | 您需要設定 S3 儲存貯體以 (a) 上傳 IBM Data Server 用戶端、(b) 從儲存庫存放程式碼，以及 (c) 存放建置程序的結果。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 用戶端上傳至 S3 儲存貯體。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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 | 
| 確認 Db2 可從 VPC 子網路存取。 | AWS CodeBuild 需要與 Db2 伺服器的連線，資料伺服器用戶端才能執行預先編譯和繫結操作。確定 CodeBuild 可以透過安全連線到達 Db2 伺服器。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | 網路管理員，一般 AWS | 

### 建立應用程式成品
<a name="create-the-application-artifacts"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 COBOL Db2 資產。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)在後續步驟中為 CodePipeline 建立 (IAM) 政策時，您將需要連線的 Amazon Resource Name AWS Identity and Access Management (ARN)。 | AWS DevOps | 

### 設定 許可
<a name="configure-permissions"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 為 CodeBuild 建立 IAM 政策。 | CodeBuild 專案需要存取一些資源，包括 Secrets Manager 和 Amazon S3。設定必要的許可：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 | 
| 為 CodeBuild 建立 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 中，選擇 **CodePipeline** 而非 **CodeBuild**)。 | AWS DevOps | 
| 為 CodePipeline 建立 IAM 角色。 | 若要讓 CodePipeline 可以使用安全政策，您需要設定 IAM 角色。若要建立此角色：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 CodePipeline 管道和 CodeBuild 專案。 | 若要建立 CodePipeline 管道和 CodeBuild 專案，以編譯和繫結 COBOL Db2 程式：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 連線命令新增至 `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 用戶端和驅動程式類型](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients)
+ [下載 IBM Data Server 用戶端和驅動程式類型](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>`、`<BucketARN>`、 `<SubnetARN>`和 取代`<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，微型焦點*

## 總結
<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 () 上使用 Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling 群組AWS。解決方案使用 AWS Systems Manager 和 Amazon EC2 Auto Scaling 生命週期掛鉤進行全自動化。透過使用此模式，您可以設定大型主機線上和批次應用程式，根據您的容量需求自動擴展和擴展，以達到高彈性。

**注意**  
此模式已使用 Micro Focus Enterprise Server 6.0 版進行測試。對於版本 8，請參閱[設定 Micro Focus 執行期 （在 Amazon EC2 上）](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 方案指引模式，請參閱[大型主機現代化： AWS 使用 Micro Focus 在 上進行 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，請參閱[設定 Micro Focus 執行期 （在 Amazon EC2 上）](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 版本和作業系統。
+ 模式是以適用於 Windows 的 Micro Focus Enterprise Server 6.0 為基礎；此模式的開發中未測試較舊版本或較新版本。

**產品版本**
+ Micro Focus Enterprise Server 6.0
+ Windows Server 2019

## Architecture
<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 Server 開始在 AWS 上採用隨需耗用模型時，並非如此。下列各節詳細說明如何使用 Micro Focus Enterprise Server 橫向擴展效能和可用性叢集 (PAC) 搭配 Amazon EC2 Auto Scaling 群組來建置全自動化、可擴展的大型主機應用程式架構。 

**Micro Focus Enterprise Server 自動擴展架構**

首先，請務必了解 Micro Focus Enterprise Server 的基本概念。此環境為傳統上在 IBM 大型主機上執行的應用程式提供與大型主機相容的 x86 部署環境。它同時提供線上和批次執行，以及支援下列項目的交易環境：
+ IBM COBOL
+ IBM PL/I
+ IBM JCL 批次任務
+ IBM CICS 和 IMS TM 交易
+ Web 服務
+ 常見的批次公用程式，包括 SORT

Micro Focus Enterprise Server 可讓大型主機應用程式以最少的變更執行。現有的大型主機工作負載可以移至 x86 平台並進行現代化，以利用 AWS 雲端原生擴充功能快速擴展到新市場或地理。 

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 Developer 和 Enterprise Test Server 搭配 AWS CodePipeline 和 AWS CodeBuild 來加速開發和測試 AWS 上的大型主機應用程式。此模式著重於將大型主機應用程式部署到 AWS 生產環境，以實現高可用性和彈性。

在大型主機生產環境中，您可能已在大型主機中設定 IBM Parallel Sysplex，以實現高效能和高可用性。為了建立類似於 Sysplex 的向外擴展架構，Micro Focus 將效能和可用性叢集 (PAC) 引入企業伺服器。PACs支援在多個 Enterprise Server 區域部署大型主機應用程式，並以單一映像形式管理，並在 Amazon EC2 執行個體中向外擴展。PACs也支援可預測的應用程式效能和隨需系統輸送量。 

在 PAC 中，多個 Enterprise Server 執行個體可做為單一邏輯實體一起運作。因此，一個 Enterprise Server 執行個體的故障不會中斷業務連續性，因為容量會與其他區域共用，而新的執行個體會使用產業標準功能自動啟動，例如 Amazon EC2 Auto Scaling 群組。這可移除單一故障點，改善硬體、網路和應用程式問題的彈性。向外擴展的 Enterprise Server 執行個體可以使用 Enterprise Server Common Web Administration (ESCWA) APIs 操作和管理，簡化 Enterprise Server 的操作維護和服務性。 

**注意**  
Micro Focus 建議[效能和可用性叢集 (PAC)](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-C06DC883-8A67-44DB-8553-8F0DD2062DAB.html) 應至少包含三個企業伺服器區域，以便在企業伺服器區域故障或需要維護時，可用性不會受到影響。

PAC 組態需要支援的關聯式資料庫管理服務 (RDBMS) 來管理區域資料庫、跨區域資料庫和選用的資料存放區資料庫。資料存放區資料庫應使用 Micro Focus 資料庫檔案處理常式支援來管理虛擬儲存存取方法 (VSAM) 檔案，以改善可用性和可擴展性。支援的 RDBMSs包括下列項目：
+ Microsoft SQL Server 2009 R2 及更新版本
+ PostgreSQL 10.x，包括 Amazon Aurora PostgreSQL 相容版本
+ DB2 10.4 及更新版本

如需支援的 RDBMS 和 PAC 需求的詳細資訊，請參閱 [Micro Focus Enterprise Server - 先決條件](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 架構設定。 

![\[三可用區域架構，在圖表後面的資料表中說明五個步驟。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/64e3c22b-1058-4ab8-855f-18bbbed5dc13/images/df291568-a442-454f-80bf-49e4ffff4f6d.png)


 


| 
| 
|  | **元件** | **Description** | 
| --- |--- |--- |
| 1 | Enterprise Server 執行個體自動擴展群組 | 設定在 PAC 中使用 Enterprise Server 執行個體部署的自動擴展群組。Amazon CloudWatch 警示可以使用 CloudWatch 指標向外或向內擴展執行個體數量。 | 
| 2 | Enterprise Server ESCWA 執行個體自動擴展群組  | 設定使用 Enterprise Server Common Web Administration (ESCWA) 部署的自動擴展群組。ESCWA 提供叢集管理 APIs。  ESCWA 伺服器做為控制平面，以在 Enterprise Server 執行個體自動擴展事件期間新增或移除 Enterprise Server，以及啟動或停止 PAC 中的 Enterprise Server 區域。  由於 ESCWA 執行個體僅用於 PAC 管理，其流量模式是可預測的，而且其自動擴展所需的容量需求可以設定為 1。  | 
| 3 | 多可用區設定中的 Amazon Aurora 執行個體 | 設定關聯式資料庫管理系統 (RDBMS) 來託管要跨企業伺服器執行個體共用的使用者和系統資料檔案。 | 
| 4 | Amazon ElastiCache (Redis OSS) 執行個體和複本 | 設定 ElastiCache (Redis OSS) 主要執行個體和至少一個複本來託管使用者資料，並做為 Enterprise Server 執行個體的橫向擴展儲存庫 (SOR)。您可以設定一或多個[橫向擴展儲存庫](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-3840E10F-80AA-4109-AF2C-894237D3AD00.html)來存放特定類型的使用者資料。  Enterprise Server 使用 Redis NoSQL 資料庫做為 SOR，[這是維護 PAC 完整性的需求](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-176B97CA-4F9F-4CE1-952F-C3F4FB0ADD25.html)。 | 
| 5 | Network Load Balancer | 設定負載平衡器，為應用程式提供主機名稱，以連線至 Enterprise Server 執行個體提供的服務 （例如，透過 3270 模擬器存取應用程式）。 | 

這些元件構成 Micro Focus Enterprise Server PAC 叢集的最低需求。下一節涵蓋叢集管理自動化。

**使用 AWS Systems Manager 自動化進行擴展**

在 AWS 上部署 PAC 叢集之後，會透過 Enterprise Server Common Web Administration (ESCWA) APIs 來管理 PAC。 

若要在自動擴展事件期間自動化叢集管理任務，您可以使用 Systems Manager Automation Runbook 和 Amazon EC2 Auto Scaling 搭配 Amazon EventBridge。這些自動化的架構如下圖所示。

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


 


| 
| 
|  | **元件** | **Description** | 
| --- |--- |--- |
| 1 | 自動擴展生命週期掛鉤 | 設定自動擴展生命週期關聯，並在啟動新執行個體並在自動擴展群組中終止現有執行個體時將通知傳送至 Amazon EventBridge。 | 
| 2 | Amazon EventBridge | 設定 Amazon EventBridge 規則，將自動擴展事件路由至 Systems Manager Automation Runbook 目標。 | 
| 3 | 自動化 Runbook | 設定 Systems Manager Automation Runbook 以執行 Windows PowerShell 指令碼，並叫用 ESCWA APIs 來管理 PAC。如需範例，請參閱*其他資訊*一節。 | 
| 4 | 自動擴展群組中的 Enterprise Server ESCWA 執行個體 | 在自動擴展群組中設定 Enterprise Server ESCWA 執行個體。ESCWA 執行個體提供 APIs 來管理 PAC。  | 

## 工具
<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 是一種 Web 服務，用於設定、管理和擴展雲端中的分散式記憶體內資料存放區或快取環境。它提供高效能、可擴展且符合成本效益的快取解決方案。
+ [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) – Amazon Relational Database Service (Amazon RDS) 是一種 Web 服務，可讓您更輕鬆地在 AWS 雲端中設定、操作和擴展關聯式資料庫。它為關聯式資料庫提供經濟實惠、可擴展的容量，並管理常見的資料庫管理任務。 
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) – AWS Systems Manager 是一種 AWS 服務，可用來檢視和控制 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 為 Amazon Aurora 執行個體建立 AWS CloudFormation 範本。 | 使用 [AWS 範例程式碼片段](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_RDS.html)建立 CloudFormation 範本，以建立 Amazon Aurora PostgreSQL 相容版本執行個體。 | 雲端架構師 | 
| 部署 CloudFormation 堆疊以建立 Amazon Aurora 執行個體。 | 使用 CloudFormation 範本建立 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 為 Redis 執行個體的 Amazon ElastiCache 叢集建立 CloudFormation 範本。 | 使用 [AWS 範例程式碼片段](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ElastiCache.html)建立 CloudFormation 範本，為 Redis 執行個體建立 Amazon ElastiCache 叢集。 | 雲端架構師 | 
| 部署 CloudFormation 堆疊，為 Redis 執行個體建立 Amazon ElastiCache 叢集。 | 為已針對生產工作負載啟用異地同步備份複寫的 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)中的指示，為 Micro Focus Enterprise Server PAC 準備 PAC 橫向擴展儲存庫 (PSOR) 連線組態。 | DevOps 工程師 | 

### 建立 Micro Focus Enterprise Server ESCWA 自動擴展群組
<a name="create-a-micro-focus-enterprise-server-escwa-automatic-scaling-group"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Micro Focus Enterprise Server AMI。 | 建立 Amazon EC2 Windows Server 執行個體，並在 EC2 執行個體中安裝 Micro Focus Enterprise Server 二進位檔。建立 EC2 執行個體的 Amazon Machine Image (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 Runbook
<a name="create-an-aws-systems-manager-automation-runbook"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Systems Manager Automation Runbook 的 CloudFormation 範本。 | 使用*其他資訊*區段中的範例程式碼片段來建立 CloudFormation 範本，該範本將建立 Systems Manager Automation Runbook 以自動化 PAC 建立、Enterprise Server 向內擴展和 Enterprise Server 向外擴展。 | 雲端架構師 | 
| 部署包含 Systems Manager Automation Runbook 的 CloudFormation 堆疊。 | 使用 CloudFormation 範本部署堆疊，其中包含用於建立 PAC、企業伺服器向內擴展和企業伺服器向外擴展的 Automation Runbook。 | 雲端架構師 | 

### 建立 Micro Focus Enterprise Server 的自動擴展群組
<a name="create-an-automatic-scaling-group-for-micro-focus-enterprise-server"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 CloudFormation 範本，以設定 Micro Focus Enterprise Server 的自動擴展群組。 | 使用 [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)來建立自動擴展生命週期事件，並設定 Amazon EventBridge 來篩選相同 CloudFormation 範本中的擴展和縮減事件。 | 雲端架構師 | 
| 部署 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 lifecycle hooks](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 呼叫 APIs來建立 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 連接到該 PAC。

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

1. 如果這是您第一次設定 PAC，請設定區域資料庫和跨區域資料庫。
**注意**  
此步驟使用 SQL 查詢和 Micro Focus Enterprise Suite 命令列 **dbhfhadmin** 工具來建立資料庫並匯入初始資料。

1. 將 PAC 定義安裝到企業伺服器區域。

   ```
   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
   ```

您可以使用 Windows PowerShell 指令碼來實作先前的步驟。 

下列步驟說明如何透過重複使用 Windows PowerShell 指令碼來建置建立 PAC 的自動化。

1. 建立 Amazon EC2 啟動範本，以下載或建立 WindowsPowerShell 指令碼做為引導程序的一部分。例如，您可以使用 EC2 使用者資料從 Amazon Simple Storage Service (Amazon S3) 儲存貯體下載指令碼。

1. 建立 AWS Systems Manager Automation Runbook 以叫用 Windows PowerShell 指令碼。

1. 使用執行個體標籤將 Runbook 與 ESCWA 執行個體建立關聯。

1. 使用啟動範本建立 ESCWA 自動擴展群組。 

您可以使用下列範例 AWS CloudFormation 程式碼片段來建立 Automation Runbook。

*用於建立 PAC 的 Systems Manager Automation Runbook 的範例 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 APIs，並將企業伺服器區域新增至 PAC。 

1. 將 PAC 定義安裝到企業伺服器區域。

   ```
   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 執行個體建立 Amazon EC2 啟動範本，在 Enterprise Server 執行個體的引導期間佈建 Enterprise Server 區域。例如，您可以使用 Micro Focus Enterprise Server 命令 mfds 來匯入區域組態。如需此命令可用的更多詳細資訊和選項，請參閱[企業伺服器參考](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/HRADRHCOMM06.html)。

1. 建立使用上一個步驟中建立的啟動範本的 Enterprise Server 自動擴展群組。

1. 建立 Systems Manager Automation Runbook 以叫用 Windows PowerShell 指令碼。 

1. 使用執行個體標籤將 Runbook 與 ESCWA 執行個體建立關聯。

1. 建立 Amazon EventBridge 規則來篩選 Enterprise Server 自動擴展群組的 EC2 執行個體啟動成功事件，並建立目標以使用 Automation Runbook。

您可以使用下列範例 CloudFormation 程式碼片段來建立 Automation Runbook 和 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 執行個體終止生命週期動作，並且需要下列程序和 API 呼叫，才能從 PAC 中移除 Micro Focus Enterprise Server 執行個體。 

1. 在終止 Enterprise Server 執行個體中停止 區域。

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

1. 從 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 指令碼從 PAC 終止 Enterprise Server 執行個體。 

1. 建立 Systems Manager Automation Runbook 以叫用 Windows PowerShell 指令碼。

1. 使用執行個體標籤將 Runbook 與 ESCWA 執行個體建立關聯。

1. 建立 EC2 執行個體終止的自動擴展群組生命週期關聯。

1. 建立 Amazon EventBridge 規則來篩選 Enterprise Server 自動擴展群組的 EC2 執行個體終止生命週期動作事件，並建立目標以使用 Automation Runbook。 

您可以使用下列範例 CloudFormation 範本來建立 Systems Manager Automation Runbook、 lifecycle hook 和 EventBridge 規則。

*用於在 Enterprise Server 執行個體中擴展的 Systems Manager Automation Runbook 的範例 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 執行個體設定擴展政策的程序需要了解應用程式行為。在大多數情況下，您可以設定目標追蹤擴展政策。例如，您可以使用平均 CPU 使用率做為 Amazon CloudWatch 指標，來設定自動擴展政策。如需詳細資訊，請參閱 [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>

*Bopath 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 網站上的[適用於 z/OS 6.3 的企業 COBOL](https://publibfp.boulder.ibm.com/epubs/pdf/igy6pg30.pdf) 程式設計指南。)

**限制**
+ 複製手冊剖析限制為不超過兩個巢狀層級 (OCCURS)

## Architecture
<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/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/36d72b00-d163-455f-9e59-e2c872e7c28a/images/cce68438-bcf2-48c1-b86b-01242235ec76.png)


該圖顯示以下工作流程：

1. 管理員使用者或應用程式會將輸入檔案推送至一個 S3 儲存貯體，並將 COBOL 複製手冊推送至另一個 S3 儲存貯體。

1. 
**注意**  
具有輸入檔案的 S3 儲存貯體會叫用 Lambda 函數，以啟動無伺服器 Step Functions 工作流程。：使用此模式使用 S3 事件觸發和 Lambda 函數來驅動 Step Functions 工作流程是選用的。此模式中的 GitHub 程式碼範例不包含這些服務的使用，但您可以根據您的需求使用這些服務。

1. Step Functions 工作流程會協調來自下列 Lambda 函數的所有批次程序：
   + `s3copybookparser.py` 函數會剖析複製手冊配置，並擷取欄位屬性、資料類型和位移 （輸入資料處理時需要）。
   + `s3toathena.py` 函數會建立 Athena 資料表配置。Athena 會剖析`s3toathena.py`函數處理的輸入資料，並將資料轉換為 CSV 檔案。
   + `s3toelasticsearch.py` 函數會從 S3 儲存貯體擷取結果檔案，並將檔案推送至 OpenSearch Service。

1. 使用者使用 OpenSearch Service 存取 OpenSearch Dashboards，以各種資料表和資料欄格式擷取資料，然後針對索引資料執行查詢。

## 工具
<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 Service 叢集。在此模式中，您可以使用 OpenSearch Service 為轉換的檔案編製索引，並為使用者提供互動式搜尋功能。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 是一種雲端型物件儲存服務，可協助您儲存、保護和擷取任何數量的資料。
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 是一種開放原始碼工具，可協助您透過命令列 shell 中的命令與 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) 是一種無伺服器協同運作服務，可協助您結合 Lambda 函數和其他 AWS 服務來建置業務關鍵應用程式。在此模式中，您可以使用 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 S3 儲存貯體。 | [建立 anS3 ](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/zh_tw/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 一般 AWS | 
| 建立 s3copybookparser 函數。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 一般 AWS | 
| 建立 s3toathena 函數。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 一般 AWS | 
| 建立 s3toelasticsearch 函數。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 一般 AWS | 
| 建立 OpenSearch Service 叢集。 | **建立叢集**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 一般 AWS | 

### 部署和執行
<a name="deploy-and-run"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將輸入檔案和複製手冊上傳至 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/zh_tw/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/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html)如需成功交付日誌的範例，請參閱此模式*額外資訊*區段中的 *CloudWatch 交付日誌*。 | 一般 AWS | 
| 驗證 OpenSearch Dashboards 中的格式化檔案，並執行檔案操作。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 Compuware File-AID](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/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/36d72b00-d163-455f-9e59-e2c872e7c28a/images/11093e5d-2f9e-4bbf-8abc-f3b2980dd550.png)


**CloudWatch 交付日誌**

下列範例顯示執行成功交付日誌`s3toelasticsearch`。


| 
| 
| 2022-08-10T15：53：33.033 年 5 月 00 日 | 處理文件數量：100 |  | 
| --- |--- |--- |
|  | 2022-08-10T15：53：33.171 年 5 月 00 日 | 【INFO】 2022-08-10T20：53：33.171Z a1b2c3d4-5678-90ab-cdef-EXAMPLE11111POST https://search-essearch-3h4uqclifeqaj2vg4mphe7ffle.us-east-2.es.amazonaws.com:443/\$1bulk 【status：200 request：0.100s】 | 
|  | 2022-08-10T15：53：33.172 年 5 月 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 規範指引出版物：
+ [在無伺服器 AWS 基礎設施上執行現代化 Blu Age 大型主機工作負載](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 網站上選擇**聯絡我們的專家**[，以聯絡 Blu Age](https://www.bluage.com/) 團隊。如需協助將現代化工作負載遷移至 AWS、將它們與 AWS 服務整合，並將它們移至生產環境，請聯絡您的 AWS 客戶經理或填寫 [AWS Professional Services 表單](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)以了解限制和考量事項。

## Architecture
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-architecture"></a>

**來源技術堆疊**
+ 藍齡
+ Java

**目標技術堆疊**
+ Docker

**目標架構**

下圖顯示 Docker 容器內 Blu Age 應用程式的架構。

![\[Docker 容器中的 Blu Age 應用程式\]](http://docs.aws.amazon.com/zh_tw/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 或 Parameter Store 提供，AWS Systems Manager 的功能。如果您使用 Amazon ECS 做為容器協同運作服務，您也可以硬式編碼 Amazon ECS 任務定義中的環境變數。

1. 在您執行 Blu Age 應用程式之前，包裝函式指令碼負責將任何輸入檔案從 S3 儲存貯體提取至容器。AWS Command Line Interface (AWS CLI) 安裝在容器內。這提供了一種機制，可透過閘道虛擬私有雲端 (VPC) 端點存取存放在 Amazon S3 中的物件。

1. Blu Age 應用程式的 Java Archive (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 大型主機現代化工具，可將舊版大型主機工作負載，包括應用程式碼、相依性和基礎設施，轉換為雲端的現代工作負載。

**程式碼儲存庫**

此模式的程式碼可在 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>
+ 使用環境變數將變數外部化，以變更應用程式的行為。這些變數可讓容器協同運作解決方案變更執行時間環境，而無需重建容器。此模式包含可用於 Blu Age 應用程式的環境變數範例。
+ 執行 Blu Age 應用程式之前，請先驗證任何應用程式相依性。例如，確認資料庫可用且登入資料有效。在包裝函式指令碼中寫入測試，以驗證相依性，如果不符合，則提早失敗。
+ 在包裝函式指令碼中使用詳細記錄。直接與執行中的容器互動可能具有挑戰性，具體取決於協同運作平台和任務需要多長時間。請務必將有用的輸出寫入 `STDOUT`，以協助診斷任何問題。例如，輸出可能會在您執行應用程式之前和之後包含應用程式工作目錄的內容。

## 史詩
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-epics"></a>

### 取得 Blu Age 應用程式 JAR 檔案
<a name="obtain-a-blu-age-application-jar-file"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 選項 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 fie。 | 應用程式開發人員 | 

### 建置 Blu Age 容器
<a name="build-the-blu-age-container"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 複製 GitHub 儲存庫。 | 使用 命令複製範本程式碼儲存庫：<pre>git clone https://github.com/aws-samples/aws-blu-age-sample-container</pre> | AWS DevOps | 
| 使用 Docker 建置容器。 | 使用 Docker 建置容器，然後再將其推送至 Docker 登錄檔，例如 Amazon ECR：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html)如需詳細資訊，請參閱《*Amazon ECR 使用者指南*》中的[推送 Docker 映像](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)
+ [在無伺服器 AWS 基礎設施上執行現代化 Blu Age 大型主機工作負載](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)
+ [搭配 AWS CLI 使用 Amazon ECR ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html)(*Amazon ECR 使用者指南*)
+ [私有登錄檔身分驗證](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)

**其他資源**
+ [Blu Age 網站](https://www.bluage.com/)
+ [Docker 網站](https://docker.com/)

# 使用 Python 將 EBCDIC 資料轉換為 AWS 上的 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) 環境時，現代化資料是最重要的任務之一。在大型主機上，資料通常會以延伸二進位編碼的小數交換碼 (EBCDIC) 格式進行編碼。匯出資料庫、虛擬儲存存取方法 (VSAM) 或一般檔案通常會產生封裝的二進位 EBCDIC 檔案，這些檔案更複雜的遷移。最常用的資料庫遷移解決方案是變更資料擷取 (CDC)，在大多數情況下會自動轉換資料編碼。不過，CDC 機制可能無法用於這些資料庫、VSAM 或一般檔案。對於這些檔案，需要替代方法來現代化資料。

此模式說明如何透過將其轉換為 ASCII 格式來現代化 EBCDIC 資料。轉換後，您可以將資料載入分散式資料庫，或讓雲端中的應用程式直接處理資料。模式會使用[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 複製手冊包含在[mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities) GitHub 儲存庫中。如需 COBOL 複本手冊的詳細資訊，請參閱 IBM 網站上的[適用於 z/OS 6.4 的企業 COBOL 程式設計指南](https://publibfp.dhe.ibm.com/epubs/pdf/igy6pg40.pdf)。

**限制**
+ 不支援 COBOL 程式中定義的檔案配置。它們必須單獨提供。

**產品版本**
+ Python 3.8 版或更新版本

## Architecture
<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)、sys 和日期時間
+ ASCII 平面檔案已準備好供現代應用程式讀取或載入關聯式資料庫資料表

**目標架構**

![\[使用 Python 指令碼和 COBOL 複製手冊，在 EC2 執行個體上將 EBCDIC 資料轉換為 ASCII\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/f5907bfe-7dff-4cd0-8523-57015ad48c4b/images/4f97b1dd-3f20-4966-a291-22180680ea99.png)


架構圖顯示將 EBCDIC 檔案轉換為 EC2 執行個體上 ASCII 檔案的程序：

1. 使用 **parse\$1copybook\$1to\$1json.py** 指令碼，您可以將 COBOL 複製手冊轉換為 JSON 檔案。

1. 使用 JSON 檔案和 **extract\$1ebcdic\$1to\$1ascii.py** 指令碼，您可以將 EBCDIC 資料轉換為 ASCII 檔案。

**自動化和擴展**

在第一個手動檔案轉換所需的資源就緒之後，您就可以自動化檔案轉換。此模式不包含自動化的指示。有多種方法可自動化轉換。以下是一種可能方法的概觀：

1. 將 AWS Command Line Interface (AWS CLI) 和 Python 指令碼命令封裝為 shell 指令碼。

1. 建立 AWS Lambda 函數，以非同步方式將 shell 指令碼任務提交至 EC2 執行個體。如需詳細資訊，請參閱[使用 AWS Lambda 排程 SSH 任務](https://aws.amazon.com/blogs/compute/scheduling-ssh-jobs-using-aws-lambda/)。

1. 建立 Amazon Simple Storage Service (Amazon S3) 觸發程序，在每次上傳舊版檔案時叫用 Lambda 函數。如需詳細資訊，請參閱[使用 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>

**AWS 服務**
+ [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 Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 是一種開放原始碼工具，可協助您透過命令列 shell 中的命令與 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 啟動 EC2 執行個體。 | EC2 執行個體必須具有傳出網際網路存取。這可讓執行個體存取 GitHub 上可用的 Python 原始程式碼。若要建立執行個體：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將 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/zh_tw/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/zh_tw/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 檔案。 | 執行 **extract\$1ebcdic\$1to\$1ascii.py** 指令碼，此指令碼包含在複製的 GitHub 儲存庫中。此指令碼會讀取 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/zh_tw/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 檔案的十六進位表示法中，此字元以 表示`60`，而在 ASCII 檔案的十六進位表示法中，此字元以 表示`2D`。如需 EBCDIC-to-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 文件）
+ [連線至 Linux 執行個體](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>

此模式說明如何啟動 AWS Lambda 函數，自動將大型主機延伸二進位編碼十進位交換碼 (EBCDIC) 檔案轉換為字元分隔的美國資訊交換標準碼 (ASCII) 檔案。Lambda 函數會在 ASCII 檔案上傳至 Amazon Simple Storage Service (Amazon S3) 儲存貯體後執行。在檔案轉換之後，您可以讀取以 x86 為基礎的工作負載上的 ASCII 檔案，或將檔案載入現代資料庫。

此模式中示範的檔案轉換方法可協助您克服在現代環境中使用 EBCDIC 檔案的挑戰。以 EBCDIC 編碼的檔案通常包含以二進位或封裝小數格式表示的資料，欄位為固定長度。這些特性會產生障礙，因為現代 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)。

## Architecture
<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 函式
+ Python 3.8 或更高版本
+ 大型主機資料公用程式
+ JSON 中繼資料
+ 字元分隔 ASCII 檔案

**目標架構**

下圖顯示將大型主機 EBCDIC 檔案轉換為 ASCII 檔案的架構。

![\[將大型主機 EBCDIC 檔案轉換為 ASCII 檔案的架構\]](http://docs.aws.amazon.com/zh_tw/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 格式，隨後會存放在 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) 是一種瀏覽器型 shell，您可以使用 AWS Command Line Interface (AWS CLI) 和一系列預先安裝的開發工具 AWS 服務 來管理。
+ [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 Resource Name (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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立環境變數。 | 將下列環境變數複製到文字編輯器，然後將下列範例中`<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 角色和政策
<a name="define-an-iam-role-and-policy"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Lambda 函數的信任政策。 | EBCDIC 轉換器會在 Lambda 函數中執行。函數必須具有 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 下載 EBCDIC 轉換原始程式碼。 | 從 CloudShell 工作資料夾中，執行下列命令，從 GitHub 下載 mainframe-data-utilities 原始碼：<pre>git clone https://github.com/aws-samples/mainframe-data-utilities.git mdu</pre> | 一般 AWS | 
| 建立 ZIP 套件。 | 從 CloudShell 工作資料夾中，輸入下列命令來建立 ZIP 套件，以建立用於 EBCDIC 轉換的 Lambda 函數：<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> 環境變數配置會告知 Lambda 函數 JSON 中繼資料所在的位置。 | 一般 AWS | 
| 建立 Lambda 函數的資源型政策。 | 從 CloudShell 工作資料夾中，輸入下列命令，以允許 Amazon S3 事件通知觸發 Lambda 函數以進行 EBCDIC 轉換：<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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 剖析 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> | General AWS、IBM Mainframe、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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將 EBCDIC 檔案傳送至 Amazon S3 儲存貯體。 | 從 CloudShell 工作資料夾中，輸入下列命令將 EBCDIC 檔案傳送至 Amazon S3 儲存貯體：<pre>aws s3 cp mdu/sample-data/CLIENT.EBCDIC.txt s3://$bucket/input/</pre> 我們建議您為輸入 (EBCDIC) 和輸出 (ASCII) 檔案設定不同的資料夾，以避免在 ASCII 檔案上傳至 Amazon S3 儲存貯體時再次呼叫 Lambda 轉換函數。 | 一般 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| （選用） 準備變數和資料夾。 | 如果您失去與 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 角色和政策。 | 從 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 Service （受管執行期環境體驗） 的功能，請探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS Mainframe Modernization 可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

此模式說明如何使用 Micro Focus 結構檔案，將具有非文字資料和複雜記錄配置的大型主機資料檔案，從 EBCDIC （延伸二進位編碼十進位交換碼） 字元編碼轉換為 ASCII （美國資訊交換標準碼） 字元編碼。若要完成檔案轉換，您必須執行下列動作：

1. 準備單一來源檔案，描述大型主機環境中所有資料項目和記錄配置。

1. 使用 Micro Focus 資料檔案編輯器作為 Micro Focus Classic Data File Tools 或 Data File Tools 的一部分，建立包含資料記錄配置的結構檔案。結構檔案會識別非文字資料，讓您可以正確地將大型主機檔案從 EBCDIC 轉換為 ASCII。

1. 使用傳統資料檔案工具或資料檔案工具測試結構檔案。

## 先決條件和限制
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-prereqs"></a>

**先決條件**
+ 作用中的 AWS 帳戶
+ Micro Focus Enterprise Developer for Windows，可透過 [AWS Mainframe Modernization](https://aws.amazon.com/mainframe-modernization/) 取得

**產品版本**
+ Micro Focus Enterprise Server 7.0 及更新版本

## 工具
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-tools"></a>
+ [Micro Focus Enterprise Developer](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GUID-8D6B7358-AC35-4DAF-A445-607D8D97EBB2.html) 為使用 Enterprise Developer 的任何整合開發環境 (IDE) 變體建立的應用程式提供執行環境。
+ Micro Focus [Classic Data File Tools](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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 識別來源元件。 | 識別檔案的所有可能記錄配置，包括包含非文字資料的任何重新定義。如果您有包含重新定義的配置，您必須將這些配置分解為唯一配置，描述資料結構的每個可能變動。一般而言，資料檔案的記錄配置可以由下列原型描述：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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)。 | 應用程式開發人員 | 
| 識別記錄配置條件。 | 對於具有多個記錄配置的檔案，或包含複雜配置且具有 REDEFINES 子句的檔案，請識別記錄中的資料和條件，供您用來定義轉換期間要使用的配置。我們建議您與主題專家 (SME) 討論此任務，該專家了解處理這些檔案的程式。例如，檔案可能包含兩種包含非文字資料的記錄類型。您可以檢查來源，並可能找到類似下列的程式碼：<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/zh_tw/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html)您可以記錄此欄位所使用的值，將記錄配置與檔案中正確的資料記錄建立關聯。 | 應用程式開發人員 | 
| 建置來源檔案。 | 如果透過多個來源檔案描述檔案，或記錄配置包含屬於 REDEFINES 子句的非文字資料，則請建立新的來源檔案，其中包含記錄配置。新程式不需要使用 SELECT 和 FD 陳述式描述檔案。程式可以直接在 Working-Storage 中將記錄描述包含為 01 個層級。您可以為每個資料檔案建立來源檔案，或建立描述所有資料檔案的主來源檔案。 | 應用程式開發人員 | 
| 編譯來源檔案。 | 編譯來源檔案以建置資料字典。建議您使用 EBCDIC 字元集來編譯來源檔案。如果使用 IBMCOMP 指令或 ODOSLIDE 指令，則您也必須在來源檔案中使用這些指令。IBMCOMP 會影響 COMP 欄位的位元組儲存，ODOSLIDE 會影響 OCCURS VARYING 結構的填補。如果這些指令設定不正確，轉換工具將無法正確讀取資料記錄。這會導致轉換後檔案中的資料錯誤。 | 應用程式開發人員 | 

### （選項 A) 使用傳統資料檔案工具建立結構檔案
<a name="option-a-create-the-structure-file-using-classic-data-file-tools"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 啟動工具並載入字典。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 啟動工具並載入字典。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html)預設配置會出現在**配置**窗格中，並且可以透過藍色「D」圖示來識別。 | 應用程式開發人員 | 
| 建立條件式記錄配置。 | 當檔案中有多個記錄配置時，請使用條件式記錄配置。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 測試 EBCDIC 資料檔案。 | 確認您可以使用結構檔案來正確檢視 EBCDIC 測試資料檔案。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 測試 EBCDIC 資料檔案。 | 確認您可以使用結構檔案來正確檢視 EBCDIC 測試資料檔案。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | 應用程式開發人員 | 

### 測試資料檔案轉換
<a name="test-data-file-conversion"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 測試 EBCDIC 檔案的轉換。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>
+ [Micro Focus](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>

將舊版大型主機工作負載遷移至現代雲端架構，可以免除維護大型主機的成本，而這些成本只會隨著環境的老化而增加。不過，從大型主機遷移任務可能會帶來獨特的挑戰。內部資源可能不熟悉任務邏輯，與商品化、一般化 CPUs 相比，在這些特殊任務中大型主機的高效能可能很難複寫。重寫這些任務可能是一項大型任務，需要大量精力。

Blu Age 會將舊版大型主機工作負載轉換為現代 Java 程式碼，然後您可以做為容器執行。

此模式提供範例無伺服器架構，用於執行已使用 Blu Age 工具進行現代化化的容器化應用程式。隨附的 HashiCorp Terraform 檔案將建置安全架構，以協調 Blu Age 容器，同時支援批次任務和即時服務。

如需使用 Blu Age 和 AWS 服務來現代化工作負載的詳細資訊，請參閱下列 AWS 規範指引出版物：
+ [在 AWS 無伺服器基礎設施上使用 Blu Age 進行現代化的大型主機工作負載](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 網站上選擇**聯絡我們的專家**[，以聯絡 Blu Age](https://www.bluage.com/) 團隊。如需協助將現代化工作負載遷移至 AWS、將它們與 AWS 服務整合，並將它們移至生產環境，請聯絡您的 AWS 客戶經理或填寫 [AWS Professional Services 表單](https://pages.awscloud.com/AWS-Professional-Services.html)。

## 先決條件和限制
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-prereqs"></a>

**先決條件**
+ [Containerize 大型主機工作負載所提供的範例容器化 Blu Age 應用程式，已透過 Blu Age 模式進行現代化](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html)。範例應用程式提供邏輯來處理現代化應用程式的輸入和輸出處理，並可與此架構整合。
+ 部署這些資源需要 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 提供者 4.46.0

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

**來源技術堆疊**
+ 藍齡
+ Terraform

**目標技術堆疊**
+ Amazon Aurora PostgreSQL-Compatible Edition
+ AWS Backup
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon ECS
+ AWS Identity and Access Management Service (IAM)
+ AWS Key Management Server (AWS KMS)
+ AWS Secrets Manager
+ Amazon Simple Notification Service (Amazon SNS)
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Step Functions
+ AWS Systems Manager

**目標架構**

下圖顯示解決方案架構。

![\[描述遵循圖表。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/12825490-2622-4f0b-80c9-2c5076d50fa3/images/c0708b0a-aa36-458a-8d6c-d42e3dec7727.png)


1. 解決方案會部署下列 IAM 角色：
   + 批次任務角色
   + 批次任務執行角色
   + 服務任務角色
   + 服務任務執行角色
   + Step Functions 角色
   + AWS Backup角色
   + RDS 增強型監控角色。

   角色符合最低權限的存取原則。

1. Amazon ECR 用於存放由此模式協調的容器映像。

1. AWS Systems Manager 參數存放區會在執行時間將每個環境的組態資料提供給 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 資料庫。

1. Amazon ECS 會執行長期服務，以提供現代化即時工作負載。這些無狀態應用程式會隨著跨可用區域的容器永久執行。

1. Network Load Balancer 用於授予即時工作負載的存取權。Network Load Balancer 支援舊版通訊協定，例如 IBM CICS。或者，您可以將 Application Load Balancer 與 HTTP 型工作負載搭配使用。

1. Amazon S3 為任務輸入和輸出提供物件儲存。容器應處理 Amazon S3 的提取和推送操作，以準備 Blu Age 應用程式的工作目錄。

1. AWS Step Functions 服務用於協調執行 Amazon ECS 任務以處理批次工作負載。

1. 每個批次工作負載的 SNS 主題會用來整合現代化應用程式與其他系統，例如電子郵件，或啟動其他動作，例如將輸出物件從 Amazon S3 交付至 FTP。

**注意**  
根據預設，解決方案無法存取網際網路。此模式假設虛擬私有雲端 (VPC) 將使用 [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/) 等服務連接到其他網路。因此，部署了多個界面 VPC 端點，以授予對解決方案所用 AWS 服務的存取權。若要開啟直接網際網路存取，您可以使用 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)是完全受管的 ACID 相容關聯式資料庫引擎，可協助您設定、操作和擴展 PostgreSQL 部署。
+ [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) 可協助您以 API 呼叫 Secrets Manager，以程式設計方式擷取秘密，取代程式碼中的硬式編碼登入資料，包括密碼。
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 可協助您協調和管理發佈者和用戶端之間的訊息交換，包括 Web 伺服器和電子郵件地址。
+ [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 參數存放區](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)為組態資料管理和秘密管理提供安全的階層式儲存。

**其他服務**
+ [HashiCorp Terraform](https://www.terraform.io/docs) 是一種基礎設施即程式碼 (IaC) 工具，可協助您使用程式碼來佈建和管理雲端基礎設施和資源。此模式使用 Terraform 來建立範例架構。

**程式碼儲存庫**

此模式的原始程式碼可在 GitHub [Blu Age Sample ECS Infrastructure (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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 複製解決方案原始程式碼。 | 從 [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/zh_tw/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html) | DevOps 工程師 | 

### 部署解決方案基礎設施
<a name="deploy-the-solution-infrastructure"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 檢閱並更新 Terraform 組態。 | 在根目錄中，開啟 檔案`main.tf,`檢閱內容，並考慮進行下列更新：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html) | DevOps 工程師 | 
| 部署 Terraform 檔案。 | 從終端機執行 `terraform apply`命令來部署所有資源。檢閱 Terraform 產生的變更，然後輸入 **yes** 以啟動建置。請注意，部署此基礎設施可能需要超過 15 分鐘的時間。 | DevOps 工程師 | 

### （選用） 部署有效的 Blu Age 容器化應用程式
<a name="optional-deploy-a-valid-blu-age-containerized-application"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將 Blu Age 容器映像推送至 Amazon ECR。 | 將容器推送到您在上一個 epic 中建立的 Amazon ECR 儲存庫。如需說明，請參閱 [Amazon ECR 文件](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)。記下容器映像 URI。 | DevOps 工程師 | 
| 更新 Terraform 以參考 Blu Age 容器映像。 | 更新 檔案`main.tf`** **以參考您上傳的容器映像。 | DevOps 工程師 | 
| 重新部署 Terraform 檔案。 | 從終端機執行 `terraform apply`以部署所有資源。從 Terraform 檢閱建議的更新，然後輸入 **yes** 以繼續部署。 | DevOps 工程師 | 

## 相關資源
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-resources"></a>
+ [藍齡](https://www.bluage.com/)
+ [在 AWS 無伺服器基礎設施上使用 Blu Age 進行現代化的大型主機工作負載](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>

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

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

注意： AWS Mainframe Modernization 服務 （受管執行期環境體驗） 不再開放給新客戶。對於類似 AWS Mainframe Modernization Service （受管執行期環境體驗） 的功能，請探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS Mainframe Modernization 可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

如果您的組織在 IBM Db2 大型主機環境中託管業務關鍵資料，從該資料中獲得洞見對於推動成長和創新至關重要。透過解鎖大型主機資料，您可以建立更快、安全和可擴展的商業智慧，以加速 Amazon Web Services (AWS) 雲端中的資料驅動型決策、成長和創新。

此模式提供解決方案，用於產生商業洞見，並從適用於 z/OS 資料表的 IBM Db2 中大型主機資料建立可分割敘述。大型主機資料變更會使用[AWS Mainframe Modernization 資料複寫搭配 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 Redshift Serverless](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-whatis.html) 資料倉儲資料表中，以在 Amazon Quick Sight 中進行分析。

在 Quick Sight 中提供資料後，您可以使用自然語言提示搭配 [Amazon Q in Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/quicksight-gen-bi.html) 來建立資料摘要、提出問題和產生資料案例。您不需要撰寫 SQL 查詢或學習商業智慧 (BI) 工具。

**商業內容**

此模式提供大型主機資料分析和資料洞察使用案例的解決方案。使用 模式，您可以為公司資料建立視覺化儀表板。為了示範解決方案，此模式使用提供醫療、牙科和視覺計劃給美國成員的醫療保健公司。在此範例中，成員人口統計特性和計劃資訊會存放在 z/OS 資料表的 IBM Db2 中。視覺化儀表板會顯示下列項目：
+ 區域的成員分佈
+ 依性別分配成員
+ 按年齡劃分的成員分佈
+ 依計劃類型分配成員
+ 尚未完成預防性預防預防接種的成員

如需依區域和尚未完成預防性預防預防接種的成員分發的範例，請參閱其他資訊一節。

建立儀表板後，您會產生一個資料案例，說明先前分析的洞見。資料案例提供建議，以增加已完成預防性預防接種的成員人數。

## 先決條件和限制
<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 系統上安裝的 z/OS 的精確連線 CDC。Precisely Connect CDC for z/OS 映像會以 zip 檔案的形式提供於 [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 Machine Image (AMI)。若要在大型主機上安裝適用於 z/OS 的 Precisely Connect CDC，請參閱 [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 的每個區域。如需特定端點，請參閱[服務端點和配額](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)頁面，然後選擇服務的連結。

**產品版本**
+ AWS Mainframe Modernization 使用精確的 4.1.44 版進行資料複寫
+ Python 3.6 版或更新版本
+ Apache Kafka ** **3.5.1 版

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

**目標架構**

下圖顯示使用[AWS Mainframe Modernization 資料複寫搭配 Precisely](https://aws.amazon.com/mainframe-modernization/capabilities/data-replication/) 和 Amazon Q in Quick Sight 從大型主機資料產生商業洞見的架構。

![\[從 z/OS 大型主機到 Amazon QuickSight 的七個步驟程序。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/cddb6d20-14ae-4276-90d8-14df435db824.png)


該圖顯示以下工作流程：

1. Precisely Log Reader Agent 會從 Db2 日誌讀取資料，並將資料寫入大型主機上 OMVS 檔案系統的暫時性儲存體。

1. 發佈者代理程式會從暫時性儲存讀取原始 Db2 日誌。

1. 內部部署控制器協助程式會驗證、授權、監控和管理操作。

1. Apply Agent 是使用預先設定的 AMI 部署在 Amazon EC2 上。它會使用 TCP/IP 透過控制器常駐程式與發佈者代理程式連線。Apply Agent 使用多個工作者將資料推送到 Amazon MSK 以進行高輸送量。

1. 工作者會以 JSON 格式將資料寫入 Amazon MSK 主題。作為複寫訊息的中繼目標，Amazon MSK 提供高可用性和自動化容錯移轉功能。

1. Amazon Redshift 串流擷取提供從 Amazon MSK 到 Amazon Redshift Serverless 資料庫的低延遲、高速資料擷取。Amazon Redshift 中的預存程序會對 Amazon Redshift 資料表執行大型主機變更資料 (insert/update/deletes) 調校。這些 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 Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) 是一種雲端規模的商業智慧 (BI) 服務，可協助您在單一儀表板中視覺化、分析和報告您的資料。此模式使用 Quick Sight 中 Amazon Q 的生成式 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)來改善效能。
+ 當您為精確設定建立 AWS Identity and Access Management (IAM) 角色時，請遵循最低權限原則，並授予執行任務所需的最低許可。如需詳細資訊，請參閱 IAM 文件中的[授予最低權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv)和[安全最佳實務](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 上使用精確設定 AWS Mainframe Modernization 資料複寫
<a name="set-up-m2long-data-replication-with-precisely-on-ec2"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定安全群組。 | 若要連線至控制器協助程式和 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/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | DevOps 工程師、AWS 系統管理員 | 
| 佈建 EC2 執行個體。 | 若要佈建 EC2 執行個體來執行精確 CDC 並連線至 Amazon MSK，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Amazon MSK 叢集。 | 若要建立 Amazon MSK 叢集，請執行下列 ：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | 雲端架構師 | 
| 建立 Amazon MSK 主題。 | 若要建立 Amazon MSK 主題，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | 雲端管理員 | 

### 在 Amazon EC2 上設定精確套用引擎
<a name="configure-the-precisely-apply-engine-on-ec2"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定精確指令碼以複寫資料變更。 | 若要設定 Precisely Connect CDC 指令碼，將已變更的資料從大型主機複寫至 Amazon MSK 主題，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 ISPF 畫面中設定預設值。 | 若要在互動式系統生產力設施 (ISPF) 中設定預設設定，請遵循[精確文件中](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/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)提交 JCL 檔案後，您可以在 EC2 執行個體上精確地啟動套用引擎。 | 大型主機系統管理員 | 

### 執行並驗證 CDC
<a name="run-and-validate-cdc"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 啟動套用引擎並驗證 CDC。 | 若要在 EC2 執行個體上啟動套用引擎並驗證 CDC，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 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/zh_tw/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 查詢編輯器 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 查詢編輯器 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_plans`相符的資料表 `member_dtls`和 。若要在 Amazon Redshift 中建立兩個資料表，請在 Amazon Redshift 查詢編輯器 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 中建立預存程序。 | 此模式使用預存程序，將變更資料 (`INSERT`、`UPDATE`、`DELETE`) 從來源大型主機同步到目標 Amazon Redshift 資料倉儲資料表，以便在 Quick Sight 中進行分析。若要在 Amazon Redshift 中建立預存程序，請使用查詢編輯器 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/zh_tw/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)另一個選項是使用 Amazon Redshift 查詢編輯器 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 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/zh_tw/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/zh_tw/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)的指示加入兩個資料表。在**聯結組態**窗格中，選擇**左**表示**聯結類型**。在**聯結子句**下，使用 `memberid from member_plans = memberid from members_details`。 | 遷移工程師 | 

### 使用 Quick Sight 中的 Amazon Q 從大型主機資料中取得商業洞見
<a name="get-business-insights-from-the-mainframe-data-by-using-qdev-in-quick-sight"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 Quick Sight 中設定 Amazon Q。 | 若要設定 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/zh_tw/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)區段中的*大型主機視覺化儀表板*。 | 遷移工程師 | 

### 從大型主機資料使用 Quick Sight 中的 Amazon Q 建立資料案例
<a name="create-a-data-story-with-qdev-in-quick-sight-from-mainframe-data"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立資料案例。 | 建立資料案例來解釋先前分析的洞見，並產生建議，以增加成員的預防性預防預防接種：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | 
| 嘗試在 EC2 執行個體上啟動套用引擎會傳回下列錯誤：`-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/zh_tw/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 串流擷取到具體化視觀表](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;
```

**大型主機視覺化儀表板**

下列資料視覺效果是由 Amazon Q in Quick Sight 針對分析問題 所建立`show member distribution by region`*。*

![\[美國東北部和西南部有 8 個成員，西南部有 5 個成員，中西部有 4 個成員。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/b40a784c-c1fc-444b-b6df-8bd1f7a6abaa.png)


以下資料視覺效果是由 Amazon Q in Quick Sight 為問題 建立`show member distribution by Region who have not completed preventive immunization, in pie chart`。

![\[Southeast 顯示 6， Southwest 顯示 5，而 Midwest 顯示 4。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/8a95da3c-df4a-458b-9cfe-44e34f80a235.png)


**資料案例輸出**

下列螢幕擷取畫面顯示 Amazon Q in Quick Sight 為提示 建立的資料案例區段`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`。

在簡介中，資料案例建議選擇擁有最多成員的區域，以從防盜工作中獲得最大的影響。

![\[根據成員基礎的地理、人口統計和年齡進行分析的簡介畫面。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/40f13957-2db4-42b7-b7a4-a0dd3dad6899.png)


資料案例提供四個區域的成員號碼分析。美國東北部、西南部和東南亞區域的成員最多。

![\[美國東部和西南部區域有 8 個成員，東南亞有 6 個成員，中西部有 4 個成員。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/fc6ed0a0-b79c-4397-95ac-a2fc4c87482a.png)


資料案例會呈現各年齡的成員分析。

![\[圖表顯示成員基礎偏向較年幼和中年成人。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/8c56f1ec-3a2e-47a6-bbc4-3631782aa333.png)


資料案例著重於中西部的預防工作。

![\[個人拓展行銷活動和區域挑戰的建議。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/84a647e8-c7d5-4637-94f0-03a611f899b3.png)


![\[繼續進行資料案例分析，以及預期成果和結論。\]](http://docs.aws.amazon.com/zh_tw/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>

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

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

注意： AWS Mainframe Modernization 服務 （受管執行期環境體驗） 不再開放給新客戶。對於類似 AWS Mainframe Modernization Service （受管執行期環境體驗） 的功能，請探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS Mainframe Modernization 可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

如果您的組織在大型主機環境中託管業務關鍵資料，從該資料中獲得洞見對於推動成長和創新至關重要。透過解鎖大型主機資料，您可以建立更快、安全和可擴展的商業智慧，以加速 Amazon Web Services (AWS) 雲端中的資料驅動型決策、成長和創新。

此模式透過使用[AWS Mainframe Modernization 檔案傳輸](https://docs.aws.amazon.com/m2/latest/userguide/filetransfer.html)搭配 BMC 和 [Quick Sight 中的 Amazon Q，](https://docs.aws.amazon.com/quicksight/latest/user/quicksight-gen-bi.html)提供產生商業洞見並從大型主機資料建立可共享敘述的解決方案。大型主機資料集會使用 AWS Mainframe Modernization 檔案傳輸搭配 BMC 傳輸至 [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)。 AWS Lambda 函數會格式化和準備大型主機資料檔案，以載入 Quick Sight。

在 Quick Sight 中提供資料之後，您可以使用自然語言提示搭配 [Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/quicksight-gen-bi.html) in Quick Sight 來建立資料摘要、提出問題和產生資料案例。您不需要撰寫 SQL 查詢或學習商業智慧 (BI) 工具。

**商業內容**

此模式提供大型主機資料分析和資料洞察使用案例的解決方案。使用 模式，您可以為公司資料建置視覺化儀表板。為了示範解決方案，此模式使用提供醫療、牙科和視覺計劃給美國成員的醫療保健公司。在此範例中，成員人口統計特性和計劃資訊會存放在大型主機資料集。視覺化儀表板會顯示下列項目：
+ 區域的成員分佈
+ 依性別分配成員
+ 按年齡分配成員
+ 依計劃類型分配成員
+ 尚未完成預防性預防預防接種的成員

建立儀表板後，您會產生一個資料案例，說明先前分析的洞見。資料案例提供建議，以增加已完成預防性預防預防接種的成員人數。

## 先決條件和限制
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-prereqs"></a>

**先決條件**
+ 作用中 AWS 帳戶
+ 具有業務資料的大型主機資料集
+ 在大型主機上安裝檔案傳輸代理程式的存取權

**限制**
+ 您的大型主機資料檔案應該採用 Quick Sight 支援的其中一種檔案格式。如需支援的檔案格式清單，請參閱[支援的資料來源](https://docs.aws.amazon.com/quicksuite/latest/userguide/supported-data-sources.html)。
+ 此模式使用 Lambda 函數，將大型主機檔案轉換為 Quick Sight 支援的格式。

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

下圖顯示透過使用 AWS Mainframe Modernization 檔案傳輸搭配 BMC 和 Amazon Q in Quick Sight 從大型主機資料產生商業洞見的架構。

![\[架構圖描述遵循圖表。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/6fe0f1d9-961c-4089-a746-e5b8d5fd6c1e.png)


該圖顯示以下工作流程：

1. 包含商業資料的大型主機資料集會使用 AWS Mainframe Modernization 檔案傳輸搭配 BMC 傳輸至 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) 是一種雲端規模的 BI 服務，可協助您在單一儀表板中視覺化、分析和報告您的資料。此模式使用 [Quick Sight 中 Amazon Q 的生成式 BI ](https://docs.aws.amazon.com/quicksight/latest/user/working-with-quicksight-q.html)功能。
+ [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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 安裝 檔案傳輸代理程式。 | 若要安裝 AWS Mainframe Modernization 檔案傳輸代理程式，請遵循 [AWS 文件](https://docs.aws.amazon.com/m2/latest/userguide/m2-agent-installation.html)中的指示。 | 大型主機系統管理員 | 
| 建立用於大型主機檔案傳輸的 S3 儲存貯體。 | [建立 S3 儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)體以存放使用 BMC AWS Mainframe Modernization 進行檔案傳輸的輸出檔案。在架構圖中，這是檔案傳輸目的地儲存貯體。 | 遷移工程師 | 
| 建立資料傳輸端點。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 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/zh_tw/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html) | 遷移工程師 | 
| 建立 Amazon S3 觸發程序來叫用 Lambda 函數。 | 若要設定叫用 Lambda 函數的觸發，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 函數需要 IAM 許可才能存取檔案傳輸目的地和來源資料集 S3 儲存貯體。透過允許檔案傳輸目的地 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立傳輸任務，將大型主機檔案複製到 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 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)中的指示。輸入資料檔案是在您定義大型主機資料傳輸任務時建立的轉換大型主機檔案。 | 遷移潛在客戶 | 

### 使用 Quick Sight 中的 Amazon Q 從大型主機資料中取得商業洞見
<a name="get-business-insights-from-the-mainframe-data-by-using-qdev-in-quick-sight"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 Quick Sight 中設定 Amazon Q。 | 此功能需要 Enterprise Edition。若要在 Quick Sight 中設定 Amazon Q，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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)區段中的*大型主機視覺化儀表板*。 | 遷移工程師 | 

### 從大型主機資料使用 Quick Sight 中的 Amazon Q 建立資料案例
<a name="create-a-data-story-with-qdev-in-quick-sight-from-the-mainframe-data"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立資料案例。 | 建立資料案例來解釋先前分析的洞見，並產生建議，以增加成員的預防性預防預防接種：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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)，請參閱下列模式：
+ [AWS 使用 Python 將 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'
}
```

**大型主機視覺化儀表板**

下列資料視覺效果是由 Amazon Q in Quick Sight 為分析問題 所建立`show member distribution by region`*。*

![\[圖表顯示西南部、中西部、東北部和東南部的成員數量。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/e5c1d049-407d-42ff-bc51-28f9d2b24d4f.png)


以下資料視覺效果是由 Amazon Q in Quick Sight 為問題 建立`show member distribution by Region who have not completed preventive immunization, in pie chart`。

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


**資料案例輸出**

下列螢幕擷取畫面顯示 Amazon Q in Quick Sight 建立的資料案例區段提示 `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.`

在簡介中，資料案例建議選擇最多成員的區域，以從防制措施中獲得最大的影響。

![\[著重於預防接種完成率的資料案例簡介頁面。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/4612fcc7-51fd-48a5-bc58-b6b0aa9b0ef3.png)


資料案例提供前三個區域的成員號碼分析，並將西南地區命名為專注於防制措施的領導區域。

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


**注意**  
西南部和東北部各有八個成員。不過，西南部有更多成員未完全進行預防，因此更有可能受益於提高預防接種率的計劃。

## 附件
<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 Service （受管執行期環境體驗） 的功能，請探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS Mainframe Modernization 可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

使用重構模式進行現代化的大型主機應用程式，例如 [AWS Mainframe Modernization Refactor with AWS Blu Age](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html)，需要謹慎地將身分驗證機制整合到新的應用程式架構。此整合通常會以後建化活動的形式處理。任務可能很複雜，通常涉及現有身分驗證系統的遷移或外部化，以符合現代安全標準和雲端原生實務。開發人員需要考慮如何在現代化應用程式執行期環境和程式庫的限制範圍內有效實作身分驗證。現代化之後， AWS 提供方法讓您更輕鬆地整合 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)。

此模式說明如何在身分驗證提供者為 Microsoft Entra ID 時，在現代化應用程式中實作身分驗證機制，而不必花時間進行研究和試驗。模式提供：
+ 來自 Microsoft Authentication Library (MSAL) 和其他 Microsoft Entra ID 文件且對身分驗證實作至關重要的欄位測試和相關角度程式庫。 
+ 使用 OAuth 2.0 在 AWS Blu Age Runtime 上啟用 Spring Security 所需的組態。
+ 擷取已驗證使用者身分並將其傳遞至 AWS Blu Age Runtime 的程式庫。
+ 我們建議實作的安全措施。
+ 針對 Microsoft Entra ID 設定中常見問題的疑難排解秘訣。

**注意**  
此模式使用 AWS Blu Age OAuth 延伸程式庫，該程式庫作為其[AWS 專業服務](https://aws.amazon.com/professional-services/)業務的一部分提供給客戶。此程式庫不屬於 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 Blu Age 團隊在您與 [AWS Professional Services](https://aws.amazon.com/professional-services/) 互動期間提供。
+ 部署和測試現代化應用程式的作用中 AWS 帳戶 。
+ 熟悉 AWS Blu Age 組態檔案和 Microsoft Entra ID 基本概念。

**限制**
+ 此模式涵蓋 OAuth 2.0 身分驗證和基本字符型授權流程。進階授權案例和精細存取控制機制不在範圍內。
+ 有些 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)，然後選擇服務的連結。

**產品版本**

此模式的開發方式是使用：
+ AWS Blu Age Runtime 4.1.0 版 （此模式也適用於回溯相容的更新版本）
+ MSAL 程式庫 3.0.23 版
+ Java 開發套件 (JDK) 第 17 版
+ 角度版本 16.1

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

**來源技術堆疊**

在一般大型主機環境中，身分驗證是透過使用者設定檔實作。這些設定檔可識別系統的使用者、定義誰可以登入，並指定使用者可以在系統資源上執行哪些函數。使用者設定檔由安全主管或安全管理員管理。

**目標技術堆疊**
+ Microsoft Entra ID
+ 現代化 Java Spring 型後端
+ AWS Blu Age 執行時間
+ 使用 OAuth 2.0 的 Spring Security
+ 角度單頁應用程式 (SPA)

**目標架構**

AWS Blu Age 執行時間預設支援以 OAuth 2.0 為基礎的身分驗證，因此模式會使用該標準來保護後端 APIs。

下圖說明程序流程。

**注意**  
圖表包含 Amazon Aurora 做為資料庫現代化的範例，雖然此模式的步驟中不包含 Aurora。

![\[AWS Blu Age 應用程式的 Entra ID 型身分驗證程序流程。\]](http://docs.aws.amazon.com/zh_tw/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 攔截器會在 HTTPS 請求的 `Authorization`標頭中包含存取字符，以呼叫 AWS Blu Age 執行期。

1.  AWS Blu Age `extension-oauth`程式庫會使用 AWS Blu Age Runtime 組態檔案 (`application-main.yml`) 從 標頭擷取使用者資訊，並將此資訊放在 `SharedContext` 物件中，讓商業邏輯可以使用它。
**注意**  
`SharedContext` 是由 AWS Blu Age 提供的執行期元件，可管理現代化應用程式中的應用程式內容和狀態資訊。如需 AWS Blu Age Runtime 元件和更新的詳細資訊，請參閱 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 Runtime 組態](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-config.html)。

1.  AWS Blu Age Runtime 會檢查字符是否存在。 

   1. 如果字符存在，它會透過與 Microsoft Entra ID 通訊來檢查字符的有效性。 

   1. 如果字符不存在， AWS 則 Blu Age Runtime 會傳回 HTTP 狀態碼為 403 的錯誤。

1. 如果字符有效， AWS 則藍時間執行時間允許業務邏輯繼續。如果字符無效， AWS 則 Blu Age Runtime 會傳回 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 受管執行期環境的遷移和現代化。您可以使用 Blu AWS Age 提供的此服務重構功能，來轉換和現代化舊版大型主機應用程式。

**注意**  
AWS Mainframe Modernization 服務 （受管執行期環境體驗） 不再開放給新客戶。對於類似 AWS Mainframe Modernization Service （受管執行期環境體驗） 的功能，請探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS Mainframe Modernization 可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

**程式碼儲存庫**

CardDemo 應用程式已更新，以示範與 Microsoft Entra ID 的整合。您可以從 [GitHub 儲存庫存取此模式的](https://github.com/aws-samples/sample-microsoft-entra-id-based-auth-in-aws-bluage-modernized-mainframe-app)程式碼。

**後端組態**

此模式需要變更`application-main.yml`** **組態檔案，才能在後端應用程式上使用 OAuth 2.0 來啟用 Spring Security。 `.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 Blu Age 團隊在您與 [AWS Professional Services](https://aws.amazon.com/professional-services/) 互動期間提供。

此程式庫會讀取上一個程式碼區塊中顯示的 `application-main.yml` fie 中的`claim.claims`組態。此組態是清單。清單中的每個項目提供兩個值： `claimName`和 `claimMapValue`。 `claimName`代表前端傳送的 JSON Web Token (JWT) 中的金鑰名稱，而 `claimMapValue`是 中的金鑰名稱`SharedContext`。例如，如果您想要在後端擷取使用者 ID，請將 `claimName`設定為 JWT 中的金鑰名稱，該 JWT 會保留由 Microsoft Entra ID `userId`提供的 ，並將 `claimMapValue`設定為金鑰名稱，以在後端程式碼中擷取使用者 ID。

例如，如果您在 `UserId`中設定 `claimMapValue`，您可以使用下列程式碼來擷取使用者 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 Runtime 秘密](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 Runtime 組態 (`application-main.yml`) 中，請確定 JWT 驗證已使用來自 Entra ID 應用程式註冊的確切發行者 URI 和對象值正確設定。

  當字符過期並重新整理時：

  1. 角形應用程式的錯誤攔截器會透過 MSAL 取得新權杖來處理 401 回應。

  1. 新的字符會與後續請求一起傳送。

  1.  AWS Blu Age Runtime 的 OAuth 篩選條件會驗證新的權杖，並自動`SharedContext`更新目前的使用者資訊。這可確保商業邏輯繼續透過`SharedContext.get().getValue()`呼叫存取有效的使用者內容。

  如需 AWS Blu Age Runtime 元件及其更新的詳細資訊，請參閱 [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`物件人口，確認程式庫已成功從 JWTs擷取使用者資訊。
+ **特定宣告組態。**在 中`application-main.yml`，明確定義您需要從 Microsoft Entra ID 取得的宣告。例如，若要擷取使用者的電子郵件和角色，請指定：

  ```
  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 Runtime 和 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 Microsoft Azure 帳戶以建立 Entra ID。 | 如需選項和說明，請參閱 [Microsoft Azure 網站](https://azure.microsoft.com/en-us/free/)。 | 應用程式開發人員 | 
| 在應用程式中設定 Microsoft Entra ID。 | 若要了解如何將 Microsoft Entra ID B2C (Azure AD B2C) 身分驗證新增至您的角度 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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 複製 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> | 應用程式開發人員 | 
| 在 Tomcat 伺服器上部署 AWS Blu Age 現代化程式碼以實作身分驗證。 | 若要設定包含 Tomcat 和 Angular 開發伺服器的本機環境，請遵循 AWS Blu Age 團隊提供的安裝步驟，做為您與 AWS Professional Services 客戶互動的一部分。 | 應用程式開發人員 | 

### 建置身分驗證解決方案
<a name="build-the-authentication-solution"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 啟用 AWS Blu Age Runtime 安全性來保護 AWS Blu Age REST API 端點。 | 設定 AWS Blu Age Runtime 使用`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/zh_tw/prescriptive-guidance/latest/patterns/implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.html) | 應用程式開發人員 | 
| 將來自您本機環境的範例程式碼併入您的 Blu Age 現代化角度程式碼基底。 | 如需有關如何將範例併入您的 AWS Blu Age 現代化角度程式碼庫的資訊，請參閱此模式稍早的[程式碼儲存庫](#implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-tools)一節。 | 應用程式開發人員 | 
| 將程式`oauth2-ext`庫放在共用目錄中。 | 將程式`oauth2-ext`庫放在應用程式伺服器的** **共用目錄中，以便您的** **AWS Blu Age 現代化應用程式可以使用它**。 **執行下列命令：<pre>cd oauth2-ext/target<br />cp extension-oauth-filter-<version>.jar /{app-server-home}/shared/</pre> | 應用程式開發人員 | 

### 部署身分驗證解決方案
<a name="deploy-the-authentication-solution"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 部署前端應用程式。 | 執行下列命令，在本機啟動前端應用程式：<pre>npm install <br />ng serve --ssl<br />npm start</pre>將 `--ssl` 旗標新增至 `ng serve`命令可確保開發伺服器使用 HTTPS，這比其他通訊協定更安全，並提供更好的生產環境模擬。 | 應用程式開發人員 | 
| 啟動後端應用程式。 | 在 Eclipse 中啟動 Tomcat 伺服器。 | 應用程式開發人員 | 

### 測試應用程式。
<a name="test-the-application"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 測試登入功能。 | 在 存取本機部署的應用程式，`http://localhost:4200`以確認要求使用者確認其身分。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/zh_tw/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 流程](https://authguidance.com/azure-ad-troubleshooting/)。 OAuth  | 
| 一般字符相關問題。 | 若要解碼和檢視 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 身分平台中的 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>

*Vaidy Sankaran 和 Pablo Alonso Prieto，Amazon Web Services*

*Robert Lemieux 和 Huseyin Gomleksizoglu，斯通堡*

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

注意： AWS Mainframe Modernization 服務 （受管執行期環境體驗） 不再開放給新客戶。對於類似 AWS Mainframe Modernization Service （受管執行期環境體驗） 的功能，請探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS Mainframe Modernization 可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

此模式說明如何將[stonebranch Universal Automation Center (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](https://aws.amazon.com/mainframe-modernization/patterns/replatform/) with Micro Focus Enterprise technology 和 [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) with AWS Blu Age。 

stonebranch UAC 是即時 IT 自動化和協同運作平台。UAC 旨在自動化和協調混合式 IT 系統的任務、活動和工作流程，從內部部署到 AWS。使用大型主機系統的企業用戶端正在轉換至以雲端為中心的現代化基礎設施和應用程式。stonebranch 的工具和專業服務有助於將現有的排程器和自動化功能遷移至 AWS 雲端。

當您使用 AWS Mainframe Modernization 服務將大型主機程式遷移或現代化至 AWS 雲端時，您可以使用此整合來自動化批次排程、提高敏捷性、改善維護並降低成本。

此模式提供將[stonebranch 排程器](https://www.stonebranch.com/)與遷移至 AWS Mainframe Modernization 服務 Micro Focus Enterprise 執行期的大型主機應用程式整合的指示。此模式適用於解決方案架構師、開發人員、顧問、遷移專家，以及其他在遷移、現代化、操作或 DevOps 工作的人員。

**目標成果**

此模式著重於提供下列目標結果：
+ 能夠排程、自動化和執行從stonebranch Universal Controller 在 AWS Mainframe Modernization 服務 (Microfocus 執行時間） 中執行的大型主機批次任務。
+ 從stonebranch 通用控制器監控應用程式的批次程序。
+ 從stonebranch 通用控制器自動或手動啟動Start/Restart/Rerun/停止批次處理。
+ 擷取 AWS Mainframe Modernization 批次程序的結果。
+ 在stonebranch Universal Controller 中擷取批次任務的 [AWS CloudWatch](https://aws.amazon.com/cloudwatch/) 日誌。

## 先決條件和限制
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-prereqs"></a>

**先決條件**
+ 作用中的 AWS 帳戶
+ 具有任務控制語言 (JCL) 檔案的 Micro Focus [Bankdemo](https://d1vi4vxke6c2hu.cloudfront.net/demo/bankdemo_runtime.zip) 應用程式，以及在 AWS Mainframe Modernization 服務 (Micro Focus 執行時間） 環境中部署的批次程序
+ 如何建置和部署在 Micro Focus [Enterprise Server](https://www.microfocus.com/media/data-sheet/enterprise_server_ds.pdf) 上執行之大型主機應用程式的基本知識
+ 對stonebranch Universal Controller 的基本了解
+ stonebranch 試用授權 （請聯絡[stonebranch](https://www.stonebranch.com/))
+ Windows 或 Linux Amazon Elastic Compute Cloud (Amazon EC2) 執行個體 （例如 xlarge)，至少包含四個核心、8 GB 記憶體和 2 GB 磁碟空間
+ Apache Tomcat 8.5.x 或 9.0.x 版
+ Oracle Java 執行期環境 (JRE) 或 OpenJDK 版本 8 或 11
+ [Amazon Aurora MySQL 相容版本](https://aws.amazon.com/rds/aurora/)
+ 匯出儲存庫的 [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/) 儲存貯體
+ [Amazon Elastic File System (Amaon EFS)](https://aws.amazon.com/efs/) 適用於代理程式stonebranch Universal Message Service (OMS) 連線，以實現高可用性 (HA)
+ stonebranch Universal Controller 7.2 Universal Agent 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 服務。
+ 此任務排程範本僅適用於 Gemlibranch 代理程式的 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)頁面，然後選擇服務的連結。

## Architecture
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-architecture"></a>

**目標狀態架構**

下圖顯示此試驗所需的 AWS 環境範例。

![\[stonebranch UAC 與 AWS Mainframe Modernization 環境互動。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/4a7bea37-0a5b-4663-902b-9b051e92f0cb.png)


1. 斯通堡國際自動化中心 (UAC) 包含兩個主要元件：通用控制器和通用代理程式。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 大型主機現代化服務連結的 S3 儲存貯體中存在的 JCL 檔案名稱啟動批次任務。

   1. 取得批次任務執行的狀態。

   1. 等待批次任務執行完成。

   1. 擷取批次任務執行的日誌。

   1. 重新執行失敗的批次任務。

   1. 在任務執行時取消批次任務。

1. stonebranch UAC 可以為應用程式執行下列函數：

   1. 啟動應用程式

   1. 取得應用程式的狀態

   1. 等待應用程式啟動或停止

   1. 停止應用程式

   1. 應用程式操作的擷取日誌

**stonebranch 任務轉換**

下圖代表在現代化旅程中，Stonebranch 的任務轉換程序。它說明如何將任務排程和任務定義轉換為可執行 AWS Mainframe Modernization 批次任務的相容格式。

![\[從大型主機到 Amazon EC2 上任務排程器的程序，以及 Amazon S3 中的 JCL 檔案。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/4d2ed890-f143-455e-8180-4d967b71c494.png)


1. 對於轉換程序，任務定義會從現有的大型主機系統匯出。

1. JCL 檔案可以上傳到 Mainframe Modernization 應用程式的 S3 儲存貯體，以便 AWS Mainframe Modernization 服務可以部署這些 JCL 檔案。

1. 轉換工具會將匯出的任務定義轉換為 UAC 任務。

1. 建立所有任務定義和任務排程後，這些物件將匯入至通用控制器。轉換後的任務接著會在 AWS Mainframe Modernization 服務中執行程序，而不是在大型主機上執行。

**stonebranch UAC 架構**

下列架構圖代表高可用性 (HA) 通用控制器的active-active-passive模型。stonebranch UAC 部署在多個可用區域中，以提供高可用性並支援災難復原 (DR)。

![\[具有 DR 和控制器、Amazon EFS、Aurora 和 S3 儲存貯體的異地同步備份環境。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/3f94b855-c146-4fcb-902c-5d343438a558.png)


*通用控制器*

兩個 Linux 伺服器佈建為通用控制器。兩者都連接到相同的資料庫端點。每個伺服器都包含一個通用控制器應用程式和 OMS。最新版本的 Universal Controller 會在佈建時使用。

通用控制器部署在 Tomcat Webapp 中做為文件 ROOT，並在連接埠 80 上提供。此部署可簡化前端負載平衡器的組態。

HTTP over TLS 或 HTTPS 是使用stonebranch 萬用字元憑證啟用的 （例如，`https://customer.stonebranch.cloud`)。這可保護瀏覽器與應用程式之間的通訊。

*OMS*

通用代理程式和 OMS (Opswise Message Service) 位於每個通用控制器伺服器上。所有從客戶端部署的 Universal Agent 都會設定為連線至這兩個 OMS 服務。OMS 做為通用代理程式和通用控制器之間的常見傳訊服務。

Amazon EFS 會在每個伺服器上掛載多工緩衝處理目錄。OMS 使用此共用多工緩衝處理目錄來保留控制器和代理程式的連線和任務資訊。OMS 可在高可用性模式中運作。如果作用中 OMS 故障，被動 OMS 可以存取所有資料，並自動恢復作用中的操作。通用代理程式會偵測此變更，並自動連線至新的作用中 OMS。

*資料庫*

Amazon Relational Database Service (Amazon RDS) 存放 UAC 資料庫，Amazon Aurora MySQL 相容做為其引擎。Amazon RDS 有助於定期管理和提供排程備份。兩個通用控制器執行個體都連接到相同的資料庫端點。

*負載平衡器*

每個執行個體都會設定 Application Load Balancer。負載平衡器會在任何指定時間將流量導向作用中的控制器。您的執行個體網域名稱會指向個別的負載平衡器端點。

*URLs*

每個執行個體都有一個 URL，如下列範例所示。


| 
| 
| Environment | 執行個體 | 
| --- |--- |
| **生產** | `customer.stonebranch.cloud` | 
| **開發 （非生產）** | `customerdev.stonebranch.cloud` | 
| **測試 （非生產）** | `customertest.stonebranch.cloud` | 

**注意**  
  您可以根據您的需求設定非生產執行個體名稱。

*高可用性*

高可用性 (HA) 是系統在指定期間內持續運作而不會失敗的能力。此類故障包括但不限於儲存體、CPU 或記憶體問題導致的伺服器通訊回應延遲，以及網路連線能力。

若要符合 HA 要求：
+ 所有 EC2 執行個體、資料庫和其他組態都會鏡像在同一 AWS 區域內的兩個不同可用區域。
+ 控制器是透過 Amazon Machine Image (AMI) 在兩個可用區域的兩個 Linux 伺服器上佈建。例如，如果您在歐洲 eu-west-1 區域中佈建 ，則您在可用區域 eu-west-1a 和可用區域 eu-west-1c 中有通用控制器。
+ 不允許任何任務直接在應用程式伺服器上執行，也不允許將資料存放在這些伺服器上。
+ Application Load Balancer 會在每個 Universal Controller 上執行運作狀態檢查，以識別作用中的控制器，並將流量導向其中。如果一個伺服器發生問題，負載平衡器會自動將被動通用控制器提升為作用中狀態。然後，負載平衡器會從運作狀態檢查中識別新的作用中 Universal Controller 執行個體，並開始引導流量。容錯移轉會在四分鐘內發生，不會遺失任務，且前端 URL 保持不變。
+ Aurora MySQL 相容資料庫服務存放通用控制器資料。對於生產環境，資料庫叢集會在單一 AWS 區域內的兩個不同可用區域中建置兩個資料庫執行個體。兩個通用控制器都使用指向單一資料庫叢集端點的 Java Database Connectivity (JDBC) 介面。如果一個資料庫執行個體發生問題，資料庫叢集端點會動態指向運作狀態良好的執行個體。不需要手動介入。

*備份和清除*

stonebranch Universal Controller 設定為遵循表格中顯示的排程來備份和清除舊資料。


| 
| 
| Type | Schedule | 
| --- |--- |
| **活動** | 7 天 | 
| **稽核** | 90 天 | 
| **歷程記錄** | 60 天 | 

早於顯示日期的備份資料會匯出為 .xml 格式，並存放在檔案系統中。備份程序完成後，較舊的資料會從資料庫清除，並封存在 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 雲端原生平台，可協助您將大型主機應用程式現代化為 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 雲端中設定、操作和擴展關聯式資料庫。此模式使用 Amazon Aurora MySQL 相容版本。
+ [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) 會將傳入的應用程式或網路流量分散到多個目標。例如，您可以在一或多個可用區域中將流量分配到 Amazon EC2 執行個體、容器和 IP 地址。此模式使用 Application Load Balancer。

**斯通布蘭奇**
+ [Universal Automation Center (UAC)](https://stonebranchdocs.atlassian.net/wiki/spaces/SD/pages/239239169/Universal+Automation+Center) 是企業工作負載自動化產品的系統。此模式使用下列 UAC 元件：
  + [Universal Controller](https://www.stonebranch.com/documentation-universal-controller) 是在 Tomcat Web 容器中執行的 Java Web 應用程式，是 Universal Automation Center 的企業任務排程器和工作負載自動化代理程式解決方案。控制器提供用於建立、監控和設定控制器資訊的使用者介面；處理排程邏輯；處理所有往返 Universal Agents 的訊息；以及同步 Universal Automation Center 的大部分高可用性操作。
  + [Universal Agent](https://www.stonebranch.com/documentation-universal-agent) 是獨立於廠商的排程代理程式，可在所有主要運算平台上與現有的任務排程器協同合作，包括舊版和分散式。支援在 z/Series、i/Series、Unix、Linux 或 Windows 上執行的所有排程器。
+ [Universal Agent](https://www.stonebranch.com/documentation-universal-agent) 是獨立於廠商的排程代理程式，可在所有主要運算平台上與現有的任務排程器協同合作，包括舊版和分散式。支援在 z/Series、i/Series、Unix、Linux 或 Windows 上執行的所有排程器。
+ [stonebranch aws-mainframe-modernization-stonebranch-integration AWS Mainframe Modernization Universal Extension](https://github.com/aws-samples/aws-mainframe-modernization-stonebranch-integration/releases) 是在 AWS Mainframe Modernization 平台中執行、監控和重新執行批次任務的整合範本。

**Code**

此模式的程式碼可在 [aws-mainframe-modernization-stonebranch-integration](https://github.com/aws-samples/aws-mainframe-modernization-stonebranch-integration/releases/) GitHub 儲存庫中使用。

## 史詩
<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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 下載安裝檔案。 | 從stonebranch 伺服器下載安裝。若要取得安裝檔案，請聯絡stonebranch。 | 雲端架構師 | 
| 啟動 EC2 執行個體。 | 您將需要大約 3 GB 的額外空間來安裝通用控制器和通用代理程式。因此，請為執行個體提供至少 30 GB 的磁碟空間。將連接埠 8080 新增至安全群組，以便存取。 | 雲端架構師 | 
| 檢查先決條件。 | 在安裝之前，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | 雲端架構師、Linux 管理員 | 
| 安裝 Universal Agent。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | 通用控制器管理員 | 

### 匯入 AWS Mainframe Modernization Universal Extension 並建立任務
<a name="import-aws-mainframe-modernization-universal-extension-and-create-a-task"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 匯入整合範本。 | 在此步驟中，您需要 [AWS Mainframe Modernization Universal Extension](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/zh_tw/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html)匯入整合範本後，您會在**可用服務**下看到 **AWS Mainframe Modernization Tasks**。 | 通用控制器管理員 | 
| 啟用可解析的登入資料。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | 通用控制器管理員 | 

### 測試開始批次任務
<a name="test-starting-a-batch-job"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 為批次任務建立任務。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | 通用控制器管理員 | 

### 為多個任務建立工作流程
<a name="create-a-workflow-for-multiple-tasks"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 複製任務。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Univeral Controller 管理員 | 

### 故障診斷失敗的批次任務並重新執行
<a name="troubleshoot-failed-batch-jobs-and-rerun"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 修正失敗的任務並重新執行。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | 通用控制器管理員 | 

### 建立啟動應用程式和停止應用程式任務
<a name="create-start-application-and-stop-application-tasks"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立啟動應用程式動作。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | 通用控制器管理員 | 

### 建立取消批次執行任務
<a name="create-a-cancel-batch-execution-task"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立取消批次動作。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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)
+ [Xpress 轉換工具](https://www.stonebranch.com/resources/xpress-conversion-windows)

## 其他資訊
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-additional"></a>

**工作流程編輯器中的圖示**

![\[頂端的 RUNHELLO 任務、中間的 FOOBAR，以及第三層的其餘任務。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/837430ee-3159-4fe2-8e17-65168294ef1e.png)


**所有已連線的任務**

![\[RUNHELLO 連接到 FOOBAR，該 FOOBAR 連接到其餘三個任務。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/fe483348-9a6f-450b-87e6-ceae6b2bdaad.png)


**工作流程狀態**

![\[FOOBAR 任務失敗，其餘三個任務正在等待。\]](http://docs.aws.amazon.com/zh_tw/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>

*Prachi Khanna 和 Bopath GOPALSAMY，Amazon Web Services*

## 總結
<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](https://www.precisely.com/product/precisely-connect/connect) from Precisely，將虛擬儲存存取方法 (VSAM) 檔案從大型主機遷移並複寫至 AWS 雲端中的目標環境。此模式涵蓋的目標環境包括 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 檔案的更新，然後將這些更新傳輸到一或多個 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 復原日誌已開啟
+ （選用） [CICS VSAM 復原版本 (CICS VR)](https://www.ibm.com/docs/en/cics-vr/5.1?topic=started-introducing-cics-vr) 以自動擷取 CDC 日誌
+ 作用中的 AWS 帳戶
+ [Amazon Virtual Private Cloud (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html)，具有傳統平台可存取的子網路
+ 來自 Precisely 的 VSAM Connect 授權

**限制**
+ Connect 不支援根據來源 VSAM 結構描述或複製手冊自動建立目標資料表。您必須首次定義目標資料表結構。
+ 對於非串流目標，例如 Amazon RDS，您必須在套用引擎組態指令碼中指定目標映射的轉換來源。
+ 記錄、監控和提醒功能是透過 APIs且需要外部元件 （例如 Amazon CloudWatch) 才能完全運作。

**產品版本**
+ z/OS 的 SQData 40134
+ Amazon Elastic Compute Cloud (Amazon EC2) 上 Amazon Linux Amazon Machine Image (AMI) 的 SQData 4.0.43

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

**來源技術堆疊**
+ 任務控制語言 (JCL)
+ z/OS Unix shell 和互動式系統生產力設施 (ISPF)
+ VSAM 公用程式 (IDCAMS)

**目標技術堆疊**
+ Amazon EC2
+ Amazon MSK
+ Amazon RDS
+ Amazon VPC

**目標架構**

*將 VSAM 檔案遷移至 Amazon RDS*

下圖顯示如何在來源環境 （內部部署大型主機） 中使用 CDC 代理程式/發佈者，以及在目標環境 (AWS 雲端） 中使用[套用引擎](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/zh_tw/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 Daemon 會驗證來源和目標環境之間的通訊。

1. 目標環境中的套用引擎會從發佈者代理程式接收變更，並將其套用至關聯式或非關聯式資料庫。

圖表顯示下列線上工作流程：

1. Connect 會使用日誌複寫擷取線上檔案中的變更，然後將擷取的變更串流至日誌串流。

1. 發佈者會從系統日誌串流取用資料。

1. 發佈者會透過 TCP/IP 將擷取的資料變更傳達給目標引擎。控制器協助程式會驗證來源和目標環境之間的通訊。

1. 目標環境中的套用引擎會從發佈者代理程式接收變更，然後將其套用至關聯式或非關聯式資料庫。

*將 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/zh_tw/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 將擷取的資料變更傳達給目標引擎。控制器協助程式會驗證來源和目標環境之間的通訊。

1. 在平行處理模式下操作的複寫器引擎會將資料分割為工作快取單位。

1. 工作者執行緒會從快取擷取資料。

1. 資料會從工作者執行緒發佈至 Amazon MSK 主題。

1. 使用者使用[連接器](https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-connectors.html)，將 Amazon MSK 的變更套用至 Amazon DynamoDB、Amazon Simple Storage Service (Amazon S3) 或 Amazon OpenSearch Service 等目標。

圖表顯示下列線上工作流程：

1. 使用日誌複寫擷取線上檔案中的變更。擷取的變更會串流至日誌串流。

1. 發佈者會從系統日誌串流取用資料。

1. 發佈者會透過 TCP/IP 將擷取的資料變更傳達給目標引擎。控制器協助程式會驗證來源和目標環境之間的通訊。

1. 在平行處理模式下操作的複寫器引擎會將資料分割為工作快取單位。

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 雲端中設定、操作和擴展關聯式資料庫。

## 史詩
<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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 安裝 Connect CDC 4.1。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | IBM 大型主機開發人員/管理員 | 
| 設定 zFS 目錄。 | 若要設定 zFS 目錄，請遵循精確文件中 [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 Systems Services 檔案系統中 （稱為 zFS)。Controller Daemon、Capture、Storage 和 Publisher 代理程式需要預先定義的 zFS 目錄結構，才能存放少量檔案。 | IBM 大型主機開發人員/管理員 | 
| 設定 TCP/IP 連接埠。 | 若要設定 TCP/IP 連接埠，請遵循精確文件中 [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)的指示。Controller Daemon 需要來源系統的 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)，請遵循精確文件中[建立 z/OS 系統 logStreams](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 使用 logstream 在遷移期間擷取和串流來源環境和目標環境之間的資料。如需建立 z/OS LogStream 的範例 JCL，請參閱精確文件中的[建立 z/OS 系統 logStreams](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 使用者和已啟動任務IDs。 | 使用 RACF 授予 OMVS zFS 檔案系統的存取權。如需範例 JCL，請參閱精確文件中的[識別和授權 zFS 使用者和啟動的任務 IDs](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 以產生金鑰對。如需範例，請參閱此模式*額外資訊*區段中的*金鑰對範例*。如需說明，請參閱精確文件中的[產生 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 Log Replicate 並將其連接至日誌串流。 | 執行下列 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/zh_tw/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/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | IBM 大型主機開發人員/管理員 | 
| 啟用 logstream。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 EC2 執行個體上精確安裝 。 | 若要在 Amazon EC2 的 Amazon Linux AMI 上從 Precisely 安裝 Connect，請遵循 Precisely 文件中 [UNIX 上的 Install 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 連接埠。 | 若要修改安全群組以包含用於傳入和傳出存取的控制器協助程式連接埠，請遵循精確文件中 [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 | 
| 建立套用引擎處理的指令碼。 | 建立套用引擎的指令碼，以處理來源資料並將來源資料複寫至目標。如需詳細資訊，請參閱精確文件中[的建立套用引擎指令碼](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`命令來執行指令碼。如需詳細資訊，請參閱精確說明文件中[剖析 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 驗證用於 CDC 處理的 VSAM 檔案和目標資料表清單。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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、大型主機 | 

### 執行並驗證測試案例 （批次）
<a name="run-and-validate-test-cases-batch"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在大型主機中執行批次任務。 | 使用修改過的 JCL 執行批次應用程式任務。在修改後的 JCL 中包含執行下列動作的步驟：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | 一般 AWS、大型主機 | 
| 檢查日誌串流。 | 檢查 logstream 以確認您可以查看已完成大型主機批次任務的變更資料。 | 一般 AWS、大型主機 | 
| 驗證來源差異變更和目標資料表的計數。 | 若要確認記錄的高度，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 CICS 區域中執行線上交易。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | IBM 大型主機開發人員 | 
| 檢查日誌串流。 | 確認日誌串流已填入特定的記錄層級變更。 | AWS Mainframe 開發人員 | 
| 驗證目標資料庫中的計數。 | 監控 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) （準確文件）
+ [複寫器引擎](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Replicator-engine) （正確文件）
+ [日誌串流 ](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 來產生金鑰對：

```
//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>

*Santosh Kumar Singh 和 Cheryl du Preez，Amazon Web Services*

## 摘要
<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 可以加速決策並增強操作敏捷性和遷移效率。

此模式提供step-by-step指示，協助您 AWS Transform 使用 [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo) 來測試 的大型主機現代化功能，這是範例開放原始碼大型主機應用程式。

## 先決條件和限制
<a name="modernize-carddemo-mainframe-app-prereqs"></a>

**先決條件**
+ 作用中 AWS 帳戶
+ AWS IAM Identity Center，[已啟用](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)
+ 允許管理員啟用 [的許可](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 Web 應用程式的 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 區域。如需支援區域的完整清單，請參閱[支援的 區域 AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/regions.html)。
+ AWS Transform 支援從常見商業導向語言 (COBOL) 到 Java 的程式碼分析、文件產生、業務規則擷取、分解和重構。如需詳細資訊，請參閱[功能和主要功能](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-features)，以及[大型主機應用程式轉換支援的檔案類型](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-supported-files)。
+ 中有大型主機轉換功能的服務配額 AWS Transform。如需詳細資訊，請參閱 [的配額 AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/transform-limits.html)。
+ 若要在共用工作區上協作，所有使用者都必須是與 AWS Transform Web 應用程式執行個體 AWS IAM Identity Center 相關聯的相同 執行個體的註冊使用者。
+ Amazon S3 儲存貯體和 AWS Transform 必須位於相同的 AWS 帳戶 和 區域。

## Architecture
<a name="modernize-carddemo-mainframe-app-architecture"></a>

下圖顯示您在此模式中設定的架構。

![\[使用 AWS 轉換來現代化存放在 Amazon S3 儲存貯體中的大型主機應用程式。\]](http://docs.aws.amazon.com/zh_tw/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 Identity Center 來管理使用者存取和身分驗證。系統會實作多層安全控制以進行身分驗證、授權、加密和存取管理，以協助在處理期間保護程式碼和成品。使用者透過聊天界面與 AWS Transform 客服人員互動。您可以為 AI 代理器提供英文特定任務的說明。如需詳細資訊，請參閱 AWS Transform 文件[中的循環中的人工 (HITL)](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-hitl)。

1. AI 代理程式會解譯使用者的指示、建立任務計畫、將任務分割為可執行任務，以及自動執行動作。使用者可以檢閱和核准轉換。轉換任務包括下列項目：
   + **程式碼分析** – AWS Transform 分析每個檔案中的程式碼，以取得檔案名稱、檔案類型、程式碼行及其路徑等詳細資訊。代理程式會分析原始程式碼、執行分類、建立相依性映射，以及識別任何遺失的成品。它也會識別重複的元件。
   + **文件產生** – AWS Transform 產生大型主機應用程式的文件。透過分析程式碼，它可以自動建立應用程式的詳細文件，包括存在於舊版系統中的商業邏輯、流程、整合和相依性的說明。
   + **業務邏輯擷取** - AWS Transform 分析 COBOL 程式以記錄其核心業務邏輯，協助您了解基本業務邏輯。
   + **程式碼分解** – 將程式碼 AWS Transform 分解為考量程式與元件之間相依性的網域。將相同網域中的相關檔案和程式分組可改善組織，並在將其分解為較小的元件時協助保留應用程式的邏輯結構。
   + **遷移波動規劃** – 根據您在分解階段建立的網域， 會以建議的現代化順序 AWS Transform 產生遷移波動計劃。
   + **程式碼重構** – 將所有或所選網域檔案中的程式碼 AWS Transform 重構為 Java 程式碼。此步驟的目標是保留應用程式的關鍵商業邏輯，同時將其重構為現代化、雲端最佳化的 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 資源。
   + 使用 [Reforge](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-refactor-code-reforge) 透過使用大型語言模型 (LLMs) 來改善重構程式碼的品質。重構引擎會保留 COBOL 的功能等效性，同時將其轉換為 Java 程式碼。Reforge 是轉換後可用的選用步驟。此步驟使用 LLMs 來重組程式碼，使其與原生 Java 非常相似，這可以改善可讀性和可維護性。Reforge 也新增了人類可讀的註解，以協助您了解程式碼，並實作現代編碼模式和最佳實務。

## 工具
<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 Identity Center](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>
+ **從小**開始 – 從較不複雜的小程式碼 (15，000–20，000 行程式碼） 開始，以了解 如何 AWS Transform 分析和轉換大型主機應用程式。
+ **結合人類專業知識** – 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立儲存貯體。 | 在啟用 的相同 AWS 帳戶 和區域中建立 Amazon S3 AWS Transform 儲存貯體。您可以使用此儲存貯體來存放大型主機應用程式程式碼， 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/zh_tw/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html) | 應用程式開發人員、DevOps 工程師 | 

### 設定 IAM Identity Center 和 AWS Transform
<a name="configure-sso-and-trn"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將使用者新增至 IAM Identity Center。 | 將您的潛在使用者新增至 IAM Identity Center。遵循 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/zh_tw/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html) | AWS 管理員 | 
| 設定使用者存取 AWS Transform Web 應用程式。 | 每個使用者都必須接受存取 AWS Transform Web 應用程式的邀請。遵循 AWS Transform 文件中[接受邀請](https://docs.aws.amazon.com/transform/latest/userguide/transform-user-onboarding.html#transform-user-invitation)的指示。 | 應用程式開發人員、應用程式擁有者 | 
| 登入 AWS Transform Web 應用程式。 | 遵循[登入 AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/transform-user-onboarding.html#transform-user-signin)中的指示。 | 應用程式開發人員、應用程式擁有者 | 
| 設定工作區。 | 設定工作區，讓使用者可以在 AWS Transform Web 應用程式中協作。請遵循 AWS Transform 文件中[啟動專案](https://docs.aws.amazon.com/transform/latest/userguide/transform-environment.html#start-workflow)中的指示。 | AWS 管理員 | 

### 轉換大型主機應用程式
<a name="transform-the-mainframe-application"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立轉換任務。 | 建立轉換任務以現代化 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**。 | 應用程式開發人員、應用程式擁有者 | 
| 設定連接器。 | 建立 Amazon S3 儲存貯體的連接器，其中包含 CardDemo 大型主機應用程式。此連接器允許 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/zh_tw/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/zh_tw/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/zh_tw/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-extract-business-logic)。 | 應用程式開發人員、應用程式擁有者 | 
| 分解程式碼。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html) | 應用程式開發人員、應用程式擁有者 | 
| （選用） 使用 Reforge 改善 Java 程式碼。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 提供基礎設施作為程式碼 (IaC) 範本。這些範本可協助您部署核心元件，包括運算、資料庫、儲存和安全資源。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 Web 應用程式中檢視原始程式碼或產生的文件。 | 將政策新增至 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 代理器搭配 加速您的大型主機現代化旅程 AWS Transform](https://aws.amazon.com/blogs/migration-and-modernization/accelerate-your-mainframe-modernization-journey-using-ai-agents-with-aws-transform/)(AWS 部落格文章）
+ [AWS Transform FAQs](https://aws.amazon.com/transform/faq/)
+ [AWS IAM Identity Center FAQs](https://aws.amazon.com/iam/identity-center/faqs/)

**影片和教學課程**
+ [Amazon Q 開發人員簡介：轉換](https://explore.skillbuilder.aws/learn/courses/21893/aws-flash-introduction-to-amazon-q-developer-transform)AWS （技能建置器）
+ [AWS re：Invent 2024 - 使用 Amazon Q Developer (YouTube) 更快速地現代化大型主機應用程式](https://www.youtube.com/watch?v=pSi0XtYfY4o) YouTube
+ [AWS re：Invent 2024 - 自動化遷移和現代化以加速轉型](https://www.youtube.com/watch?v=9FjxnEoH5wg) (YouTube)
+ [AWS re：Invent 2024 - Toyota 透過新一代 AI (YouTube) 推動創新並增強營運效率](https://www.youtube.com/watch?v=_NXc1MJenw4) YouTube

**注意**  
AWS Transform 先前稱為*大型主機的 Amazon Q Developer 轉換*。

# 使用 和 Terraform 現代化 AWS Transform 和部署大型主機應用程式
<a name="modernize-mainframe-app-transform-terraform"></a>

*Mason Cahill、Qandi、Prachi Khanna、Sivasubramanian Ramani 和 Santosh Kumar Singh，Amazon Web Services*

## 摘要
<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 基礎設施。這些step-by-step說明可協助您將 [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo) 轉換為從 COBOL 到現代 Java 應用程式的範例開放原始碼大型主機應用程式。

## 先決條件和限制
<a name="modernize-mainframe-app-transform-terraform-prereqs"></a>

**先決條件**
+ 作用中 AWS 帳戶
+ 建立 AWS 資源和部署應用程式的管理許可
+ Terraform 1.5.7 版或更新版本，[已設定](https://developer.hashicorp.com/terraform/tutorials/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS)
+ AWS Terraform 提供者，[已設定](https://registry.terraform.io/providers/hashicorp/aws/2.36.0/docs#authentication)
+ AWS IAM Identity Center，[已啟用](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)
+ AWS Transform，[已啟用](https://docs.aws.amazon.com/transform/latest/userguide/getting-started.html)
+ [加入](https://docs.aws.amazon.com/transform/latest/userguide/transform-user-management.html) AWS Transform 工作區的使用者，具有可執行轉換任務的貢獻者角色

**限制**
+ AWS Transform 僅適用於部分 AWS 區域。如需支援區域的完整清單，請參閱 [支援的 區域 AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/regions.html)。
+ 中有大型主機轉換功能的服務配額 AWS Transform。如需詳細資訊，請參閱 [的配額 AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/transform-limits.html)。
+ 若要在共用工作區上協作，所有使用者都必須是與 AWS Transform Web 應用程式執行個體 AWS IAM Identity Center 相關聯的相同 執行個體的註冊使用者。
+ Amazon Simple Storage Service (Amazon S3) 儲存貯體 和 AWS Transform 必須位於相同的 AWS 帳戶 和 區域。

## Architecture
<a name="modernize-mainframe-app-transform-terraform-architecture"></a>

下圖顯示舊版應用程式和部署至 的end-to-end現代化 AWS 雲端。應用程式和資料庫登入資料存放在 中 AWS Secrets Manager，Amazon CloudWatch 提供監控和記錄功能。

![\[AWS 透過 Terraform 將大型主機應用程式和部署現代化。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/78bc1e6e-cd3d-4c6d-ae4b-0675a6898fd9/images/332ccf35-f55a-449e-a05d-7e321b3867b7.png)


該圖顯示以下工作流程：

1. 透過 AWS IAM Identity Center，使用者會在 AWS Transform 中驗證和存取 AWS 帳戶。

1. 使用者將 COBOL 大型主機程式碼上傳至 Amazon S3 儲存貯體，並在其中啟動轉換 AWS Transform。

1. AWS Transform 將 COBOL 程式碼現代化為雲端原生 Java 程式碼，並將現代化程式碼存放在 Amazon S3 儲存貯體中。

1. Terraform 會建立 AWS 基礎設施來部署現代化應用程式，包括 Application Load Balancer、Amazon Elastic Compute Cloud (Amazon EC2) 執行個體和 Amazon Relational Database Service (Amazon RDS) 資料庫。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 Identity Center](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 雲端。
+ [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 容器和 Web 伺服器。
+ [HashiCorp Terraform](https://www.terraform.io/docs) 是一種基礎設施即程式碼 (IaC) 工具，可協助您使用程式碼來佈建和管理雲端基礎設施和資源。
+ [Spring Boot](https://spring.io/projects/spring-boot) 是一種開放原始碼架構，建置在 Java 中的 Spring Framework 之上。

**程式碼儲存庫**

此模式的程式碼可在 GitHub [大型主機轉換 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立儲存貯體。 | 在啟用 的相同 AWS 帳戶 和區域中建立 Amazon S3 AWS Transform 儲存貯體。您可以使用此儲存貯體來存放建置和執行應用程式所需的大型主機應用程式程式碼、資料和其他指令碼。 AWS Transform 使用此儲存貯體來存放重構程式碼和與轉換相關聯的其他檔案。如需說明，請參閱 Amazon S3 文件中的 [建立儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) 體。 | 一般 AWS、AWS 管理員 | 
| 設定儲存貯體的 CORS 許可。 | 設定儲存貯體進行 AWS Transform 存取時，您需要為儲存貯體設定跨來源資源共用 (CORS)。如果未正確設定，您可能無法使用 的內嵌檢視或檔案比較功能 AWS Transform。如需如何為儲存貯體設定 CORS 的說明，請參閱[在 Amazon S3 儲存貯體中使用跨來源資源共用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html)。 Amazon S3 如需政策，請參閱 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/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | General AWS，應用程式開發人員 | 

### 轉換大型主機應用程式
<a name="transform-the-mainframe-application"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 AWS Transform 任務。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、應用程式擁有者 | 
| 設定連接器。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、應用程式擁有者 | 
| 轉換程式碼。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、應用程式擁有者 | 

### 透過 Terraform 部署基礎設施
<a name="deploy-the-infrastructure-through-terraform"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 更新範本。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/)。 | General AWS、AWS 管理員 | 
| 部署基礎設施。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 安裝所需的軟體。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、遷移工程師 | 
| 驗證軟體安裝。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、遷移工程師 | 

### 編譯和封裝現代化應用程式程式碼
<a name="compile-and-package-the-modernized-application-code"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 下載並擷取產生的程式碼。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、遷移工程師 | 
| 建置現代化應用程式。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、遷移工程師 | 

### 遷移資料庫
<a name="migrate-the-database"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立資料庫和 JICS 結構描述。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、遷移工程師 | 
| 驗證資料庫建立。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、遷移工程師 | 
| 將資料遷移至 JICS 資料庫。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、遷移工程師 | 

### 安裝現代化應用程式
<a name="install-the-modernized-application"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 Amazon EC2 執行個體上安裝現代化應用程式。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、雲端架構師 | 
| 重新啟動 Tomcat 伺服器。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、雲端架構師 | 
| 遷移 VSAM 資料集。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、遷移工程師 | 
| 更新 Groovy 指令碼中的參數。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員 | 

### 測試應用程式。
<a name="test-the-application"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 測試現代化應用程式。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、測試工程師 | 
| 驗證批次指令碼。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 應用程式開發人員、測試工程師 | 

### 清除
<a name="clean-up"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 準備刪除基礎設施。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 一般 AWS | 
| 刪除基礎設施。 | 這些步驟將永久刪除您的 資源。在繼續之前，請確定您已備份任何重要資料。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 
| Tomcat 相關錯誤 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 方案指引**
+ [使用 AWS Transform 現代化 CardDemo 大型主機應用程式](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 Runtime 的基礎設施設定需求 （非受管）](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 Runtime 的組態](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-config.html)

**AWS 部落格文章**
+ [使用 AI 代理器搭配 加速您的大型主機現代化旅程 AWS Transform](https://aws.amazon.com/blogs/migration-and-modernization/accelerate-your-mainframe-modernization-journey-using-ai-agents-with-aws-transform/)

# AWS 使用 Rocket Enterprise Server 和 LRS PageCenterX 在 上現代化大型主機輸出管理
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx"></a>

*Shubham Roy，Amazon Web Services*

*Abraham Rondon，微型焦點*

*Guy Tucker、Levi、Ray 和 Shoup Inc*

## 總結
<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/)主機現代化方法為基礎。大型主機應用程式會由 Amazon Elastic Compute Cloud (Amazon EC2) 上的 [AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html) 進行遷移。大型主機輸出管理工作負載會遷移至 Amazon EC2，而大型主機資料庫，例如 z/OS 的 IBM Db2，則會遷移至 Amazon Relational Database Service (Amazon RDS)。LRS Directory Integration Server (LRS/DIS) 可與 AWS Directory Service for Microsoft Active Directory 搭配使用，以進行輸出管理工作流程身分驗證和授權。

## 先決條件和限制
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-prereqs"></a>

**先決條件**
+ 作用中的 AWS 帳戶
+ 大型主機輸出管理工作負載。
+ 如何重建和交付在 Rocket Enterprise Server 上執行之大型主機應用程式的基本知識。如需詳細資訊，請參閱 [Rocket 軟體文件中的 Rocket Enterprise Server](https://www.rocketsoftware.com/sites/default/files/resource_files/enterprise-server.pdf) 資料表。
+ LRS 雲端列印解決方案和概念的基本知識。如需詳細資訊，請參閱 LRS 文件中的*輸出現代化*。
+ 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 或更新版本

## Architecture
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-architecture"></a>

**來源技術堆疊**
+ 作業系統 – IBM z/OS
+ 程式設計語言 – 常見商業導向語言 (COBOL)、工作控制語言 (JCL) 和客戶資訊控制系統 (CICS)
+ 資料庫 – z/OS 的 IBM Db2、IBM 資訊管理系統 (IMS) 資料庫和虛擬儲存存取方法 (VSAM)
+ 安全性 – 資源存取控制設施 (RACF)、z/OS 的 CA 最高秘密，以及存取控制設施 2 (ACF2)
+ 列印和封存解決方案 – IBM 大型主機 z/OS 輸出和列印產品 （適用於 z/OS、LRS 和 CA 交付的 IBM Infoprint 伺服器） 和封存解決方案 (CA 交付、ASG Mobius 或 CA 套件）

**來源架構**

下圖顯示大型主機輸出管理工作負載的典型目前狀態架構。

![\[大型主機輸出程序分為七個步驟。\]](http://docs.aws.amazon.com/zh_tw/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 會叫用大型主機服務，該服務會將商業交易資料記錄在system-of-records(SoR) 資料庫中，例如 z/OS 的 IBM Db2。

1. SoR 會保留來自 SoE 的業務資料。

1. 批次任務排程器會啟動批次任務以產生列印輸出。

1. 批次任務會從資料庫擷取資料。它會根據業務需求格式化資料，然後產生業務輸出，例如帳單、ID 卡或貸款陳述式。最後，批次任務會根據業務需求，將輸出路由至輸出管理的輸出格式、發佈和儲存。

1. 輸出管理會從批次任務接收輸出。輸出管理索引、排列輸出，並將輸出發佈至輸出管理系統中的指定目的地，例如 LRS PageCenterX 解決方案 （如此模式所示） 或 CA 檢視。

1. 使用者可以檢視、搜尋和擷取輸出。

**目標技術堆疊**
+ 作業系統 – 在 Amazon EC2 上執行的 Windows Server
+ 運算 – 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 雲端中大型主機輸出管理工作負載的架構。

![\[批次應用程式和輸出管理的目標架構分為七個步驟。\]](http://docs.aws.amazon.com/zh_tw/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 Print Exit API 收集輸出資料。

   LRS VPSX/MFI 會進行資料預先處理，例如 EBCDIC 轉換為 ASCII。它也會執行更複雜的任務，包括將大型主機獨佔資料串流，例如 IBM Advanced Function Presentation (AFP) 和 Xerox Line Conditioned Data Stream (LCDS)，轉換為更常見的檢視和列印資料串流，例如印表機命令語言 (PCL) 和 PDF。

   在 LRS PageCenterX 的維護時段期間，LRS VPSX/MFI 會保留輸出佇列，並做為輸出佇列的備份。LRS VPSX/MFI 會使用 LRS/佇列通訊協定來連接並傳送輸出至 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 元件是多執行緒 Web 應用程式伺服器，可為 LRS PageCenterX 應用程式和其他 LRS 應用程式提供常見的執行時間環境。LRS/Web Connect 元件安裝在您的 Web 伺服器上，並提供從 Web 伺服器到 LRS/NetX Web 應用程式伺服器的連接器。

1. LRS PageCenterX 提供檔案系統物件的儲存體。LRS PageCenterX 的操作資料存放在 Amazon FSx for Windows File Server 中。

1. 輸出管理身分驗證和授權是由 AWS Managed Microsoft AD 搭配 LRS/DIS 執行。

**注意**  
目標解決方案通常不需要變更應用程式來適應大型主機格式語言，例如 IBM AFP 或 Xerox LCDS。

**AWS 基礎設施架構**

下圖顯示大型主機輸出管理工作負載的高可用性和安全 AWS 基礎設施架構。

![\[具有工作流程的多可用區域 AWS 基礎設施，分為七個步驟。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/f9ad041d-b9f0-4a9a-aba7-40fdc3088b27/images/8d8aa995-b576-4ecd-8a7c-5f566740a515.png)


該圖顯示以下工作流程：

1. 批次排程器會啟動批次程序，並跨多個[可用區域](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)部署在 Amazon EC2 上，以實現高可用性 (HA)。
**注意**  
此模式不包含批次排程器的實作。如需實作的詳細資訊，請參閱排程器的軟體廠商文件。

1. 大型主機批次工作 （以程式設計語言撰寫，例如 JCL 或 COBOL) 使用核心商業邏輯來處理和產生列印輸出，例如帳單、ID 卡和貸款陳述式。批次任務會跨 HA 的兩個可用區域部署在 Amazon EC2 上。它使用 Rocket Software Print Exit API 將列印輸出路由到 LRS VPSX/MFI 以進行資料預先處理。

1. LRS VPSX/MFI 列印伺服器部署在 Amazon EC2 上，跨 HA 的兩個可用區域 （主動待命備援對）。它使用 [Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) 做為操作資料存放區。Network Load Balancer 會對 LRS VPSX/MFI EC2 執行個體執行運作狀態檢查。如果作用中執行個體處於運作狀態不良狀態，負載平衡器會將流量路由到其他可用區域中的熱待命執行個體。列印請求會保留在每個 EC2 執行個體的本機 LRS 任務佇列中。發生故障時，必須先重新啟動失敗的執行個體，LRS 服務才能繼續處理列印請求。
**注意**  
LRS VPSX/MFI 也可以在印表機機群層級執行運作狀態檢查。如需詳細資訊，請參閱此模式[額外資訊](#modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional)區段中的*印表機機群運作狀態檢查*。

1. LRS PageCenterX 輸出管理部署在 Amazon EC2 上，橫跨 HA 的兩個可用區域 （主動待命備援對）。它使用 [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) 提供 DNS 名稱，以整合 LRS VPSX/MFI 伺服器與 LRS PageCenterX。
**注意**  
LRS PageCenterX 支援第 4 層負載平衡器。

1. LRS PageCenterX 使用 Amazon FSx for Windows File Server 做為作業資料存放區，部署在 HA 的兩個可用區域。LRS PageCenterX 只了解檔案共享中的檔案，而不是外部資料庫中的檔案。

1. [AWS Managed 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 服務**
+ [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) 會將傳入的應用程式或網路流量分配到多個目標。例如，您可以在一或多個可用區域中跨 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 雲端中設定、操作和擴展關聯式資料庫。

**其他工具**
+ [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 Software JES 多工緩衝區擷取輸出，並可靠地將其交付至指定的列印目的地。
+ LRS/Queue 是以 TCP/IP 為基礎的傳輸代理程式。LRS VPSX/MFI 使用 LRS/佇列透過 Rocket Software JES Print Exit 程式設計界面收集或擷取列印資料。
+ 在列印工作流程期間，LRS Directory Integration Server (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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定執行時間並部署示範應用程式。 | 若要在 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Amazon EC2 Windows 執行個體。 | 若要啟動 Amazon EC2 Windows 執行個體，請遵循 [Amazon EC2 文件中的啟動 Amazon EC2 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)中的指示。 Amazon EC2 使用與 LRS 產品授權相同的主機名稱。您的執行個體必須符合 LRS VPSX/MFI 的下列硬體和軟體需求：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | 雲端架構師 | 
| 安裝 LRS/佇列。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | 雲端架構師 | 
| 安裝 LRS/DIS。 | LRS/DIS 產品通常包含在 LRS VPSX 安裝中。不過，如果 LRS/DIS 未與 LRS VPSX 一起安裝，請使用下列步驟進行安裝：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 Rocket Enterprise Server for LRS/Queue 整合。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | 雲端架構師 | 
| 設定 Rocket Enterprise Server for LRS VPSX/MFI 整合。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將 Rocket Software Print Exit 模組與 Rocket Enterprise Server 批次印表機伺服器執行程序建立關聯。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Amazon EC2 Windows 執行個體。 | 按照 Amazon EC2 文件中的[步驟 1：啟動執行個體中的指示啟動 Amazon EC2 Windows 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-launch-instance)。 Amazon EC2 使用您用於 LRS 產品授權的相同主機名稱。您的執行個體必須符合 LRS PageCenterX 的下列硬體和軟體需求：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | 雲端架構師 | 
| 安裝 LRS/DIS。 | LRS/DIS 產品通常包含在 LRS VPSX 安裝中。不過，如果 LRS/DIS 未與 LRS VPSX 一起安裝，請使用下列步驟進行安裝：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 LRS PageCenterX 中啟用匯入函數。 | 您可以使用 LRS PageCenterX 匯入函數，根據任務名稱或表單 ID 等條件來辨識 LRS PageCenterX 上的輸出登陸。然後，您可以將輸出路由到 LRS PageCenterX 中的特定資料夾。若要啟用匯入函數，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | 雲端架構師 | 
| 建立規則，將輸出文件路由到 LRS PageCenterX 中的特定資料夾。 | 在 LRS PageCenterX 中，**目的地**會決定**當報告定義**調用此目的地時，輸出將傳送的資料夾路徑。在此範例中，根據報告定義中的**表單 ID** 資料夾建立資料夾，並將輸出儲存到該資料夾。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用使用者和群組建立 AWS Managed Microsoft AD 網域。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | 雲端架構師 | 
| 將 EC2 執行個體加入 AWS Managed Microsoft AD 網域。 | [自動](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-systems-manager-dx-domain/)將 LRS VPSX/MFI 和 LRS PageCenterX EC2 執行個體加入您的 AWS Managed Microsoft AD 網域 (AWS 知識中心文件） 或[手動](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html) (AWS Directory Service 文件）。 | 雲端架構師 | 
| 設定 LRS/DIS 並與 LRS PageCenterX EC2 執行個體的 AWS Managed Microsoft AD 整合。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 LRS PageCenterX 的檔案系統。 | 若要在多可用區環境中使用 Amazon FSx for Windows File Server 做為 LRS PageCenterX 的操作資料存放區，請遵循[步驟 1：建立檔案系統](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/getting-started-step1.html)中的指示。 | 雲端架構師 | 
| 將檔案共享映射至 LRS PageCenterX EC2 執行個體。 | 若要將上一個步驟中建立的檔案共享映射到 LRS PageCenterX EC2 執行個體，請遵循[步驟 2：將您的檔案共享映射到執行 Windows Server 的 EC2 執行個體](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/getting-started-step2.html)中的指示。 | 雲端架構師 | 
| 將 LRS PageCenterX 控制目錄和主資料夾目錄映射至 Amazon FSx 網路共享磁碟機。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 從 Rocket Software BankDemo 應用程式啟動批次列印請求。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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)
+ [進階函數簡報資料串流 ](https://www.ibm.com/docs/en/i/7.4?topic=streams-advanced-function-presentation-data-stream)(IBM 文件）
+ [Line Conditioned Data Stream (LCDS)](https://www.compart.com/en/lcds) （組件文件）
+ [使用 Micro Focus 在 AWS 上增強企業大型主機工作負載 ](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 LCD 納入目前的工作流程。此外，[大型主機運輸控制字元](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
+ OWNER (USERID)
+ 目的地
+ FORM
+ FILENAME
+ 寫入

LRS VPSX/MFI 支援下列大型主機批次機制，用於從 Rocket Enterprise Server 擷取資料：
+ 使用標準 z/OS JCL SYSOUT DD/OUTPUT 陳述式進行批次 COBOL 列印/多工緩衝處理。
+ 使用標準 z/OS JCL CA-SPOOL SUBSYS DD 陳述式進行批次 COBOL 列印/多工緩衝處理。
+ IMS/COBOL 列印/多工緩衝處理使用 CBLTDLI 界面。如需支援的方法和程式設計範例的完整清單，請參閱產品授權隨附的 LRS 文件。

**印表機機群運作狀態檢查**

LRS VPSX/MFI (LRS LoadX) 可執行深入研究運作狀態檢查，包括裝置管理和操作最佳化。裝置管理可以偵測印表機裝置中的失敗，並將列印請求路由到運作狀態良好的印表機。如需印表機機群深入運作狀態檢查的詳細資訊，請參閱產品授權隨附的 LRS 文件。

**列印身分驗證和授權**

LRS/DIS 可讓 LRS 應用程式使用 Microsoft Active Directory 或輕量型目錄存取協定 (LDAP) 伺服器來驗證使用者 IDs 和密碼。除了基本列印授權之外，LRS/DIS 也可以在下列使用案例中套用精細層級的列印安全控制：
+ 管理誰可以瀏覽印表機任務。
+ 管理其他使用者任務的瀏覽層級。
+ 管理操作任務 - 例如，命令層級安全性，例如保留或釋出、清除、修改、複製和重新路由。安全可由 user-ID 或 群組設定，類似於 Active Directory 安全群組或 LDAP 群組。

## 附件
<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>

*Shubham Roy 和 Kevin Yung，Amazon Web Services*

*Abraham Rondon，微型焦點*

*Guy Tucker、Levi、Ray 和 Shoup Inc*

## 總結
<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)，並將大型主機資料庫遷移至 Amazon Relational Database Service (Amazon RDS)，例如 z/OS 的 IBM DB2。現代化列印工作流程的身分驗證和授權是由 AWS Directory Service for Microsoft Active Directory 執行，也稱為 AWS Managed Microsoft AD。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 或更高版本

## Architecture
<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)
+ 資料庫 – z/OS 的 IBM DB2 和虛擬儲存存取方法 (VSAM)
+ 安全性 – 資源存取控制設施 (RACF)、z/OS 的 CA 最高秘密，以及存取控制設施 2 (ACF2)
+ 列印和輸出管理 – IBM 大型主機 z/OS 列印產品 （適用於 z/OS、LRS 和 CA 檢視的 IBM Tivoli 輸出管理員）

**目標技術堆疊**
+ 作業系統 – 在Amazon EC2 上執行的 Microsoft Windows Server
+ 運算 – Amazon EC2
+ 程式設計語言 – COBOL、JCL 和 CICS
+ 資料庫 – Amazon RDS
+ 安全性 – AWS Managed Microsoft AD
+ 列印和輸出管理 – AWS 上的 LRS 列印解決方案
+ 大型主機執行期環境 – Rocket Enterprise Server

**來源架構**

下圖顯示大型主機批次列印工作負載的典型目前狀態架構：

![\[從使用者到大型主機服務，z/OS 的 Db2、任務排程器、批次任務和輸出分成六個步驟。\]](http://docs.aws.amazon.com/zh_tw/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 會叫用大型主機服務，將商業交易資料記錄在system-of-records(SoR) 資料庫中，例如 z/OS 的 IBM DB2。

1. SoR 會保留來自 SoE 的業務資料。

1. 批次任務排程器會啟動批次任務以產生列印輸出。

1. 批次任務會從資料庫擷取資料、根據業務需求格式化資料，然後產生業務輸出，例如帳單、ID 卡或貸款陳述式。最後，批次任務會根據業務需求，將輸出路由到列印輸出管理以進行處理和輸出交付。 

1. 列印輸出管理會從批次任務接收列印輸出，然後將該輸出交付至指定的目的地，例如電子郵件、使用安全 FTP 的檔案共用、使用 LRS 列印解決方案的實體印表機 （如此模式所示） 或 IBM Tivoli。

**目標架構**

下圖顯示部署在 AWS 雲端中大型主機批次列印工作負載的架構：

![\[AWS 上的批次應用程式包含排程器、Rocket Enterprise Server 和資料庫，分為四個步驟。\]](http://docs.aws.amazon.com/zh_tw/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/Queue 傳輸代理程式，透過 Rocket Software JES Print Exit API 收集列印資料，並將資料交付至指定的印表機目的地。

**注意**  
目標解決方案通常不需要應用程式變更來適應大型主機格式語言，例如 IBM 進階函數呈現 (AFP) 或 Xerox Line Condition Data Stream (LCDS)。如需在 AWS 上使用 Rocket Software 進行大型主機應用程式遷移和現代化的詳細資訊，請參閱[使用 Micro Focus 在 AWS 上增強企業大型主機工作負載](https://aws.amazon.com/blogs/apn/empowering-enterprise-grade-mainframe-workloads-on-aws-with-micro-focus/)部落格文章。

**AWS 基礎設施架構**

下圖顯示適用於大型主機批次列印工作負載的高可用性和安全 AWS 基礎設施架構：

![\[使用 Rocket Software 和 LRS 元件在 AWS 上以七個步驟進行異地同步備份部署。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/36de7312-4860-4702-a325-c01cf74c4f33/images/287dd143-338c-4d83-a9b2-8e39214a81b0.png)


該圖顯示以下工作流程：

1. 批次排程器會啟動批次程序，並跨多個[可用區域](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)部署在 Amazon EC2 上，以實現高可用性 (HA)。
**注意**  
此模式不包含批次排程器的實作。如需實作的詳細資訊，請參閱排程器的軟體廠商文件。

1. 大型主機批次工作 （以 JCL 或 COBOL 等程式設計語言撰寫） 使用核心商業邏輯來處理和產生列印輸出，例如帳單、ID 卡和貸款陳述式。任務會跨 HA 的兩個可用區域部署在 Amazon EC2 上，並使用 Rocket Software Print Exit 將列印輸出路由到 LRS VPSX/MFI 以進行最終使用者列印。

1. LRS VPSX/MFI 使用 TCP/IP 型 LRS/佇列傳輸代理程式，從 Rocket Software JES Print Exit 程式設計界面收集或擷取列印資料。列印結束會傳遞必要資訊，讓 LRS VPSX/MFI 有效地處理多工緩衝處理檔案，並動態建置 LRS/佇列命令。接著會使用 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) 提供 DNS 名稱，以整合 Rocket Enterprise Server 與 LRS VPSX/MFI。：LRS VPSX/MFI 支援第 4 層負載平衡器。Network Load Balancer 也會對 LRS VPSX/MFI 執行基本運作狀態檢查，並將流量路由至運作狀態良好的已註冊目標。

1. 
**注意**  
LRS VPSX/MFI 列印伺服器會跨 HA 的兩個可用區域部署在 Amazon EC2 上，並使用 [Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/what-is-ebs.html) 做為操作資料存放區。LRS VPSX/MFI 支援主動-主動和主動-被動服務模式。此架構使用主動-被動對中的多個 AZs 作為主動和熱待命。Network Load Balancer 會對 LRS VPSX/MFI EC2 執行個體執行運作狀態檢查，並在作用中執行個體處於運作狀態不佳時，將流量路由到其他 AZ 中的熱待命執行個體。列印請求會保留在每個 EC2 執行個體的本機 LRS 任務佇列中。在復原的情況下，必須重新啟動失敗的執行個體，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 進行區塊儲存。您可以將 Amazon EBS 資料以point-in-time快照的形式從作用中的 EC2 執行個體備份到 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) 是一種 Web 服務，可讓您更輕鬆地在 AWS 雲端中設定、操作和擴展關聯式資料庫。它為關聯式資料庫提供經濟實惠、可擴展的容量，並管理常見的資料庫管理任務。
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)，也稱為 AWS Managed Microsoft AD，可讓您的目錄感知工作負載和 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/佇列傳輸代理程式，透過 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 Rocket Enterprise Server 並部署示範應用程式。 | 在 Amazon EC2 上設定 Rocket Enterprise Server，然後在 Amazon EC2 上部署 Rocket Software BankDemo 示範應用程式。BankDemo 應用程式是一種大型主機批次應用程式，可建立並啟動列印輸出。 | 雲端架構師 | 

### 在 Amazon EC2 上設定 LRS 列印伺服器
<a name="set-up-an-lrs-print-server-on-amazon-ec2"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 取得用於列印的 LRS 產品授權。 | 若要取得 LRS VPSX/MFI、LRS/Queue 和 LRS/DIS 的 LRS 產品授權，請聯絡 [LRS 輸出管理團隊](https://www.lrsoutputmanagement.com/about-us/contact-us/)。您必須提供將安裝 LRS 產品的 EC2 執行個體的主機名稱。 | 建置潛在客戶 | 
| 建立 Amazon EC2 Windows 執行個體以安裝 LRS VPSX/MFI。 | 依照 Amazon EC2 文件中啟動 [Amazon EC2 執行個體的指示啟動 Amazon EC2 Windows 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)。 Amazon EC2 您的執行個體必須符合 LRS VPSX/MFI 的下列硬體和軟體需求： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | 雲端架構師 | 
| 安裝 LRS/佇列。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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 [ 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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 Rocket Enterprise Server for LRS/Queue 整合。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 地址做為替代方案。 | 雲端架構師 | 
| 設定 Rocket Enterprise Server for LRS VPSX/MFI 整合。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將 Rocket Software Print Exit 模組與 Rocket Enterprise Server 批次印表機伺服器執行程序建立關聯。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html)如需組態的詳細資訊，請參閱 Micro Focus 文件中的[使用結束](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/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用使用者和群組建立 AWS Managed Microsoft AD 網域。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 網域。 | [自動](https://repost.aws/knowledge-center/ec2-systems-manager-dx-domain)將 LRS VPSX/MFI EC2 加入您的 AWS Managed Microsoft AD 網域 (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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 從 Rocket Software BankDemo 應用程式啟動批次列印請求。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html)您現在可以查看帳戶陳述式的列印輸出，其中包含**帳戶編號**、**描述**、**日期**、**金額**和**餘額**的資料欄。如需範例，請參閱此模式的 **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 Enterprise Server 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 規範指引文件）
+ [進階函數呈現 (AFP) 資料串流 ](https://www.ibm.com/docs/en/i/7.4?topic=streams-advanced-function-presentation-data-stream)(IBM 文件）
+ [Line Conditioned Data Stream (LCDS)](https://www.compart.com/en/lcds) （組件文件）

## 其他資訊
<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
+ OWNER (USERID)
+ 目的地
+ FORM
+ FILENAME
+ 寫入

LRS VPSX/MFI 支援下列大型主機批次機制，用於從 Rocket Enterprise Server 擷取資料。
+ 使用標準 z/OS JCL SYSOUT DD/OUTPUT 陳述式進行批次 COBOL 列印/多工緩衝處理
+ 使用標準 z/OS JCL CA-SPOOL SUBSYS DD 陳述式進行批次 COBOL 列印/多工緩衝處理
+ IMS/COBOL 列印/多工緩衝處理使用 CBLTDLI 介面 （如需支援的方法和程式設計範例的完整清單，請參閱產品授權隨附的 LRS 文件。)

**印表機機群運作狀態檢查**

LRS VPSX/MFI (LRS LoadX) 可執行深入研究運作狀態檢查，包括裝置管理和操作最佳化。裝置管理可以偵測印表機裝置中的失敗，並將列印請求路由到運作狀態良好的印表機。如需印表機機群深入研究運作狀態檢查的詳細資訊，請參閱產品授權隨附的 LRS 文件。

**列印身分驗證和授權**

LRS/DIS 可讓 LRS 應用程式使用 Microsoft Active Directory 或 LDAP 伺服器來驗證使用者 IDs 和密碼。除了基本列印授權之外，LRS/DIS 也可以在下列使用案例中套用精細層級的列印安全控制：
+ 管理誰可以瀏覽印表機任務。
+ 管理其他使用者任務的瀏覽層級。
+ 管理操作任務。例如，命令層級安全性，例如 hold/release、 purge、 modify、 copy 和 reroute。安全可由 User-ID 或 Group （類似 AD 群組或 LDAP 群組） 設定。****

## 附件
<a name="attachments-36de7312-4860-4702-a325-c01cf74c4f33"></a>

若要存取與本文件相關聯的其他內容，請解壓縮下列檔案： [attachment.zip](samples/p-attach/36de7312-4860-4702-a325-c01cf74c4f33/attachments/attachment.zip)

# 大型主機現代化：DevOps on AWS with Rocket Software Enterprise Suite
<a name="mainframe-modernization-devops-on-aws-with-micro-focus"></a>

*Kevin Yung，Amazon Web Services*

## 總結
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-summary"></a>

**客戶挑戰**

當硬體需要擴展以滿足數位創新需求時，在大型主機硬體上執行核心應用程式的組織通常會遇到一些挑戰。這些挑戰包括下列限制條件。 
+ 由於大型主機硬體元件的彈性不足，以及變更的高成本，大型主機開發和測試環境無法擴展。
+ 大型主機開發正面臨技能不足，因為新開發人員不熟悉且對傳統大型主機開發工具不感興趣。容器、持續整合/持續交付 (CI/CD) 管道和現代測試架構等現代技術不適用於大型主機開發。

**模式結果**

為了解決這些挑戰，Amazon Web Services (AWS) 和 Rocket Software Micro Focus AWS Partner Network (APN) 合作夥伴合作建立此模式。解決方案旨在協助您達成下列結果。
+ 改善開發人員生產力。開發人員可以在幾分鐘內獲得新的大型主機開發執行個體。
+ 使用 AWS 雲端 建立具有幾乎無限容量的新大型主機測試環境。
+ 快速佈建新的大型主機 CI/CD 基礎設施。您可以在一小時內使用 AWS CloudFormation 和 在 上 AWS 完成佈建 AWS Systems Manager。
+ 原生使用 AWS DevOps 工具進行大型主機開發，包括 AWS CodeBuild、 AWS CodeCommit AWS CodePipeline AWS CodeDeploy、 和 Amazon Elastic Container Registry (Amazon ECR)。
+ 將傳統瀑布開發轉換為大型主機專案中的敏捷開發。

**技術摘要**

在此模式中，目標堆疊包含下列元件。


| 
| 
| 邏輯元件 | 實作解決方案 | Description | 
| --- |--- |--- |
| 原始程式碼儲存庫 | Rocket Software AccuRev Server、CodeCommit、Amazon ECR  | 原始程式碼管理 – 解決方案使用兩種類型的原始程式碼： 大型主機原始程式碼，例如 COBOL 和 JCL。 AWS 基礎設施範本和自動化指令碼 這兩種類型的原始程式碼都需要版本控制，但它們是在不同的 SCMs中進行管理。部署到大型主機或 Rocket Software Enterprise Servers 的原始程式碼在 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 是 x3270 的 Python 界面，這是 IBM 3270 終端機模擬器。它為 x3270 或 s3270 子程序提供 API。 | 
| x3270 | x3270 是適用於 X Window System 和 Windows 的 IBM 3270 終端機模擬器。 這可供開發人員用於本機單元測試。 | 
| Robot-Framework-Mainframe-3270-Library | Mainframe3270 是以 py3270 專案為基礎的機器人架構程式庫。 | 
| Rocket 軟體 Verastream | Rocket Software Verastream 是一種整合平台，可讓您以測試行動應用程式、Web 應用程式和 SOA Web 服務的方式測試大型主機資產。 | 
| Rocket 軟體統一功能測試 (UFT) 安裝程式和授權 | Rocket Software Unified Functional Testing 是一種軟體，可為軟體應用程式和環境提供功能和迴歸測試自動化。 | 
| Rocket Software Enterprise Server 安裝程式和授權 | Enterprise Server 為大型主機應用程式提供執行期環境。 | 
| Rocket Software Enterprise Test Server 安裝程式和授權 | Rocket Software Enterprise Test Server 是 IBM 大型主機應用程式測試環境。 | 
| 適用於 Server 的 Rocket Software AccuRev 安裝程式和授權，以及適用於 Windows 和 Linux 作業系統的 Rocket Software Micro Focus AccuRev 安裝程式和授權  | AccuRev 提供原始程式碼管理 (SCM)。AccuRev 系統旨在供開發一組檔案的人員團隊使用。 | 
| Rocket Software Enterprise Developer for Eclipse 安裝程式、修補程式和授權 | 企業開發人員為大型主機開發人員提供平台，以開發和維護核心大型主機線上和批次應用程式。 | 

**限制**
+ CodeBuild 不支援建置 Windows Docker 映像。此[回報的問題](https://github.com/docker-library/docker/issues/49)需要 Windows Kernel/HCS 和 Docker 團隊支援。解決方法是使用 Systems Manager 建立 Docker 映像建置 Runbook。此模式使用 因應措施來建置適用於 Eclipse 的 Rocket Software Enterpise 開發人員和 Rocket Software Micro Focus Enterprise Test Server 容器映像。 
+ Windows 尚未支援 CodeBuild 的虛擬私有雲端 (VPC) 連線，因此模式不會使用 Rocket Software License Manager 在 OpenText Rocket Software Enterprise Developer 和 Rocket Software Enterprise Test Server 容器中管理授權。

**產品版本**
+ 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**

## Architecture
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-architecture"></a>

**大型主機環境**

在傳統大型主機開發中，開發人員需要使用大型主機硬體來開發和測試程式。他們面臨容量限制，例如限制開發/測試環境的每秒數百萬次指令 (MIPS)，而且必須依賴大型主機電腦上可用的工具。

在許多組織中，大型主機開發遵循瀑布開發方法，團隊依賴長週期來發佈變更。這些發行週期通常比數位產品開發更長。  

下圖顯示共用大型主機硬體以進行開發的多個大型主機專案。在大型主機硬體中，擴展更多專案的開發和測試環境非常昂貴。

![\[Diagram showing mainframe architecture with z/OS, databases, programming languages, and user groups.\]](http://docs.aws.amazon.com/zh_tw/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。 

下列各節說明模式的三個主要元件。

**1。SCM **

在 中 AWS， 模式使用 AccuRev 為大型主機原始程式碼建立一組 SCM 工作區和版本控制。其串流型架構可讓多個團隊進行平行大型主機開發。為了合併變更，AccuRev 使用提升概念。為了將該變更新增至其他工作區，AccuRev 會使用更新概念。

在專案層級，每個團隊都可以在 AccuRev 中建立一或多個串流，以追蹤專案層級的變更。這些稱為專案串流。這些專案串流繼承自相同的父串流。父串流用於合併來自不同專案串流的變更。

每個專案串流都可以將程式碼提升為 AccuRev，並設定提升後觸發以啟動 AWS CI/CD 管道。專案串流變更的成功建置可以提升為其父串流，以進行更多迴歸測試。 

通常，父串流稱為系統整合串流。當從專案串流提升到系統整合串流時，提升後觸發會啟動另一個 CI/CD 管道來執行迴歸測試。

除了大型主機程式碼之外，此模式還包括 AWS CloudFormation 範本、Systems Manager Automation 文件和指令碼。遵循infrastructure-as-code最佳實務，它們在 CodeCommit 中受版本控制。 

如果您需要將大型主機程式碼同步回大型主機環境以進行部署，Rocket Software 會提供 Enterprise Sync 解決方案，將程式碼從 AccuRev SCM 同步回大型主機 SCM。

**2. 開發人員和測試環境**

在大型組織中，擴展超過一百或甚至超過一千個大型主機開發人員具有挑戰性。為了解決此限制， 模式會使用 Amazon EC2 Windows 執行個體進行開發。在執行個體上，已安裝 Enterprise Developer for Eclipse 工具。開發人員可以在執行個體本機執行所有大型主機程式碼測試和偵錯。 

AWS Systems Manager 狀態管理員和自動化文件用於自動化開發人員執行個體佈建。建立開發人員執行個體的平均時間為 15 分鐘內。已備妥下列軟體和組態：
+ AccuRev Windows 用戶端，用於簽出並將原始程式碼遞交至 AccuRev
+ Enterprise Developers for Eclipse 工具，用於在本機寫入、測試和偵錯大型主機程式碼
+ 開放原始碼測試架構 Python 行為驅動開發 (BDD) 測試架構行為、py3270 和 x3270 模擬器，用於建立指令碼以測試應用程式
+ 用於建置 Enterprise Test Server Docker 映像並在 Enterprise Test Server Docker 容器中測試應用程式的 Docker 開發人員工具 

在開發週期中，開發人員會使用 EC2 執行個體在本機開發和測試大型主機程式碼。成功測試本機變更時，開發人員會將變更提升為 AccuRev 伺服器。 

**3. CI/CD 管道**

在 模式中，CI/CD 管道用於整合測試和迴歸測試，然後再部署到生產環境。 

如 SCM 一節所述，AccuRev 使用兩種類型的串流：專案串流和整合串流。每個串流都會與 CI/CD 管道連接。為了在 AccuRev 伺服器與 之間執行整合 AWS CodePipeline， 模式會使用 AccuRev 提升後指令碼來建立事件以啟動 CI/CD。

例如，當開發人員將變更提升為 AccuRev 中的專案串流時，會啟動提升後指令碼以在 AccuRev Server 中執行。然後，指令碼會將變更的中繼資料上傳至 Amazon Simple Storage Service (Amazon S3) 儲存貯體，以建立 Amazon S3 事件。此事件將啟動 CodePipeline 設定的管道來執行。 

相同的事件啟動機制用於整合串流及其相關聯的管道。 

在 CI/CD 管道中，CodePipeline 使用 CodeBuild 搭配 AccuRev Linux 用戶端容器，從 AccuRev 串流查看最新的程式碼。然後，管道會啟動 CodeBuild，以使用企業開發人員 Windows 容器來編譯原始程式碼，並使用 CodeBuild 中的企業測試伺服器 Windows 容器來測試大型主機應用程式。

CI/CD 管道是使用 CloudFormation 範本建置，藍圖將用於新專案。透過使用 範本，專案在其中建立新 CI/CD 管道所需的時間不到一小時 AWS。

為了擴展您的大型主機測試功能 AWS， 模式建置了 Rocket Software DevOps 測試套件、Verastream 和 UFT 伺服器。透過使用現代 DevOps 工具，您可以 AWS 視需要在 上執行任意數量的測試。

下圖 AWS 顯示開啟 Rocket Software 的大型主機開發環境範例。

![\[AWS development pipeline with shared components for multiple project teams.\]](http://docs.aws.amazon.com/zh_tw/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 Events 規則設定為從來源 S3 儲存貯體擷取 S3 事件。

1. CloudWatch Events 規則會將目標設定為管道。

1. AccuRev SCM 設定為在提升完成後於本機執行提升後指令碼。

1. AccuRev SCM 會產生 XML 檔案，其中包含提升的中繼資料，而且指令碼會將 XML 檔案上傳至來源 S3 儲存貯體。

1. 上傳後，來源 S3 儲存貯體會傳送事件以符合 CloudWatch Events 規則，而 CloudWatch Events 規則會啟動管道以執行。 

當管道執行時，它會啟動 CodeBuild 專案，以使用 AccuRev Linux 用戶端容器，從相關聯的 AccuRev 串流查看最新的大型主機程式碼。  

下圖顯示 AccuRev Server 設定。

![\[AWS 雲端 diagram showing AccuRev setup with primary and replica instances across availability zones.\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/e60345cc-2283-4b03-8f57-e3dac1770978.png)


**2. 企業開發人員範本** 

模式使用 Amazon EC2 範本來簡化開發人員執行個體的建立。透過使用 State Manager，它可以一致地將軟體和授權設定套用至 EC2 執行個體。

Amazon EC2 範本會在其 VPC 內容設定和預設執行個體設定中建置，並遵循企業標記要求。透過使用範本，團隊可以建立自己的新開發執行個體。 

當開發人員執行個體啟動時，透過與標籤建立關聯，Systems Manager 會使用 State Manager 套用自動化。自動化包含下列一般步驟。

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/zh_tw/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 管道和系統整合管道。每個大型主機專案團隊都會建立管道或多個 CI/CD 管道，以建置他們在專案中開發的程式。這些專案 CI/CD 管道會從相關聯的 AccuRev 串流簽出原始程式碼。 

在專案團隊中，開發人員會在相關聯的 AccuRev 串流中提升程式碼。然後，提升會啟動專案管道來建置程式碼並執行整合測試。 

每個專案 CI/CD 管道使用 CodeBuild 專案搭配 Enterprise Developer 工具 Amazon ECR 映像和 Enterprise Test Server 工具 Amazon ECR 映像。 

CodePipeline 和 CodeBuild 用於建立 CI/CD 管道。由於 CodeBuild 和 CodePipeline 沒有預付費用或承諾，您只需為使用量付費。相較於大型主機硬體，此 AWS 解決方案可大幅縮短硬體佈建前置時間，並降低測試環境的成本。

在現代開發中，會使用多個測試方法。例如，測試驅動的開發 (TDD)、BDD 和機器人架構。透過此模式，開發人員可以使用這些現代工具進行大型主機測試。例如，透過使用 x3270、py3270 和 Behave 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/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/da59f837-2f23-404f-948b-41402cc6fe0c.png)


下圖顯示 Mainframe3270 機器人架構中 CodePipeline 產生的專案 CI/CD 測試報告。

![\[Test report summary showing 100% pass rate for 3 test cases in 2.662 seconds.\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/d005466e-aeb8-4fd6-8342-743ed049f98a.png)


成功傳遞專案層級測試後，測試的程式碼會在 AccuRev SCM 中手動提升為整合串流。您可以在團隊對其專案管道的測試涵蓋範圍有信心之後，自動執行此步驟。

提升程式碼時，系統整合 CI/CD 管道會檢查合併的程式碼並執行迴歸測試。合併的程式碼會從所有平行專案串流提升。

根據測試環境需要的精細程度，客戶可以在不同的環境中擁有更多系統整合 CI/CD 管道，例如 UAT、Pre-Production。 

在 模式中，系統整合管道中使用的工具是 Enterprise Test Server、UTF 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/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/693212e5-1cd0-4f82-a910-39b00d977c38.png)


 

在系統整合 CI/CD 管道中成功測試成品之後，即可提升成品以進行生產部署。 

如果您需要將原始碼部署回大型主機，Rocket Software 會提供 Enterprise Sync 解決方案，將原始碼從 AccuRev 同步回大型主機 Endeavour。

下圖顯示將成品部署到企業伺服器的生產 CI/CD 管道。在此範例中，CodeDeploy 會協調將測試過的大型主機成品部署至 Enterprise Server。

![\[CI/CD pipeline diagram showing CodePipeline, CodeBuild, and CodeDeploy stages for artifact deployment.\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/56749c2a-e038-4e56-9487-b2ff83894725.png)


除了 CI/CD 管道的架構演練之外，請參閱 AWS DevOps 部落格文章[AWS 使用 Micro Focus Enterprise Suite 在 上自動化數千個大型主機測試](https://aws.amazon.com/blogs/devops/automate-mainframe-tests-on-aws-with-micro-focus/)，以取得在 CodeBuild 和 CodePipeline 中測試大型主機應用程式的詳細資訊。(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 軟體工具**
+ [適用於 Eclipse 的 Rocket Enterprise 開發人員](https://www.microfocus.com/documentation/enterprise-developer/ed60/ED-Eclipse/GUID-8D6B7358-AC35-4DAF-A445-607D8D97EBB2.html)
+ [Rocket Enterprise 測試伺服器](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 軟體 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 主機整合器](https://www.microfocus.com/documentation/verastream-host-integrator/)
+ [Rocket 軟體 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用 CloudFormation 部署主要 AccuRev SCM 伺服器。 |  | AWS CloudFormation | 
| 建立 AccuRev 管理員使用者。 | 登入 AccuRev SCM Server，然後執行 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用 CloudFormation 部署 Amazon EC2 啟動範本。 | 使用 CloudFormation 部署企業開發人員執行個體的 Amazon EC2 啟動範本。範本包含 Rocket Enterprise Developer 執行個體的 Systems Manager 自動化文件。 | AWS CloudFormation | 
| 從 Amazon EC2 範本建立企業開發人員執行個體。 |  | AWS 主控台登入和大型主機開發人員技能 | 

### 建立企業開發人員工具 Docker 映像
<a name="create-the-enterprise-developer-tool-docker-image"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立企業開發人員工具 Docker 映像。 | 使用 Docker 命令和企業開發人員工具 Dockerfile 來建立 Docker 映像。 | Docker | 
| 在 Amazon ECR 中建立 Docker 儲存庫。 | 在 Amazon ECR 主控台上，為企業開發人員 Docker 映像建立儲存庫。 | Amazon ECR | 
| 將企業開發人員工具 Docker 映像推送至 Amazon ECR。 | 執行 Docker 推送命令，以推送企業開發人員工具 Docker 映像檔，將其儲存在 Amazon ECR 的 Docker 儲存庫中。 | Docker | 

### 建立 Enterprise Test Server Docker 映像
<a name="create-the-enterprise-test-server-docker-image"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 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 push 命令，將 Enterprise Test Server Docker 映像推送並儲存在 Amazon ECR 中。 | Docker | 

### 建立團隊串流 CI/CD 管道
<a name="create-the-team-stream-ci-cd-pipeline"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 CodeCommit 儲存庫。 | 在 CodeCommit 主控台上，為基礎設施和 CloudFormation 程式碼建立 Git 型儲存庫。 | AWS CodeCommit | 
| 將 CloudFormation 範本和自動化程式碼上傳至 CodeCommit 儲存庫。 | 執行 Git push 命令，將 CloudFormation 範本和自動化程式碼上傳至儲存庫。 | Git | 
| 使用 CloudFormation 部署團隊串流 CI/CD 管道。 | 使用準備好的 CloudFormation 範本來部署團隊串流 CI/CD 管道。 | AWS CloudFormation | 

### 建立系統整合 CI/CD 管道
<a name="create-the-system-integration-ci-cd-pipeline"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 UFT Docker 映像。 | 使用 Docker 命令和 UFT Dockerfile 來建立 Docker 映像。 | Docker | 
| 在 UFT 映像的 Amazon ECR 中建立 Docker 儲存庫。 | 在 Amazon ECR 主控台上，為 UFT 映像建立 Docker 儲存庫。 | Amazon ECR | 
| 將 UFT Docker 映像推送至 Amazon ECR。 | 執行 Docker push 命令，將 Enterprise Test Server 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用 AWS Quick Start 部署 Enterprise Server。 | 若要使用 CloudFormation 部署 Enterprise Server，請在 AWS Quick Start 上啟動 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 部落格 - AWS 使用 Micro Focus Enterprise Suite 在 上自動化數千個大型主機測試 ](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-Library GitHub 儲存庫](https://github.com/Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library)
+ [歡迎行為！](https://behave.readthedocs.io/en/latest/index.html)
+ [APN 合作夥伴部落格 - 標籤：Micro Focus ](https://aws.amazon.com/blogs/apn/tag/micro-focus/)(Micro Focus 現在是 Rocket 軟體。)
+ [從啟動範本啟動執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html)

**AWS Marketplace**
+ [Rocket 軟體 UFT One](https://aws.amazon.com/marketplace/pp/B01EGCA5OS?ref_=srh_res_product_title)

**AWS Quick Start**
+ [上的 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>

*Shubham Roy 和 Kevin Yung，Amazon Web Services*

*Abraham Rondon，微型焦點*

*Guy Tucker、Levi、Ray 和 Shoup Inc*

## 總結
<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)，並將大型主機資料庫遷移至 Amazon Relational Database Service (Amazon RDS)，例如 z/OS 的 IBM DB2。現代化列印工作流程的身分驗證和授權是由 AWS Directory Service for Microsoft Active Directory 執行，也稱為 AWS Managed Microsoft AD。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 文件中的[企業伺服器](https://www.microfocus.com/media/data-sheet/enterprise_server_ds.pdf)資料表。)
+ LRS 雲端列印解決方案和概念的基本知識 （如需詳細資訊，請參閱 LRS 文件中的[輸出現代化](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](https://www.lrsoutputmanagement.com/products/modernization-products/) V1R3 或更新版本

## Architecture
<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)
+ 安全性 – 資源存取控制設施 (RACF)、z/OS 的 CA 最高機密，以及存取控制設施 2 (ACF2)
+ 列印和輸出管理 – IBM 大型主機 z/OS 列印產品 （適用於 z/OS、LRS 和 CA 檢視的 IBM Infoprint 伺服器）

**目標技術堆疊**
+ 作業系統 – 在Amazon EC2 上執行的 Microsoft Windows Server
+ 運算 – Amazon EC2
+ 程式設計語言 – COBOL 和 CICS
+ 資料庫 – Amazon RDS
+ 安全性 – AWS Managed Microsoft AD
+ 列印和輸出管理 – AWS 上的 LRS 列印解決方案
+ 大型主機執行期環境 – Micro Focus Enterprise Server

**來源架構**

下圖顯示大型主機線上列印工作負載的典型目前狀態架構。

![\[產生可檢視輸出的六步驟程序。\]](http://docs.aws.amazon.com/zh_tw/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 會叫用大型主機服務，該服務會將商業交易資料記錄在system-of-records(SoR) 資料庫中，例如 z/OS 的 IBM DB2。

1. SoR 會保留來自 SoE 的業務資料。

1. 使用者啟動從 CICS SoE 產生列印輸出的請求，這會啟動列印交易應用程式來處理列印請求。 

1. 列印交易應用程式 （例如 CICS 和 COBOL 程式） 會從資料庫擷取資料、根據業務需求格式化資料，以及產生業務輸出 （列印資料），例如帳單、ID 卡或貸款陳述式。然後，應用程式會使用虛擬電信存取方法 (VTAM) 傳送列印請求。z/OS 列印伺服器 （例如 IBM Infoprint Server) 使用 NetSpool 或類似的 VTAM 元件來攔截列印請求，然後使用 JES 輸出參數在 JES 多工緩衝系統上建立列印輸出資料集。JES 輸出參數會指定路由資訊，供列印伺服器用來將輸出傳輸至特定網路印表機。*VTAM* 一詞是指 z/OS Communications Server 和 z/OS 的系統網路架構 (SNA) 服務元素。

1. 列印輸出傳輸元件會將輸出列印資料集從 JES 多工緩衝區傳輸至遠端印表機或列印伺服器，例如 LRS （如此模式所示）、IBM Infoprint Server 或電子郵件目的地。

**目標架構**

下圖顯示部署在 AWS 雲端中大型主機線上列印工作負載的架構：

![\[從啟動列印請求到處理 AWS 到 LRS 列印的四個步驟。\]](http://docs.aws.amazon.com/zh_tw/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/Queue 傳輸代理程式，透過 Micro Focus CICS Print Exit API (DFHUPRNT) 收集列印資料，並將資料交付至指定的印表機目的地。現代化 CICS 應用程式中使用的原始 TERMID (TERM) 會用作 VPSX/MFI 佇列名稱。 

**注意**  
目標解決方案通常不需要應用程式變更來容納大型主機格式語言，例如 IBM Advanced Function Presentation (AFP) 或 Xerox Line Condition Data Stream (LCDS)。如需在 AWS 上使用 Micro Focus 進行大型主機應用程式遷移和現代化的詳細資訊，請參閱 AWS 文件中的[使用 Micro Focus 在 AWS 上增強企業大型主機工作負載](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 伺服器的兩個可用區域。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/924cdae7-9265-4fc9-8e5e-bb2da5368e7e/images/093555a1-342c-420c-bb90-e9440d2e8650.png)


該圖顯示以下工作流程：

1. 大型主機線上應用程式 （以程式設計語言撰寫，例如 CICS 或 COBOL) 使用核心商業邏輯來處理和產生列印輸出，例如帳單、ID 卡和貸款陳述式。線上應用程式部署在跨兩個[可用區域 (AZ) 的](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) Amazon EC2 上以獲得高可用性 (HA)，並使用 Micro Focus CICS 列印結束將列印輸出路由到 LRS VPSX/MFI 進行最終使用者列印。

1. LRS VPSX/MFI 使用 TCP/IP 型 LRS/佇列傳輸代理程式，從 Micro Focus 線上列印結束程式設計界面收集或擷取列印資料。線上列印結束會傳遞必要資訊，讓 LRS VPSX/MFI 有效地處理列印檔案，並動態建置 LRS/佇列命令。
**注意**  
如需各種用於列印的 CICS 應用程式程式設計方法，以及如何在 Micro Focus Enterprise 伺服器和 LRS VPSX/MFI 中支援它們的詳細資訊，請參閱此模式*的其他資訊*區段中的*列印資料擷取*。

1. 
**注意**  
[Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 提供 DNS 名稱，以整合 Micro Focus Enterprise Server 與 LRS VPSX/MFI。：LRS VPSX/MFI 支援第 4 層負載平衡器。Network Load Balancer 也會對 LRS VPSX/MFI 執行基本運作狀態檢查，並將流量路由至運作狀態良好的已註冊目標。

1. LRS VPSX/MFI 列印伺服器會跨 HA 的兩個可用區域部署在 Amazon EC2 上，並使用 [Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) 做為操作資料存放區。LRS VPSX/MFI 支援主動-主動和主動-被動服務模式。此架構使用主動-被動配對中的多個可用區域作為主動和熱待命。Network Load Balancer 會對 LRS VPSX/MFI EC2 執行個體執行運作狀態檢查，並在作用中執行個體處於運作狀態不佳時，將流量路由到另一個可用區域中的熱待命執行個體。列印請求會保留在每個 EC2 執行個體的本機 LRS 任務佇列中。在復原的情況下，必須重新啟動失敗的執行個體，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 進行區塊儲存。您可以將 Amazon EBS 資料以point-in-time快照的形式從作用中的 EC2 執行個體備份到 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 雲端中設定、操作和擴展關聯式資料庫。
+ [AWS Directory Service for Microsoft Active Directory (AD)](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 線上列印結束程式設計界面收集或擷取列印資料。
+ [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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 Micro Focus Enterprise Server 並部署示範線上應用程式。 | 在 Amazon EC2 上設定 Micro Focus Enterprise Server，然後遵循 Micro Focus 文件中的[教學課程：CICS Support](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GMWALK00.html) 指示，在 Amazon EC2 上部署 Micro Focus 帳戶示範應用程式 (ACCT 示範）。ACCT 示範應用程式是大型主機線上 (CICS) 應用程式，可建立並啟動列印輸出。 | 雲端架構師 | 

### 在 Amazon EC2 上設定 LRS 列印伺服器
<a name="set-up-an-lrs-print-server-on-amazon-ec2"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 取得用於列印的 LRS 產品授權。 | 若要取得 LRS VPSX/MFI、LRS/Queue 和 LRS/DIS 的 LRS 產品授權，請聯絡 [LRS 輸出管理團隊](https://www.lrsoutputmanagement.com/about-us/contact-us/)。您必須提供將安裝 LRS 產品的 EC2 執行個體的主機名稱。 | 建置潛在客戶 | 
| 建立 Amazon EC2 Windows 執行個體以安裝 LRS VPSX/MFI。 | 依照 Amazon EC2 文件中的[步驟 1：啟動執行個體中的指示啟動 Amazon EC2 Windows 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-launch-instance)。 Amazon EC2 您的執行個體必須符合 LRS VPSX/MFI 的下列硬體和軟體需求： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | 雲端架構師 | 
| 安裝 LRS/佇列。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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 [ 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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 Micro Focus Enterprise Server for LRS/Queue 整合。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 列印結束 (DFHUPRNT)。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 列印結束 (DFHUPRNT)**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | 雲端架構師 | 
| 將 CICS 印表機的終端機 ID (TERMIDs) 定義為 Micro Focus Enterprise Server。 | **在 Micro Focus Enterprise Server 中啟用 3270 列印**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 印表機的終端機**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 LRS VPSX 中建立列印佇列。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 中建立的列印 TERMIDs。 | 雲端架構師 | 
| 在 LRS VPSX/MFI 中建立列印使用者。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用使用者和群組建立 AWS Managed Microsoft AD 網域。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 網域。 | [以自動方式](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 VPSX/MFI EC2 加入您的 AWS Managed Microsoft AD 網域。 | 雲端架構師 | 
| 設定 LRS/DIS 並與 AWS Managed Microsoft AD 整合。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 從 Micro Focus ACCT 示範應用程式啟動線上列印請求。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)「已排程列印請求」訊息會顯示在畫面底部。這確認線上列印請求是從 ACCT 示範應用程式產生，並傳送至 LRS VPS/MFI 進行列印處理。  | 雲端架構師 | 
| 檢查 LRS VPSX/MFI 中的列印輸出。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)您現在可以查看 帳戶陳述式的列印輸出，其中包含帳戶編號、SURNAME、FIRST、ADDRESS、TELEPHONE、發行的卡片數量、發行日期、金額和餘額的資料欄。如需範例，請參閱此模式的 **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 Enterprise Server 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 規範性指導文件）
+ [進階函數呈現 (AFP) 資料串流 ](https://www.ibm.com/docs/en/i/7.4?topic=streams-advanced-function-presentation-data-stream)(IBM 文件）
+ [Line Conditioned Data Stream (LCDS)](https://www.compart.com/en/lcds) （組件文件）

## 其他資訊
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-additional"></a>

**考量**

在現代化旅程中，您可以考慮大型主機線上程序及其產生的輸出的各種組態。大型主機平台是由每個使用大型主機平台的客戶和廠商自訂，其具有直接影響列印的特定要求。例如，您目前的平台可能會將 IBM 進階函數簡報 (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 和 Micro Focus Enterprise Server 中搭配 LRS VPSX/MFI 列印伺服器執行的現代化 CICS 應用程式中支援每個應用程式程式設計方法。


| 
| 
| Method | Description | 在現代化環境中支援 方法 | 
| --- |--- |--- |
| EXEC CICS SEND TEXT.. 或 EXEC CICS SEND MAP.。 | 這些 CICS 和 VTAM 方法負責建立 3270/SCS 列印資料串流並將其交付至 LUTYPE0, LUTYPE1和 LUTYPE3 列印裝置。 | Micro Focus 線上列印結束 (DFHUPRNT) 應用程式介面 (API) 可讓列印資料在建立 3270/SCS 列印資料串流時，由 VPSX/MFI 處理。 | 
| EXEC CICS SEND TEXT.. 或 EXEC CICS SEND MAP.. （使用第三方 IBM 大型主機軟體） | CICS 和 VTAM 方法負責建立 3270/SCS 列印資料串流並將其交付至 LUTYPE0, LUTYPE1和 LUTYPE3 列印裝置。第三方軟體產品會攔截列印資料、使用 ASA/MCH 控制字元將資料轉換為標準列印格式資料，並將資料放置在 JES 多工緩衝系統上，以供使用 JES 的大型主機列印系統處理。 | Micro Focus 線上列印結束 (DFHUPRNT) API 可讓使用其中一種方法建立 3270/SCS 列印資料串流時，VPSX/MFI 處理列印資料。 | 
| EXEC CICS SPOOLOPEN  | CICS 應用程式使用此方法直接將資料寫入 JES 多工緩衝處理。然後，資料可供使用 JES 的大型主機型列印系統處理。 | Micro Focus Enterprise Server 會將資料多工緩衝處理至 Enterprise Server 多工緩衝處理，而 VPSX/MFI 批次列印結束 (LRSPRTE6) 可將資料多工緩衝處理至 VPSX。 | 
| DRS/API | LRS 提供的程式設計界面用於將列印資料寫入 JES。 | VPSX/MFI 提供替換界面，可將列印資料直接多工緩衝處理至 VPSX。 | 

**印表機機群運作狀態檢查**

LRS VPSX/MFI (LRS LoadX) 可執行深入研究運作狀態檢查，包括裝置管理和操作最佳化。裝置管理可以偵測印表機裝置中的失敗，並將列印請求路由到運作狀態良好的印表機。如需印表機機群深入探索運作狀態檢查的詳細資訊，請參閱產品授權隨附的 LRS 文件。

**列印身分驗證和授權**

LRS/DIS 可讓 LRS 應用程式使用 Microsoft Active Directory 或 LDAP 伺服器來驗證使用者 IDs 和密碼。除了基本列印授權之外，LRS/DIS 也可以在下列使用案例中套用精細層級的列印安全控制：
+ 管理誰可以瀏覽印表機任務。
+ 管理其他使用者任務的瀏覽層級。
+ 管理操作任務。例如，命令層級安全性，例如 hold/release、 purge、 modify、 copy 和 reroute。安全可由 User-ID 或 Group （類似 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 系列將大型主機檔案直接移至 Amazon S3
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family"></a>

*Luis Gustavo Dantas，Amazon Web Services*

## 總結
<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) 檔案傳輸通訊協定 (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 會以二進位模式傳輸檔案，這表示檔案會上傳到 Amazon S3 並保留 EBCDIC 編碼。如果您的檔案不包含二進位或封裝資料，則可以使用 **sftpascii**[ 子命令](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 FAQs](https://aws.amazon.com/s3/faqs/?nc1=h_ls)。

## Architecture
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-architecture"></a>

**來源技術堆疊**
+ 工作控制語言 (JCL)
+ z/OS Unix shell 和 ISPF
+ SFTP
+ VSAM 和一般檔案

**目標技術堆疊**
+ Transfer 系列
+ Amazon S3
+ Amazon Virtual Private Cloud (Amazon VPC)

**目標架構**

下圖顯示使用 Transfer Family 搭配 SFTP 將大型主機檔案直接上傳至 S3 儲存貯體的參考架構。

![\[使用 Transfer Family 搭配 SFTP，將大型主機檔案直接上傳至 S3 儲存貯體\]](http://docs.aws.amazon.com/zh_tw/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 可透過位於兩個私有子網路和可用區域的彈性網路界面實現高可用性。

1. Transfer Family 會驗證使用者，並使用 SFTP 從舊版環境接收您的檔案，並將其移至 S3 儲存貯體。

**自動化和擴展**

使用 Transfer Family 服務後，您可以使用 JCL 任務做為 SFTP 用戶端，將無限數量的檔案從大型主機傳輸到 Amazon S3。您也可以使用大型主機批次任務排程器，在準備好傳輸大型主機檔案時執行 SFTP 任務，以自動化檔案傳輸。

## 工具
<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 通訊協定，安全地將週期business-to-business檔案傳輸至 Amazon S3 和 Amazon EFS。 Amazon S3 

## 史詩
<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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 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 政策的 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)： [https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.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 角色時，您必須選擇轉移使用案例。 | 一般 AWS | 

### 定義傳輸服務
<a name="define-the-transfer-service"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 SFTP 伺服器。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html)如需如何設定 SFTP 伺服器的詳細資訊，請參閱[建立啟用 SFTP 的伺服器](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/zh_tw/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html) | 一般 AWS | 
| 建立 SFTP 用戶端金鑰對。 | 為 [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 金鑰對。 | 一般 AWS、SSH | 
| 建立 SFTP 使用者。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html) | 一般 AWS | 

### 傳輸大型主機檔案
<a name="transfer-the-mainframe-file"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將 SSH 私有金鑰傳送至大型主機。 | 使用 SFTP 或 SCP 將 SSH 私有金鑰傳送至舊版環境。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>接著，將 SSH 金鑰存放在 z/OS Unix 檔案系統中，並使用稍後將執行檔案傳輸批次任務的使用者名稱 （例如，`/u/CONTROLM`)。 如需 z/OS Unix shell 的詳細資訊，請參閱 [z/OS shell 簡介 ](https://www.ibm.com/docs/en/zos/2.2.0?topic=shells-introduction-zos)(IBM 文件）。 | Mainframe、z/OS Unix shell、FTP、SCP | 
| 建立 JCL SFTP 用戶端。 | 由於大型主機沒有原生 SFTP 用戶端，您必須使用 BPXBATCH 公用程式從 z/OS Unix shell 執行 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 shell 中執行命令的詳細資訊，請參閱 [BPXBATCH 公用程式](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 shell | 
| 執行 JCL SFTP 用戶端。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html)如需如何檢查批次任務活動的詳細資訊，請參閱 [z/OS SDSF 使用者指南 ](https://www.ibm.com/docs/en/zos/2.4.0?topic=sdsf-zos-users-guide)(IBM 文件）。 | Mainframe、JCL、ISPF | 
| 驗證檔案傳輸。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 工作負載自動化](https://www.broadcom.com/products/mainframe/workload-automation/ca7)，根據時間和其他批次任務相依性來自動化檔案傳輸的批次任務。 | 任務排程器 | 

## 相關資源
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-resources"></a>
+ [AWS Transfer 系列的運作方式](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>

*Vishal Jaswani、Manish Roy 和 Himanshu Sah，Amazon Web Services*

## 總結
<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)進行現代化應用程式的效能差距。

模式使用 AWS Blu Age 現代化架構搭配原生 Java 和資料庫調校功能，來識別和解決效能瓶頸。模式說明如何使用分析和監控來識別 SQL 執行時間、記憶體使用率和 I/O 模式等指標的效能問題。接著說明如何套用目標最佳化，包括資料庫查詢重組、快取和商業邏輯精簡。

改善批次處理時間和系統資源使用率，可協助您符合現代化系統中的大型主機效能等級。此方法在轉換為現代雲端架構期間維持功能等效性。

若要使用此模式，請依照 [Epics](#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 [Level 3 認證](https://bluinsights.aws/certification/)
+ 中階了解 AWS Blu Age 架構、產生的程式碼結構和 Java 程式設計

**限制**

下列最佳化功能在此模式範圍之外：
+ 應用程式層之間的網路延遲最佳化
+ 透過 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體類型和儲存最佳化進行基礎設施層級最佳化
+ 並行使用者負載測試和壓力測試

**產品版本**
+ JProfiler 13.0 版或更新版本 （建議最新版本）
+ pgAdmin 8.14 版或更新版本

## Architecture
<a name="optimize-performance-aws-blu-age-modernized-application-architecture"></a>

此模式使用 JProfiler 和 pgAdmin 等工具，為 AWS Blu Age 應用程式設定分析環境。它支援透過 AWS Blu Age 提供的 DAOManager 和 SQLExecutionBuilder APIs進行最佳化。

本節的其餘部分提供詳細資訊和範例，用於識別現代化應用程式的效能熱點和最佳化策略。[Epics](#optimize-performance-aws-blu-age-modernized-application-epics) 區段中的步驟會參考此資訊，以取得進一步指引。

**識別現代化大型主機應用程式中的效能熱點**

在現代化大型主機應用程式中，*效能熱點*是程式碼中會導致顯著變慢或效率不佳的特定區域。這些熱點通常是由大型主機和現代化應用程式之間的架構差異所造成。若要識別這些效能瓶頸並最佳化現代化應用程式的效能，您可以使用三種技術：SQL 記錄、查詢`EXPLAIN`計畫和 JProfiler 分析。

*熱點識別技術：SQL 記錄*

現代 Java 應用程式，包括使用 AWS Blu Age 進行現代化的應用程式，具有記錄 SQL 查詢的內建功能。您可以在 AWS Blu Age 專案中啟用特定記錄器，以追蹤和分析應用程式執行的 SQL 陳述式。此技術對於識別效率不佳的資料庫存取模式特別有用，例如過多的個別查詢或結構不良的資料庫呼叫，可透過批次處理或查詢精簡進行最佳化。

若要在 AWS Blu Age 現代化應用程式中實作 SQL 記錄，請將 `application.properties` 檔案中 `DEBUG` SQL 陳述式的日誌層級設定為 ，以擷取查詢執行詳細資訊：

```
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 計劃*

此方法使用關聯式資料庫管理系統的查詢規劃功能。您可以使用 `EXPLAIN` PostgreSQL 或 MySQL 或 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`顯示索引用量。
+ 檢查成本值：第一個數字是啟動成本，第二個數字是總成本。
+ 請參閱預估輸出資料列數量`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)。

結合使用這三種技術 (SQL 記錄、查詢`EXPLAIN`計畫和 JProfiler) 時，您可以全面了解應用程式的效能特性。透過識別和解決最重要的效能熱點，您可以彌補原始大型主機應用程式與現代化雲端系統之間的效能差距。

識別應用程式的效能熱點後，您可以套用最佳化策略，下一節會說明這些策略。

**大型主機現代化最佳化策略**

本節概述最佳化從大型主機系統現代化應用程式的關鍵策略。它著重於三種策略：使用現有的 APIs、實作有效的快取，以及最佳化商業邏輯。

*最佳化策略：使用現有的 APIs*

AWS Blu Age 在 DAO 介面中提供數個強大的 APIs，您可以用來最佳化效能。兩個主要界面 — DAOManager 和 SQLExecutionBuilder — 提供增強應用程式效能的功能。

**DAOManager**

DAOManager 做為現代化應用程式中資料庫操作的主要界面。它提供多種方法來增強資料庫操作和改善應用程式效能，尤其是直接建立、讀取、更新和刪除 (CRUD) 操作和批次處理。
+ **使用 SetMaxResults。**在 DAOManager API 中，您可以使用 **SetMaxResults** 方法來指定單一資料庫操作中要擷取的記錄數目上限。根據預設，DAOManager 一次只會擷取 10 筆記錄，這可能會在處理大型資料集時導致多個資料庫呼叫。當您的應用程式需要處理大量記錄，且目前正在進行多個資料庫呼叫來擷取記錄時，請使用此最佳化。這在您透過大型資料集反覆運算的批次處理案例中特別有用。在下列範例中，左側的程式碼 （最佳化之前） 會使用 10 筆記錄的預設資料擷取值。右側的程式碼 （最佳化後） 會將 **setMaxResults** 設定為一次擷取 100，000 筆記錄。  
![\[使用 SetMaxResults 以避免多個資料庫呼叫的範例。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/beb9623e-e7a8-45ef-adc6-19a249224b05.png)
**注意**  
請仔細選擇較大的批次大小，並檢查物件大小，因為此最佳化會增加記憶體使用量。
+ **將 SetOnGreatorOrEqual 取代為 SetOnEqual。**此最佳化涉及變更您用來設定擷取記錄條件的方法。**SetOnGreatorOrEqual** 方法會擷取大於或等於指定值的記錄，而 **SetOnEqual** 只會擷取完全符合指定值的記錄。

  當您知道需要完全相符，且目前使用 **SetOnEqual** **SetOnGreatorOrEqual**，如下列程式碼範例所示。 **readNextEqual** 此最佳化可減少不必要的資料擷取。  
![\[使用 SetOnEqual 根據完全相符擷取記錄的範例。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/5ce0dac9-f281-4862-a71f-1614493a83f0.png)
+ **使用批次寫入和更新操作。**您可以使用批次操作將多個寫入或更新操作分組為單一資料庫交易。這可減少資料庫呼叫的數量，並可大幅改善涉及多個記錄的操作效能。

  在下列範例中，左側的程式碼會在迴圈中執行寫入操作，這會降低應用程式的效能。您可以使用批次寫入操作來最佳化此程式碼：在`WHILE`迴圈的每個反覆運算期間，您可以將記錄新增至批次，直到批次大小達到預先決定的大小 100。然後，您可以在達到預定批次大小時排清批次，然後將任何剩餘的記錄排清至資料庫。這在您處理需要更新的大型資料集時特別有用。  
![\[將多個操作分組為單一資料庫交易的範例。\]](http://docs.aws.amazon.com/zh_tw/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 `INSERT` 查詢、僅使用 擷取特定資料欄`SELECT`，以及使用動態資料表名稱。在下列範例中，SQLExecutorBuilder 會使用您定義的自訂查詢。

![\[搭配自訂查詢使用 SQLExecutorBuilder 的範例。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/364e9fb1-0cbc-47d0-936d-46fb3b48b608.png)


**在 DAOManager 和 SQLExecutionBuilder 之間進行選擇**

這些 APIs之間的選擇取決於您的特定使用案例：
+ 如果您希望 AWS Blu Age Runtime 產生 SQL 查詢，而不是自行撰寫查詢，請使用 DAOManager。
+ 當您需要寫入 SQL 查詢以利用資料庫特定的功能或寫入最佳的 SQL 查詢時，請選擇 SQLExecutionBuilder。

*最佳化策略：快取*

在現代化應用程式中，實作有效的快取策略可以大幅減少資料庫呼叫並改善回應時間。這有助於彌補大型主機和雲端環境之間的效能差距。

在 AWS Blu Age 應用程式中，簡單的快取實作使用內部資料結構，例如雜湊圖或陣列清單，因此您不需要設定需要成本和程式碼重組的外部快取解決方案。此方法對於經常存取但不常變更的資料特別有效。當您實作快取時，請考慮記憶體限制條件和更新模式，以確保快取的資料保持一致並提供實際的效能優勢。

成功快取的關鍵是識別要快取的正確資料。在下列範例中，左側的程式碼一律會從資料表讀取資料，而當本機雜湊映射沒有指定金鑰的值時，右側的程式碼會從資料表讀取資料。 `cacheMap` 是在程式內容中建立並在程式內容的清除方法中清除的雜湊映射物件。

使用 DAOManager 快取：

![\[使用 DAOManager 快取最佳化的範例。\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/c8964804-96eb-4e26-b2bf-8742e62b4c33.png)


*最佳化策略：商業邏輯最佳化*

商業邏輯最佳化著重於重組 Blu AWS Age 自動產生的程式碼，以更符合現代架構功能。當產生的程式碼維護與舊版大型主機程式碼相同的邏輯結構時，這會變得必要，這可能不適用於現代系統。目標是改善效能，同時維持與原始應用程式的功能等效性。

此最佳化方法不僅止於簡單的 API 調校和快取策略。它涉及應用程式處理資料和與資料庫互動方式的變更。常見的最佳化包括避免簡單更新不必要的讀取操作、移除備援資料庫呼叫，以及重組資料存取模式，以更符合現代應用程式架構。以下是幾個範例：
+ **直接在資料庫中更新資料。 **使用直接 SQL 更新而非具有迴圈的多個 DAOManager 操作來重組您的業務邏輯。例如，下列程式碼 （左側） 會進行多個資料庫呼叫，並使用過多的記憶體。具體而言，它會在迴圈中使用多個資料庫讀取和寫入操作、個別更新而非批次處理，以及在每次反覆運算時建立不必要的物件。

  下列最佳化程式碼 （右側） 使用單一 Direct SQL 更新操作。具體而言，它使用單一資料庫呼叫，而不是多個呼叫，而且不需要迴圈，因為所有更新都是在單一陳述式中處理。此最佳化可提供更好的效能和資源使用率，並降低複雜性。它可防止 SQL 注入，提供更好的查詢計劃快取，並有助於提高安全性。  
![\[使用直接 SQL 更新而非具有迴圈的 DAOManager 操作來重組程式碼。\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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 中使用單一資料庫呼叫：

  ```
  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);
  }
  ```

*同時使用最佳化策略*

這三種策略可協同運作：APIs提供有效率的資料存取工具、快取可減少重複資料擷取的需求，而商業邏輯最佳化可確保以最有效的方式使用這些 APIs。這些最佳化的定期監控和調整可確保持續提升效能，同時維持現代化應用程式的可靠性和功能。成功的關鍵在於了解根據您的應用程式特性和效能目標，何時以及如何套用每個策略。

## 工具
<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** 值。
+ 只有在後續呼叫為 時，才將 **SetOnGreatorOrEqual** 變更為 **SetOnEqual**`.readNextEqual()`。
+ 在批次寫入或更新操作中，請分別處理最後一個批次，因為它可能小於設定的批次大小，且寫入或更新操作可能會遺漏。

快取：
+ 在 中引入用於快取的欄位`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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 安裝和設定 JProfiler。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | 應用程式開發人員 | 
| 安裝和設定 pgAdmin。 | 在此步驟中，您會安裝並設定資料庫用戶端來查詢資料庫。此模式使用 PostgreSQL 資料庫和 pgAdmin 做為資料庫用戶端。如果您使用的是另一個資料庫引擎，請遵循對應資料庫用戶端的文件。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | 應用程式開發人員 | 

### 識別熱點
<a name="identify-hotspots"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 AWS Blu Age 應用程式中啟用 SQL 查詢記錄。 | 在 AWS Blu Age 應用程式的 `application.properties`檔案中啟用 SQL 查詢記錄的記錄器，如[架構](#optimize-performance-aws-blu-age-modernized-application-architecture)一節所述。 | 應用程式開發人員 | 
| 產生和分析查詢`EXPLAIN`計劃，以識別資料庫效能熱點。 | 如需詳細資訊，請參閱[架構](#optimize-performance-aws-blu-age-modernized-application-architecture)一節。 | 應用程式開發人員 | 
| 建立 JProfiler 快照以分析效能緩慢的測試案例。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 實作最佳化之前，請先建立效能基準。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | 應用程式開發人員 | 

### 套用最佳化策略
<a name="apply-optimization-strategies"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 最佳化讀取呼叫。 | 使用 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 反覆驗證每個最佳化變更，同時保持功能等效性。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/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>

*Sai Parthasaradhi，Amazon Web Services*

## 總結
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-summary"></a>

許多公司正在將舊版大型主機工作負載遷移至 Amazon Web Services (AWS)。此遷移包括將 z/OS 資料庫的 IBM Db2 轉移至 Amazon Elastic Compute Cloud (Amazon EC2) 上的適用於 Linux、Unix 和 Windows (LUW) 的 Db2。Amazon EC2 從現場部署到 AWS 的分階段遷移期間，使用者可能需要存取 Amazon EC2 上的 IBM Db2 z/OS 和 Db2 LUW 中的資料，直到所有應用程式和資料庫完全遷移至 Db2 LUW。在這種遠端資料存取案例中，使用者身分驗證可能具有挑戰性，因為不同的平台使用不同的身分驗證機制。

此模式涵蓋如何在 Db2 for LUW 上設定聯合伺服器，並將 Db2 for z/OS 設定為遠端資料庫。模式使用信任的內容，將使用者的身分從 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 執行個體 Amazon EC2 
+ 在內部部署執行之 z/OS 資料庫的遠端 Db2 
+ 透過 AWS [ Site-to-Site VPN 或 AWS](https://aws.amazon.com/vpn/) [Direct Connect 連線至 AWS](https://aws.amazon.com/directconnect/) 的內部部署網路

## Architecture
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-architecture"></a>

**目標架構**

![\[內部部署大型主機透過內部部署 Db2 伺服器和 VPN 連接到 EC2 上的 Db2 資料庫。\]](http://docs.aws.amazon.com/zh_tw/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>

**AWS 服務**
+ [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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 為遠端 Db2 z/OS 子系統編製目錄。 | 若要在 AWS 上執行的 Db2 LUW 上為遠端 Db2 z/OS 資料庫編製目錄，請使用下列範例命令。 Db2 <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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 收集遠端 Db2 z/OS 資料庫的使用者憑證。 | 在繼續後續步驟之前，請收集下列資訊：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 資料庫信任連線的代理使用者。只有在 Db2 LUW 資料庫中建立遠端伺服器物件時，才需要授權使用者 ID 和密碼。它們稍後不會在執行時間使用。 | DBA | 

### 建立使用者映射
<a name="create-user-mappings"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 為代理使用者建立使用者映射。 | 若要為代理使用者建立使用者映射，請執行下列命令。<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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立信任的內容物件。 | 若要在遠端 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 地址。子句`WITH USE FOR PUBLIC WITHOUT AUTHENTICATION`指出每個使用者 ID 允許在信任的連線上切換使用者 ID。不需要提供密碼。 | DBA | 

## 相關資源
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-resources"></a>
+ [IBM 資源存取控制設施 (RACF)](https://www.ibm.com/products/resource-access-control-facility)
+ [IBM Db2 LUW 聯合](https://www.ibm.com/docs/en/db2/11.5?topic=federation)
+ [信任的內容](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 資料庫物件，可定義聯合伺服器與遠端資料庫伺服器之間的信任關係。若要定義信任關係，信任的內容會指定信任屬性。信任屬性有三種類型：
+ 發出初始資料庫連線請求的系統授權 ID
+ 進行連線的 IP 地址或網域名稱
+ 資料庫伺服器與資料庫用戶端之間資料通訊的加密設定

當連線請求的所有屬性符合伺服器上定義之任何信任內容物件中指定的屬性時，就會建立信任的連線。信任的連線有兩種類型：隱含和明確。建立隱含信任的連線後，使用者會繼承在該信任的連線定義範圍外無法使用的角色。建立明確信任的連線後，使用者可以在相同實體連線上開啟，無論是否進行身分驗證。此外，可以授予 Db2 使用者角色，這些角色會指定只能在信任連線內使用的權限。此模式使用明確的信任連線。

*此模式中的信任內容*

模式完成後，Db2 LUW 上的 PERSON1 會使用聯合信任內容從 Db2 z/OS 存取遠端資料。如果連線源自於信任內容定義中指定的 IP 地址或網域名稱，則會透過代理使用者建立 PERSON1 的連線。建立連線後，會切換 PERSON1 的對應 Db2 z/OS 使用者 ID，無需重新驗證，而且使用者可以根據為該使用者設定的 Db2 權限來存取資料或物件。

*聯合信任內容的優點*
+ 此方法透過消除使用一般使用者 ID 或應用程式 ID 來維護最低權限原則，這些 ID 需要所有使用者所需權限的超集。
+ 對聯合資料庫和遠端資料庫執行交易的使用者的真實身分始終是已知的，並且可以進行稽核。
+ 效能提升，因為實體連線會在使用者之間重複使用，而不需要重新驗證聯合伺服器。

# 以 CSV 檔案將大規模 Db2 z/OS 資料傳輸至 Amazon S3
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files"></a>

*Bruno Sahinoglu、Abhijit Kshirsagar 和 Ivan Schuster，Amazon Web Services*

## 總結
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-summary"></a>

大型主機仍然是許多企業的記錄系統，其中包含大量資料，包括具有目前記錄的主要資料實體，以及歷史商業交易。它通常是孤立的，且不易被同一企業內的分散式系統存取。隨著雲端技術和大數據民主化的出現，企業有興趣使用大型主機資料中隱藏的洞察來開發新的業務功能。

有了這個目標，企業希望將大型主機 Db2 資料開放至其 Amazon Web Services (AWS) 雲端環境。業務原因有幾個，轉移方法因案例而異。您可能偏好將應用程式直接連接到大型主機，或者您可能偏好近乎即時地複寫資料。如果使用案例是饋送資料倉儲或資料湖，則不再需要擁有up-to-date複本，而且此模式中描述的程序可能就足夠，尤其是如果您想要避免任何第三方產品授權成本。另一個使用案例可能是遷移專案的大型主機資料傳輸。在遷移案例中，需要資料才能執行功能相等性測試。本文章中所述的方法是一種經濟實惠的方式，可將 Db2 資料傳輸到 AWS 雲端環境。

由於 Amazon Simple Storage Service (Amazon S3) 是最整合的 AWS 服務之一，因此您可以從該處存取資料，並使用 Amazon Athena、AWS Lambda 函數或 Amazon QuickSight 等其他 AWS 服務直接收集洞見。您也可以使用 AWS Glue 或 AWS Database Migration Service (AWS DMS) 將資料載入 Amazon Aurora 或 Amazon DynamoDB。考慮到這一點，這說明如何在大型主機上以 ASCII 格式卸載 CSV 檔案中的 Db2 資料，並將檔案傳輸至 Amazon S3。

為此，已開發[大型主機指令碼](https://github.com/aws-samples/unloaddb2-samples)，以協助產生任務控制語言 (JCLs)，以視需要卸載和傳輸任意數量的 Db2 資料表。

## 先決條件和限制
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-prereqs"></a>

**先決條件**
+ IBM z/OS 作業系統使用者，有權執行 Restructured Extended Executor (REXX) 和 JCL 指令碼。
+ 存取 z/OS Unix System Services (USS) 以產生 SSH （安全殼層） 私有和公有金鑰。
+ 可寫入的 S3 儲存貯體。如需詳細資訊，請參閱 Amazon [ S3 文件中的建立您的第一個 S3 儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html)體。 Amazon S3 
+ 啟用 AWS Transfer 系列 SSH 檔案傳輸通訊協定 (SFTP) 的伺服器，使用做為身分提供者**管理的 Service** 和做為 AWS 儲存服務的 Amazon S3。如需詳細資訊，請參閱 AWS Transfer Family 文件中的[建立啟用 SFTP 的伺服器](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html)。

**限制**
+ 此方法不適用於近乎即時或即時的資料同步。
+ 資料只能從 Db2 z/OS 移至 Amazon S3，不能以其他方式移動。

## Architecture
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-architecture"></a>

**來源技術堆疊**
+ 在 z/OS 上執行 Db2 的大型主機

**目標技術堆疊**
+ AWS Transfer 系列
+ Amazon S3
+ Amazon Athena
+ Amazon QuickSight
+ AWS Glue
+ Amazon Relational Database Service (Amazon RDS)
+ Amazon Aurora
+ Amazon Redshift

**來源和目標架構**

下圖顯示以 ASCII CSV 格式產生、擷取和傳輸 Db2 z/OS 資料至 S3 儲存貯體的程序。

![\[Data flow from corporate data center to AWS 雲端, showing mainframe extraction and cloud processing steps.\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/66e6fa1a-1c7d-4b7a-8404-9ba85e433b24/images/d72f2572-10c9-43f9-b6c9-7e57c9a69d52.png)


1. 第一個稱為 TABNAME 的 JCL 將使用 Db2 公用程式 DSNTIAUL 來擷取和產生您計劃從 Db2 卸載的資料表清單。若要選擇資料表，您必須手動調整 SQL 輸入以選取和新增篩選條件，以包含一或多個 Db2 結構描述。

1. 第二個 JCL 稱為 REXXEXEC，將使用 JCL 骨架和 REXX 程式來處理 JCL TABNAME 建立的資料表清單，並為每個資料表名稱產生一個 JCL。每個 JCL 都會包含一個卸載資料表的步驟，以及另一個使用 SFTP 通訊協定將檔案傳送至 S3 儲存貯體的步驟。

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 雲端中的受管 PB 級資料倉儲服務。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) 可協助您在 AWS 雲端中設定、操作和擴展關聯式資料庫。
+ [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) 是在 Unix System Service 上執行的開放原始碼軟體 SSH 連接埠，位於 IBM 作業系統 z/OS 下。SSH 是在 TCP/IP 網路上執行的兩部電腦之間的安全加密連線程式。它提供多個公用程式，包括 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>

對於第一次卸載，產生的 JCLs應該卸載整個資料表資料。

第一次完全卸載後，請執行增量卸載，以獲得更好的效能並節省成本。 在範本 JCL 面板中修補 SQL 查詢，以適應卸載程序的任何變更。

您可以手動轉換結構描述，或使用 Lambda 上的指令碼搭配 Db2 SYSPUNCH 做為輸入。對於工業程序，[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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立啟用 SFTP 的伺服器。 | 若要在 [AWS Transfer Family 主控台](https://console.aws.amazon.com/transfer/)上開啟和建立 SFTP 伺服器，請執行下列動作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | 一般 AWS | 
| 建立 Transfer Family 的 IAM 角色。 | 若要為 Transfer Family 建立 AWS Identity and Access Management (IAM) 角色以存取 Amazon S3，請遵循[建立 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 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/zh_tw/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | 大型主機開發人員 | 

### 產生 JCLs
<a name="generate-the-jcls"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 產生範圍內的 Db2 資料表清單。 | 提供輸入 SQL 以建立資料遷移範圍的資料表清單。此步驟要求您使用 SQL where 子句指定選取條件，以佇列 Db2 目錄資料表 SYSIBM.SYSTABLES。您可以自訂篩選條件，以包含以特定字首開頭或根據增量卸載時間戳記的特定結構描述或資料表名稱。輸出是在大型主機上的實體序列 (PS) 資料集中擷取。此資料集將做為 JCL 產生下一階段的輸入。在使用 JCL TABNAME 之前 （您可以視需要重新命名它），請進行下列變更：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 可以實施其他變更。標準負載程式庫的第一個限定詞可能與 不同`SYS1`，這是 IBM 預設。因此，在執行範本之前，請自訂範本以考量您的網站特定標準。在骨架 JCL UNLDSKEL 中進行下列變更：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**卸載和 SFTP JCL 骨架**<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`名稱產生一個新的 JCL。事先配置此程式庫。每個新的 JCL 將有兩個步驟：一個步驟將 Db2 資料表卸載至檔案，一個步驟將檔案傳送至 S3 儲存貯體。在 JCL REXXEXEC 中進行下列變更 （您可以變更名稱）：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**ZSTEPS REXX 指令碼**<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> | 大型主機開發人員 | 

### 執行 JCLs
<a name="run-the-jcls"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 執行 Db2 卸載步驟。 | 在產生 JCL 之後，您將擁有與需要卸載的資料表一樣多JCLs。此案例使用 JCL 產生的範例來解釋結構和最重要的步驟。您不需要執行任何操作。以下資訊僅供參考。如果您打算提交您在上一個步驟中產生的 JCLs，請跳到*提交 LODnnnnn JCLs*任務。使用 JCL 搭配 IBM 提供的 DSNUTILB Db2 公用程式卸載 Db2 資料時，您必須確定卸載的資料不包含壓縮的數值資料。若要達成此目的，請使用 DSNUTILB `DELIMITED` 參數。`DELIMITED` 參數支援以 CSV 格式卸載資料，方法是新增字元做為文字欄位的分隔符號和雙引號，移除 VARCHAR 欄中的填補，並將所有數值欄位轉換為 EXTERNAL FORMAT，包括 DATE 欄位。下列範例顯示所產生 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> | Mainframe 開發人員、系統工程師 | 
| 執行 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> | Mainframe 開發人員、系統工程師 | 
| 提交 LODnnnnn JCLs。 | 先前的 JCL 已產生所有需要卸載、轉換為 CSV 並傳輸至 S3 儲存貯體的 LODnnnnn nnJCL 資料表。在已產生的所有 JCLs上執行 `submit`命令。 | Mainframe 開發人員、系統工程師 | 

## 相關資源
<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 – UNLOAD 控制陳述式範例](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 系列 – 建立啟用 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/)，並使用query-in-place、分析和機器學習工具擷取寶貴的洞見，而無需移動資料。
+ 透過設定與 AWS Transfer 系列整合的上傳後處理工作流程來啟動 [Lambda 函數](https://aws.amazon.com/lambda/)。
+ 使用 AWS 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 是一種無伺服器資料整合服務，可讓您輕鬆探索、準備和結合資料，以進行分析、機器學習和應用程式開發。 [AWS Glue](https://aws.amazon.com/glue/)

在遷移使用案例中，由於您可以將任何資料從大型主機傳輸到 S3，因此您可以執行下列動作：
+ 淘汰實體基礎設施，並使用 Amazon S3 Glacier 和 S3 Glacier Deep Archive 建立符合成本效益的資料封存策略。 
+ 使用 Amazon S3 和其他 AWS 服務建置可擴展、耐用且安全的備份和還原解決方案，例如 S3 Glacier 和 Amazon Elastic File System (Amazon EFS)，以增強或取代現有的內部部署功能。

# 使用 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 報告產生器](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 版或更新版本

## Architecture
<a name="transform-easytrieve-modern-languages-architecture"></a>

**來源技術堆疊**
+ **作業系統** – IBM z/OS
+ **程式設計語言** – Easytrieve、任務控制語言 (JCL)
+ **資料庫** – z/OS 的 IBM DB2、虛擬儲存存取方法 (VSAM)、大型主機平面檔案

**目標技術堆疊**
+ **作業系統** – Amazon Linux
+ **運算** – Amazon Elastic Compute Cloud (Amazon EC2)
+ **程式設計語言** – Java
+ **資料庫** Amazon Relational Database Service (Amazon RDS)

**目標架構**

![\[使用 AWS 轉換自訂將 EZT 轉換為現代程式碼的目標架構圖。\]](http://docs.aws.amazon.com/zh_tw/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) 應用程式現代化為 Java。

*步驟 1 –  將舊版程式碼提供給適用於 大型主機 AWS Transform 的 ，以：*
+ 分析程式碼
+ 擷取高階商業邏輯
+ 擷取詳細的商業邏輯。

*步驟 2 –  使用所需的輸入建立資料夾：*
+ 使用 為大型主機擷取 AWS Transform 的 EZT 業務規則 
+ EZT 程式設計參考文件 
+ EZT 原始碼
+ 大型主機輸入和輸出資料集

*步驟 3 – 建立並執行自訂轉換定義*

1. 使用 AWS Transform CLI 以自然語言描述轉換目標。 AWS Transform 自訂會分析 BRE、原始程式碼和 EZT 程式設計指南，以產生自訂轉換定義以供開發人員檢閱和核准。

1. 然後，使用專案原始碼叫用 AWS Transform CLI。 AWS Transform 自訂會建立轉換計劃、在核准時將 EZT 轉換為 Java、產生支援檔案、建置可執行 JAR，以及驗證結束條件。

1. 使用驗證代理程式來測試與大型主機輸出 的功能等效性。自我偵錯工具代理程式會自動修正問題。最終交付項目包括經過驗證的 Java 程式碼和 HTML 驗證報告。

**自動化和擴展**
+ 代理式 AI 多模式執行架構 – AWS Transform 自訂利用代理式 AI 搭配 3 種執行模式 （融合式、互動式、完整自動化） 來自動化複雜的轉換任務，包括程式碼分析、重構、轉換規劃和測試。
+ 自適應學習意見回饋系統 – 平台透過程式碼範例分析、文件剖析和開發人員意見回饋與版本化轉換定義的整合，實作持續學習機制。
+ 並行應用程式處理架構 – 系統可跨可擴展的基礎設施同時進行多個應用程式轉換操作的分散式平行執行。

## 工具
<a name="transform-easytrieve-modern-languages-tools"></a>

**AWS 服務  **
+ [AWS Transform custom](https://docs.aws.amazon.com/transform/latest/userguide/custom.html) 是一種代理式 AI 服務，用於將舊版 EZT 應用程式轉換為現代程式設計語言。 
+ [AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html) 使用代理式 AI 來協助您加速傳統工作負載的現代化，例如 .NET、大型主機和 VMware 工作負載。
+ [AWS Transform for mainframe ](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 自訂支援互動式工作階段 (atx custom def exec) 和自動轉換，以實現程式碼庫的可擴展現代化。
+ [Git](https://git-scm.com/doc) 版本控制系統用於自動修正應用程式期間的分支保護、變更追蹤和復原功能。 
+ [Java](https://www.java.com/en/) 是此模式中使用的程式設計語言和開發環境。 

**程式碼儲存庫**

此模式的程式碼可在使用 GitHub 上的[AWS Transform 自訂的 Easytrieve 轉換為現代語言](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>
+ 建立標準化專案結構 – 建立四資料夾結構 (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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
|  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 文件中的[擷取商業邏輯](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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 佈建 AWS Transform 自訂的基礎設施。 | 部署託管安全轉型環境所需的生產就緒基礎設施。這包括使用轉換 Easytrieve 程式碼所需的工具、IAM 許可和網路設定設定的私有 Amazon EC2 執行個體。若要使用基礎設施做為程式碼 (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/zh_tw/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 應用程式開發人員 | 

###  建立自訂轉換定義
<a name="create-a-custom-transformation-definition"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立轉換定義。 | 請依照下列步驟，使用功能驗證建立 EZT 到 Java 轉換的自訂轉換定義。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 應用程式開發人員 | 
| 發佈轉換定義。 | 在檢閱和驗證轉換定義之後，您可以使用自然語言提示將其發佈到 AWS Transform 自訂登錄檔，並提供定義名稱，例如 *Easytrieve-to-Java-Migration*。 | 應用程式開發人員 | 

### 準備基準資料以進行驗證。
<a name="prepare-baseline-data-for-validation"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 檢閱轉換驗證摘要。 | 在執行 AWS Transform 自訂轉換之前，請確認 `input-data` 資料夾包含執行大型主機批次任務之前擷取的必要資料檔案。在大型主機批次任務執行之後，請確定 `output-data` 資料夾會擷取產生的檔案。根據執行需求，所有檔案都是使用 EBCDIC 編碼的Sequential/Text/DB2 格式。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 檢閱轉換驗證摘要。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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。   | 
| *解決記憶體限制*執行期間發生記憶體不足錯誤。 | 您可以要求 AWS Transform 共用目前的記憶體內 JVM 大小，然後根據此資訊增加記憶體配置。此調整有助於因應更大的處理需求。如果記憶體限制在調整後仍存在，請考慮將大型任務分成較小的批次。  | 
| *解決輸出檔案差異*輸出檔案不符合預期，且 AWS Transform 表示無法進行進一步變更。 | 提供具體的意見回饋和技術原因，說明目前輸出不正確的原因。包含其他技術或商業文件，以支援您的需求。此詳細內容有助於 AWS Transform 修正程式碼，以產生適當的輸出檔案。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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)