

AWS Mainframe Modernization Service (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization Service (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization Service (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、[AWS 「 Mainframe Modernization の可用性の変更](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 は、Git リポジトリを AWS クラウドにプライベートに保存および管理できるようにするバージョン管理サービスです。CodePipeline は、ソフトウェアをリリースするために必要な手順のモデル化、視覚化、および自動化ができる継続的なデリバリーサービスです。

このチュートリアルでは、 AWS CodeBuild を使用して Amazon S3 から BankDemo サンプルアプリケーションのソースコードをコンパイルし、コンパイルしたコードを Amazon S3 にエクスポートする方法を示します。 Amazon S3 

AWS CodeBuild は、ソースコードをコンパイルし、テストを実行し、デプロイ可能なソフトウェアパッケージを生成するフルマネージドの継続的統合サービスです。CodeBuild では、パッケージ済みのビルド環境を使用するか、ご自分のビルドツールを使用するカスタムビルド環境を作成することができます。このデモシナリオでは 2 つ目のオプションを使用します。あらかじめパッケージ化された 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 プログラム、コピーブック、定義が含まれています。JCL をビルドする必要はありませんが、参照用の JCL フォルダも含まれています。このフォルダには、ビルドに必要なメタファイルも含まれています。
+  AWS Mainframe Modernization コンソールで、**ツール** を選択します。**[分析、開発、およびアセットの構築]** で、**[ アカウントとアセットを共有する]** を選択します。

## ステップ 1: ビルドアセットを AWS アカウントと共有する
<a name="tutorial-build-mf-assets"></a>

このステップでは、特にアセットが使用されているリージョンで、ビルドアセットを AWS アカウントと共有します。

1. [https://console.aws.amazon.com/m2/](https://us-west-2.console.aws.amazon.com/m2/home?region=us-west-2#/) で AWS Mainframe Modernization コンソールを開きます。

1. 左側のナビゲーションで、**[ツール]** を選択します。

1. **分析、開発、アセットの構築**で、**アセットを自分の AWS アカウントと共有**を選択します。

**重要**  
ビルドを実行する予定のすべての AWS リージョンで、このステップを 1 回実行する必要があります。

## ステップ 2: Amazon S3 バケットを作成する
<a name="tutorial-build-mf-s3"></a>

このステップでは、2 つの Amazon S3 バケットを作成します。1 つ目はソースコードを保持する入力バケットで、もう 1 つはビルド出力を保持する出力バケットです。詳細については、「*Amazon S3 ユーザーガイド*」の「[Amazon S3 バケットの作成、設定、操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html)」を参照してください。

1. 入力バケットを作成するには、Amazon S3 コンソールにログインし、**[バケットの作成]** を選択します。

1. **全般設定**で、バケットの名前を指定し、バケットを作成する AWS リージョン を指定します。名前の例は で`codebuild-regionId-accountId-input-bucket`、 `regionId`はバケット AWS リージョン の 、 `accountId`は ID AWS アカウント です。
**注記**  
米国東部 (バージニア北部) 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>

このステップでは、ビルド仕様ファイルを作成します。このファイルには、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_BUILD_ARN`、`$CODEBUILD_SRC_DIR/source`、`$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>

このステップでは、2 つの [IAM ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)を作成します。1 つのポリシーは、 AWS Mainframe Modernization が Rocket Software ビルドツールを含む Docker イメージにアクセスして使用するためのアクセス許可を付与します。このポリシーはお客様向けにカスタマイズされていません。もう 1 つのポリシーは、 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 ポリシーをこの新しい IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)に関連付けた後、CodeBuild が AWS リソースとやり取りできるようにする新しい IAM ロールを作成します。

サービスロールの作成の詳細については、*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. **[アクセス許可を追加]** ページで **[次へ]** を選択してください。後でロールにポリシーを割り当てます。

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 ポリシーを `BankdemoCodeBuildServiceRole` IAM ロールにアタッチします。

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 Software v9 の場合: と入力します`673918848628.dkr.ecr.us-west-1.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1`。Rocket Software v9 で別の AWS リージョンを使用している場合は、 を指定することもできます。<m2-region> は ` 673918848628.dkr.ecr.<m2-region>.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1`Mainframe Modernization AWS サービスが利用可能な AWS リージョンです (例: `eu-west-3`)。
   + Rocket Software v8 の場合: Enter `673918848628.dkr.ecr.us-west-2.amazonaws.com/m2-enterprise-build-tools:8.0.9.R1`
   + Rocket Software v7 の場合: Enter `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 です。この属性 ID は、開始したばかりのビルドの CodeBuild ビルド ID への参照です。コンソールで、ビルドのステータスを表示することができます。ビルド実行に関する詳細なログをコンソールで確認することもできます。詳細については、「*AWS CodeBuild ユーザーガイド*」の「[詳細なビルド情報を表示する](https://docs.aws.amazon.com/codebuild/latest/userguide/getting-started-build-log-console.html)」を参照してください。

現在のフェーズが完了すると、ビルドが正常に終了し、コンパイルされたアーティファクトが Amazon S3 で準備できたことを意味します。

## ステップ 10: 出力アーティファクトをダウンロードする
<a name="tutorial-build-mf-download-output"></a>

このステップでは、Amazon S3 から出力アーティファクトをダウンロードします。Rocket Software ビルドツールは、いくつかの異なる実行可能ファイルタイプを作成できます。このチュートリアルでは、共有オブジェクトを生成します。

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 ユーザーガイド*」の「[Delete a build project in CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/delete-project.html)」を参照してください。