EC2Launch v2 에이전트를 사용하여 EC2 Windows 인스턴스 시작 중 태스크 수행 - Amazon Elastic Compute Cloud

EC2Launch v2 에이전트를 사용하여 EC2 Windows 인스턴스 시작 중 태스크 수행

AWS Windows Server 2022 AMI에서 시작되는 Amazon EC2의 지원되는 모든 인스턴스에는 기본적으로 EC2Launch v2 시작 에이전트(EC2Launch.exe)가 포함됩니다. 또한 EC2Launch v2를 기본 시작 에이전트로 설치한 Windows Server 2016 및 2019 AMI를 제공합니다. 이러한 AMI는 EC2Launch v1을 포함하는 Windows Server 2016 및 2019 AMI와 함께 제공됩니다. Amazon EC2 콘솔에서 AMI 페이지의 검색에 EC2LaunchV2-Windows_Server-* 접두사를 입력하여 기본적으로 EC2Launch v2를 포함하는 Windows AMI를 검색할 수 있습니다.

시작 에이전트 버전 기능을 비교하려면 Amazon EC2 시작 에이전트 비교 섹션을 참조하세요.

EC2Launch v2는 인스턴스 시작 시 태스크를 수행하며 인스턴스가 중지된 후 나중에 시작되거나 재시작된 경우 실행되는 서비스입니다. EC2Launch v2는 태스크를 온디맨드로 수행할 수도 있습니다. 이러한 작업 중 일부는 자동으로 활성화되고, 나머지는 수동으로 활성화해야 합니다. EC2Launch v2 서비스는 모든 EC2Config 및 EC2Launch 기능을 지원합니다.

이 서비스는 구성 파일을 사용하여 작업을 제어합니다. 그래픽 도구를 사용하거나 단일 .yml 파일(agent-config.yml)로 직접 편집하여 구성 파일을 업데이트할 수 있습니다. 서비스 바이너리는 %ProgramFiles%\Amazon\EC2Launch 디렉터리에 있습니다.

EC2Launch v2에서는 오류 문제를 해결하고 트리거를 설정하는 데 도움이 되는 Windows 이벤트 로그를 게시합니다. 자세한 내용은 Windows 이벤트 로그 단원을 참조하십시오.

EC2Launch v2 에이전트는 다음 Windows Server 운영 체제(OS) 버전을 지원합니다.

지원되는 OS 버전
  • Windows Server 2022

  • Windows Server 2019(장기 서비스 채널 및 연 2회 채널)

  • Windows Server 2016

EC2Launch v2 개념

EC2Launch v2를 고려하는 경우 다음 개념을 이해하는 것이 좋습니다.

작업

태스크를 호출하여 인스턴스에 대한 작업을 수행할 수 있습니다. agent-config.yml 파일에서 또는 사용자 데이터를 통해 태스크를 구성할 수 있습니다. EC2Launch v2에 사용 가능한 태스크 목록은 EC2Launch v2 태스크를 참조하세요. 태스크 구성 스키마와 세부 정보는 EC2Launch v2 태스크 구성 섹션을 참조하세요.

단계

단계는 EC2Launch v2 에이전트가 실행하는 태스크를 논리적으로 묶은 것입니다. 일부 작업은 특정 스테이지에서만 실행할 수 있고, 일부 작업은 여러 스테이지로 실행할 수 있습니다. agent-config.yml을 사용할 때 단계 목록과 각 단계 내에서 실행할 태스크 목록을 지정해야 합니다.

서비스는 다음 단계로 실행합니다.

1단계: 부팅

2단계: 네트워크

3단계: PreReady

Windows가 준비됨

PreReady 단계가 완료되면 서비스에서 Amazon EC2 콘솔로 Windows is ready 메시지를 전송합니다.

4단계: PostReady

사용자 데이터는 PostReady 단계에서 실행됩니다. 다음과 같이 일부 스크립트 버전은 agent-config.yml 파일 PostReady 단계 이전에 실행되고 일부는 해당 단계 이후에 실행됩니다.

agent-config.yml 이전
  • YAML 사용자 데이터 버전 1.1

  • XML 사용자 데이터

agent-config.yml 이후
  • YAML 사용자 데이터 버전 1.0(이전 버전과의 호환성을 위한 레거시 버전)

예제 단계 및 태스크는 예: agent-config.yml 섹션을 참조하세요.

사용자 데이터를 사용하는 경우 실행 에이전트가 실행할 태스크 목록을 지정해야 합니다. 단계는 암시됩니다. 예제 태스크는 예: 사용자 데이터 섹션을 참조하세요.

EC2Launch v2는 agent-config.yml 및 사용자 데이터에 지정하는 순서대로 태스크 목록을 실행합니다. 단계는 순차적으로 실행됩니다. 이전 단계가 완료된 후 다음 단계가 시작됩니다. 태스크도 순차적으로 실행됩니다.

빈도

태스크 빈도는 부팅 컨텍스트에 따라 태스크 실행 일정을 결정합니다. 대부분의 태스크에는 허용되는 빈도가 하나만 있습니다. executeScript 태스크의 빈도를 지정할 수 있습니다.

EC2Launch v2 태스크 구성에 다음과 같은 빈도가 표시됩니다.

  • 한 번 – AMI가 처음 부팅될 때 태스크가 한 번 실행됩니다(Sysprep이 완료됨).

  • 항상 – 시작 에이전트가 실행될 때마다 태스크가 실행됩니다. 시작 에이전트가 실행되는 경우:

    • 인스턴스 시작 또는 재시작

    • EC2Launch 서비스 실행

    • EC2Launch.exe run 호출

agent-config

agent-config는 EC2Launch v2의 구성 폴더에 있는 파일입니다. 부팅, 네트워크, 사전 준비 및 사후 준비 스테이지에 대한 구성이 포함되어 있습니다. 이 파일은 AMI가 처음 부팅되거나 이후에 부팅될 때 실행되어야 하는 태스크의 인스턴스 구성을 지정하는 데 사용됩니다.

기본적으로 EC2Launch v2 설치 시 표준 Amazon Windows AMI에서 사용되는 권장 구성을 포함한 agent-config 파일이 설치됩니다. 구성 파일을 업데이트하여 EC2Launch v2에서 지정되는 AMI의 기본 부팅 환경을 변경할 수 있습니다.

사용자 데이터

사용자 데이터는 인스턴스를 시작할 때 구성 가능한 데이터입니다. 사용자 데이터를 업데이트하여 사용자 지정 AMI 또는 퀵 스타트 AMI 구성 방식을 동적으로 변경할 수 있습니다. EC2Launch v2는 60kB의 사용자 데이터 입력 길이를 지원합니다. 사용자 데이터에는 UserData 스테이지만 포함되므로 agent-config 파일 이후에 실행됩니다. 인스턴스 시작 마법사를 사용하여 인스턴스를 시작할 때 사용자 데이터를 입력하거나 EC2 콘솔에서 사용자 데이터를 수정할 수 있습니다. 사용자 데이터 작업에 대한 자세한 내용은 Amazon EC2가 Windows 인스턴스의 사용자 데이터를 처리하는 방법 섹션을 참조하세요.

EC2Launch v2 태스크 개요

EC2Launch v2는 부팅될 때마다 다음 태스크를 수행할 수 있습니다.

  • 인스턴스에 대한 정보를 렌더링하는 새로운/선택적으로 사용자 지정된 월페이퍼(wallpaper)를 설정합니다.

  • 로컬 시스템에 생성된 관리자 계정의 속성을 설정합니다.

  • 검색 접미사 목록에 DNS 접미사를 추가합니다. 아직 존재하지 않는 접미사만 목록에 추가됩니다.

  • 추가 볼륨에 대해 드라이브 문자를 설정하고 사용 가능한 공간을 사용하도록 확장합니다.

  • 구성의 파일을 디스크에 씁니다.

  • EC2Launch v2 구성 파일 또는 user-data에서 지정된 스크립트를 실행합니다. user-data의 스크립트는 일반 텍스트로 제공하거나 압축하여 base64 형식으로 제공할 수 있습니다.

  • 주어진 인수를 사용해 프로그램을 실행합니다.

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

  • 인스턴스 정보를 Amazon EC2 콘솔에 전송합니다.

  • RDP 인증서 지문을 Amazon EC2 콘솔에 전송합니다.

  • 파티션 처리되지 않은 공간을 포함시키기 위한 운영 시스템 파티션을 동적으로 확장.

  • 사용자 데이터를 실행합니다. 사용자 데이터 지정에 대한 자세한 내용은 EC2Launch v2 태스크 구성 섹션을 참조하세요.

  • 비영구 정적 경로를 설정하여 메타데이터 서비스 및 AWS KMS 서버에 도달합니다.

  • 부팅 파티션이 아닌 파티션을 mbr 또는 gpt.로 설정합니다.

  • Sysprep 이후에 Systems Manager 서비스를 시작합니다.

  • ENA 설정을 최적화합니다.

  • 최신 Windows 버전을 위해 OpenSSH를 활성화합니다.

  • 점보 프레임을 활성화합니다.

  • EC2Launch v2에서 Sysprep이 실행되도록 설정합니다.

  • Windows 이벤트 로그를 게시합니다.

EC2Launch v2 디렉터리 구조

EC2Launch v2는 다음 디렉터리에 설치되어야 합니다.

  • 서비스 바이너리: %ProgramFiles%\Amazon\EC2Launch

  • 서비스 데이터(설정, 로그 파일 및 상태 파일): %ProgramData%\Amazon\EC2Launch

참고

기본적으로 Windows는 파일과 폴더를 C:\ProgramData 아래에 숨깁니다. EC2Launch v2 디렉터리와 파일을 보려면 Windows 탐색기에 경로를 입력하거나 숨겨진 파일과 폴더를 표시하도록 폴더 속성을 변경해야 합니다.

%ProgramFiles%\Amazon\EC2Launch 디렉터리에는 바이너리와 지원 라이브러리가 들어 있습니다. 여기에는 다음과 같은 하위 디렉터리가 포함됩니다.

  • settings

    • EC2LaunchSettingsUI.exe - agent-config.yml 파일을 수정하기 위한 사용자 인터페이스

    • YamlDotNet.dll - 사용자 인터페이스에서 일부 작업을 지원하기 위한 DLL

  • tools

    • ebsnvme-id.exe - 인스턴스에서 EBS 볼륨의 메타데이터를 검사하기 위한 도구

    • AWSAcpiSpcrReader.exe - 사용할 올바른 COM 포트를 결정하기 위한 도구

    • EC2LaunchEventMessage.dll - EC2Launch에 대한 Windows 이벤트 로깅을 지원하기 위한 DLL

  • service

    • EC2LaunchService.exe — 시작 에이전트가 서비스로 실행될 때 시작되는 Windows 서비스 실행 파일.

  • EC2Launch.exe - 주요 EC2Launch 실행 파일

  • EC2LaunchAgentAttribution.txt - EC2Launch 내에서 사용되는 코드의 저작권 표시

%ProgramData%\Amazon\EC2Launch 디렉터리에는 다음 하위 디렉터리가 포함됩니다. 로그, 구성 및 상태를 포함하여 서비스에서 생성된 모든 데이터가 이 디렉터리에 저장됩니다.

  • config - 구성

    서비스 구성 파일은 이 디렉터리에 agent-config.yml로 저장됩니다. 서비스에서 실행되는 기본 태스크를 수정, 추가 또는 제거하도록 이 파일을 업데이트할 수 있습니다. 이 디렉터리에 파일을 생성할 권한은 권한 에스컬레이션을 방지하기 위해 관리자 계정으로 제한됩니다.

  • log - 인스턴스 로그

    서비스(agent.log), 콘솔(console.log), 성능(bench.log), 오류(err.log), 텔레메트리(telemetry.log) 로그가 이 디렉터리에 저장됩니다. 서비스의 후속 실행 시 로그 파일이 추가됩니다.

  • state - 서비스 상태 데이터

    서비스가 실행할 작업을 결정하는 데 사용하는 상태가 여기에 저장됩니다. Sysprep 이후에 서비스가 이미 실행되었는지 여부를 나타내는 .run-once 파일이 있습니다(따라서 빈도가 한 번인 태스크는 다음 실행 시 건너뜀). 이 하위 디렉터리에는 각 태스크의 상태를 추적하는 state.jsonprevious-state.json이 포함되어 있습니다.

  • sysprep - Sysprep

    이 디렉터리에는 재사용할 수 있는 사용자 지정 Windows AMI를 만들 때 Sysprep에서 수행할 작업을 결정하는 데 사용되는 파일이 포함되어 있습니다.

  • wallpaper - 월페이퍼

    이 월페이퍼 이미지는 이 디렉터리에 저장됩니다.

원격 측정

원격 측정 데이터는 AWS가 사용자의 요구 사항을 더 잘 이해하고, 문제를 진단하고, AWS 서비스의 경험을 개선할 기능을 제공하는 데 도움이 되는 추가 정보입니다.

EC2Launchv2 버전 2.0.592 이상은 사용량 지표 및 오류와 같은 원격 측정 데이터를 수집합니다. 이 데이터는 EC2Launch v2가 실행되는 Amazon EC2 인스턴스에서 수집됩니다. 여기에는 AWS가 소유한 모든 Windows AMI가 포함됩니다.

EC2Launch v2에서 수집되는 원격 측정 데이터의 유형은 다음과 같습니다.

  • 사용량 정보 - 에이전트 명령, 설치 방법 및 예약된 실행 빈도입니다.

  • 오류 및 진단 정보 - 에이전트 설치 오류 코드, 실행 오류 코드 및 오류 호출 스택입니다.

수집되는 데이터의 예:

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 v2는 별도로 고객에게 알리지 않고 원격 측정 데이터를 전송합니다.

원격 측정 가시성

원격 측정이 활성화되면 Amazon EC2 콘솔 출력에 다음과 같이 표시됩니다.

2021/07/15 21:44:12Z: Telemetry: <Data>
인스턴스의 원격 측정 비활성화

단일 인스턴스에 대한 원격 측정을 비활성화하려면 시스템 환경 변수를 설정하거나 MSI를 사용하여 설치 파일을 수정하면 됩니다.

시스템 환경 변수를 설정하여 원격 측정을 비활성화하려면 관리자로 다음 명령을 실행합니다.

setx /M EC2LAUNCH_TELEMETRY 0

MSI를 사용하여 원격 측정을 비활성화하려면 MSI를 다운로드한 후 다음 명령을 실행합니다.

msiexec /i ".\AmazonEC2Launch.msi" Remove="Telemetry" /q