

# Windows 인스턴스에서 EC2Launch v1 에이전트 구성
<a name="ec2launch-config"></a>

인스턴스가 처음으로 초기화된 후에는 다시 실행하고 다른 스타트업 작업을 수행하도록 EC2Launch를 구성할 수 있습니다.

**Topics**
+ [초기화 작업 구성](#ec2launch-inittasks)
+ [매 부팅마다 실행하도록 EC2Launch 예약](#run-on-every-boot)
+ [드라이브 및 맵 드라이브 문자 초기화](#ec2launch-mapping)
+ [EC2 콘솔에 Windows 이벤트 로그 전송](#ec2launch-sendlogs)
+ [부팅 성공 후 Windows is ready 메시지 전송](#ec2launch-sendwinisready)

## 초기화 작업 구성
<a name="ec2launch-inittasks"></a>

`LaunchConfig.json` 구성 파일에서 설정을 지정하여 다음과 같은 초기화 작업을 수행 혹은 해제합니다.
+ 컴퓨터 이름을 인스턴스 프라이빗 IPv4 주소로 설정합니다.
+ 모니터가 항상 켜져 있도록 설정합니다.
+ 새로운 월페이퍼(wallpaper)를 설정합니다.
+ DNS 접미사 목록을 추가합니다.
**참고**  
이렇게 하면 다음 도메인에 대한 DNS 접미사 조회가 추가되고 다른 표준 접미사가 구성됩니다. 시작 에이전트가 DNS 접미사를 설정하는 방법에 대한 자세한 내용은 [EC2 Windows 시작 에이전트용 DNS 접미사 구성](launch-agents-set-dns.md) 섹션을 참조하세요.  

  ```
  region.ec2-utilities.amazonaws.com
  ```
+ 부팅 볼륨 크기를 확장합니다.
+ 관리자 암호를 설정합니다.

**초기화 설정을 구성하려면**

1. 구성할 인스턴스에서 텍스트 편집기에 `C:\ProgramData\Amazon\EC2-Windows\Launch\Config\LaunchConfig.json` 파일을 엽니다.

1. 다음 설정을 필요에 따라 업데이트하고 변경 내용을 저장합니다. `adminPassword`이 `adminPasswordtype`인 경우에만 `Specify`에 암호를 입력합니다.

   ```
   {
   	"setComputerName": false,
   	"setMonitorAlwaysOn": true,
   	"setWallpaper": true,
   	"addDnsSuffixList": true,
   	"extendBootVolumeSize": true,
   	"handleUserData": true,					  
   	"adminPasswordType": "Random | Specify | DoNothing",
   	"adminPassword": "password that adheres to your security policy (optional)"
   }
   ```

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

1. Windows PowerShell에서 다음 명령을 실행하여 스크립트가 Windows 예약된 작업으로 실행되도록 예약합니다. 스크립트는 다음 부팅 중에 이 작업을 한 번 실행한 다음 이 작업이 다시 실행되지 않도록 비활성화합니다.

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
   ```

## 매 부팅마다 실행하도록 EC2Launch 예약
<a name="run-on-every-boot"></a>

처음 부팅할 때만이 아니라 매 부팅마다 실행하도록 EC2Launch를 예약할 수 있습니다.

매 부팅마다 실행하도록 EC2Launch를 활성화하는 방법: 

1. Windows PowerShell을 열어 다음 명령을 실행합니다.

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot
   ```

1. 또는 다음 명령을 사용하여 실행 파일을 실행합니다.

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Settings\Ec2LaunchSettings.exe
   ```

   그런 다음 `Run EC2Launch on every boot`를 선택합니다. EC2 인스턴스 `Shutdown without Sysprep` 또는 `Shutdown with Sysprep`을 지정할 수 있습니다.

**참고**  
부팅 시마다 실행하도록 EC2Launch를 활성화할 경우 다음 번에 EC2Launch를 실행할 때 다음과 같이 됩니다.  
`AdminPasswordType`이 여전히 `Random`인 경우 EC2Launch가 다음 부팅 시 새 암호를 생성합니다. EC2Launch가 후속 부팅에서 새 암호를 생성하지 않도록, 부팅 후 `AdminPasswordType`이 자동으로 `DoNothing`으로 설정됩니다. EC2Launch가 최초 부팅 시 새 암호를 생성하지 않도록 하려면 `AdminPasswordType`을 `DoNothing`으로 설정합니다.
사용자 데이터에서 `HandleUserData`를 `false`로 설정한 경우가 아니면 `persist`가 `true`로 다시 설정됩니다. 자세한 내용은 [사용자 데이터 스크립트](user-data.md#user-data-scripts) 섹션을 참조하세요.

## 드라이브 및 맵 드라이브 문자 초기화
<a name="ec2launch-mapping"></a>

`DriveLetterMappingConfig.json` 파일에서 설정을 지정하여 드라이브를 초기화 및 포맷하고 드라이브 문자를 EC2 인스턴스의 볼륨에 매핑합니다. 이 스크립트는 아직 초기화 및 파티셔닝되지 않은 드라이브를 초기화합니다. Windows에서 볼륨 세부 정보를 가져오는 방법에 대한 자세한 내용은 Microsoft 설명서에서 [Get-Volume](https://learn.microsoft.com/en-us/powershell/module/storage/get-volume)을 참조하세요.

**드라이브 문자를 볼륨에 매핑하려면**

1. 텍스트 에디터에서 `C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json` 파일을 엽니다.

1. 다음 볼륨 설정을 지정하고 변경 내용을 저장합니다.

   ```
   {
   	"driveLetterMapping": [
   		{
   			"volumeName": "sample volume",
   			"driveLetter": "H"
   		}
   	]
   }
   ```

1. 디스크를 초기화할 EC2Launch 스크립트를 수행하기 위해서 Windows PowerShell을 열고 다음 명령을 실행합니다.

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1
   ```

   인스턴스를 부팅할 때마다 디스크를 초기화하려면 다음과 같이 `-Schedule` 플래그를 추가하세요.

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1 -Schedule
   ```

## EC2 콘솔에 Windows 이벤트 로그 전송
<a name="ec2launch-sendlogs"></a>

`EventLogConfig.json` 구성 파일에서 설정을 지정하여 Windows Event 로그를 EC2 콘솔 로그에 전송합니다.

**Windows Event 로그를 전송하도록 설정을 구성하려면**

1. 인스턴스의 텍스트 편집기에서 `C:\ProgramData\Amazon\EC2-Windows\Launch\Config\EventLogConfig.json` 파일을 엽니다.

1. 다음 로그 설정을 구성하고 변경 내용을 저장합니다.

   ```
   {
   	"events": [
   		{
   			"logName": "System",
   			"source": "An event source (optional)",
   			"level": "Error | Warning | Information",
   			"numEntries": 3
   		}
   	]
   }
   ```

1. Windows PowerShell에서 다음 명령을 실행합니다. 그러면 시스템에서 인스턴스가 부팅될 때마다 스크립트가 Windows 예약된 작업으로 실행되도록 예약됩니다.

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendEventLogs.ps1 -Schedule
   ```

   로그가 EC2 콘솔 로그에 나타나려면 3분 이상 걸릴 수 있습니다.

## 부팅 성공 후 Windows is ready 메시지 전송
<a name="ec2launch-sendwinisready"></a>

EC2Config 서비스는 매번 부팅 후에 "Windows is ready" 메시지를 EC2 콘솔에 전송했습니다. EC2Launch는 초기 부팅 후에만 이 메시지를 전송합니다. EC2Config 서비스와 역방향 호환성을 위해 매번 부팅한 후에 이 메시지를 전송하도록 EC2Launch를 예약할 수 있습니다. 인스턴스에서 Windows PowerShell을 열고 다음 명령을 실행합니다. 시스템에서 이 스크립트는 Windows 예약된 작업으로 실행되도록 예약됩니다.

```
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendWindowsIsReady.ps1 -Schedule
```