

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

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

# 教學課程：為 BankDemo 範例應用程式設定 Rocket Software （先前稱為 Micro Focus) 組建
<a name="tutorial-build-mf"></a>

AWS Mainframe Modernization 可讓您為遷移的應用程式設定建置和持續整合/持續交付 (CI/CD) 管道。這些建置和管道會使用 AWS CodeBuild AWS CodeCommit和 AWS CodePipeline 來提供這些功能。CodeBuild 是全受管建置服務，可編譯您的原始程式碼、執行單元測試，並產生準備好部署的成品。CodeCommit 是一種版本控制服務，可讓您在 AWS 雲端中私下存放和管理 Git 回應。CodePipeline 是一種持續交付服務，可讓您模型化、視覺化和自動化發行軟體所需的步驟。

本教學課程示範如何使用 從 Amazon S3 AWS CodeBuild 編譯 BankDemo 範例應用程式原始碼，然後將編譯後的程式碼匯出回 Amazon S3。

AWS CodeBuild 是一種全受管持續整合服務，可編譯原始程式碼、執行測試，並產生準備好部署的軟體套件。使用 CodeBuild，您可以使用預先封裝的建置環境，也可以使用您自己的建置工具建立自訂建置環境。此示範案例使用第二個選項。它包含使用預先封裝 Docker 映像的 CodeBuild 建置環境。

**重要**  
在開始大型主機現代化專案之前，建議您先了解[AWS 大型主機的 Migration Acceleration Program (MAP)](https://aws.amazon.com/migration-acceleration-program/mainframe/)，或聯絡[AWS 大型主機專家](mailto: mainframe@amazon.com)，以了解現代化大型主機應用程式所需的步驟。

**Topics**
+ [先決條件](#tutorial-build-mf-prerequisites)
+ [步驟 1：與 AWS 帳戶共用建置資產](#tutorial-build-mf-assets)
+ [步驟 2：建立 Amazon S3 儲存貯體](#tutorial-build-mf-s3)
+ [步驟 3：建立建置規格檔案](#tutorial-build-mf-spec)
+ [步驟 4：上傳來源檔案](#tutorial-build-mf-upload)
+ [步驟 5：建立 IAM 政策](#tutorial-build-mf-IAM-policy)
+ [步驟 6：建立 IAM 角色](#tutorial-build-mf-IAM-role)
+ [步驟 7：將 IAM 政策連接至 IAM 角色](#tutorial-build-mf-attach)
+ [步驟 8：建立 CodeBuild 專案](#tutorial-build-mf-create-project)
+ [步驟 9：啟動建置](#tutorial-build-mf-start)
+ [步驟 10：下載輸出成品](#tutorial-build-mf-download-output)
+ [清除資源](#tutorial-build-mf-clean)

## 先決條件
<a name="tutorial-build-mf-prerequisites"></a>

開始本教學課程之前，請先完成下列先決條件。
+ 下載 [BankDemo 範例應用程式](https://d3lkpej5ajcpac.cloudfront.net/demo/mf/BANKDEMO-build.zip)，並將其解壓縮至資料夾。來源資料夾包含 COBOL 程式、Copybook 和 定義。它也包含 JCL 資料夾以供參考，但您不需要建置 JCL。資料夾也包含建置所需的中繼檔案。
+ 在 AWS 大型主機現代化主控台中，選擇**工具** 。在**分析、開發和建置資產**中，選擇**與我的 AWS 帳戶共用資產**。

## 步驟 1：與 AWS 帳戶共用建置資產
<a name="tutorial-build-mf-assets"></a>

在此步驟中，您會確保與 AWS 帳戶共用建置資產，尤其是在使用資產的區域中。

1. 在 https：//[https://console.aws.amazon.com/m2/](https://us-west-2.console.aws.amazon.com/m2/home?region=us-west-2#/) 開啟 AWS 大型主機現代化主控台。

1. 在左側導覽中，選擇**工具**。

1. 在**分析、開發和建置資產**中，選擇**與我的 AWS 帳戶共用資產**。

**重要**  
您需要在每個要進行建置的 AWS 區域中執行此步驟一次。

## 步驟 2：建立 Amazon S3 儲存貯體
<a name="tutorial-build-mf-s3"></a>

在此步驟中，您會建立兩個 Amazon S3 儲存貯體。第一個是用來保存原始程式碼的輸入儲存貯體，另一個是用來保存建置輸出的輸出儲存貯體。如需詳細資訊，請參閱《[Amazon S3 使用者指南》中的建立、設定和使用 Amazon S3 儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html)體。 *Amazon S3 *

1. 若要建立輸入儲存貯體，請登入 Amazon S3 主控台，然後選擇**建立儲存貯**體。

1. 在**一般組態**中，提供儲存貯體的名稱，並指定您要建立儲存貯體 AWS 區域 的 。範例名稱為 `codebuild-regionId-accountId-input-bucket`，其中 `regionId`是儲存貯體 AWS 區域 的 ，而 `accountId`是您的 AWS 帳戶 ID。
**注意**  
如果您要在與美國東部 （維吉尼亞北部） AWS 區域 不同的 中建立儲存貯體，請指定 `LocationConstraint` 參數。如需詳細資訊，請參閱《*Amazon Simple Storage Service API 參考*》中的[建立儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)體。

1. 保留所有其他設定，然後選擇**建立儲存貯**體。

1. 重複步驟 1-3 來建立輸出儲存貯體。範例名稱為 `codebuild-regionId-accountId-output-bucket`，其中 `regionId`是儲存貯體 AWS 區域 的 ，而 `accountId`是您的 AWS 帳戶 ID。

   無論您為這些儲存貯體選擇的名稱為何，請務必在本教學課程中使用這些儲存貯體。

## 步驟 3：建立建置規格檔案
<a name="tutorial-build-mf-spec"></a>

在此步驟中，您會建立建置規格檔案。此檔案提供 YAML 格式的建置命令和相關設定，讓 CodeBuild 執行建置。如需詳細資訊，請參閱*AWS CodeBuild 《 使用者指南*》中的[為 CodeBuild 建置規格參考](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html)。

1. 在您解壓縮為先決條件`buildspec.yml`的目錄中建立名為 的檔案。

1. 將下列內容新增至 檔案並儲存。此檔案不需要變更。

   ```
   version: 0.2
   env:
     exported-variables:
       - CODEBUILD_BUILD_ID
       - CODEBUILD_BUILD_ARN
   phases:
     install:
       runtime-versions:
         python: 3.7
     pre_build:
       commands:
         - echo Installing source dependencies...
         - ls -lR $CODEBUILD_SRC_DIR/source
     build:
       commands:
         - echo Build started on `date`
         - /start-build.sh -Dbasedir=$CODEBUILD_SRC_DIR/source -Dloaddir=$CODEBUILD_SRC_DIR/target 
     post_build:
       commands:
         - ls -lR $CODEBUILD_SRC_DIR/target
         - echo Build completed on `date`
   artifacts:
     files:
       - $CODEBUILD_SRC_DIR/target/**
   ```

   此處的 `CODEBUILD_BUILD_ID`、`$CODEBUILD_SRC_DIR/source`、 `CODEBUILD_BUILD_ARN`和 `$CODEBUILD_SRC_DIR/target`是 CodeBuild 中可用的環境變數。如需詳細資訊，請參閱[建置環境中的環境變數](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。

   此時，您的目錄看起來應該會像這樣。

   ```
   (root directory name)
       |-- build.xml
       |-- buildspec.yml
       |-- LICENSE.txt
       |-- source
            |... etc.
   ```

1. 將資料夾的內容壓縮至名為 的檔案`BankDemo.zip`。在本教學課程中，您無法壓縮 資料夾。反之，請將資料夾的內容壓縮至檔案 `BankDemo.zip`。

## 步驟 4：上傳來源檔案
<a name="tutorial-build-mf-upload"></a>

在此步驟中，您將 BankDemo 範例應用程式的原始碼上傳至您的 Amazon S3 輸入儲存貯體。

1. 登入 Amazon S3 主控台，然後在左側導覽窗格中選擇**儲存貯**體。然後選擇您先前建立的輸入儲存貯體。

1. 在**物件**下，選擇**上傳**。

1. 在**檔案和資料夾**區段中，選擇**新增檔案**。

1. 導覽至 並選擇您的 `BankDemo.zip` 檔案。

1. 選擇**上傳**。

## 步驟 5：建立 IAM 政策
<a name="tutorial-build-mf-IAM-policy"></a>

在此步驟中，您會建立兩個 [IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。一項政策授予 AWS Mainframe Modernization 存取和使用包含 Rocket Software 組建工具的 Docker 映像的許可。此政策不會為客戶自訂。其他政策授予 AWS Mainframe Modernization 與輸入和輸出儲存貯體以及 CodeBuild 產生的 [Amazon CloudWatch logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)互動的許可。

若要了解如何建立 IAM 政策，請參閱《[IAM 使用者指南》中的編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。 **

**建立存取 Docker 映像的政策**

1. 在 IAM 主控台中，複製下列政策文件並將其貼到政策編輯器中。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:GetAuthorizationToken"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:BatchCheckLayerAvailability",
                   "ecr:GetDownloadUrlForLayer",
                   "ecr:BatchGetImage"
               ],
               "Resource": "arn:aws:ecr:*:673918848628:repository/m2-enterprise-build-tools"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::aws-m2-repo-*-<region>-prod"
           }
       ]
   }
   ```

------

1. 提供政策的名稱，例如 `m2CodeBuildPolicy`。

**建立允許 AWS Mainframe Modernization 與儲存貯體和日誌互動的政策**

1. 在 IAM 主控台中，複製下列政策文件並將其貼到政策編輯器中。請務必`regionId`將 AWS 區域和 更新`accountId`為 AWS 帳戶。

1. 提供政策的名稱，例如 `BankdemoCodeBuildRolePolicy`。

## 步驟 6：建立 IAM 角色
<a name="tutorial-build-mf-IAM-role"></a>

在此步驟中，您會建立新的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)，在您將先前建立的 IAM 政策與此新 IAM 角色建立關聯之後，允許 CodeBuild 與您 AWS 資源互動。

如需有關建立服務角色的資訊，請參閱《*IAM 使用者指南*》中的[建立角色以委派許可給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

1. 登入 IAM 主控台，然後在左側導覽窗格中選擇**角色**。

1. 選擇建**立角色**。

1. 在**信任的實體類型**下，選擇 **AWS 服務**。

1. 在**其他 AWS 服務的使用案例**下，選擇 **CodeBuild**，然後再次選擇 **CodeBuild**。

1. 選擇**下一步**。

1. 在 **Add permissions** (新增許可) 頁面上，選擇 **Next** (下一步)。您稍後會將政策指派給角色。

1. 在**角色詳細資訊**下，提供角色的名稱，例如 `BankdemoCodeBuildServiceRole`。

1. 在**選取信任的實體**下，確認政策文件如下所示：

------
#### [ JSON ]

****  

   ```
   {
             "Version":"2012-10-17",		 	 	 
             "Statement": [
               {
                 "Effect": "Allow",
                 "Principal": {
                   "Service": "codebuild.amazonaws.com"
                 },
                 "Action": "sts:AssumeRole"
               }
             ]
           }
   ```

------

1. 選擇建**立角色**。

## 步驟 7：將 IAM 政策連接至 IAM 角色
<a name="tutorial-build-mf-attach"></a>

在此步驟中，您將先前建立的兩個 IAM 政策連接到 IAM `BankdemoCodeBuildServiceRole` 角色。

1. 登入 IAM 主控台，然後在左側導覽窗格中選擇**角色**。

1. 在**角色**中，選擇您先前建立的角色，例如 `BankdemoCodeBuildServiceRole`。

1. 在**許可政策**中，選擇**新增許可**，然後選擇**連接政策**。

1. **在其他許可政策**中，選擇您先前建立的政策，例如 `m2CodeBuildPolicy`和 `BankdemoCodeBuildRolePolicy`。

1. 選擇**連接政策**。

## 步驟 8：建立 CodeBuild 專案
<a name="tutorial-build-mf-create-project"></a>

在此步驟中，您會建立 CodeBuild 專案。

1. 登入 CodeBuild 主控台，然後選擇**建立建置專案**。

1. 在**專案組態**區段中，提供專案的名稱，例如 `codebuild-bankdemo-project`。

1. 在**來源**區段中，針對**來源提供者**選擇 **Amazon S3**，然後選擇您先前建立的輸入儲存貯體，例如 `codebuild-regionId-accountId-input-bucket`。

1. 在 **S3 物件金鑰或 S3 資料夾**欄位中，輸入您上傳到 S3 儲存貯體的 zip 檔案名稱。在此情況下，檔案名稱為 `bankdemo.zip`。

1. 在**環境**區段中，選擇**自訂映像**。

1. 在**環境類型**欄位中，選擇 **Linux**。

1. 在**映像登錄**檔下，選擇**其他登錄檔**。

1. 在**外部登錄 URL** 欄位中，
   + 對於 Rocket 軟體 v9：輸入 `673918848628.dkr.ecr.us-west-1.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1`。如果您使用不同的 AWS 區域搭配 Rocket Software v9，您也可以指定 ` 673918848628.dkr.ecr.<m2-region>.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1`，其中 <m2-region> 是可使用 AWS 大型主機現代化服務 AWS 的區域 （例如 `eu-west-3`)。
   + 對於 Rocket 軟體 v8：輸入 `673918848628.dkr.ecr.us-west-2.amazonaws.com/m2-enterprise-build-tools:8.0.9.R1`
   + 對於 Rocket 軟體 v7：輸入 `673918848628.dkr.ecr.us-west-2.amazonaws.com/m2-enterprise-build-tools:7.0.R10`

1. 在**服務角色**下，選擇**現有服務角色**，然後在**角色 ARN** 欄位中，選擇您先前建立的服務角色；例如，`BankdemoCodeBuildServiceRole`。

1. 在 **Buildspec** 區段中，選擇**使用 buildspec 檔案**。

1. 在**成品**區段的**類型**下，選擇 **Amazon S3**，然後選擇輸出儲存貯體，例如 `codebuild-regionId-accountId-output-bucket`。

1. 在**名稱**欄位中，輸入您要包含建置輸出成品之儲存貯體中的資料夾名稱，例如 `bankdemo-output.zip`。

1. 在**成品封裝**下，選擇 **Zip**。

1. 選擇 **Create build project (建立建置專案)**。

## 步驟 9：啟動建置
<a name="tutorial-build-mf-start"></a>

在此步驟中，您會啟動建置。

1. 登入 CodeBuild 主控台。

1. 在左側導覽窗格中，選擇**建置專案**。

1. 選擇您先前建立的建置專案，例如 `codebuild-bankdemo-project`。

1. 選擇 **Start build (開始組建)**。

此命令會啟動建置。組建會以非同步方式執行。命令的輸出是包含 屬性 ID 的 JSON。此屬性 idis 是您剛啟動之組建的 CodeBuild 組建 ID 參考。您可以在 CodeBuild 主控台中檢視組建的狀態。您也可以在 主控台中查看有關建置執行的詳細日誌。如需詳細資訊，請參閱*AWS CodeBuild 《 使用者指南*》中的[檢視詳細的建置資訊](https://docs.aws.amazon.com/codebuild/latest/userguide/getting-started-build-log-console.html)。

當目前階段為 COMPLETED 時，表示您的建置已成功完成，而且您的編譯成品已在 Amazon S3 上就緒。

## 步驟 10：下載輸出成品
<a name="tutorial-build-mf-download-output"></a>

在此步驟中，您會從 Amazon S3 下載輸出成品。Rocket 軟體建置工具可以建立數種不同的可執行檔類型。在本教學課程中，它會產生共用物件。

1. 登入 Amazon S3 主控台。

1. 在**儲存貯體** role="bold"> 區段中，選擇輸出儲存貯體的名稱，例如 `codebuild-regionId-accountId-output-bucket`。

1. 選擇**下載** role="bold">。

1. 解壓縮所下載的 檔案。導覽至目標資料夾以查看建置成品。這些包括 `.so` Linux 共用物件。

## 清除資源
<a name="tutorial-build-mf-clean"></a>

如果您不再需要為本教學課程建立的資源，請將其刪除以避免額外費用。若要這樣做，請完成下列步驟：
+ 刪除您為此教學課程建立的 S3 儲存貯體。如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[刪除儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)體。
+ 刪除您為此教學課程建立的 IAM 政策。如需詳細資訊，請參閱《[IAM 使用者指南》中的刪除 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-delete.html)。 **
+ 刪除您為此教學課程建立的 IAM 角色。如需詳細資訊，請參閱 *IAM 使用者指南*中的[刪除角色或執行個體描述檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html)。
+ 刪除您為此教學課程建立的 CodeBuild 專案。如需詳細資訊，請參閱*AWS CodeBuild 《 使用者指南*》中的在 [ CodeBuild 中刪除組建專案](https://docs.aws.amazon.com/codebuild/latest/userguide/delete-project.html)。