

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

# 스크립트 관리
<a name="scripts-management"></a>

AWS의 Cloud Migration Factory 솔루션을 사용하면 사용자가 사용자 인터페이스 내에서 자동화 스크립트 또는 패키지 라이브러리를 완전히 관리할 수 있습니다. 스크립트 관리 인터페이스를 사용하여 새 사용자 지정 스크립트와 새 버전의 스크립트를 업로드할 수 있습니다. 여러 버전을 사용할 수 있는 경우 관리자는 이러한 버전 간에 전환하여 업데이트를 기본값으로 설정하기 전에 테스트를 수행할 수 있습니다. 또한 관리자는 스크립트 관리 인터페이스를 통해 스크립트 패키지를 다운로드하여 콘텐츠를 업데이트하거나 검토할 수 있습니다.

지원되는 스크립트 패키지는 루트에 다음과 같은 필수 파일이 들어 있는 압축된 zip 아카이브입니다.
+  **Package-Structure.yml** - 스크립트의 인수와 설명 및 기본 이름과 같은 기타 메타데이터를 정의하는 데 사용됩니다. 자세한 내용은 [새 스크립트 패키지 작성](#composing-a-new-script-package)을 참조하세요.
+  **[custom python script].py** - 작업이 제출될 때 실행되는 초기 스크립트입니다. 이 스크립트는 다른 스크립트와 모듈을 호출할 수 있으며, 호출할 경우 이러한 스크립트와 모듈을 아카이브에 포함해야 합니다. 이 스크립트의 이름은 `Package-Structure.yml`의 `MasterFileName` 키에 지정된 값과 일치해야 합니다.

## 컴퓨팅 플랫폼 구성
<a name="compute-platform-configuration"></a>

자동화 스크립트를 실행하는 데 사용할 수 있는 두 가지 컴퓨팅 플랫폼: \$1 "SSM Automation Document" - 자동화 서버 없이 AWS Systems Manager 자동화 문서로 직접 스크립트 실행 \$1 "Automation Server" - 전용 자동화 서버 인스턴스에서 스크립트 실행(지정하지 않은 경우 기본 플랫폼임)

스크립트 실행을 위한 컴퓨팅 플랫폼은 `Package-Structure.yml` 파일에 정의되어 있습니다. 직접 SSM 기반 인증의 경우 뒤에 `MasterFileName`다음 줄을 추가합니다. `ComputePlatform: "SSM Automation Document"` 

## 새 스크립트 패키지 업로드
<a name="upload-new-script-package"></a>

**참고**  
스크립트 패키지는 지원되는 형식을 준수해야 합니다. 자세한 내용은 [새 스크립트 패키지 작성](#composing-a-new-script-package)을 참조하세요.

1. **자동화 스크립트** 테이블에서 **추가**를 선택합니다.

1. 업로드하려는 패키지 아카이브 파일을 선택합니다.

1. 스크립트의 고유한 이름을 입력합니다. 사용자는 이 이름으로 스크립트를 참조하여 작업을 시작합니다.

## 스크립트 패키지 다운로드
<a name="download-script-packages"></a>

콘솔에서 스크립트 패키지를 다운로드하여 업데이트 및 콘텐츠 검증을 활성화할 수 있습니다.

1. **자동화**를 선택한 다음 **스크립트**를 선택합니다.

1. 테이블에서 다운로드할 스크립트를 선택한 다음 **동작**을 선택하고 **기본 버전 다운로드** 또는 **최신 버전 다운로드**를 선택합니다.

스크립트의 특정 버전을 다운로드할 수 있습니다. 이렇게 하려면 스크립트를 선택한 다음 **동작**을 선택하고 **기본 버전 변경**을 선택합니다. **스크립트 기본 버전** 목록에서 **선택한 버전 다운로드**를 선택합니다.

## 새 버전의 스크립트 패키지 추가
<a name="add-new-version-of-a-script-package"></a>

AWS Cloud Migration Factory 스크립트 패키지에 대한 업데이트는 다음 단계에 따라 **자동화** > **스크립트 섹션에서 업로드할 수 있습니다.** 

1. **자동화**를 선택한 다음 **스크립트**를 선택합니다.

1. 기존 스크립트를 선택하여 새 버전을 추가한 다음 **동작**을 선택하고 **새 버전 추가**를 선택합니다.

1. 업로드하려는 업데이트된 패키지 아카이브 파일을 선택하고 **다음**을 선택합니다. 새 스크립트 버전은 기본적으로 기존 이름을 유지합니다. 스크립트의 고유한 이름을 입력합니다. 모든 이름 변경은 이 버전의 스크립트에만 적용됩니다.

1. 기본 버전으로 지정을 선택하여 스크립트의 새 버전을 **기본 버전으로 설정**할 수 있습니다.

1. **업로드**를 선택합니다.

## 스크립트 패키지 및 버전 삭제하기
<a name="deleting-script-packages-and-versions"></a>

감사 목적으로는 스크립트나 스크립트 버전을 삭제할 수 없습니다. 이렇게 하면 특정 시점에 시스템에 대해 실행된 정확한 스크립트를 검토할 수 있습니다. 모든 스크립트 버전은 업로드 시 고유한 서명과 ID를 가지며, 이 서명과 ID는 스크립트 및 버전이 사용된 작업 기록과 비교하여 기록됩니다.

## 새 스크립트 패키지 작성하기
<a name="composing-a-new-script-package"></a>

AWS의 Cloud Migration Factory 스크립트 패키지는 Python을 기본 스크립팅 언어로 지원합니다. Python 기본 프로그램 또는 래퍼 내에서 필요에 따라 다른 셸 스크립팅 언어를 시작할 수 있습니다. 새 스크립트 패키지를 빠르게 만들려면 미리 패키지된 스크립트 중 하나의 사본을 다운로드하고 필요한 작업을 수행하도록 업데이트하는 것이 좋습니다. 먼저 스크립트의 핵심 기능을 수행할 마스터 Python 스크립트를 만들어야 합니다. 그런 다음 `Package-Structure.yml` 파일을 만들어 스크립트에 필요한 인수 및 기타 메타데이터를 정의합니다. 자세한 내용은 `Package-Structure.yml` 옵션을 참조하세요.

### 기본 Python 스크립트
<a name="main-python-script"></a>

작업이 시작될 때 실행되는 초기 기본 스크립트입니다. 스크립트 실행이 완료되면 작업이 완료되고 최종 반환 코드가 작업의 상태를 결정합니다. 이 스크립트의 모든 출력은 원격으로 실행될 때 캡처되어 참조를 위해 작업의 출력 감사 로그로 전달됩니다. 이 로그는 Amazon CloudWatch에도 저장됩니다.

#### 스크립트에서 AWS 데이터 및 APIs의 Cloud Migration Factory에 액세스
<a name="accessing-cloud-migration-factory-on-aws-data-and-apis-from-a-script"></a>

AWS의 Cloud Migration Factory APIs 및 데이터에 대한 액세스를 제공하려면 포함된 python 헬퍼 모듈을 사용할 수 있습니다. 모듈은 다음과 같은 몇 가지 주요 기능을 제공합니다.

 `factory_login` 

AWS APIs. 이 함수는 보안 인증을 여러 번 시도하여 CMF에 로그인을 시도합니다.

1. 서비스 계정 사용자 ID 및 비밀번호가 있으며 액세스가 허용된 경우 이를 포함하는 기본 암호에 액세스를 시도합니다. 이 보안 암호 이름 **MFServiceAccount-`userpool id`]**가 확인됩니다.

1. 1단계가 실패하고 사용자가 명령줄에서 스크립트를 실행 중이면 AWS Cloud Migration Factory 사용자 ID와 암호를 입력하라는 메시지가 표시됩니다. 원격 자동화 작업에서 실행하면 작업에 실패합니다.

 `get_server_credentials` 

Credentials Manager의 AWS Cloud Migration Factory에 저장된 서버의 로그인 자격 증명을 반환하거나 사용자 입력을 통해 반환합니다. 이 함수는 여러 소스를 확인하여 특정 서버의 보안 인증을 결정합니다. 소스 순서는 다음과 같습니다.

1. local\$1username 및 local\$1password가 설정되어 있고 유효하면 이를 반환합니다.

1. secret\$1overide가 설정된 경우 AWS Secret Manager에서 지정된 보안 암호를 검색하는 데 사용됩니다. 그렇지 않으면 서버 레코드에 **secret\$1name** 키가 포함되어 있고 비어 있지 않은지 확인한 다음이 보안 암호 이름이 사용됩니다.

1. 지정된 암호를 찾거나 액세스하는 데 실패한 경우 함수는 **no\$1user\$1prompts**가 **False**로 설정된 경우에만 사용자에게 보안 인증을 요청합니다. 그렇지 않으면 오류가 반환됩니다.

 **파라미터** 

local\$1username - 전달되면가 반환됩니다.

local\$1password - 전달되면가 반환됩니다.

server - CMF Server dict, AWS Cloud Migration Factory의 get\$1factory\$1servers에서 반환.

Secret\$1overide - 전달됩니다. 그러면이 서버의 Secrets Manager에서 검색할 보안 암호 이름이 설정됩니다.

No\$1user\$1prompts - 저장되지 않은 경우 사용자에게 사용자 ID와 암호를 입력하라는 메시지를 표시하지 않도록 함수에 지시합니다. 원격 자동화 스크립트의 경우 True여야 합니다.

 `get_credentials` 

Secrets Manager에서 AWS Cloud Migration Factory Credentials Manager를 사용하여 저장된 자격 증명을 가져옵니다.

 **파라미터** 

secret\$1name - 검색할 보안 암호의 이름입니다.

get\$1factory\$1servers

제공된 웨이브드를 기반으로 AWS Cloud Migration Factory 데이터 스토어에서 서버 배열을 반환합니다.

 **파라미터** 

waveid - 반환될 서버의 Wave 레코드 ID입니다.

토큰 - FactoryLogin Lambda 함수에서 얻은 인증 토큰입니다.

app\$1ids - 포함할 웨이브 내 애플리케이션 ID의 선택적 목록입니다.

server\$1ids - 포함할 웨이브 및 애플리케이션 내 서버 ID의 선택적 목록입니다.

os\$1split - 로 설정하면 Linux용 목록 `true`2개와 Windows 서버 1개가 반환되고, False인 경우 결합된 단일 목록이 반환됩니다.

rtype - 서버의 특정 마이그레이션 전략에 대해서만 필터링하는 선택적 문자열입니다. 즉, "Rehost" 값을 전달하면 Rehost가 있는 서버만 반환됩니다.

#### 최종 메시지 요약
<a name="final-message-summary"></a>

스크립트 결과의 요약 메시지를 화면 또는 sysout에 최종 출력으로 제공하는 것이 좋습니다. 이 내용은 콘솔의 **마지막 메시지** 속성에 표시되므로 사용자가 전체 출력 로그를 읽을 필요 없이 스크립트 결과의 상태를 빠르게 확인할 수 있습니다.

#### 반환 코드
<a name="return-code"></a>

스크립트 기능이 완전히 성공하지 못한 경우 기본 Python 스크립트는 종료 시 0이 아닌 반환 코드를 반환해야 합니다. 0이 아닌 반환 코드를 받으면 작업 로그에 작업 상태가 **실패**로 표시되므로 사용자는 출력 로그에서 실패에 대한 자세한 내용을 검토해야 합니다.

### YAML Package-Structure.yml 옵션
<a name="package-structure.yml-options"></a>

#### 예시 YAML 파일
<a name="example"></a>

```
Name: "0-Check MGN Prerequisites"
Description: "This script will verify the source servers meet the basic requirements for AWS MGN agent installation."
MasterFileName: "0-Prerequisites-checks.py"
UpdateUrl: ""
Arguments:
-
name: "ReplicationServerIP"
description: "Replication Server IP."
long_desc: "IP Address of an AWS MGN Replication EC2 Instance."
type: "standard"
required: true
-
name: "SecretWindows"
long_desc: "Windows Secret to use for credentials."
description: "Windows Secret"
type: "relationship"
rel_display_attribute: "Name"
rel_entity: "secret"
rel_key: "Name"
-
name: "SecretLinux"
long_desc: "Linux Secret to use for credentials."
description: "Linux Secret"
type: "relationship"
rel_display_attribute: "Name"
rel_entity: "secret"
rel_key: "Name"
-
name: "Waveid"
description: "Wave Name"
type: "relationship"
rel_display_attribute: "wave_name"
rel_entity: "wave"
rel_key: "wave_id"
validation_regex: "^(?!\\s*$).+"
validation_regex_msg: "Wave must be provided."
required: true
SchemaExtensions:
-
schema: "server"
name: "server_pre_reqs_output"
description: "Pre-Req Output"
type: "string"
```

#### YAML 키 설명
<a name="keys"></a>

필수

 **이름** - 스크립트가 가져올 때 사용할 기본 이름입니다.

 **설명** - 스크립트 사용에 대한 설명입니다.

 **MasterFileName** - 스크립트를 실행하기 위한 시작점으로, 스크립트 패키지 아카이브에 포함된 Python 파일 이름이어야 합니다.

 **인수** - MasterFileName Python 스크립트가 허용하는 인수 목록입니다. 지정된 각 인수 요구 사항은 AWS Cloud Migration Factory 속성 정의 형식입니다. 각 인수의 필수 속성은 **이름** 및 **유형**이며 다른 모든 속성은 선택 사항입니다.

선택 사항

 **ComputePlatform** -이 키는 스크립트가 실행되는 위치를 정의합니다. 자동화 서버 없이 AWS Systems Manager에서 직접 실행하려면 "SSM Automation Document"로 설정합니다. 생략하면 기본적으로 자동화 서버에서가 실행됩니다.

 **UpdateUrl** - 스크립트 패키지의 소스를 업데이트 제공에 사용할 수 있는 URL을 제공합니다. 현재는 참조용으로만 제공됩니다.

 **SchemaExtensions** - 출력을 저장하거나 추가 데이터를 검색하기 위해 Python 스크립트가 스키마에 있어야 하는 속성 목록입니다. 각 속성은 AWS CMF 속성 정의 형식으로 지정해야 합니다. 각 속성의 필수 속성은 **스키마**, **이름, 설명** 및 **유형**입니다. 다른 모든 속성은 선택 사항입니다. 새 속성은 스크립트가 처음 로드될 때 스키마에 자동으로 추가되며 SchemaExtensions에 대한 변경 사항은 스크립트의 새 버전에 대해 처리되지 않습니다. 새 스크립트를 추가하는 데 이 작업이 필요한 경우 스키마를 수동으로 업데이트해야 합니다.