チュートリアル: BankDemo サンプルアプリケーション用の Micro Focus ビルドのセットアップ - AWS Mainframe Modernization

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

チュートリアル: BankDemo サンプルアプリケーション用の Micro Focus ビルドのセットアップ

AWS Mainframe Modernization では、移行したアプリケーションのビルドと継続的インテグレーション/継続的デリバリー (CI/CD) パイプラインを設定できます。これらのビルドとパイプラインは、AWS CodeBuild、AWS CodeCommit、AWS CodePipeline を使用してこれらの機能を提供します。CodeBuild は完全マネージド型の構築サービスです。ソースコードのコンパイル、ユニットテストの実行、すぐにデプロイできるアーティファクトの生成を行います。CodeCommit は、AWS クラウドでの Git リポジトリのプライベートな保存と管理を有効にするバージョン制御サービスです。CodePipeline は、ソフトウェアをリリースするために必要な手順のモデル化、視覚化、および自動化ができる継続的なデリバリーサービスです。

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

AWS CodeBuild はフルマネージド型の継続的統合サービスであり、このサービスにより、ソースコードをコンパイルし、テストを実行し、デプロイ可能なソフトウェアパッケージを作成できます。CodeBuild では、パッケージ済みのビルド環境を使用するか、ご自分のビルドツールを使用するカスタムビルド環境を作成することができます。このデモシナリオでは 2 つ目のオプションを使用します。あらかじめパッケージ化された Docker イメージを使用する CodeBuild ビルド環境で構成されています。

重要

メインフレームモダナイゼーションプロジェクトを開始する前に、AWS メインフレーム向け Migration Acceleration Program (MAP) について確認するか、メインフレームアプリケーションのモダナイズに必要な手順について AWS メインフレームのスペシャリストに問い合わせることをお勧めします。

前提条件

このチュートリアルを開始する前に、次の前提条件を完了してください。

  • BankDemo サンプルアプリケーションをダウンロードし、フォルダに解凍します。ソースフォルダには、COBOL プログラム、コピーブック、CICS BMS 定義が含まれています。JCL をビルドする必要はありませんが、参照用の JCL フォルダも含まれています。このフォルダには、ビルドに必要なメタファイルも含まれています。

  • AWS メインフレームモダナイゼーションコンソールで [ツール] を選択します。[分析、開発、およびアセットの構築] で、[ アカウントとアセットを共有する] を選択します。

ステップ 1: Amazon S3 バケットを作成する

このステップでは、2 つの Amazon S3 バケットを作成します。1 つ目はソースコードを保持する入力バケットで、もう 1 つはビルド出力を保持する出力バケットです。詳細については、「Amazon S3 ユーザーガイド」の「Amazon S3 バケットの作成、設定、操作」を参照してください。

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

  2. [一般的な設定] では、バケット名を入力し、バケットを作成する AWS リージョン を指定します。名前の例は codebuild-regionId-accountId-input-bucket で、regionId はバケットの AWS リージョン で、accountId はユーザーの AWS アカウント ID です。

    注記

    米国東部 (バージニア北部) とは異なる AWS リージョン でバケットを作成する場合は、LocationConstraint パラメータを指定します。詳細については、「Amazon Simple Storage Service API リファレンス」の「バケットを作成」を参照してください。

  3. その他の設定はすべて保持し、[バケットを作成] を選択します。

  4. ステップ 1~3 を繰り返し、出力バケットを作成します。名前の例は codebuild-regionId-accountId-output-bucket で、regionId はバケットの AWS リージョン で、accountId はユーザーの AWS アカウント ID です。

    これらのバケットにどの名前を選択する場合でも、このチュートリアル全体で、その名前を使用してください。

ステップ 2: ビルド仕様ファイルを作成する

このステップでは、ビルド仕様ファイルを作成します。このファイルには、CodeBuild がビルドを実行するためのビルドコマンドと関連設定が含まれます。詳細については、「AWS CodeBuild ユーザーガイド」の「CodeBuild のビルド仕様に関するリファレンス」を参照してください。

  1. 前提条件として解凍したディレクトリに、buildspec.yml という名前のファイルを作成します。

  2. ファイルに以下の内容を追加して保存します。このファイルでは変更は必要ありません。

    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_IDCODEBUILD_BUILD_ARN$CODEBUILD_SRC_DIR/source$CODEBUILD_SRC_DIR/target は CodeBuild 内で使用できる環境変数を示します。詳細については、「ビルド環境の環境変数」を参照してください。

    この時点で、ディレクトリは次のようになります。

    (root directory name) |-- build.xml |-- buildspec.yml |-- LICENSE.txt |-- source |... etc.
  3. フォルダの内容を BankDemo.zip という名前のファイルに圧縮します。このチュートリアルでは、フォルダを圧縮することはできません。代わりに、フォルダの内容を BankDemo.zip ファイルに圧縮します。

ステップ 3: ソースファイルをアップロードする

このステップでは、BankDemo サンプルアプリケーションのソースコードを Amazon S3 入力バケットにアップロードします。

  1. Amazon S3 コンソールにログインし、ナビゲーションペインで、[バケット] を選択します。次に、以前に作成した入力バケットを選択します。

  2. [オブジェクト][アップロード] を選択します。

  3. [ファイルとフォルダ] セクションで、[ファイルを追加] を選択します。

  4. BankDemo.zip ファイルに移動して、選択します。

  5. [Upload(アップロード)] を選択します。

ステップ 4: IAM ポリシーを作成する

このステップでは、2 つの IAM ポリシーを作成します。1 つのポリシーは、Micro Focus ビルドツールを含む Docker イメージにアクセスして使用する権限を AWS メインフレームモダナイゼーションに付与します。このポリシーはお客様向けにカスタマイズされていません。もう 1 つのポリシーは、AWS メインフレームモダナイゼーションが入力バケットと出力バケット、および CodeBuild が生成する Amazon CloudWatch ログを操作するためのアクセス許可を付与します。

IAM ポリシーの作成については、「IAM ユーザーガイド」の「IAM ポリシーの編集」を参照してください。

Docker イメージにアクセスするためのポリシーを作成するには
  1. IAM コンソールで、次のポリシー文書をコピーしてポリシーエディタに貼り付けます。

    { "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-*/*" } ] }
  2. ポリシーの名前を指定します (m2CodeBuildPolicy など)。

AWS メインフレームモダナイゼーションがバケットやログを操作できるようにするポリシーを作成するには
  1. IAM コンソールで、次のポリシー文書をコピーしてポリシーエディタに貼り付けます。必ず regionId を AWS リージョン に accountId を AWS アカウント に更新してください。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:regionId:accountId:log-group:/aws/codebuild/codebuild-bankdemo-project", "arn:aws:logs:regionId:accountId:log-group:/aws/codebuild/codebuild-bankdemo-project:*" ], "Effect": "Allow" }, { "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion", "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:List*" ], "Resource": [ "arn:aws:s3:::codebuild-regionId-accountId-input-bucket", "arn:aws:s3:::codebuild-regionId-accountId-input-bucket/*", "arn:aws:s3:::codebuild-regionId-accountId-output-bucket", "arn:aws:s3:::codebuild-regionId-accountId-output-bucket/*" ], "Effect": "Allow" } ] }
  2. ポリシーの名前を指定します (BankdemoCodeBuildRolePolicy など)。

ステップ 5: IAM ロールを作成する

このステップでは、以前に作成した IAM ポリシーをこの新しい IAM ロールに関連付けた後に、CodeBuild が AWS リソースとやり取りできるようにする新しい IAM ロールを作成します。

サービスロールの作成について詳しくは、「IAM ユーザーガイド」の「AWS サービスにアクセス許可を委任するロールの作成」を参照してください。

  1. IAM コンソールにログインし、左のナビゲーションペインで、[ロール] を選択します。

  2. [Create role] (ロールの作成) を選択します。

  3. [信頼されたエンティティタイプ] から、[AWS サービス] を選択します。

  4. [他の AWS サービスのユースケース][CodeBuild] を選択し、もう一度 [CodeBuild] を選択します。

  5. [Next] (次へ) をクリックします。

  6. [アクセス許可を追加] ページで [次へ] を選択します。後でロールにポリシーを割り当てます。

  7. [ロールの詳細] に、ロールの名前 (例: BankdemoCodeBuildServiceRole) を入力します。

  8. [信頼されたエンティティを選択] で、ポリシードキュメントが以下のようになっていることを確認します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  9. [Create role] (ロールの作成) を選択します。

ステップ 6: IAM ポリシーを IAM ロールにアタッチする

このステップでは、前に作成した IAM ポリシーを BankdemoCodeBuildServiceRole IAM ロールにアタッチします。

  1. IAM コンソールにログインし、左のナビゲーションペインで、[ロール] を選択します。

  2. [ロール] で、前に作成したロールを選択します (BankdemoCodeBuildServiceRole など)。

  3. [アクセス許可ポリシー] で、[アクセス許可を追加][ポリシーをアタッチします] の順に選択します。

  4. [その他の許可ポリシー] で、以前に作成したポリシー (例: m2CodeBuildPolicyBankdemoCodeBuildRolePolicy) を選択します。

  5. [ポリシーのアタッチ] を選択します。

ステップ 7: CodeBuild プロジェクトを作成する

このステップでは、CodeBuild プロジェクトを作成します。

  1. CodeBuild コンソールにログインして [ビルドプロジェクトを作成する] を選択します。

  2. [プロジェクトの設定] セクションで、プロジェクトの名前 (例: codebuild-bankdemo-project) を入力します。

  3. [ソース] セクションの [ソースプロバイダー][Amazon S3] を選択し、以前に作成した入力バケット (例: codebuild-regionId-accountId-input-bucket) を選択します。

  4. [S3 オブジェクトキーまたは S3 フォルダ] フィールドに S3 バケットにアップロードした zip ファイルの名前を入力します。この場合、ファイル名は bankdemo.zip です。

  5. [環境] セクションで、[カスタムイメージ] を選択します。

  6. [環境タイプ] フィールドで [Linux] を選択します。

  7. [イメージレジストリ] で、[その他のレジストリ] を選択します。

  8. [外部レジストリの URL] フィールドに、673918848628.dkr.ecr.us-west-2.amazonaws.com/m2-enterprise-build-tools:latest を入力します。

  9. [サービスロール][既存のサービスロール] を選択し、[ロール ARN] フィールドで、以前に作成したサービスロール (例: BankdemoCodeBuildServiceRole) を選択します。

  10. [Buildspec] セクションで [buildspec ファイルを使用する] を選択します。

  11. [アーティファクト] セクションの [タイプ][Amazon S3] を選択し、次に出力バケット (例: codebuild-regionId-accountId-output-bucket) を選択します。

  12. [名前] フィールドに、ビルド出力アーティファクトを格納するバケット内のフォルダの名前 (例: bankdemo-output.zip) を入力します。

  13. [アーティファクトのパッケージ化] では、[Zip] を選択します。

  14. Create build project (ビルドプロジェクトの作成)を選択します。

ステップ 8: ビルドを開始する

このステップでは、ビルドを開始します。

  1. CodeBuild コンソールにログインします。

  2. ナビゲーションペインで、[ビルドプロジェクト] を選択します。

  3. 以前に作成したビルドプロジェクト (例: codebuild-bankdemo-project) を選択します。

  4. [Start build] を選択します。

このコマンドはビルドを開始します。ビルドは非同期で実行されます。コマンドの出力は、属性 ID を含む JSON です。この属性 ID は、開始したばかりのビルドの CodeBuild ビルド ID への参照です。コンソールで、ビルドのステータスを表示することができます。ビルド実行に関する詳細なログをコンソールで確認することもできます。詳細については、「AWS CodeBuild ユーザーガイド」の「詳細なビルド情報を表示する」を参照してください。

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

ステップ 9: 出力アーティファクトをダウンロードする

このステップでは、Amazon S3 から出力アーティファクトをダウンロードします。Micro Focus ビルドツールでは、複数の異なる種類の実行ファイルを作成できます。このチュートリアルでは、共有オブジェクトを生成します。

  1. Amazon S3 コンソールにログインします。

  2. [バケット] セクションで、出力バケットの名前を選択します (例えば、codebuild-regionId-accountId-output-bucket)。

  3. [ダウンロード] を選択します。

  4. ダウンロードした ファイルを解凍します。ターゲットフォルダに移動して、ビルドアーティファクトを確認します。これには .so Linux 共有オブジェクトが含まれます。

リソースをクリーンアップする

このチュートリアルのために作成したリソースが不要になった場合は、追加料金が発生しないように削除します。そのためには、以下のステップを実行します。

  • このチュートリアル用に作成した S3 バケットを削除します。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「バケットの削除」を参照してください。

  • このチュートリアル用に作成した IAM ポリシーを削除します。詳細については、「IAM ユーザーガイド」の「IAM ポリシーの削除」を参照してください。

  • このチュートリアル用に作成した IAM ロールを削除します。詳細については、「IAM ユーザーガイド」の「ロールまたはインスタンスプロファイルを削除する」を参照してください。

  • このチュートリアル用に作成した CodeBuild プロジェクトを削除します。詳細については、「AWS CodeBuild ユーザーガイド」の「Delete a build project in CodeBuild」を参照してください。