

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

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 자습서:에서 코드를 어셈블러에서 COBOL로 변환 AWS Mainframe Modernization
<a name="assembler-conversion-steps"></a>

이 문서를 단계별 가이드로 사용하여 메인프레임 현대화 어셈블러 코드를 COBOL로 변환하는 방법을 이해할 수 있습니다. 또한 [어셈블러에서 COBOL 워크숍으로의 자동 코드 변환 워크숍](https://catalog.workshops.aws/awsm2ccm-assembler-cobol/en-US)을 참조하면 변환 프로세스에 대해 자세히 알아볼 수 있습니다.

**Contents**
+ [사전 조건](#tutorial-assembler-conversion-prerequisites)
+ [1단계:와 빌드 자산 공유 AWS 계정](#tutorial-assembler-conversion-share-assets)
+ [2단계: Amazon S3 버킷 생성](#tutorial-assembler-conversion-create-bucket)
+ [3단계: IAM 정책 생성](#tutorial-assembler-conversion-IAM-policy)
+ [4단계: IAM 역할 생성](#tutorial-assembler-conversion-IAM-role)
+ [5단계: IAM 정책을 IAM 역할에 연결합니다](#tutorial-assembler-conversion-attach)
+ [6단계: CodeBuild 프로젝트 생성](#tutorial-assembler-conversion-create-project)
  + [6.1단계: Define 프로젝트 만들기](#tutorial-conversion-define-project)
  + [6.2단계: 코드 분석 프로젝트 만들기](#tutorial-conversion-analysis-project)
  + [6.3단계: 코드 변환 프로젝트 만들기](#tutorial-conversion-code-project)
+ [7단계: 프로젝트 정의 및 소스 코드 업로드](#tutorial-assembler-conversion-define-upload)
+ [8단계: 분석 실행 및 보고서 이해](#tutorial-assembler-conversion-run-analysis)
+ [9단계: 코드 변환 실행](#tutorial-assembler-conversion-run-code)
+ [10단계: 코드 변환 확인](#tutorial-assembler-conversion-verify)
+ [11단계: 변환된 코드 다운로드](#tutorial-assembler-conversion-download)
+ [리소스 정리](#tutorial-assembler-conversion-clean-resources)

## 사전 조건
<a name="tutorial-assembler-conversion-prerequisites"></a>

[어셈블러 변환에 대한 코드 변환 청구 이해](assembler-conversion-billing.md) 섹션을 읽고 어셈블러 코드 변환이에 대한 요금(결제 보고서) AWS Account Management을 생성하는 방법과 결제 작동 방식을 이해합니다.

## 1단계:와 빌드 자산 공유 AWS 계정
<a name="tutorial-assembler-conversion-share-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. **mLogica를 사용한 AWS Mainframe Modernization Code Conversion**에서 **내 자산 공유를 AWS 계정** 선택합니다.

**중요**  
빌드를 수행하려는 모든 AWS 리전에서이 단계를 한 번 수행해야 합니다.

## 2단계: Amazon S3 버킷 생성
<a name="tutorial-assembler-conversion-create-bucket"></a>

이 단계에서는 Amazon S3 버킷을 만듭니다. 첫 번째 버킷은 AWS CodeBuild 가 소스 코드를 보관한 다음 출력 버킷을 눌러 AWS CodeBuild 출력(변환된 코드)을 보관하는 프로젝트 버킷입니다. 자세한 내용은 *Amazon S3 사용 설명서*의 [Amazon S3 버킷 생성, 구성 및 사용](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html)을 참조하세요.

1. 프로젝트 버킷을 만들려면 Amazon S3 콘솔에 로그인하고 **버킷 생성**을 선택합니다.

1. **일반 구성**에서 버킷의 이름을 제공하고 버킷을 생성할 AWS 리전 를 지정합니다. 예제 이름은 `codebuild-regionId-accountId-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. 다른 모든 설정을 유지하고 **버킷 생성**을 선택합니다.

이러한 버킷에 대해 어떤 이름을 선택하더라도 선택한 경우 이 자습서 전체에서 해당 이름을 사용해야 합니다.

## 3단계: IAM 정책 생성
<a name="tutorial-assembler-conversion-IAM-policy"></a>

이 단계에서는 [IAM 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)을 만듭니다. 제공된 IAM 정책은 Amazon S3, Amazon Elastic Container Registry, CodeBuild가 생성하는 [Amazon CloudWatch logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 및 코드 변환 AWS CodeBuild 을 위한 Amazon Elastic Compute Cloud 리소스와 상호 작용하기 위한 특정 권한을 부여합니다. 이 정책은 고객을 위해 맞춤화되지 않았습니다. 이 정책은 AWS Mainframe Modernization 가 상호 작용하고 코드 변환 통계를 가져와 고객에게 적절하게 청구할 수 있는 권한을 부여합니다.

IAM 정책 생성에 대해 자세히 알아보려면 *IAM 사용 설명서*의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.

**정책을 생성하려면**

1. IAM 콘솔에 로그인하고 왼쪽 탐색 창에서 **정책**을 선택합니다.

1. **정책 생성**을 선택합니다.

1. 다음 JSON 정책을 복사하여 정책 편집기에 붙여 넣습니다.

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

****  

   ```
   { 
       "Version":"2012-10-17",		 	 	  
       "Statement": [ 
           { 
               "Action": [
                   "s3:PutObject", 
                   "s3:GetObject", 
                   "s3:GetBucketLocation", 
                   "s3:ListBucket", 
                   "s3:PutObjectAcl", 
                   "s3:GetBucketAcl" 
               ], 
               "Resource": [ 
                   "arn:aws:s3:::codebuild-regionId-accountId-bucket", 
                   "arn:aws:s3:::codebuild-regionId-accountId-bucket/*", 
                   "arn:aws:s3:::aws-m2-repo-*" ], 
                       "Effect": "Allow" 
             }, 
             {
                 "Action": [ 
                   "ecr:GetAuthorizationToken", 
                   "ecr:BatchCheckLayerAvailability", 
                   "ecr:BatchGetImage", 
                   "ecr:GetDownloadUrlForLayer", 
                   "logs:*", 
                   "ec2:DescribeSecurityGroups", 
                   "ec2:DescribeSubnets", 
                   "ec2:DescribeNetworkInterfaces", 
                   "ec2:DeleteNetworkInterface", 
                   "ec2:CreateNetworkInterface", 
                   "ec2:DescribeDhcpOptions", 
                   "ec2:DescribeVpcs", 
                   "ec2:CreateNetworkInterfacePermission" 
               ], 
               "Resource": "*", 
               "Effect": "Allow" 
            } 
       ] 
   }
   ```

------

1. 선택적으로 정책에 태그를 추가할 수 있습니다. 태그는 정책에 대한 액세스를 구성, 추적 또는 제어하는 데 도움이 될 수 있는 키-값 페어입니다.

1. **다음: 검토**를 선택합니다.

1. 정책의 이름을 제공합니다(예: `CodeBuildAWSM2CCMPolicy`).

1. 선택적으로 정책에 대한 설명을 입력하고 정책 요약을 검토하여 올바른지 확인할 수 있습니다.

1. **정책 생성**을 선택합니다.

## 4단계: IAM 역할 생성
<a name="tutorial-assembler-conversion-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. **역할 세부 정보**에서 역할의 이름을 제공합니다(예: `IAMRoleTaskExecutionRoleForCodeBuild`).

1. **신뢰할 수 있는 엔티티 선택**에서 정책 문서가 다음과 같은지 확인합니다.

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

****  

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

------

1. **역할 생성**을 선택합니다.

## 5단계: IAM 정책을 IAM 역할에 연결합니다
<a name="tutorial-assembler-conversion-attach"></a>

이 단계에서 `IAMRoleTaskExecutionRoleForCodeBuild` IAM 정책을 이전 단계에서 생성한 IAM 역할에 연결합니다.

1. IAM 콘솔에 로그인하고 왼쪽 탐색 창에서 **역할**을 선택합니다.

1. **역할**에서 이전에 생성한 역할을 선택합니다(예: `IAMRoleTaskExecutionRoleForCodeBuild`).

1. **권한 정책**에서 **권한 추가**와 **정책 연결**을 차례로 선택합니다.

1. **기타 권한 정책**에서 이전에 만든 정책(예: `CodeBuildAWSM2CCMPolicy`)을 선택합니다.

1. **정책 연결**을 선택합니다.

## 6단계: CodeBuild 프로젝트 생성
<a name="tutorial-assembler-conversion-create-project"></a>

이 단계에서는 위에서 언급한 `buildspec.yml` 파일을 기반으로 세 가지 다른 CodeBuild 프로젝트를 생성합니다.

### 6.1단계: Define 프로젝트 만들기
<a name="tutorial-conversion-define-project"></a>

**Define 프로젝트를 만들려면**

1. CodeBuild 콘솔에 로그인하고 **빌드 프로젝트 생성**을 선택합니다.

1. **프로젝트 구성** 섹션에서 프로젝트 이름을 입력합니다(예: `1-awsm2ccm-define-project`).

1. **소스** 섹션의 **소스 공급자**에서 기본 선택을 그대로 둡니다.

1. **환경** 섹션에서 **사용자 지정 이미지**를 선택합니다.

1. **환경 유형** 필드에서 **Linux**를 선택합니다.

1. **이미지 레지스트리**에서 **기타 레지스트리**를 선택합니다.

1. **외부 레지스트리 URL** 필드에서 [AWS Mainframe Modernization 컨테이너](assembler-conversion-components-process.md#assembler-conversion-components-container) 섹션을 따릅니다.

1. **서비스 역할**에서 **기존 서비스 역할**을 선택하고, **역할 ARN** 필드에서 이전에 생성한 서비스 역할(예: `IAMRoleTaskExecutionRoleForCodeBuild`)을 선택합니다.

1. **추가 구성** 섹션을 확장하고 다음을 수행합니다.

   1. VPC: 설정에 따라 필요한 경우 구성합니다.

   1. 제한 시간: **60분**으로 설정합니다.

   1. 대기열 제한 시간: **480분으로** 설정합니다.

   1. 암호화: 적절한 암호화 설정을 선택합니다(기본값도 괜찮음).

   1. **환경 변수** 섹션에서 다음을 하나씩 추가합니다.
      + 이름: **PROJECT\_BUCKET**. 값: `codebuild-regionId-accountId- bucket`. 유형: **Plaintext**
      + 이름: **PROJECT\_DIR**. 값: `prj_codebuild_01`. 유형: **Plaintext**
      + 이름: **AWSM2CCM\_ACTION**. 값: `define_project`. 유형: **Plaintext**
      + 이름: **AWSM2CCM\_LOGGING\_BUCKET**. 값: `s3:// codebuild-regionId-accountId-bucket`. 유형: **Plaintext**

1. **Buildspec** 섹션에서 **빌드 명령 삽입**을 선택한 후 **편집기로 전환**을 선택합니다.

1. 현재 값을 다음으로 바꿉니다.

   ```
   version: 0.2 
   phases: 
       build: 
           commands: 
               - . /app/awsm2ccm_prod/bin/setup_env.sh 
               - run_awsm2ccm.sh $PROJECT_DIR 
   artifacts: 
       files: 
           - '**/*' 
       discard-paths: no 
       base-directory: $PROJECT_DIR
   ```

   여기서 PROJECT\_DIR은 CodeBuild 내에서 사용할 수 있는 환경 변수입니다. 자세한 내용은 [빌드 환경의 환경 변수](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html) 참조하세요.

1. **아티팩트** 섹션에서 다음을 수행합니다.
   + **유형**에서 **Amazon S3**를 선택한 다음 출력 버킷을 선택합니다(예: `codebuild-regionId-accountId-bucket`).
   + **경로**의 경우 이 필드는 비워 둡니다.
   + **이름**에 `prj_codebuild_01`을 입력합니다.
   + **아티팩트 패키징**에서 **없음**을 선택합니다.
   + **아티팩트 이름 재정의**의 경우 이 옵션의 선택을 취소합니다.
   + **암호화**는 기본 설정으로 둡니다.

1. **로그** 섹션에서 다음을 수행합니다.
   + CloudWatch 로그: **비활성화됨**
   + S3 로그: **활성화됨**
   + 버킷: `codebuild-regionId-account-bucket`
   + 로그 경로: `CODEBUILD-LOGS`

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

### 6.2단계: 코드 분석 프로젝트 만들기
<a name="tutorial-conversion-analysis-project"></a>

**코드 분석 프로젝트를 만들려면**

1. CodeBuild 콘솔에 로그인하고 **빌드 프로젝트 생성**을 선택합니다.

1. **프로젝트 구성** 섹션에서 프로젝트 이름을 입력합니다(예: `2-awsm2ccm-analysis`).

1. **소스** 섹션의 **소스 공급자**에서 **Amazon S3**를 선택한 다음 이전에 생성한 입력 버킷을 선택합니다(예: `codebuild-regionId-accountId-bucket`).

1. **S3 객체 키** 또는 **S3 폴더** 필드에 `prj_codebuild_01`을 입력합니다.

1. **환경** 섹션에서 **사용자 지정 이미지**를 선택합니다.

1. **환경 유형** 필드에서 **Linux**를 선택합니다.

1. **이미지 레지스트리**에서 **기타 레지스트리**를 선택합니다.

1. **외부 레지스트리 URL** 필드에서 [AWS Mainframe Modernization 컨테이너](assembler-conversion-components-process.md#assembler-conversion-components-container) 섹션을 따릅니다.

1. **서비스 역할**에서 **기존 서비스 역할**을 선택하고, **역할 ARN** 필드에서 이전에 생성한 서비스 역할(예: `IAMRoleTaskExecutionRoleForCodeBuild`)을 선택합니다.

1. **추가 구성** 섹션을 확장하고 다음을 수행합니다.

   1. VPC: 설정에 따라 필요한 경우 구성합니다.

   1. 제한 시간: **60분**으로 설정합니다.

   1. 대기열 제한 시간: **480분으로** 설정합니다.

   1. 암호화: 적절한 암호화 설정을 선택합니다(기본값도 괜찮음).

   1. **환경 변수** 섹션에서 다음을 하나씩 추가합니다.
      + 이름: **PROJECT\_BUCKET**. 값: `codebuild-regionId-accountId-bucket`. 유형: **Plaintext**
      + 이름: **PROJECT\_DIR**. 값: `prj_codebuild_01`. 유형: **Plaintext**
      + 이름: **AWSM2CCM\_ACTION**. 값: `analysis`. 유형: **Plaintext**
      + 이름: **AWSM2CCM\_LOGGING\_BUCKET**. 값: `s3:// codebuild-regionId-accountId-bucket`. 유형: **Plaintext**

1. **Buildspec** 섹션에서 **빌드 명령 삽입**을 선택한 후 **편집기로 전환**을 선택합니다.

1. 현재 값을 다음으로 바꿉니다.

   ```
   version: 0.2 
   phases: 
       build: 
           commands: 
               - ln -s $CODEBUILD_SRC_DIR $PROJECT_DIR 
               - . /app/awsm2ccm_prod/bin/setup_env.sh 
               - run_awsm2ccm.sh $PROJECT_DIR
   artifacts: 
       files: 
           - '*.log' 
           - '_Converted/*/*' 
           - '_Reports/*' 
       secondary-artifacts: 
           reports: 
               files: 
                   - '_Reports/AWSM2CCM*' 
       discard-paths: no 
       base-directory: $PROJECT_DIR
   ```

   여기서 PROJECT\_DIR은 CodeBuild 내에서 사용할 수 있는 환경 변수입니다. 자세한 내용은 [빌드 환경의 환경 변수](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html) 참조하세요.

1. **아티팩트** 섹션에서 다음을 수행합니다.
   + **유형**에서 **Amazon S3**를 선택한 다음 출력 버킷(예: `codebuild-regionId-accountId-bucket`)을 선택합니다.
   + **경로**에 **ARTIFACTS**를 입력합니다.
   + **이름**에 `prj_codebuild_01`을 입력합니다.
   + **아티팩트 패키징**에서 **없음**을 선택합니다.
   + **아티팩트 이름 재정의**의 경우 이 옵션의 선택을 취소합니다.
   + **암호화**는 기본 설정으로 둡니다.

1. **로그** 섹션에서 다음을 수행합니다.
   + CloudWatch 로그: **비활성화됨**
   + S3 로그: **활성화됨**
   + 버킷: `codebuild-regionId-account-bucket`
   + 로그 경로: `CODEBUILD-LOGS`

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

### 6.3단계: 코드 변환 프로젝트 만들기
<a name="tutorial-conversion-code-project"></a>

**코드 변환 프로젝트를 만들려면**

1. CodeBuild 콘솔에 로그인하고 **빌드 프로젝트 생성**을 선택합니다.

1. **프로젝트 구성** 섹션에서 프로젝트 이름을 입력합니다(예: `3-awsm2ccm-convert`).

1. **소스** 섹션의 **소스 공급자**에서 **Amazon S3**를 선택한 다음 이전에 생성한 입력 버킷을 선택합니다(예: `codebuild-regionId-accountId-bucket`).

1. **S3 객체 키** 또는 **S3 폴더** 필드에 `prj_codebuild_01`을 입력합니다.

1. **환경** 섹션에서 **사용자 지정 이미지**를 선택합니다.

1. **환경 유형** 필드에서 **Linux**를 선택합니다.

1. **이미지 레지스트리**에서 **기타 레지스트리**를 선택합니다.

1. **외부 레지스트리 URL** 필드에서 [AWS Mainframe Modernization 컨테이너](assembler-conversion-components-process.md#assembler-conversion-components-container) 섹션을 따릅니다.

1. **서비스 역할**에서 **기존 서비스 역할**을 선택하고, **역할 ARN** 필드에서 이전에 생성한 서비스 역할(예: `IAMRoleTaskExecutionRoleForCodeBuild`)을 선택합니다.

1. **추가 구성** 섹션을 확장하고 다음을 수행합니다.

   1. VPC: 설정에 따라 필요한 경우 구성합니다.

   1. 제한 시간: **60분**으로 설정합니다.

   1. 대기열 제한 시간: **480분으로** 설정합니다.

   1. 암호화: 적절한 암호화 설정을 선택합니다(기본값도 괜찮음).

   1. **환경 변수** 섹션에서 다음을 하나씩 추가합니다.
      + 이름: **PROJECT\_BUCKET**. 값: `codebuild-regionId-accountId-bucket`. 유형: **Plaintext**
      + 이름: **PROJECT\_DIR**. 값: `prj_codebuild_01`. 유형: **Plaintext**
      + 이름: **AWSM2CCM\_ACTION**. 값: `conversion`. 유형: **Plaintext**
      + 이름: **AWSM2CCM\_LOGGING\_BUCKET**. 값: `s3:// codebuild-regionId-accountId-bucket`. 유형: **Plaintext**

1. **Buildspec** 섹션에서 **빌드 명령 삽입**을 선택한 후 **편집기로 전환**을 선택합니다.

1. 현재 값을 다음으로 바꿉니다.

   ```
   version: 0.2 
   phases: 
       build: 
           commands: 
               - export AWSM2CCM_PUSH_RUNTIME_COPYBOOKS=y 
               - ln -s $CODEBUILD_SRC_DIR $PROJECT_DIR 
               - . /app/awsm2ccm_prod/bin/setup_env.sh
               - run_awsm2ccm.sh $PROJECT_DIR
   artifacts: 
       files: 
           - '*.log' 
           - '_Converted/*/*' 
           - '_Reports/*'  
       discard-paths: no 
       base-directory: $PROJECT_DIR
   ```

   여기서 PROJECT\_DIR은 CodeBuild 내에서 사용할 수 있는 환경 변수입니다. 자세한 내용은 [빌드 환경의 환경 변수](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html) 참조하세요.

1. **아티팩트** 섹션에서 다음을 수행합니다.
   + **유형**에서 **Amazon S3**를 선택한 다음 출력 버킷(예: `codebuild-regionId-accountId-bucket`)을 선택합니다.
   + **경로**에 **ARTIFACTS**를 입력합니다.
   + **이름**에 `prj_codebuild_01`을 입력합니다.
   + **아티팩트 패키징**에서 **없음**을 선택합니다.
   + **아티팩트 이름 재정의**의 경우 이 옵션의 선택을 취소합니다.
   + **암호화**는 기본 설정으로 둡니다.

1. **로그** 섹션에서 다음을 수행합니다.
   + CloudWatch 로그: **비활성화됨**
   + S3 로그: **활성화됨**
   + 버킷: `codebuild-regionId-account-bucket`
   + 로그 경로: `CODEBUILD-LOGS`

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

## 7단계: 프로젝트 정의 및 소스 코드 업로드
<a name="tutorial-assembler-conversion-define-upload"></a>

Define 프로젝트는 기본 구성으로 초기화된 프로젝트 폴더 및 구성 파일을 설정합니다. 이 단계에서는 빌드를 시작합니다. 방법:

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

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

1. 빌드할 이전에 생성한 프로젝트(`1-awsm2ccm-define-project`)를 선택합니다.

1. **빌드 시작**을 선택한 다음 **지금 시작**을 선택하여 프로젝트를 정의합니다. 빌드가 시작되면 상태가 *진행 중*으로 변경됩니다.

1. **단계 세부 정보를** 선택하여 AWS CodeBuild 프로젝트에서 오케스트레이션하는 각 단계의 진행 상황을 확인합니다.

1. 모든 단계에서 상태가 **성공**으로 변경될 때까지 기다립니다.

1. Amazon S3 콘솔을 사용합니다.

1. `codebuild-regionId-accountId-bucket`이라는 Amazon S3 버킷을 찾아 클릭합니다.
   + **`CODEBUILD-LOGS/`** 폴더에는 실행 중인 AWS CodeBuild 프로젝트에 대한 AWS CodeBuild 로그가 포함되어 있습니다.
   + 프로젝트 구조가 포함된 **`prj_codebuild_01/`** 폴더. 분석, expand\_macros 및 변환 단계에 사용됩니다. `prj_codebuild_01/`을 선택하여 세부 정보를 탐색할 수 있습니다.
   + 변환기용으로 예약된 **`cobol_reserved.rsw`** 구성 파일(COBOL 단어 목록). 변환 단계에서 사용됩니다.
   + **`Macro_Expansion/`** 폴더에는 어셈블러 프로그램으로 확장할 수 있는 매크로가 포함되어 있습니다. expand\_macros 단계에서 사용됩니다.
   + **`macro_settings.json`** 구성 파일에는 사용자 지정된 매크로 교체가 포함되어 있습니다. expand\_macros 단계에서 사용됩니다.
   + **`macrolib/`** 폴더에는 변환할 어셈블러 매크로가 포함되어 있습니다. 분석 및 변환 단계에서 사용됩니다.

     1. `macrolib/`을 선택합니다.

     1. 기본적으로 이름이 `MACRO1.mac`인 하나의 어셈블러 매크로가 샘플 파일로 제공됩니다. 분석에 필요하지 않으므로 이 파일을 삭제합니다.

     1. 이 디렉터리에 매크로를 업로드합니다.
   + **`project_settings_aux.json`** 구성 파일에는 코드 페이지와 관련된 설정이 포함되어 있습니다. 변환 단계에서 사용됩니다.
   + **`project_settings.json`** 구성 파일에는 변환기에 대한 설정이 포함되어 있습니다. 변환 단계에서 사용됩니다.
   + **`srclib/`** 폴더에는 변환할 어셈블러 프로그램이 포함되어 있습니다. 분석 및 변환 단계에서 사용됩니다.

     1. `srclib/`을 선택합니다.

     1. 기본적으로 `SQtest01.asm` 및 `SQtest02.asm`라는 두 개의 어셈블러 프로그램이 샘플로 제공됩니다. 이러한 파일은 분석 및 변환에 필요하지 않으므로 삭제합니다.

     1. 이 디렉터리에 어셈블러 프로그램을 업로드합니다.

1. `1-awsm2ccm-define-project` 단계의 상태를 확인합니다. **최신 빌드 상태** 탭에서 성공했어야 합니다.

다음 단계인 **코드 분석**을 수행할 준비가 되었습니다.

## 8단계: 분석 실행 및 보고서 이해
<a name="tutorial-assembler-conversion-run-analysis"></a>

**참고**  
AWS Mainframe Modernization 코드 변환 *분석 * 단계는 무료입니다.

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

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

1. 6.2단계에서 생성한 프로젝트를 선택하여 `2-awsm2ccm-analysis`를 빌드합니다.

1. **빌드 시작**을 선택한 다음 **지금 시작**을 선택하여 분석 보고서를 생성합니다. 이렇게 하면 빌드가 시작되고 상태가 *진행 중*으로 변경됩니다.

1.  AWS CodeBuild 프로젝트에서 오케스트레이션한 각 단계의 진행 상황을 볼 수 있는 **단계 세부 정보를** 선택합니다. 모든 단계에서 상태가 *성공*으로 변경될 때까지 기다립니다.

1. 에서 Amazon S3 서비스 콘솔로 AWS Management Console이동합니다.

1. Amazon S3 버킷 `codebuild-regionId-accountId-bucket`을 찾아 클릭합니다.

   1. **`ARTIFACTS/`** 폴더에는 *분석* 및 *변환* 단계의 출력이 포함되어 있습니다.

   1. `ARTIFACTS/prj_codebuild_01/_Reports/`을 선택합니다.

   1. 다음 보고서를 사용할 수 있습니다.
      + `AWSM2CCM-Analysis-Report-<timestamp>.pdf`는 AWS Mainframe Modernization 코드 변환 청구 및 범위를 제공하여 변환, 변환 요약 및 세부 변환 통계를 개선하는 실행 보고서입니다. 또한 프로젝트 수준에서 코드 수와 청구 가능한 코드 수를 요약하고 각 구성 요소에 대해 참조된 멤버의 지표와 목록을 제공합니다. 실제 변환을 실행하기 전에 이 보고서를 실행하고 검토하는 것이 중요합니다.
      + `Conversion_Detailed_Statistics.txt`는 각 구성 요소에 있는 각 명령에 대한 빈도 및 예상 변환 결과(‘변환 상태’로 표시됨)를 제공합니다. 이렇게 하면 변환기가 지원하지 않는 지침이 명확한지 여부를 빠르게 식별할 수 있습니다. 가능한 *변환 상태* 결과는 다음과 같습니다.
        + **완전히 변환됨**: 명령이 COBOL로 정확하게 변환됩니다.
        + **부분적으로 변환됨**: 명령이 지원되지만 지원되지 않는 파라미터 또는 표현식을 사용합니다. 변환 후에는 수동으로 조정해야 할 수 있습니다.
        + **변환되지 않음**: 변환기에서 명령을 지원하지 않습니다.
        + **확인을 위한 사전 컴파일 지침**: 이러한 지침은 일반적으로 매크로에 포함되며 메인프레임에서 *조건부 어셈블리 언어*(예: AIF, AGO) 지침으로도 알려진 것을 참조하세요. 이러한 지침은 해당 지침 또는 명령이 선택하고 *클린/정적* ASM 코드를 생성하는 사전 컴파일러에서 처리합니다. 이 지침은 컴파일되는 매크로 파라미터의 실제 값에 따라 달라집니다. 따라서 동일한 매크로는 전달된 파라미터의 값에 따라 다른 ASM 코드를 생성할 수 있습니다. 이는 이러한 *사전 컴파일 지침*이 있기 때문입니다. 이 경우 매크로를 확장하거나 재설계하는 것이 좋습니다.
      + `Conversion_Global_Statistics.txt`는 구성 요소 수준에서 *변환 상태*에 대한 요약을 제공합니다.
      + `CrossReference_PgmToCpyMacro.txt`는 매크로의 어셈블러 프로그램 종속성을 보고합니다. 업로드된 코드에서 누락된 매크로가 있는지 빠르게 확인할 수 있는 방법을 제공합니다.
      + `CrossReference_PgmToPgm.txt`는 다른 어셈블러 프로그램에 대한 어셈블러 프로그램 종속성을 보고합니다. 업로드된 코드에서 누락된 어셈블러 프로그램이 있는지 빠르게 확인할 수 있습니다.

1.  AWS CodeBuild 서비스 콘솔로 돌아갑니다.

1. **2-awsm2ccm-analysis** 단계의 상태를 확인합니다. **최신 빌드 상태** 탭에서 **성공**했어야 합니다.

다음 단계인 **코드 변환**을 수행할 준비가 되었습니다.

## 9단계: 코드 변환 실행
<a name="tutorial-assembler-conversion-run-code"></a>

**중요**  
AWS Mainframe Modernization 코드 변환 *변환* 단계는 사용량에 따라 청구됩니다. 청구에 대한 자세한 내용은 [어셈블러 변환에 대한 코드 변환 청구 이해](assembler-conversion-billing.md) 섹션을 참조하세요.

이 단계에서는 변환 프로세스를 구성한 다음 빌드를 시작합니다.

1. 에서 Amazon S3 서비스로 AWS Management Console이동합니다.

1. Amazon S3 버킷 `codebuild-regionId-accountId-bucket`을 찾아 클릭합니다.

   1. `prj_codebuild_01/`로 이동합니다.

   1. `project_settings.json`을 선택하고 **다운로드**를 선택합니다.

   1. `project_settings.json` 파일을 열어 다음 JSON 구조를 확인합니다.

      ```
      { 
      "Source programs directory":"srclib", 
      "Source copybooks/macros directory":"macrolib", 
      "Copybook/Macros Conversion":"Called_only", 
      "Do not regenerate the Copy/Macro if already exists":"false", 
      "Target Compiler":"IBM", 
      "Endianess":"Big", 
      "Converted programs extension":"", 
      "Converted CICS programs extension":"", 
      "Converted copies/macros extension":"", 
      "Trace Level":"STANDARD", 
      "Trace file open mode":"append", 
      "Data definition level":5, 
      "Start picture column":40, 
      "Generate Sync FILLER with name":"FILL-SYNC", 
      "Use SYNC clause":"yes", 
      "Decimal Point Comma":"true", 
      "Original Source Placement":"RIGHT" 
      }
      ```

      여기서 각 항목은 다음과 같습니다.
      + **소스 프로그램 디렉터리**: 변환에 필요한 어셈블러 프로그램이 포함되어 있습니다.
      + **원본 카피북/매크로 디렉터리**: 변환에 필요한 어셈블러 매크로 및 카피북이 포함되어 있습니다.
      + **카피북/매크로 변환**은 다음 중 하나일 수 있습니다.
        + **모두**: 이 라디오 버튼은 *전체 변환*이 프로그램에서 사용 중인지 여부에 관계없이 디렉터리에서 사용할 수 있는 모든 카피북/매크로를 변환함을 나타냅니다.
        + **Called\_only**: 이 라디오 버튼은 *전체 변환*이 프로그램에서 실제로 사용한 카피북/매크로만 변환함을 나타냅니다.
      + 
**중요**  
카피/매크로가 이미 있는 경우 다시 생성할 필요가 없습니다.

        그러면 카피북/매크로가 이미 변환된 경우(출력 폴더에 존재) 도구는 카피북/매크로를 다시 변환하지 않습니다.
      + **대상**: 프로그램 변환(생성된 코드)은 대상 COBOL 컴파일러에 따라 달라집니다. 지원되는 옵션은 다음과 같습니다.
        + IBM 메인프레임의 경우 ‘IBM’
        + Micro Focus COBOL의 경우 ‘MF’ 
        + Veryant isCOBOL의 경우 ‘VERYANT’
        + NTT DATA Enterprise COBOL(Unikix)의 경우 ‘NTT’
      + **Endianess 및 Bitness**: 프로그램 변환(생성된 코드)은 대상 플랫폼(bit/endianess)에 따라 달라집니다. 이 콤보를 사용하면 다음과 같은 지원되는 옵션을 선택할 수 있습니다.
        + Endianess: *Big*(Big-Endian 경우)/Little(Little-Endian의 경우). 예를 들어 IBM z/OS 메인프레임은 Big-Endian이고, Windows는 Little-Endian이며, Linux는 배포에 따라 다릅니다(예: EC2의 Amazon Linux 2는 Little-Endian).
        + Bitness: 32/64(제공되지 않은 경우 기본값은 32). 권장 설정은 32비트입니다.
      + **변환된 프로그램 확장**: 생성된 COBOL 프로그램의 파일 확장을 설정합니다. 비어 있음(“”): 확장이 없습니다. Rocket Software(이전 Micro Focus) COBOL 대상의 경우 Rocket Enterprise Developer가 파일을 올바르게 인식할 수 있도록 *CBL*을 사용하는 것이 좋습니다.
      + **변환된 CICS 프로그램 확장**: 생성된 CICS COBOL 프로그램의 파일 확장을 설정합니다. 비어 있음(“”): 확장이 없습니다. Rocket Software COBOL 대상의 경우 Rocket Enterprise Developer가 파일을 올바르게 인식할 수 있도록 *CBL*을 사용하는 것이 좋습니다.
      + **변환된 카피북/매크로 확장**: 생성된 COBOL 카피북의 파일 확장을 설정합니다. 비어 있음(“”): 확장이 없습니다. Rocket Software COBOL 대상의 경우 Rocket Enterprise Developer가 파일을 올바르게 인식할 수 있도록 *CPY*를 사용하는 것이 좋습니다.
      + **추적 수준**: 추적은 변환 중에 CodeBuild를 사용하여 로깅되는 정보입니다. 사용자는 제공된 옵션 중 하나를 선택하여 세부 정보 수준을 선택할 수 있습니다.
        + **ERROR** = TRACE ERROR: 변환 오류만 표시됩니다.
        + **STANDARD** = TRACE STANDARD: 변환 오류 및 표준 정보가 표시됩니다. 이는 권장 설정입니다.
        + **ALL** = TRACE ALL: 최대 추적 수준입니다.
      + **추적 파일 열기 모드:** 사용되지 않습니다. *추가*의 기본 설정이 권장됩니다.
      + **데이터 정의 수준**: 작업 스토리지 및 연결 섹션에 정의된 하위 필드의 초기 수준(‘01’ 이후)을 나타냅니다. 숫자여야 합니다.
      + **시작 그림 열**: 생성된 COBOL 코드의 형식에 대한 것으로 *PIC* 절이 배치된 열을 나타냅니다(필드 이름 뒤). 숫자여야 합니다.
      + **원본 소스 배치:** 주석이 프로그램에 배치되는 위치를 나타냅니다. 다음 두 개의 섹션이 있습니다.
        + **오른쪽**: 이 옵션은 주석 또는 추가 정보를 73열 뒤의 올바른 위치에 배치합니다. COBOL에서 코드는 첫 72(1\~72)열에 작성되며 73(>= 73)열부터 모든 항목은 주석으로 처리됩니다.
        + **위**: 이 옵션은 번역된 콘텐츠 위에 설명을 배치합니다.
      + **이름이 있는 Sync FILLER 생성**: 이 옵션은 바이너리 필드의 메모리 내 정렬(어셈플러 ‘H’, ‘F’, ‘D’ 데이터 유형, COBOL ‘COMP’ 데이터 유형으로 변환됨)과 관련이 있습니다. 적절한 *정렬 경계*를 보장하기 위해 변환 중에 명시적 *filler* 필드가 추가됩니다. 텍스트 기반 옵션이며 값은 문자열(예: FILL-SYNC)이어야 합니다.
      + **SYNC 절 사용**: 이 옵션은 바이너리 필드의 메모리 정렬을 나타냅니다. 예 = COBOL로 변환된 모든 필드입니다. ‘COMP’는 ‘SYNC’ 절로 정의됩니다(예: 05 WRKFLD PIC S9(09) COMP SYNC).
      + **소수점 쉼표**: 이 경우 *DECIMAL-POINT IS COMMA* 절이 ‘SPECIAL-NAMES’ COBOL 단락에 추가됩니다.

   1. 요구 사항에 따라 적절한 파라미터를 변경한 다음 `project_settings.json`를 저장합니다.

   1. Amazon S3 버킷의 `prj_codebuild_01/`에서 기존 `project_settings.json` 파일을 제거한 다음 새 버전을 업로드합니다.

1.  AWS CodeBuild 서비스로 돌아갑니다.

1. 빌드할 이전에 생성한 프로젝트(`3-awsm2ccm-convert`)를 선택합니다.

   1. **빌드 시작**을 선택한 다음 **지금 시작**을 선택하여 어셈블러 프로그램 및 매크로를 COBOL 프로그램 및 카피북으로 변환합니다.

   1. 이 프로젝트의 빌드 상태가 **성공**으로 변경될 때까지 기다립니다. **최신 빌드 상태** 탭 아래에 표시됩니다.

## 10단계: 코드 변환 확인
<a name="tutorial-assembler-conversion-verify"></a>

1. 에서 Amazon S3 서비스로 AWS Management Console이동합니다.

1. Amazon S3 버킷 `codebuild-regionId-accountId-bucket`을 찾아 클릭합니다.

1. **`awsm2ccm-do-not-delete `**. AWS Mainframe Modernization Code 변환으로 이동하면 변환 프로세스 중에 각 어셈블러 또는 매크로 모듈에 대해 인코딩된 이진 파일이 생성됩니다. 이러한 파일은 고객에게 중복 청구하는 것을 방지하고 제공된 어셈블러 코드를 분석하고 변환한 양을 추적하는 데 필수적입니다. 파일은 다음 위치에 설치됩니다. `codebuild-regionId-accountId- bucket/awsm2ccm-do-not-delete/<your_AWS_account_id>/Hash` 인코딩된 파일에는 어셈블러 코드가 포함되어 있지 않으며 이러한 파일에서 고객 코드를 추출할 수도 없습니다.
**중요**  
이러한 파일을 수동으로 편집하거나 삭제하지 마세요. 이러한 파일을 편집하거나 삭제하면 동일한 구성 요소에 대해 여러 번의 청구가 발생할 수 있습니다.

   **`awsm2ccm-do-not-delete/`** 폴더를 시스템 관리형 디렉터리로 취급합니다. 이 디렉터리 또는 해당 내용을 변경하기 지원 전에를 참조하세요.

1. `codebuild-regionId-accountId-bucket`을 클릭하여 버킷으로 돌아갑니다.

1. **`ARTIFACTS/prj_codebuild_01/`**를 선택합니다. **\_Converted/** 폴더에는 코드 변환 단계의 결과로 생성된 COBOL 출력이 포함됩니다. 다음과 같은 하위 디렉터리가 있습니다.
   + **copybooks/** 폴더에는 생성된 COBOL 카피북이 포함되어 있습니다.
   + **programs/** 폴더에는 생성된 COBOL 프로그램이 포함되어 있습니다.
   + **runtime\_lib/** 폴더에는 솔루션에서 제공하는 추가 COBOL 프로그램 및 카피북이 포함되어 있습니다.

1. *분석 보고서* 및 기타 보고서에 변환이 성공했다고 표시되고 AWS CodeBuild 프로젝트에 **성공**`3-awsm2ccm-convert`으로 표시된 경우 **\_Converted/** 디렉터리에서 COBOL 코드와 카피북을 다운로드합니다.

## 11단계: 변환된 코드 다운로드
<a name="tutorial-assembler-conversion-download"></a>

이 단계에서는 **\_Converted/** 디렉터리에서 COBOL 코드 및 카피북을 다운로드하고 대상 COBOL 환경에서 컴파일합니다.

1. 에서 Amazon S3 서비스로 AWS Management Console이동합니다.

1. Amazon S3 버킷 `codebuild-regionId-accountId-bucket`을 찾아 클릭합니다.

1. ` ARTIFACTS/prj_codebuild_01/_Converted/` 위치로 이동합니다.

1. **\_Converted/**의 모든 하위 디렉터리에서 변환된 COBOL 코드를 다운로드합니다. 다음 CLI 명령을 사용하여 한 번에 다운로드할 수도 있습니다.

   ```
   aws s3 cp s3://codebuild-regionId-accountId- 
   bucket/ARTIFACTS/prj_codebuild_01/_Converted/ . --recursive
   ```

1. 대상 COBOL 환경에서 변환된 COBOL을 분석하고 컴파일합니다.

## 리소스 정리
<a name="tutorial-assembler-conversion-clean-resources"></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)를 참조하세요.