

# Windows Sysprep을 사용하여 Amazon EC2 AMI 생성
<a name="ami-create-win-sysprep"></a>

Microsoft System Preparation(Windows Sysprep) 도구는 새 이미지를 캡처하기 전에 인스턴스별 시스템 구성이 제거된 상태로 일반 버전의 운영 체제를 생성합니다.

소프트웨어 및 설정으로 사전 설치 및 사전 구성된 안전한 맞추형 최신 “골드” 서버 이미지의 생성, 관리 및 배포를 자동화하려면 [EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)를 사용하는 것이 좋습니다.

Windows Sysprep을 사용하면 Windows 시작 에이전트(EC2Launch v2, EC2Launch 및 EC2Config)를 통해 표준화된 AMI를 생성할 수도 있습니다.

**중요**  
Windows Sysprep을 사용하여 인스턴스 백업을 생성하지 마세요. Windows Sysprep은 시스템에 고유한 정보를 삭제하는데, 이는 인스턴스 백업에 의도하지 않은 결과를 낳을 수 있습니다.

Windows Sysprep의 문제를 해결하려면 [Amazon EC2 Windows 인스턴스 Sysprep 문제 해결](sysprep-troubleshoot.md)의 내용을 참조하세요.

**Topics**
+ [Windows Sysprep 단계](#sysprep-phases)
+ [시작하기 전 준비 사항](#sysprep-begin)
+ [EC2Launch v2와 함께 Windows Sysprep 사용](sysprep-using-ec2launchv2.md)
+ [EC2Launch와 함께 Windows Sysprep 사용](ec2launch-sysprep.md)
+ [EC2Config와 함께 Windows Sysprep 사용](sysprep-using.md)

## Windows Sysprep 단계
<a name="sysprep-phases"></a>

Windows Sysprep은 다음 단계를 거칩니다.
+ **일반화**: Sysprep 도구는 이미지 고유 정보 및 설정을 삭제합니다. 예를 들어 Windows Sysprep은 보안 식별자(SID), 컴퓨터 이름, 이벤트 로그, 특정 드라이버를 제거합니다. 이 단계가 완료되면 운영 체제(OS)는 AMI를 생성할 준비가 됩니다.
**참고**  
`PersistAllDeviceInstalls` 설정이 true로 기본 설정되어 있기 때문에 Windows Sysprep을 Windows 시작 에이전트와 함께 실행할 때 시스템은 드라이버가 제거되는 것을 방지합니다.
+ **특수화**: 플러그-앤-플레이가 컴퓨터를 스캔하여 검색된 장치에 대해 드라이버를 설치합니다. Sysprep 도구는 컴퓨터 이름과 SID와 같은 OS 요건을 생성합니다. 필요한 경우 이 단계에서 명령을 실행할 수 있습니다.
+ **Out-of-Box Experience(OOBE)**: 시스템은 Windows 설치 축약 버전을 실행하여 사용자에게 시스템 언어, 표준 시간대, 등록된 조직과 같은 정보를 입력하도록 요청합니다. Windows 시작 에이전트와 함께 Windows Sysprep을 실행할 때 응답 파일은 이 단계를 자동으로 실행합니다.

## 시작하기 전 준비 사항
<a name="sysprep-begin"></a>
+ Windows Sysprep을 수행하기 전에 Windows Sysprep을 실행할 단일 관리자 계정을 제외하고 로컬 사용자 계정 및 계정 프로파일을 모두 제거하는 것이 좋습니다. 추가 계정 및 프로파일로 Windows Sysprep를 수행하면 프로파일 데이터 손실 또는 Windows Sysprep 완료 실패 등 예기치 못한 동작이 발생할 수 있습니다.
+ [Sysprep 개요](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--system-preparation--overview)에 대해 자세히 알아보세요.
+ [서버 역할에 대한 Sysprep 지원](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep-support-for-server-roles)에 대해 알아보세요.

# EC2Launch v2와 함께 Windows Sysprep을 사용하여 AMI 생성
<a name="sysprep-using-ec2launchv2"></a>

EC2Launch v2 에이전트가 설치된 인스턴스에서 이미지를 생성하면 이미지가 준비될 때 EC2Launch v2가 특정 작업을 수행합니다. 여기에는 Windows Sysprep 작업이 포함됩니다. 자세한 내용은 [Windows Sysprep 단계](ami-create-win-sysprep.md#sysprep-phases) 섹션을 참조하세요.

**Topics**
+ [Windows Sysprep 작업](#sysprep-actions-ec2launchv2)
+ [Sysprep 이후](#sysprep-post-ec2launchv2)
+ [EC2Launch v2와 함께 Windows Sysprep 실행](#sysprep-gui-procedure-ec2launchv2)

## Windows Sysprep 작업
<a name="sysprep-actions-ec2launchv2"></a>

Windows Sysprep과 EC2Launch v2는 이미지를 준비할 때 다음 작업을 수행합니다.

1. **EC2Launch 설정(EC2Launch settings)** 대화 상자에서 **Sysprep을 이용해 종료(Shutdown with Sysprep)**를 선택하면 시스템은 `ec2launch sysprep` 명령을 실행합니다.

1. EC2Launch v2는 `unattend.xml`에서 레지스트리 값을 읽어 `HKEY_USERS\.DEFAULT\Control Panel\International\LocaleName` 파일의 내용을 편집합니다. 이 파일은 `C:\ProgramData\Amazon\EC2Launch\sysprep` 디렉터리에 있습니다.

1. 시스템이 `BeforeSysprep.cmd`를 실행합니다. 이 명령은 다음과 같은 레지스트리 키를 생성합니다.

   **reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 1 /f**

   레지스트리 키는 RDP 연결이 다시 활성화될 때까지 RDP 연결을 비활성화합니다. RDP 연결을 비활성화하는 것은 필수적인 보안 조치입니다. 왜냐하면 Windows Sysprep이 실행된 이후 첫 번째 부팅 세션 동안 RDP가 연결을 허용하고 관리자 암호가 비어 있는 짧은 시간이 있기 때문입니다.

1. EC2Launch v2 서비스는 다음 명령을 실행하여 Windows Sysprep을 호출합니다.

   **sysprep.exe /oobe /generalize /shutdown /unattend: "C:\$1ProgramData\$1Amazon\$1EC2Launch\$1sysprep\$1unattend.xml"**

### 일반화 단계
<a name="sysprep-generalize-ec2launchv2"></a>
+ EC2Launch v2는 컴퓨터 이름과 SID 같은 이미지 고유 정보 및 설정을 삭제합니다. 인스턴스가 도메인의 멤버인 경우에는 도메인에서 삭제됩니다. `unattend.xml` 응답 파일은 이 단계에 영향을 미치는 다음의 설정을 포함합니다.
  + **PersistAllDeviceInstalls**: 이 설정은 Windows 설치로 하여금 장치를 제거하고 재구성하지 못하도록 함으로써 이미지 준비 과정을 가속화하는데, 이는 Amazon AMI는 특정 드라이버가 실행되는 것을 요구하고 그 드라이버들을 재검색하는 데 시간이 걸리기 때문입니다.
  + **DoNotCleanUpNonPresentDevices**: 이 설정은 현재 존재하지 않는 장비들에 대한 플러그-앤-플레이 정보를 담고 있습니다.
+ Windows Sysprep은 AMI를 생성하기 위한 준비를 하는 과정에서 OS를 종료합니다. 시스템은 새 인스턴스를 시작하거나 원본 인스턴스를 시작합니다.

### 특수화 단계
<a name="sysprep-specialize-ec2launchv2"></a>

시스템은 컴퓨터 이름과 SID와 같은 OS 특정 요건을 생성합니다. 시스템은 또한 `unattend.xml` 응답 파일에 지정된 구성에 기반을 두어 다음 작업을 수행합니다.
+ **CopyProfile**: Windows Sysprep을 구성해 내장된 관리자 프로파일을 비롯한 모든 사용자 프로파일을 삭제할 수 있습니다. 이 설정은 내장된 관리자 계정을 보유하고 있어서 계정에 대한 어떤 사용자 지정도 새 이미지로 전달됩니다. 기본 값은 `True`입니다.

  **CopyProfile**은 기본 프로파일을 기존의 로컬 관리자 프로파일로 바꿉니다. Windows Sysprep를 실행한 후 로그인한 모든 계정은 첫 로그인 시 해당 프로파일 및 콘텐츠의 사본을 받게 됩니다.

  새 이미지로 전달하고자 하는 사용자 프로파일에 대한 특정한 사용자 지정이 없다면 이 설정을 `False`로 변경하세요. Windows Sysprep은 모든 사용자 프로파일을 삭제하며, 이를 통해 시간과 디스크 공간을 절약합니다.
+ **TimeZone**: 표준 시간대는 UTC(협정 세계시)로 기본 설정되어 있습니다.
+ **Synchronous command with order 1**: 시스템은 다음 명령을 실행하여 관리자 계정을 활성화하고 암호 요건을 지정합니다.

  ```
  net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES
  ```
+ **Synchronous command with order 2**: 시스템은 관리자 암호를 암호화합니다. 이 보안 조치는 `setAdminAccount` 작업을 구성하지 않으면 Windows Sysprep이 완료된 후 인스턴스에 액세스할 수 없도록 설계되어 있습니다.

  시스템은 로컬 시작 에이전트 디렉터리(`C:\Program Files\Amazon\EC2Launch\`)에서 다음 명령을 실행합니다.

  ```
  EC2Launch.exe internal randomize-password --username Administrator
  ```
+ 원격 데스크톱 연결을 활성화하기 위해 시스템은 터미널 서버 `fDenyTSConnections` 레지스트리 키를 false로 설정합니다.

### OOBE 단계
<a name="sysprep-oobe-ec2launchv2"></a>

1. EC2Launch v2 응답 파일을 사용하여 다음과 같은 구성을 지정합니다.
   + `<InputLocale>en-US</InputLocale>`
   + `<SystemLocale>en-US</SystemLocale>`
   + `<UILanguage>en-US</UILanguage>`
   + `<UserLocale>en-US</UserLocale>`
   + `<HideEULAPage>true</HideEULAPage>`
   + `<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>`
   + `<ProtectYourPC>3</ProtectYourPC>`
   + `<BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>`
   + `<TimeZone>UTC</TimeZone>`
   + `<RegisteredOrganization>Amazon.com</RegisteredOrganization>`
   + `<RegisteredOwner>EC2</RegisteredOwner>`
**참고**  
일반화 및 특수화 단계에서 EC2Launch v2는 OS의 상태를 모니터링합니다. EC2Launch v2는 OS가 Sysprep 단계에 있다는 것을 탐지하면 시스템 로그에 다음 메시지를 출력합니다.  
Windows is being configured. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. 시스템이 EC2Launch v2를 실행합니다.

## Sysprep 이후
<a name="sysprep-post-ec2launchv2"></a>

Windows Sysprep이 완료된 후 EC2Launch v2는 콘솔에 다음 메시지를 출력합니다.

```
Windows sysprep configuration complete.
```

그 다음에 EC2Launch v2는 다음 작업을 수행합니다.

1. `agent-config.yml` 파일의 내용을 읽고 구성된 작업을 실행합니다.

1. `preReady` 스테이지의 모든 작업을 실행합니다.

1. 실행이 완료된 후에는 `Windows is ready`라는 메시지를 인스턴스 시스템 로그에 전송합니다.

1. `PostReady` 스테이지의 모든 작업을 실행합니다.

EC2Launch v2에 대한 자세한 내용은 [EC2Launch v2 에이전트를 사용하여 EC2 Windows 인스턴스 시작 중 태스크 수행](ec2launch-v2.md) 섹션을 참조하세요.

## EC2Launch v2와 함께 Windows Sysprep 실행
<a name="sysprep-gui-procedure-ec2launchv2"></a>

Windows Sysprep과 EC2Launch v2를 이용해 표준화된 AMI를 생성하려면 다음 절차를 수행하세요.

1. Amazon EC2 콘솔에서 복제하려는 AMI를 찾습니다.

1. 실행을 시작해서 Windows 인스턴스에 연결합니다.

1. 사용자 지정 설정

   1. Windows **시작** 메뉴에서 **Amazon EC2Launch 설정(Amazon EC2Launch settings)**을 검색하고 선택합니다. Amazon **EC2Launch 설정(EC2Launch settings)** 대화 상자의 옵션 및 설정에 대한 자세한 내용은 [Windows 인스턴스에 대한 EC2Launch v2 설정 구성](ec2launch-v2-settings.md) 단원을 참조하세요.

   1. 변경 사항이 있는 경우 종료하기 전에 **저장**을 선택합니다.

1. **Sysprep을 이용해 종료** 또는 **Sysprep을 이용하지 않고 종료**를 선택합니다.

Windows Sysprep 실행 및 인스턴스 종료 여부 확인 요청을 받을 때 **예**를 클릭합니다. EC2Launch v2는 Windows Sysprep을 실행합니다. 그런 다음 인스턴스에서 로그오프되고 인스턴스가 종료됩니다. Amazon EC2 콘솔에서 [**인스턴스(Instances)**] 페이지를 보면 인스턴스 상태가 [`Running`]에서 [`Stopping`]으로 바뀐 다음 다시 [`Stopped`]로 바뀌는 것을 확인할 수 있습니다. 이 지점에서는 안전하게 현재 인스턴스에서 AMI를 생성할 수 있습니다.

다음 명령을 사용해서 명령줄에서 Windows Sysprep 도구를 수동으로 호출할 수 있습니다.

```
"%programfiles%\amazon\ec2launch\ec2launch.exe" sysprep --shutdown=true
```

# EC2Launch와 함께 Windows Sysprep을 사용하여 AMI 생성
<a name="ec2launch-sysprep"></a>

EC2Launch 에이전트가 설치된 인스턴스에서 이미지를 생성하면 이미지가 준비될 때 EC2Launch가 특정 작업을 수행합니다. 여기에는 Windows Sysprep 작업이 포함됩니다. 자세한 내용은 [Windows Sysprep 단계](ami-create-win-sysprep.md#sysprep-phases) 섹션을 참조하세요.

EC2Launch는 AMI에서 이미지 준비 프로세스를 자동화하고 보호하는 기본 응답 파일과 배치 파일을 Windows Sysrep에 제공합니다. 이 파일을 수정하는 것은 선택 사항입니다. 이 파일은 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep` 디렉터리에 있습니다.

**중요**  
Windows Sysprep을 사용하여 인스턴스 백업을 생성하지 마세요. Windows Sysprep은 시스템에 특정한 정보를 제거합니다. 이 정보를 제거하면 인스턴스 백업에서 의도하지 않은 결과가 발생할 수 있습니다.

**Topics**
+ [Windows Sysprep에 대한 EC2Launch 응답 및 배치 파일](#ec2launch-sysprep-answer-batch)
+ [EC2Launch와 함께 Windows Sysprep 실행](#ec2launch-sysprep-running)
+ [사용자 지정 AMI 시작 시 Server 2016 이후에 대한 메타데이터/KMS 경로 업데이트](#update-metadata-KMS)

## Windows Sysprep에 대한 EC2Launch 응답 및 배치 파일
<a name="ec2launch-sysprep-answer-batch"></a>

Windows Sysprep에 대한 EC2Launch 응답 파일과 배치 파일에는 다음 내용이 포함됩니다.

`Unattend.xml`  
이 파일은 기본 응답 파일입니다. `SysprepInstance.ps1`을 실행하거나 사용자 인터페이스에서 **ShutdownWithSysprep**을 선택하는 경우 시스템이 이 파일에서 설정을 읽습니다.

`BeforeSysprep.cmd`  
EC2Launch가 Windows Sysprep을 실행하기 전에 이 배치 파일이 명령을 실행하도록 사용자 지정합니다.

`SysprepSpecialize.cmd`  
Windows Sysprep 특수화 단계 중에 명령을 실행하려면 이 배치 파일을 사용자 지정합니다.

## EC2Launch와 함께 Windows Sysprep 실행
<a name="ec2launch-sysprep-running"></a>

데스크톱 환경에서 Windows Server 2016 이후를 전체 설치할 때 **EC2 Launch Settings** 애플리케이션을 사용하여 EC2Launch와 함께 Windows Sysprep을 수동으로 실행할 수 있습니다.

**EC2Launch Settings 애플리케이션을 사용하여 Windows Sysprep 실행**

1. Amazon EC2 콘솔에서 Windows Server 2016 이후 AMI를 찾거나 생성합니다.

1. AMI에서 Windows 인스턴스를 시작합니다.

1. Windows 인스턴스에 연결하고 인스턴스를 사용자 지정합니다.

1. **EC2LaunchSettings** 애플리케이션을 검색하여 실행합니다. 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Settings` 디렉터리에 위치합니다.  
![\[EC2 Launch Settings 애플리케이션\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/ec2launch-sysprep.png)

1. 필요에 따라 옵션을 선택하거나 취소합니다. 이러한 설정은 `LaunchConfig.json` 파일에 저장되어 있습니다.

1. **Administrator 암호**에서 다음 중 하나를 수행합니다.
   + **임의(Random)**를 선택합니다. EC2Launch는 암호를 생성하고 사용자의 키를 사용하여 암호를 암호화합니다. 인스턴스가 재부팅 또는 중지되었다가 시작된 경우 이 암호가 그대로 유지되도록 시스템은 인스턴스가 시작된 후 이 설정을 비활성화합니다.
   + **지정(Specify)**을 선택하고 시스템 요구 사항을 충족하는 암호를 입력합니다. 암호는 `LaunchConfig.json`에 일반 텍스트로 저장되며 Windows Sysprep에서 관리자 암호를 설정한 후에 삭제됩니다. 지금 종료하면 암호는 지금 바로 설정됩니다. EC2Launch는 사용자의 키를 사용하여 암호를 암호화합니다.
   + **DoNothing**을 선택하고 `unattend.xml` 파일에 암호를 지정합니다. `unattend.xml`에 암호를 지정하지 않으면 관리자 계정이 비활성화됩니다.

1. **Sysprep을 이용해 종료(Shutdown with Sysprep)**를 선택합니다.

**EC2Launch를 사용하여 Windows Sysprep을 수동으로 실행**

1. Amazon EC2 콘솔에서 복제하려는 Windows Server 2016 이후 Datacenter 에디션 AMI를 찾거나 만듭니다.

1. 실행을 시작해서 Windows 인스턴스에 연결합니다.

1. 인스턴스를 사용자 지정합니다.

1. `LaunchConfig.json` 파일에서 설정을 지정합니다. 이 파일은 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Config` 디렉터리에 위치합니다.

   `adminPasswordType`에 대해 다음 값 중 하나를 지정할 수 있습니다.  
`Random`  
EC2Launch는 암호를 생성하고 사용자의 키를 사용하여 암호를 암호화합니다. 인스턴스가 재부팅 또는 중지되었다가 시작된 경우 이 암호가 그대로 유지되도록 시스템은 인스턴스가 시작된 후 이 설정을 비활성화합니다.  
`Specify`  
`adminPassword`에 지정한 암호가 EC2Launch에 사용됩니다. 암호가 시스템 요구 사항에 맞지 않으면 EC2Launch에서 임의의 암호를 대신 생성합니다. 암호는 `LaunchConfig.json`에 일반 텍스트로 저장되며 Windows Sysprep에서 관리자 암호를 설정한 후에 삭제됩니다. EC2Launch는 사용자의 키를 사용하여 암호를 암호화합니다.  
`DoNothing`  
`unattend.xml` 파일에 지정한 암호가 EC2Launch에 사용됩니다. `unattend.xml`에 암호를 지정하지 않으면 관리자 계정이 비활성화됩니다.

1. (선택 사항) `unattend.xml` 및 기타 구성 파일에서 설정을 지정합니다. 설치에 참가하려는 경우 이 파일을 변경할 필요가 없습니다. 파일은 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep` 디렉터리에 위치합니다.

1. Windows PowerShell에서 `./InitializeInstance.ps1 -Schedule`을 실행합니다. 스크립트는 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts` 디렉터리에 위치합니다. 이 스크립트는 다음 부팅 중에 초기화하도록 인스턴스를 예약합니다. 다음 단계에서 `SysprepInstance.ps1` 스크립트를 실행하기 전에 이 스크립트를 실행해야 합니다.

1. Windows PowerShell에서 `./SysprepInstance.ps1`을 실행합니다. 스크립트는 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts` 디렉터리에 위치합니다.

인스턴스에서 로그오프되고 인스턴스가 종료됩니다. Amazon EC2 콘솔에서 [**인스턴스(Instances)**] 페이지를 보면 인스턴스 상태가 [`Running`]에서 [`Stopping`]으로 바뀐 다음 [`Stopped`]로 바뀌는 것을 확인할 수 있습니다. 이 시점에서는 이 인스턴스에서 안전하게 AMI를 생성할 수 있습니다.

## 사용자 지정 AMI 시작 시 Server 2016 이후에 대한 메타데이터/KMS 경로 업데이트
<a name="update-metadata-KMS"></a>

사용자 지정 AMI를 시작할 때 Server 2016 이후에 대한 메타데이터/KMS 경로를 업데이트하려면 다음과 같이 하세요.
+ EC2LaunchSettings GUI(C:\$1ProgramData\$1Amazon\$1EC2-Windows\$1Launch\$1Settings\$1Ec2LaunchSettings.exe)를 실행하고 Windows Sysprep을 사용하여 종료하는 옵션을 선택합니다.
+ EC2LaunchSettings를 실행하고 Windows Sysprep 없이 종료한 다음 AMI를 생성합니다. 그러면 다음번 부팅할 때 EC2 시작 초기화 작업을 실행하도록 설정되며, 해당 인스턴스의 서브넷을 토대로 경로가 설정됩니다.
+ [PowerShell](ec2launch-config.md#ec2launch-inittasks)에서 AMI를 생성하기 전에 EC2 시작 초기화 작업을 수동으로 다시 예약합니다.
**중요**  
작업을 다시 예약하기 전에 기본 암호 재설정 동작을 적어 두세요.
+ Windows 정품 인증 또는 인스턴스 메타데이터 오류와의 통신이 발생하는 실행 중인 인스턴스에서 경로를 업데이트하려면 [“Windows를 정품 인증할 수 없음”](common-messages.md#activate-windows)을 참조하세요.

# EC2Config와 함께 Windows Sysprep을 사용하여 AMI 생성
<a name="sysprep-using"></a>

EC2Config 서비스가 설치된 인스턴스에서 이미지를 생성하면 이미지가 준비될 때 EC2Config가 특정 작업을 수행합니다. 여기에는 Windows Sysprep 작업이 포함됩니다. 자세한 내용은 [Windows Sysprep 단계](ami-create-win-sysprep.md#sysprep-phases) 섹션을 참조하세요.

**Topics**
+ [Windows Sysprep 작업](#sysprep-actions)
+ [Sysprep 이후](#sysprep-post)
+ [EC2Config 서비스와 함께 Windows Sysprep 실행하기](#sysprep-gui-procedure)

## Windows Sysprep 작업
<a name="sysprep-actions"></a>

Windows Sysprep과 EC2Config 서비스는 이미지를 준비할 때 다음 작업을 수행합니다.

1. **EC2 서비스 속성** 대화 상자에서 **Sysprep을 이용해 종료**를 선택하면, 시스템은 **ec2config.exe -sysprep** 명령을 실행합니다.

1. EC2Config 서비스는 `BundleConfig.xml` 파일의 내용을 읽습니다. 기본적으로 이 파일은 `C:\Program Files\Amazon\Ec2ConfigService\Settings` 디렉터리에 위치합니다.

    `BundleConfig.xml` 파일에는 다음 설정이 포함되어 있습니다. 이 설정은 변경할 수 있습니다.
   + **AutoSysprep**: Windows Sysprep을 자동적으로 사용할지 여부를 지정합니다. Windows Sysprep을 EC2 Service Properties 대화 상자로부터 실행하는 경우에는 이 값을 변경할 필요가 없습니다. 기본 값은 `No`입니다.
   + **SetRDPCertificate**: 원격 데스크톱 서버에 대한 자체 서명 인증서를 설정합니다. 이렇게 함으로써 원격 데스크톱 프로토콜(RDP)을 안정적으로 이용해 인스턴스에 연결할 수 있습니다. 새 인스턴스가 인증서를 사용해야 하는 경우 이 값을 `Yes`로 변경합니다. Windows Server 2012 인스턴스는 자신의 고유한 인증서를 생성할 수 있으므로 이 설정은 이 인스턴스에서는 사용되지 않습니다. 기본 값은 `No`입니다.
   + **SetPasswordAfterSysprep**: 새로 실행된 인스턴스에 무작위 암호를 설정하고 이를 사용자 실행 키로 암호화하고 암호화된 암호를 콘솔에 출력합니다. 새 인스턴스에 무작위의 암호화된 암호를 설정해서는 안 되는 경우에는 설정 값을 `No`로 변경합니다. 기본 값은 `Yes`입니다.
   +  **PreSysprepRunCmd**: 실행할 명령의 위치 명령은 기본적으로 `C:\Program Files\Amazon\Ec2ConfigService\Scripts\BeforeSysprep.cmd` 디렉터리에 위치합니다.

1. 시스템이 `BeforeSysprep.cmd`를 실행합니다. 이 명령은 다음과 같은 레지스트리 키를 생성합니다.

   ```
   reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f
   ```

   레지스트리 키는 RDP 연결이 다시 활성화될 때까지 RDP 연결을 비활성화합니다. RDP 연결을 비활성화하는 것은 필수적인 보안 조치입니다. 왜냐하면 Windows Sysprep이 실행된 이후 첫 번째 부팅 세션 동안 RDP가 연결을 허용하고 관리자 암호가 비어 있는 짧은 시간이 있기 때문입니다.

1. EC2Config 서비스는 다음 명령을 실행하여 Windows Sysprep을 호출합니다.

   ```
   sysprep.exe /unattend: "C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml" /oobe /generalize /shutdown
   ```

### 일반화 단계
<a name="sysprep-generalize"></a>
+ 이 도구는 컴퓨터 이름과 SID 같은 이미지 고유 정보 및 설정을 삭제합니다. 인스턴스가 도메인의 멤버인 경우에는 도메인에서 삭제됩니다. `sysprep2008.xml` 응답 파일은 이 단계에 영향을 미치는 다음의 설정을 포함합니다.
  + **PersistAllDeviceInstalls**: 이 설정은 Windows 설치로 하여금 장치를 제거하고 재구성하지 못하도록 함으로써 이미지 준비 과정을 가속화하는데, 이는 Amazon AMI는 특정 드라이버가 실행되는 것을 요구하고 그 드라이버들을 재검색하는 데 시간이 걸리기 때문입니다.
  + **DoNotCleanUpNonPresentDevices**: 이 설정은 현재 존재하지 않는 장비들에 대한 플러그-앤-플레이 정보를 담고 있습니다.
+ Windows Sysprep은 AMI를 생성하기 위한 준비를 하는 과정에서 OS를 종료합니다. 시스템은 새 인스턴스를 시작하거나 원본 인스턴스를 시작합니다.

### 특수화 단계
<a name="sysprep-specialize"></a>

시스템은 컴퓨터 이름과 SID와 같은 OS 특정 요건을 생성합니다. 시스템은 또한 sysprep2008.xml 응답 파일에 지정된 구성에 기반을 두어 다음 작업을 수행합니다.
+ **CopyProfile**: Windows Sysprep을 구성해 내장된 관리자 프로파일을 비롯한 모든 사용자 프로파일을 삭제할 수 있습니다. 이 설정은 내장된 관리자 계정을 보유하고 있어서 계정에 대한 어떤 사용자 지정도 새 이미지로 전달됩니다. 기본값은 True입니다.

  **CopyProfile**은 기본 프로파일을 기존의 로컬 관리자 프로파일로 바꿉니다. Windows Sysprep를 실행한 후 로그인한 모든 계정은 첫 로그인 시 해당 프로파일 및 콘텐츠의 사본을 받게 됩니다.

  새 이미지로 전달하고자 하는 사용자 프로파일에 대한 특정한 사용자 지정이 없다면 이 설정을 False로 변경하세요. Windows Sysprep은 모든 사용자 프로파일을 삭제하며, 이를 통해 시간과 디스크 공간을 절약합니다.
+ **TimeZone**: 표준 시간대는 UTC(협정 세계시)로 기본 설정되어 있습니다.
+ **Synchronous command with order 1**: 시스템은 다음 명령을 실행하여 관리자 계정을 활성화하고 암호 요건을 지정합니다.

  **net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES**
+ **Synchronous command with order 2**: 시스템은 관리자 암호를 암호화합니다. 이 보안 조치는 ec2setpassword 설정을 활성화하지 않으면 Windows Sysprep이 완료된 후 인스턴스에 액세스할 수 없도록 설계되어 있습니다.

  C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1ScramblePassword.exe" -u Administrator
+ **Synchronous command with order 3**: 시스템은 다음 명령을 실행합니다.

  C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1SysprepSpecializePhase.cmd

   이 명령은 다음과 같은 레지스트리 키를 추가하여 RDP를 재활성화합니다.

  reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 0 /f

### OOBE 단계
<a name="sysprep-oobe"></a>

1. 시스템은 EC2Config 응답 파일을 이용해 다음과 같은 구성을 지정합니다.
   + <InputLocale>en-US</InputLocale>
   + <SystemLocale>en-US</SystemLocale>
   + <UILanguage>en-US</UILanguage>
   + <UserLocale>en-US</UserLocale>
   + <HideEULAPage>true</HideEULAPage>
   + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
   + <NetworkLocation>Other</NetworkLocation>
   + <ProtectYourPC>3</ProtectYourPC>
   + <BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>
   + <TimeZone>UTC</TimeZone>
   + <RegisteredOrganization>Amazon.com</RegisteredOrganization>
   + <RegisteredOwner>Amazon</RegisteredOwner>
**참고**  
일반화 및 특수화 단계에서 EC2Config 서비스는 OS의 상태를 모니터링합니다. EC2Config는 OS가 Sysprep 단계에 있다는 것을 탐지하면 시스템 로그에 다음 메시지를 출력합니다.  
EC2ConfigMonitorState: Windows 0개가 구성 중입니다. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. OOBE 단계가 완료되면 `SetupComplete.cmd`에 있는 `C:\Windows\Setup\Scripts\SetupComplete.cmd`가 실행됩니다. 2015년 4월 이전의 Amazon 퍼블릭 AMI에서는 이 파일이 비어 있었고 이미지 상에서 아무 것도 실행하지 않았습니다. 2015년 4월 이후 발표된 퍼블릭 AMI의 경우 파일에 **call "C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1PostSysprep.cmd"** 값이 포함됩니다.

1. `PostSysprep.cmd`가 실행되고 다음 작업이 수행됩니다.
   + 로컬 관리자 암호가 만료되지 않도록 설정합니다. 로컬 관리자 암호가 만료되면, 관리자가 로그인할 수 없을 수도 있습니다.
   + MSSQLServer 머신 이름(설치된 경우)를 설정하여 그 이름이 AMI와 동기화되도록 합니다.

## Sysprep 이후
<a name="sysprep-post"></a>

Windows Sysprep이 완료된 후 EC2Config 서비스는 콘솔에 다음 메시지를 출력합니다.

```
Windows sysprep configuration complete.
			Message: Sysprep Start
			Message: Sysprep End
```

그 다음에 EC2Config는 다음 작업을 수행합니다.

1. config.xml 파일의 내용을 읽고 활성화된 모든 플러그인을 나열합니다.

1. 모든 “Before Windows is ready” 플러그인을 동시에 실행합니다.
   + Ec2SetPassword
   + Ec2SetComputerName
   + Ec2InitializeDrives
   + Ec2EventLog
   + Ec2ConfigureRDP
   + Ec2OutputRDPCert
   + Ec2SetDriveLetter
   + Ec2WindowsActivate
   + Ec2DynamicBootVolumeSize

1. 실행이 완료된 후에는 “Windows is ready”라는 메시지를 인스턴스 시스템 로그에 전송합니다.

1. 모든 “After Windows is ready” 플러그인을 동시에 실행합니다.
   + Amazon CloudWatch Logs 
   + UserData
   + AWS Systems Manager(Systems Manager) 

Windows 플러그인에 대한 자세한 내용은 [EC2Config 서비스를 사용하여 EC2 레거시 Windows 운영 체제 인스턴스를 시작하는 동안 태스크를 수행합니다.](ec2config-service.md) 단원을 참조하세요.

## EC2Config 서비스와 함께 Windows Sysprep 실행하기
<a name="sysprep-gui-procedure"></a>

Windows Sysprep과 EC2Config 서비스를 이용해 표준화된 AMI를 생성하려면 다음 절차를 수행하세요.

1. Amazon EC2 콘솔에서 복사하고자 하는 AMI의 위치를 지정하거나 [생성](creating-an-ami-ebs.md)합니다.

1. 실행을 시작해서 Windows 인스턴스에 연결합니다.

1. 그 AMI를 사용자 지정합니다.

1. EC2Config 서비스 응답 파일에서 구성 설정을 다음과 같이 지정합니다.

   `C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml`

1. Windows **시작** 메뉴에서 **모든 프로그램**을 선택한 후 **EC2ConfigService 설정**을 클릭합니다.

1. **Ec2 서비스 속성** 대화 상자에서 **이미지** 탭을 선택합니다. Ec2 서비스 속성 대화 상자의 옵션 및 설정에 대한 자세한 내용은 [Ec2 서비스 속성](ec2config-service.md)을 참조하세요.

1. 관리자 암호에 대한 옵션을 선택하고 **Shutdown with Sysprep(Sysprep을 이용해 종료)** 또는 **Shutdown without Sysprep(Sysprep을 사용하지 않고 종료)**을 선택합니다. EC2Config는 선택한 암호 옵션에 기반하는 설정 파일을 편집합니다.
   + **Random(무작위)**: EC2Config는 암호를 생성하고 이를 사용자의 키로 암호화한 다음, 암호화된 암호를 콘솔에 표시합니다. 첫 실행 후 이 설정을 비활성화하여 인스턴스가 재부팅되거나 중단되고 시작된 경우에도 해당 암호가 계속 유지되도록 합니다.
   + **지정**: 암호를 암호화되지 않은 형태(클리어 텍스트)로 Windows Sysprep 응답 파일에 저장합니다. Windows Sysprep은 다음에 실행될 때 관리자 암호를 설정합니다. 지금 종료하면 암호는 지금 바로 설정됩니다. 서비스가 다시 시작할 때 관리자 암호는 제거됩니다. 이 암호는 나중에 다시 확인할 수 없기 때문에 이를 꼭 기억해두세요.
   + **기존 유지**: Windows Sysprep이 실행 중일 때 또는 EC2Config가 재시작할 때, 관리자 계정에 대한 기존 암호를 변경하지 않습니다. 이 암호는 나중에 다시 확인할 수 없기 때문에 이를 꼭 기억해두세요.

1. **확인**을 선택합니다.

Windows Sysprep 실행 및 인스턴스 종료 여부 확인 요청을 받을 때 **예**를 클릭합니다. EC2Config가 Windows Sysprep을 실행하는 것을 확인할 수 있습니다. 그 다음 인스턴스에서 로그아웃되고 인스턴스는 종료됩니다. Amazon EC2 콘솔의 [**인스턴스(Instances)**] 페이지를 보면 인스턴스 상태가 [`Running`]에서 [`Stopping`]로 바뀐 다음 마지막으로 [`Stopped`]로 바뀌는 것을 확인할 수 있습니다. 이 지점에서는 안전하게 현재 인스턴스에서 AMI를 생성할 수 있습니다.

다음 명령을 사용해서 명령줄에서 Windows Sysprep 도구를 수동으로 호출할 수 있습니다.

```
"%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep"" 
```

**참고**  
CMD 셸이 이미 C:\$1Program Files\$1Amazon\$1EC2ConfigService\$1 디렉터리에 있는 경우에는 명령에 큰 따옴표가 필요 없습니다.

그러나 `Ec2ConfigService\Settings` 폴더에 지정된 XML 파일 옵션이 올바른지 주의 깊게 확인할 필요가 있습니다. 이것이 올바르게 지정되지 않은 경우는 인스턴스에 연결하지 못할 수 있습니다. 설정 파일에 대한 자세한 내용은 [EC2Config 설정 파일](ec2config-service.md#UsingConfigXML_WinAMI) 단원을 참조하세요. 명령줄에서 Windows Sysprep을 구성한 후 실행하는 예제는 `Ec2ConfigService\Scripts\InstallUpdates.ps1`의 내용을 참조하세요.