

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 소프트웨어(이전 Micro Focus) 빌드 설정
<a name="tutorial-build-mf"></a>

AWS 메인프레임 현대화는 마이그레이션된 애플리케이션에 대한 빌드 및 지속적 통합/지속적 전송(CI/CD) 파이프라인을 설정할 수 있는 기능을 제공합니다. 이러한 빌드 및 파이프라인은 AWS CodeBuild AWS CodeCommit및 AWS CodePipeline 를 사용하여 이러한 기능을 제공합니다. CodeBuild는 소스 코드를 컴파일하고 단위 테스트를 실행하며 배포할 준비가 완료된 아티팩트를 생성하는 완전 관리형 빌드 서비스입니다. CodeCommit은 AWS 클라우드에서 Git 응답을 비공개로 저장하고 관리할 수 있는 버전 관리 서비스입니다. CodePipeline은 소프트웨어 릴리스에 필요한 단계를 모델링, 시각화 및 자동화하는 데 사용할 수 있는 지속적 전달 서비스입니다.

이 자습서에서는를 AWS CodeBuild 사용하여 Amazon S3에서 BankDemo 샘플 애플리케이션 소스 코드를 컴파일한 다음 컴파일된 코드를 Amazon S3로 다시 내보내는 방법을 보여줍니다.

AWS CodeBuild 는 소스 코드를 컴파일하고, 테스트를 실행하고, 배포할 준비가 된 소프트웨어 패키지를 생성하는 완전 관리형 지속적 통합 서비스입니다. CodeBuild를 사용하면 사전 패키징된 빌드 환경을 사용하거나 혹은 자체 빌드 도구를 사용하는 사용자 지정 빌드 환경을 만들 수 있습니다. 이 데모 시나리오에서는 두 번째 옵션을 사용합니다. 사전 패키징된 Docker 이미지를 사용하는 CodeBuild 빌드 환경으로 구성되어 있습니다.

**중요**  
Mainframe Modernization 프로젝트를 시작하기 전에 [Mainframe용AWS Migration Acceleration Program(MAP)](https://aws.amazon.com/migration-acceleration-program/mainframe/)에 대해 알아보거나 [AWS Mainframe 전문가](mailto: mainframe@amazon.com)에게 문의하여 Mainframe 애플리케이션을 현대화하는 데 필요한 단계에 대해 알아보는 것이 좋습니다.

**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 메인프레임 현대화 콘솔에서 **도구**를 선택합니다. **자산 분석, 개발 및 구축**에서 **내 AWS 계정과 자산 공유**를 선택합니다.

## 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 리전에서이 단계를 한 번 수행해야 합니다.

## 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)을 참조하세요.

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에서 빌드를 실행하기 위한 빌드 명령과 관련 설정을 YAML 형식으로 제공합니다. 자세한 내용은 *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 SNS 콘솔에 로그인하고 왼쪽 탐색 창에서 **버킷**을 선택합니다. 그런 다음 이전에 생성한 입력 버킷을 선택합니다.

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 메인프레임 현대화가 입력 및 출력 버킷 및 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 소프트웨어 v9:를 입력합니다`673918848628.dkr.ecr.us-west-1.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1`. Rocket Software v9에서 다른 AWS 리전을 사용하는 경우를 지정할 수도 있습니다. ` 673918848628.dkr.ecr.<m2-region>.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1`여기서 <m2-region>은 AWS Mainframe Modernization 서비스를 사용할 수 있는 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. **빌드 사양**에서 **빌드 사양 파일 사용**을 선택합니다.

1. **아티팩트** 섹션의 **유형**에서 **Amazon S3**를 선택한 다음 출력 버킷을 선택합니다(예: `codebuild-regionId-accountId-output-bucket`).

1. **이름** 필드에 빌드 출력 아티팩트를 포함하려는 버킷의 폴더 이름을 입력합니다(예: `bankdemo-output.zip`).

1. **아티팩트 패키징**에서 **압축**을 선택합니다.

1. **빌드 프로젝트 생성**을 선택합니다.

## 9단계: 빌드 시작
<a name="tutorial-build-mf-start"></a>

이 단계에서는 빌드를 시작합니다.

1. CodeBuild 콘솔에 로그인합니다.

1. 왼쪽 탐색 창에서 **빌드 프로젝트**를 선택합니다.

1. 이전에 만든 빌드 프로젝트(예: `codebuild-bankdemo-project`)를 선택합니다.

1. **빌드 시작**를 선택합니다.

이 명령은 빌드를 시작합니다. 빌드는 비동기적으로 실행됩니다. 명령의 출력은 속성 ID가 포함된 JSON입니다. 이 속성 ID는 방금 시작한 빌드의 CodeBuild 빌드 ID를 참조합니다. CodeBuild 콘솔에서 빌드의 상태를 볼 수 있습니다. 또한 콘솔에서 빌드 실행에 대한 자세한 로그를 볼 수 있습니다. 자세한 내용은 *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. **버킷** 섹션에서 출력 버킷의 이름을 선택합니다(예: `codebuild-regionId-accountId-output-bucket`).

1. 역할 **다운로드**를 선택합니다.

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 정책 삭제](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)를 참조하세요.