EC2Launch를 사용하여 Windows 인스턴스 구성 - Amazon Elastic Compute Cloud

EC2Launch를 사용하여 Windows 인스턴스 구성

EC2Launch는 Windows Server 2016 및 2019 AMI에서 EC2Config 서비스를 대체한 Windows PowerShell 스크립트 세트입니다. Windows Server 2022는 지원되는 모든 Windows 버전에 대한 최신 시작 서비스로서 EC2Config와 EC2Launch를 모두 대체하는 EC2Launch v2를 사용합니다.

EC2Launch 작업

EC2Launch는 초기 인스턴스 부팅 중에 기본적으로 다음 작업을 수행합니다.

  • 인스턴스에 대한 정보를 렌더링하는 새로운 월페이퍼(wallpaper)를 설정합니다.

  • 컴퓨터 이름을 설정합니다.

  • 인스턴스 정보를 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 버전을 확인합니다.

PS C:\> 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 디렉터리는 다음을 제외하고 C:\ProgramData의 권한을 상속합니다.

  • C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Scripts — 이 폴더는 생성될 때 C:\ProgramData의 모든 초기 권한을 상속하지만 디렉터리의 CreateFiles에 대한 일반 사용자 액세스 권한을 제거합니다.

EC2Launch 구성

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

초기화 작업 구성

LaunchConfig.json 구성 파일에서 설정을 지정하여 다음과 같은 초기화 작업을 수행 혹은 해제합니다.

  • 컴퓨터 이름을 설정합니다.

  • 모니터가 항상 켜져 있도록 설정합니다.

  • 새로운 월페이퍼(wallpaper)를 설정합니다.

  • DNS 접미사 목록을 추가합니다.

  • 부팅 볼륨 크기를 확장합니다.

  • 관리자 암호를 설정합니다.

초기화 설정을 구성하려면

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

  2. 다음 설정을 필요에 따라 업데이트하고 변경 내용을 저장합니다. adminPasswordadminPasswordtype인 경우에만 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에 암호를 지정하지 않으면 관리자 계정이 비활성화됩니다.

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

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

매 부팅마다 실행하도록 EC2Launch 예약

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

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

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

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot
  2. 또는 다음 명령을 사용하여 실행 파일을 실행합니다.

    PS C:\> 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가 최초 부팅 시 새 암호를 생성하지 않도록 하려면 AdminPasswordTypeDoNothing으로 설정합니다.

  • 사용자 데이터에서 HandleUserDatafalse로 설정한 경우가 아니면 persisttrue로 다시 설정됩니다. 사용자 데이터 스크립트에 대한 자세한 내용은 Amazon EC2 사용 설명서에서 사용자 데이터 스크립트를 참조하세요.

드라이브 및 맵 드라이브 문자 초기화

DriveLetterMappingConfig.json 파일에서 설정을 지정하여 드라이브를 초기화 및 포맷하고 드라이브 문자를 EC2 인스턴스의 볼륨에 매핑합니다. 이 스크립트는 아직 초기화 및 파티셔닝되지 않은 드라이브를 초기화합니다.

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

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

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

    { "driveLetterMapping": [ { "volumeName": "sample volume", "driveLetter": "H" } ] }
  3. 디스크를 초기화할 EC2Launch 스크립트를 수행하기 위해서 Windows PowerShell을 열고 다음 명령을 실행합니다.

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

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

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

EC2 콘솔에 Windows 이벤트 로그 전송

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

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

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

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

    { "events": [ { "logName": "System", "source": "An event source (optional)", "level": "Error | Warning | Information", "numEntries": 3 } ] }
  3. Windows PowerShell에서 다음 명령을 실행합니다. 그러면 시스템에서 인스턴스가 부팅될 때마다 스크립트가 Windows 예약된 작업으로 실행되도록 예약됩니다.

    PS C:\> 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 예약된 작업으로 실행되도록 예약됩니다.

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