EC2Launch를 사용하여 Windows 인스턴스 구성
EC2Launch는 Windows Server 2016 및 2019 AMI에서 EC2Config 서비스를 대체한 Windows PowerShell 스크립트 세트입니다. 이러한 AMI 중 다수는 여전히 사용할 수 있습니다. EC2Launch v2는 지원되는 모든 Windows 버전에 대한 최신 시작 에이전트이며, EC2Config와 EC2Launch를 모두 대체합니다. 자세한 내용은 EC2Launch v2를 사용하여 Windows 인스턴스 구성 단원을 참조하십시오.
참고
IMDSv2에서 EC2Launch를 사용하려면 버전이 1.3.2002730 이상이어야 합니다.
EC2Launch 작업
EC2Launch는 초기 인스턴스 부팅 중에 기본적으로 다음 작업을 수행합니다.
-
인스턴스에 대한 정보를 렌더링하는 새로운 월페이퍼(wallpaper)를 설정합니다.
-
컴퓨터 이름을 인스턴스의 프라이빗 IPv4 주소로 설정합니다.
-
인스턴스 정보를 Amazon EC2 콘솔에 전송합니다.
-
RDP 인증서 지문을 EC2 콘솔에 전송합니다.
-
관리자 계정에 대한 무작위 암호를 설정합니다.
-
DNS 접미사를 추가합니다.
-
분할되지 않은 공간을 포함하도록 운영 체제 파티션을 동적으로 확장합니다.
-
사용자 데이터를 실행합니다(지정된 경우). 사용자 데이터 지정에 대한 자세한 내용은 인스턴스 사용자 데이터 작업 섹션을 참조하세요.
-
영구 정적 경로를 설정하여 메타데이터 서비스 및 AWS KMS 서버에 도달합니다.
중요
사용자 지정 AMI를 이 인스턴스에서 생성한 경우 이 경로는 OS 구성의 일부로서 캡처되며 AMI에서 시작한 새로운 인스턴스는 서브넷 배치와 상관없이 동일한 경로를 유지합니다. 경로를 업데이트하려면 사용자 지정 AMI 시작 시 Server 2016 이후에 대한 메타데이터/KMS 경로 업데이트 섹션을 참조하세요.
다음 작업은 EC2Config 서비스와 역방향 호환성을 유지하는 데 도움이 됩니다. 스타트업 중에 이러한 작업을 수행하도록 EC2Launch를 구성할 수도 있습니다.
-
둘째 EBS 볼륨을 초기화합니다.
-
Windows Event 로그를 EC2 콘솔 로그에 전송합니다.
-
Windows is ready to use 메시지를 EC2 콘솔에 전송합니다.
Windows Server 2019에 대한 자세한 내용은 Microsoft.com에서 Windows Server 버전별 기능 비교
원격 측정
원격 측정 데이터는 AWS가 사용자의 요구 사항을 더 잘 이해하고, 문제를 진단하고, AWS 서비스의 경험을 개선할 기능을 제공하는 데 도움이 되는 추가 정보입니다.
EC2Launch 버전 1.3.2003498
이상은 사용량 지표 및 오류와 같은 원격 측정 데이터를 수집합니다. 이 데이터는 EC2Launch가 실행되는 Amazon EC2 인스턴스에서 수집됩니다. 여기에는 AWS가 소유한 모든 Windows AMI가 포함됩니다.
EC2Launch에서 수집되는 원격 측정 데이터의 유형은 다음과 같습니다.
-
사용량 정보 - 에이전트 명령, 설치 방법 및 예약된 실행 빈도입니다.
-
오류 및 진단 정보 - 에이전트 설치 및 실행 오류 코드입니다.
수집되는 데이터의 예:
2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsAgentScheduledPerBoot=true
2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsUserDataScheduledPerBoot=true
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandCode=1
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandErrorCode=5
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallCode=2
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallErrorCode=0
원격 측정은 기본적으로 활성화됩니다. 언제든지 원격 측정 데이터 수집을 비활성화할 수 있습니다. 원격 측정이 활성화되면 EC2Launch는 별도로 고객에게 알리지 않고 원격 측정 데이터를 전송합니다.
원격 분석을 사용하거나 비활성화하는 선택 사항이 수집됩니다.
원격 측정 수집을 옵트인 또는 옵트아웃할 수 있습니다. 원격 측정 옵션을 준수하기 위해 원격 측정 옵트인 또는 옵트아웃 선택이 수집됩니다.
원격 측정 가시성
원격 측정이 활성화되면 Amazon EC2 콘솔 출력에 다음과 같이 표시됩니다.
2021/07/15 21:44:12Z: Telemetry: <Data>
인스턴스의 원격 측정 비활성화
시스템 환경 변수를 설정하여 원격 측정을 비활성화하려면 관리자로 다음 명령을 실행합니다.
setx /M EC2LAUNCH_TELEMETRY 0
설치 중 원격 측정을 비활성화하려면 다음과 같이 install.ps1
을 실행합니다.
. .\install.ps1 -EnableTelemetry:$false
EC2Launch 버전 확인
다음 Windows PowerShell 명령을 사용하여 설치된 EC2Launch 버전을 확인합니다.
Test-ModuleManifest -Path "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1" | Select Version
EC2Launch 디렉터리 구조
EC2Launch는 기본적으로 루트 디렉터리 C:\ProgramData\Amazon\EC2-Windows\Launch
의 Windows Server 2016 이후 AMI에 설치됩니다.
참고
기본적으로 Windows는 파일과 폴더를 C:\ProgramData
아래에 숨깁니다. EC2Launch 디렉터리와 파일을 보려면 Windows 탐색기에 경로를 입력하거나 숨겨진 파일과 폴더를 표시하도록 폴더 속성을 변경해야 합니다.
Launch
디렉터리에는 다음 하위 디렉터리가 포함됩니다.
-
Scripts
- EC2Launch를 구성하는 PowerShell 스크립트가 포함됩니다. -
Module
- Amazon EC2와 관련된 스크립트를 빌드하기 위한 모듈이 포함됩니다. -
Config
- 사용자가 사용자 지정할 수 있는 스크립트 구성 파일이 포함됩니다. -
Sysprep
- Sysprep 리소스가 포함됩니다. -
Settings
- Sysprep 그래픽 사용자 인터페이스용 애플리케이션이 포함됩니다. -
Library
- EC2 시작 에이전트용 공유 라이브러리를 포함합니다. -
Logs
- 스크립트가 생성하는 로그 파일이 포함됩니다.
EC2Launch 구성
인스턴스가 처음으로 초기화된 후에는 다시 실행하고 다른 스타트업 작업을 수행하도록 EC2Launch를 구성할 수 있습니다.
작업
초기화 작업 구성
LaunchConfig.json
구성 파일에서 설정을 지정하여 다음과 같은 초기화 작업을 수행 혹은 해제합니다.
-
컴퓨터 이름을 인스턴스 프라이빗 IPv4 주소로 설정합니다.
-
모니터가 항상 켜져 있도록 설정합니다.
-
새로운 월페이퍼(wallpaper)를 설정합니다.
-
DNS 접미사 목록을 추가합니다.
참고
이렇게 하면 다음 도메인에 대한 DNS 접미사 조회가 추가되고 다른 표준 접미사가 구성됩니다. 시작 에이전트가 DNS 접미사를 설정하는 방법에 대한 자세한 내용은 Windows 시작 에이전트용 DNS 접미사 구성 섹션을 참조하세요.
region
.ec2-utilities.amazonaws.com -
부팅 볼륨 크기를 확장합니다.
-
관리자 암호를 설정합니다.
초기화 설정을 구성하려면
-
구성할 인스턴스에서 텍스트 편집기에
C:\ProgramData\Amazon\EC2-Windows\Launch\Config\LaunchConfig.json
파일을 엽니다. -
다음 설정을 필요에 따라 업데이트하고 변경 내용을 저장합니다.
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
에 암호를 지정하지 않으면 관리자 계정이 비활성화됩니다.
-
Windows PowerShell에서 다음 명령을 실행하여 스크립트가 Windows 예약된 작업으로 실행되도록 예약합니다. 스크립트는 다음 부팅 중에 이 작업을 한 번 실행한 다음 이 작업이 다시 실행되지 않도록 비활성화합니다.
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
매 부팅마다 실행하도록 EC2Launch 예약
처음 부팅할 때만이 아니라 매 부팅마다 실행하도록 EC2Launch를 예약할 수 있습니다.
매 부팅마다 실행하도록 EC2Launch를 활성화하는 방법:
Windows PowerShell을 열어 다음 명령을 실행합니다.
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot
또는 다음 명령을 사용하여 실행 파일을 실행합니다.
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
로 다시 설정됩니다. 자세한 내용은 사용자 데이터 스크립트 단원을 참조하십시오.
드라이브 및 맵 드라이브 문자 초기화
DriveLetterMappingConfig.json
파일에서 설정을 지정하여 드라이브를 초기화 및 포맷하고 드라이브 문자를 EC2 인스턴스의 볼륨에 매핑합니다. 이 스크립트는 아직 초기화 및 파티셔닝되지 않은 드라이브를 초기화합니다. Windows에서 볼륨 세부 정보를 가져오는 방법에 대한 자세한 내용은 Microsoft 설명서에서 Get-Volume
드라이브 문자를 볼륨에 매핑하려면
-
텍스트 에디터에서
C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json
파일을 엽니다. -
다음 볼륨 설정을 지정하고 변경 내용을 저장합니다.
{ "driveLetterMapping": [ { "volumeName": "
sample volume
", "driveLetter": "H
" } ] } -
디스크를 초기화할 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 이벤트 로그 전송
EventLogConfig.json
구성 파일에서 설정을 지정하여 Windows Event 로그를 EC2 콘솔 로그에 전송합니다.
Windows Event 로그를 전송하도록 설정을 구성하려면
-
인스턴스의 텍스트 편집기에서
C:\ProgramData\Amazon\EC2-Windows\Launch\Config\EventLogConfig.json
파일을 엽니다. -
다음 로그 설정을 구성하고 변경 내용을 저장합니다.
{ "events": [ { "logName": "
System
", "source": "An event source (optional)
", "level": "Error | Warning | Information
", "numEntries":3
} ] } -
Windows PowerShell에서 다음 명령을 실행합니다. 그러면 시스템에서 인스턴스가 부팅될 때마다 스크립트가 Windows 예약된 작업으로 실행되도록 예약됩니다.
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendEventLogs.ps1 -Schedule
로그가 EC2 콘솔 로그에 나타나려면 3분 이상 걸릴 수 있습니다.
부팅 성공 후 Windows is ready 메시지 전송
EC2Config 서비스는 매번 부팅 후에 "Windows is ready" 메시지를 EC2 콘솔에 전송했습니다. EC2Launch는 초기 부팅 후에만 이 메시지를 전송합니다. EC2Config 서비스와 역방향 호환성을 위해 매번 부팅한 후에 이 메시지를 전송하도록 EC2Launch를 예약할 수 있습니다. 인스턴스에서 Windows PowerShell을 열고 다음 명령을 실행합니다. 시스템에서 이 스크립트는 Windows 예약된 작업으로 실행되도록 예약됩니다.
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendWindowsIsReady.ps1 -Schedule