사용자 지정 Windows AMI 생성 - Amazon Elastic Compute Cloud

사용자 지정 Windows AMI 생성

기존 Windows AMI에서 인스턴스를 시작하고 사용자 지정한 다음, 업데이트된 이 구성을 사용자 지정 AMI로 저장할 수 있습니다. 이 새로운 사용자 지정 AMI에서 인스턴스를 시작하면 해당 AMI를 만들 때 지정한 사용자 정의 값을 포함하게 됩니다.

AMI를 범주화하고 관리하기 위해 사용자는 AMI에 사용자 정의 태그를 할당할 수 있습니다. 자세한 내용은 Amazon EC2 리소스 태깅 섹션을 참조하세요.

사용자 지정 Linux AMI를 생성하려면 해당 인스턴스의 볼륨 유형에 맞는 절차를 사용하세요. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서Amazon EBS-backed Linux AMI 생성 또는 인스턴스 스토어 기반 Linux AMI 생성을 참조하세요.

사용자 지정 AMI 생성의 작동 방식

우선 만들려는 AMI와 비슷한 AMI에서 인스턴스를 시작합니다. 인스턴스에 연결하여 인스턴스를 사용자 지정할 수 있습니다. 인스턴스를 원하는 방법으로 설정한 후 AMI를 생성하기 전에 인스턴스를 중단하여 데이터 무결성을 확인한 다음 이미지를 생성합니다. AMI는 자동으로 등록됩니다.

AMI 생성 프로세스 중에 Amazon EC2는 인스턴스의 루트 볼륨과 인스턴스에 연결된 다른 EBS 볼륨의 스냅샷을 생성합니다. AMI 등록을 해제하고 스냅샷을 삭제할 때까지는 스냅샷에 대한 요금이 부과됩니다. 자세한 내용은 AMI 등록 취소 단원을 참조하십시오. 인스턴스에 연결된 볼륨이 암호화된 경우 새 AMI는 Amazon EBS 암호화를 지원하는 인스턴스 유형에서만 시작됩니다. 자세한 내용은 Amazon EBS 사용 설명서Amazon EBS encryption을 참조하세요.

볼륨의 크기에 따라 AMI 생성 프로세스를 완료하는 데 몇 분 정도 걸리지만 경우에 따라 24시간까지 걸릴 수도 있습니다. AMI를 생성하기 전에 볼륨의 스냅샷을 생성하는 것이 더 효율적일 수 있습니다. 이처럼 AMI를 생성할 때 작은 증분적 스냅샷만 만들어야 프로세스가 더 빠르게 완료됩니다. 스냅샷을 만드는 데 걸리는 전체 시간은 동일하게 유지됩니다.

프로세스가 완료되면 인스턴스의 루트 볼륨에서 새 AMI 및 스냅샷이 생성됩니다. 새 AMI를 사용하여 인스턴스를 시작할 때 스냅샷을 사용하여 루트 볼륨에 대한 새 EBS 볼륨을 생성합니다.

참고

Amazon EC2 인스턴스에서 Windows AMI를 생성해야 합니다. EBS 스냅샷에서 Windows AMI를 생성하면 청구, 성능 및 일반 작업에 문제가 발생할 수 있으므로 현재 지원되지 않습니다.

루트 디바이스 볼륨 외에도 인스턴스에 인스턴스 스토어 볼륨이나 Amazon Elastic Block Store(Amazon EBS) 볼륨을 추가하는 경우, 새 AMI에 대한 블록 디바이스 매핑과 새 AMI에서 자동으로 시작하는 인스턴스에 대한 블록 디바이스 매핑에 이러한 볼륨에 대한 정보가 포함됩니다. 새 인스턴스에 대한 블록 디바이스 매핑에 지정된 인스턴스 스토어 볼륨은 새 볼륨이므로 AMI를 생성하는 데 사용된 인스턴스에 대한 인스턴스 스토어 볼륨의 데이터가 포함되어 있지 않습니다. EBS 볼륨의 데이터는 유지됩니다. 자세한 내용은 블록 디바이스 매핑 섹션을 참조하세요.

참고

사용자 지정 AMI에서 새 인스턴스를 만들 때는 루트 볼륨과 추가 EBS 저장소 둘 다 초기화한 뒤에 프로덕션 환경에 배치해야 합니다. 자세한 내용은 Amazon EBS 볼륨 초기화를 참조하세요.

실행 중인 인스턴스에서 Windows AMI 생성

AWS Management Console 또는 명령줄을 사용하여 AMI를 생성할 수 있습니다. 다음 다이어그램은 실행 중인 EC2 인스턴스에서 AMI를 만드는 프로세스를 요약한 것입니다. 기존 AMI로 시작하여 인스턴스를 시작한 다음 사용자 지정하고 해당 인스턴스에서 새 AMI를 생성합니다. 그런 다음 새 AMI의 인스턴스를 시작합니다. 다음 다이어그램의 단계는 아래 절차의 단계와 일치합니다.

참고

Windows 인스턴스를 이미 실행 중이라면 바로 5단계로 이동할 수 있습니다.


					인스턴스에서 AMI를 생성하기 위한 워크플로
콘솔을 사용하여 인스턴스에서 AMI를 생성하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창의 이미지(Images) 아래에서 AMI를 선택합니다.

  3. 필터 옵션을 사용하여 필요에 맞는 Windows AMI만 표시되도록 AMI 목록의 범위를 지정합니다. 예를 들어, AWS에서 제공한 Windows AMI를 보려면 드롭다운 목록에서 퍼블릭 이미지를 선택합니다. 검색 창을 선택하고 메뉴에서 소유자 별칭, =, amazon을 차례로 선택합니다. 메뉴에서 [소스(Source)]를 선택하고 필요한 Windows Server 버전에 따라 다음 중 하나를 입력합니다.

    • amazon/Windows_Server-2022

    • amazon/Windows_Server-2019

    • amazon/Windows_Server-2016

    • amazon/Windows_Server-2012

    그 밖에 필요한 필터를 추가합니다. AMI를 선택한 후 해당 확인란을 선택합니다.

  4. AMI에서 인스턴스 시작(Launch instance from AMI)(새 콘솔) 또는 시작(Launch)(기존 콘솔)을 선택합니다. 나머지 기본값을 그대로 두고 마법사를 계속 진행합니다. 자세한 내용은 새 인스턴스 시작 마법사를 사용하여 인스턴스 시작 단원을 참조하십시오. 인스턴스가 준비되면 그 인스턴스에 연결합니다. 자세한 내용은 Windows 인스턴스에 연결 단원을 참조하십시오.

  5. 인스턴스에 연결하면 다음과 같은 작업 중 하나를 수행하여 인스턴스를 원하는 대로 사용자 지정할 수 있습니다.

    • 소프트웨어 및 애플리케이션 설치

    • 데이터 복사

    • 임시 파일 삭제, 하드 드라이브 조각 모음을 통한 시작 속도 향상

    • 추가 EBS 볼륨 연결

    • 새 계정 생성 후 Administrators 그룹에 추가

      AMI를 공유하는 경우 기본 설정된 Administrator 암호를 제공할 이런 자격 증명을 통해 RDP 액세스를 허용할 수 있습니다.

    • [Windows Server 2022 이상] EC2Launch v2를 사용하여 설정을 구성합니다. 시작할 때 무작위 암호가 생성되게 하려면 setAdminAccount 작업을 구성합니다. 자세한 내용은 setAdminAccount 단원을 참조하십시오.

    • [Windows Server 2016 및 2019] EC2Launch를 사용하여 설정을 구성합니다. 시작할 때 무작위 암호가 생성되게 하려면 adminPasswordType 설정을 사용합니다. 자세한 내용은 EC2Launch 구성 섹션을 참조하세요.

    • [Windows Server 2012 R2 및 이전] EC2Config를 사용하여 설정을 구성합니다. 시작할 때 무작위 암호가 생성되게 하려면 Ec2SetPassword 플러그인을 활성화합니다. 그렇지 않으면 현재의 관리자 암호를 사용하게 됩니다. 자세한 내용은 EC2Config 설정 파일 섹션을 참조하세요.

  6. 탐색 창에서 [인스턴스(Instances)]를 선택하고 인스턴스를 선택합니다. [작업(Actions)], [이미지 및 템플릿(Image and templates)], [이미지 생성(Create image)]을 차례로 선택합니다.

    작은 정보

    이 옵션이 비활성화되어 있다면 Amazon EBS 지원 인스턴스가 아님을 의미합니다.

  7. 이미지에 고유한 이름을 지정하고 선택적으로 설명을 입력합니다(255자 이하).

    기본적으로 Amazon EC2가 새 AMI를 생성하면 인스턴스가 재부팅되어 데이터가 사용되지 않는 동안 연결된 볼륨의 스냅샷을 생성하여 일관된 상태를 유지할 수 있습니다. 재부팅 안 함(No reboot) 설정에서 사용 설정(Enable) 확인란을 선택하여 Amazon EC2가 인스턴스를 종료하고 재부팅하지 못하도록 할 수 있습니다.

    주의

    재부팅 안 함(No reboot)을 사용 설정하는 경우 생성된 이미지의 파일 시스템 무결성을 보장할 수 없습니다.

    (선택 사항) 루트 볼륨, EBS 볼륨 및 인스턴스 스토어 볼륨을 필요에 따라 수정합니다. 예:

    • 루트 볼륨 크기를 변경하려면 유형 열의 루트 볼륨을 찾은 후 크기 필드에 값을 입력합니다.

    • 인스턴스를 시작하는 데 사용되는 AMI의 블록 디바이스 매핑에서 지정된 EBS 볼륨을 표시하지 않으려면 목록에서 EBS 볼륨으로 이동한 다음 [삭제(Delete)]를 선택합니다.

    • EBS 볼륨을 추가하려면 [새 볼륨 추가(Add New Volume)], [유형(Type)] 및 [EBS]를 차례로 선택하고 필드를 작성합니다. 그런 다음 새 AMI에서 인스턴스를 시작하면 추가 볼륨이 인스턴스에 자동으로 연결됩니다. 빈 볼륨은 반드시 포맷하고 마운트해야 합니다. 스냅샷 기반 볼륨을 반드시 마운트해야 합니다.

    • 인스턴스를 시작하는 데 사용되는 AMI의 블록 디바이스 매핑에서 지정된 인스턴스 스토어 볼륨을 표시하지 않으려면 목록에서 해당 볼륨으로 이동한 후 삭제를 선택합니다.

    • 인스턴스 스토어 볼륨을 추가하려면 새 볼륨 추가(Add New Volume), 유형(Type), 인스턴스 스토어(Instance Store)를 차례로 선택하고 디바이스(Device) 목록에서 디바이스 이름을 선택합니다. 새 AMI에서 인스턴스를 시작하면 추가 볼륨이 자동으로 시작되어 마운트됩니다. 이러한 볼륨에는 AMI를 기반으로 하는 실행 중인 인스턴스에 대한 인스턴스 스토어 볼륨의 데이터가 포함되어 있지 않습니다.

    모두 마쳤으면 이미지 생성을 선택합니다.

  8. AMI가 생성되는 동안 탐색 창에서 AMI를 선택하여 상태를 볼 수 있습니다. 이전 필터를 지우고 드롭다운 목록에서 내 소유(Owned by me)를 선택합니다. 처음에 상태는 pending입니다. 몇 분 후 상태는 available로 변경됩니다.

    (선택 사항) 탐색 창에서 스냅샷을 선택하여 새 AMI에 대해 생성된 스냅샷을 봅니다. 이 AMI에서 인스턴스를 시작할 때 이 스냅샷을 사용하여 루트 디바이스 볼륨을 생성합니다.

  9. 새 AMI에서 인스턴스를 시작합니다. 자세한 내용은 새 인스턴스 시작 마법사를 사용하여 인스턴스 시작 단원을 참조하십시오. 새로 실행되는 인스턴스에는 이전 단계에서 적용한 사용자 지정 사항이 모두 포함된 것은 물론, 인스턴스를 시작할 때 추가한 사용자 데이터(인스턴스가 시작할 때 실행되는 스크립트) 등 그 밖의 사용자 지정 사항도 포함되어 있습니다.

명령줄을 사용하여 인스턴스에서 AMI 생성

다음 명령 중 하나를 사용할 수 있습니다. 명령줄 인터페이스에 대한 자세한 내용은 Amazon EC2 액세스 단원을 참조하세요.

Sysprep을 이용한 표준화된 Amazon Machine Image(AMI) 생성

Sysprep(System Preparation) 도구는 Microsoft Windows의 사용자 지정 설치 반복 과정을 단순화합니다. Sysprep을 사용하여 표준화된 Amazon Machine Image(AMI)를 생성할 수 있습니다. 그런 다음 이 표준화된 이미지로부터 Windows용 새 Amazon EC2 인스턴스를 생성할 수 있습니다.

소프트웨어 및 설정으로 사전 설치 및 사전 구성된 안전한 맞추형 최신 “골드” 서버 이미지의 생성, 관리 및 배포를 자동화하려면 EC2 Image Builder를 사용하는 것이 좋습니다.

Sysprep을 사용하여 표준화된 AMI를 생성하는 경우 EC2Launch v2와 함께 Sysprep을 실행하는 것이 좋습니다. EC2Config(Windows Server 2012 R2 이하) 또는 EC2Launch(Windows Server 2016 및 2019) 에이전트를 아직 사용하는 경우 아래의 EC2Config 및 EC2Launch와 함께 Sysprep 사용에 대한 설명서를 참조하세요.

중요

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

Sysprep의 문제를 해결하려면 Sysprep 문제 해결 단원을 참조하세요.

시작하기 전에

  • Sysprep을 수행하기 전에 Sysprep을 실행할 단일 관리자 계정을 제외하고 로컬 사용자 계정 및 계정 프로파일을 모두 제거하는 것이 좋습니다. 추가 계정 및 프로파일로 Sysprep를 수행하면 프로파일 데이터 손실 또는 Sysprep 완료 실패 등 예기치 못한 동작이 발생할 수 있습니다.

  • Microsoft TechNet에서 Sysprep에 대해 더 자세히 알아보십시오.

  • 어떤 서버 역할이 Sysprep에 지원되는지 알아보십시오.

EC2Launch v2와 함께 Sysprep 사용

이 섹션에서는 이미지가 준비될 때 이루어지는 다양한 Sysprep 실행 단계와 EC2Launch v2 서비스에 의해 수행되는 작업의 세부 정보를 설명합니다. 또한 EC2Launch v2 서비스와 함께 Sysprep을 사용하여 표준화된 AMI를 생성하는 단계도 포함되어 있습니다.

Sysprep 단계

Sysprep은 다음과 같은 단계들을 실행합니다.

  • 일반화: 이 도구는 이미지 고유 정보 및 설정을 삭제합니다. 예를 몇 가지 들자면, Sysprep은 보안 식별자(SID), 컴퓨터 이름, 이벤트 로그, 특정 드라이버를 제거합니다. 이 단계가 완료되면 운영 체제(OS)는 AMI를 생성할 준비가 됩니다.

    참고

    PersistAllDeviceInstalls 설정이 true로 기본 설정되어 있기 때문에 Sysprep을 EC2Launch v2 서비스와 함께 실행할 때 시스템은 드라이버가 제거되는 것을 방지합니다.

  • 특수화: 플러그-앤-플레이가 컴퓨터를 스캔하여 검색된 장치에 대해 드라이버를 설치합니다. 이 도구는 컴퓨터 이름과 SID와 같은 OS 요건을 생성합니다. 필요한 경우 이 단계에서 명령을 실행할 수 있습니다.

  • Out-of-Box Experience(OOBE): 시스템은 Windows 설치 축약 버전을 실행하여 사용자에게 시스템 언어, 표준 시간대, 등록된 조직과 같은 정보를 입력하도록 요청합니다. EC2Launch v2와 함께 Sysprep을 실행할 때 응답 파일은 이 단계를 자동으로 실행합니다.

Sysprep 작업

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

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

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

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

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

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

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

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

일반화 단계
  • EC2Launch v2는 컴퓨터 이름과 SID 같은 이미지 고유 정보 및 설정을 삭제합니다. 인스턴스가 도메인의 멤버인 경우에는 도메인에서 삭제됩니다. unattend.xml 응답 파일은 이 단계에 영향을 미치는 다음의 설정을 포함합니다.

    • PersistAllDeviceInstalls: 이 설정은 Windows 설치로 하여금 장치를 제거하고 재구성하지 못하도록 함으로써 이미지 준비 과정을 가속화하는데, 이는 Amazon AMI는 특정 드라이버가 실행되는 것을 요구하고 그 드라이버들을 재검색하는 데 시간이 걸리기 때문입니다.

    • DoNotCleanUpNonPresentDevices: 이 설정은 현재 존재하지 않는 장비들에 대한 플러그-앤-플레이 정보를 담고 있습니다.

  • Sysprep은 AMI를 생성하기 위한 준비를 하는 과정에서 OS를 종료합니다. 시스템은 새 인스턴스를 시작하거나 원본 인스턴스를 시작합니다.

특수화 단계

시스템은 컴퓨터 이름과 SID와 같은 OS 특정 요건을 생성합니다. 시스템은 또한 unattend.xml 응답 파일에 지정된 구성에 기반을 두어 다음 작업을 수행합니다.

  • CopyProfile: Sysprep을 구성해 내장된 관리자 프로파일을 비롯한 모든 사용자 프로파일을 삭제할 수 있습니다. 이 설정은 내장된 관리자 계정을 보유하고 있어서 계정에 대한 어떤 사용자 지정도 새 이미지로 전달됩니다. 기본 값은 True입니다.

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

    새 이미지로 전달하고자 하는 사용자 프로파일에 대한 특정한 사용자 지정이 없다면 이 설정을 False로 변경하세요. 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 설정을 활성화하지 않으면 Sysprep이 완료된 후 인스턴스에 액세스할 수 없도록 설계되어 있습니다.

    C:\Program Files\Amazon\Ec2ConfigService\ScramblePassword.exe" -u Administrator

  • Synchronous command with order 3: 시스템은 다음 명령을 실행합니다.

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

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

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

OOBE 단계
  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_STATE_UNDEPLOYABLE

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

Sysprep 이후

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

Windows sysprep configuration complete.

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

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

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

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

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

EC2Launch v2에 대한 자세한 내용은 EC2Launch v2를 사용하여 Windows 인스턴스 구성 섹션을 참조하세요.

EC2Launch v2와 함께 Sysprep 실행

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

  1. Amazon EC2 콘솔에서 복사하고자 하는 AMI의 위치를 지정하거나 생성합니다.

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

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

  4. Windows 시작 메뉴에서 Amazon EC2Launch 설정(Amazon EC2Launch settings)을 검색하고 선택합니다. Amazon EC2Launch 설정(EC2Launch settings) 대화 상자의 옵션 및 설정에 대한 자세한 내용은 EC2Launch v2 설정 단원을 참조하세요.

  5. Sysprep을 이용해 종료(Shutdown with Sysprep) 또는 Sysprep을 이용하지 않고 종료(Shutdown without Sysprep)를 선택합니다.

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

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

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

EC2Launch와 함께 Sysprep 사용

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

중요

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

Sysprep에 대한 EC2Launch 응답 및 배치 파일

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

Unattend.xml

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

BeforeSysprep.cmd

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

SysprepSpecialize.cmd

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

EC2Launch와 함께 Sysprep 실행

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

EC2Launch Settings 애플리케이션을 사용하여 Sysprep을 실행하려면
  1. Amazon EC2 콘솔에서 Windows Server 2016 이후 AMI를 찾거나 생성합니다.

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

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

  4. EC2LaunchSettings 애플리케이션을 검색하여 실행합니다. 기본적으로 C:\ProgramData\Amazon\EC2-Windows\Launch\Settings 디렉터리에 위치합니다.

    
							EC2 Launch Settings 애플리케이션
  5. 필요에 따라 옵션을 선택하거나 취소합니다. 이러한 설정은 LaunchConfig.json 파일에 저장되어 있습니다.

  6. Administrator 암호에서 다음 중 하나를 수행합니다.

    • 임의(Random)를 선택합니다. EC2Launch는 암호를 생성하고 사용자의 키를 사용하여 암호를 암호화합니다. 인스턴스가 재부팅 또는 중지되었다가 시작된 경우 이 암호가 그대로 유지되도록 시스템은 인스턴스가 시작된 후 이 설정을 비활성화합니다.

    • 지정(Specify)을 선택하고 시스템 요구 사항을 충족하는 암호를 입력합니다. 암호는 LaunchConfig.json에 일반 텍스트로 저장되며 Sysprep에서 관리자 암호를 설정한 후에 삭제됩니다. 지금 종료하면 암호는 지금 바로 설정됩니다. EC2Launch는 사용자의 키를 사용하여 암호를 암호화합니다.

    • DoNothing을 선택하고 unattend.xml 파일에 암호를 지정합니다. unattend.xml에 암호를 지정하지 않으면 관리자 계정이 비활성화됩니다.

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

EC2Launch를 사용하여 Sysprep을 수동으로 실행하려면
  1. Amazon EC2 콘솔에서 복제하려는 Windows Server 2016 이후 Datacenter 에디션 AMI를 찾거나 만듭니다.

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

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

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

    adminPasswordType에 대해 다음 값 중 하나를 지정할 수 있습니다.

    Random

    EC2Launch는 암호를 생성하고 사용자의 키를 사용하여 암호를 암호화합니다. 인스턴스가 재부팅 또는 중지되었다가 시작된 경우 이 암호가 그대로 유지되도록 시스템은 인스턴스가 시작된 후 이 설정을 비활성화합니다.

    Specify

    adminPassword에 지정한 암호가 EC2Launch에 사용됩니다. 암호가 시스템 요구 사항에 맞지 않으면 EC2Launch에서 임의의 암호를 대신 생성합니다. 암호는 LaunchConfig.json에 일반 텍스트로 저장되며 Sysprep에서 관리자 암호를 설정한 후에 삭제됩니다. EC2Launch는 사용자의 키를 사용하여 암호를 암호화합니다.

    DoNothing

    unattend.xml 파일에 지정한 암호가 EC2Launch에 사용됩니다. unattend.xml에 암호를 지정하지 않으면 관리자 계정이 비활성화됩니다.

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

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

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

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

사용자 지정 AMI 시작 시 Server 2016 이후에 대한 메타데이터/KMS 경로 업데이트

사용자 지정 AMI를 시작할 때 Server 2016 이후에 대한 메타데이터/KMS 경로를 업데이트하려면 다음과 같이 하세요.

  • EC2LaunchSettings GUI(C:\ProgramData\Amazon\EC2-Windows\Launch\Settings\Ec2LaunchSettings.exe)를 실행하고 Sysprep을 사용하여 종료하는 옵션을 선택합니다.

  • EC2LaunchSettings를 실행하고 Sysprep 없이 종료한 다음 AMI를 생성합니다. 그러면 다음번 부팅할 때 EC2 시작 초기화 작업을 실행하도록 설정되며, 해당 인스턴스의 서브넷을 토대로 경로가 설정됩니다.

  • PowerShell에서 AMI를 생성하기 전에 EC2 시작 초기화 작업을 수동으로 다시 예약합니다.

    중요

    작업을 다시 예약하기 전에 기본 암호 재설정 동작을 적어 두세요.

  • Windows 정품 인증 또는 인스턴스 메타데이터 오류와의 통신이 발생하는 실행 중인 인스턴스에서 경로를 업데이트하려면 “Windows를 정품 인증할 수 없음”을 참조하세요.

EC2Config와 함께 Sysprep 사용

이 섹션에서는 이미지가 준비될 때 이루어지는 다양한 Sysprep 실행 단계와 EC2Config 서비스에 의해 수행되는 작업의 세부 정보를 설명합니다. 또한 EC2Config 서비스와 함께 Sysprep을 사용하여 표준화된 AMI를 생성하는 단계도 포함되어 있습니다.

Sysprep 단계

Sysprep은 다음과 같은 단계들을 실행합니다.

  • 일반화: 이 도구는 이미지 고유 정보 및 설정을 삭제합니다. 예를 몇 가지 들자면, Sysprep은 보안 식별자(SID), 컴퓨터 이름, 이벤트 로그, 특정 드라이버를 제거합니다. 이 단계가 완료되면 운영 체제(OS)는 AMI를 생성할 준비가 됩니다.

    참고

    PersistAllDeviceInstalls가 true로 기본 설정되어 있기 때문에 Sysprep을 EC2Config 서비스와 함께 실행할 때 시스템은 드라이버들이 제거되는 것을 방지합니다.

  • 특수화: 플러그-앤-플레이가 컴퓨터를 스캔하여 검색된 장치에 대해 드라이버를 설치합니다. 이 도구는 컴퓨터 이름과 SID와 같은 OS 요건을 생성합니다. 필요한 경우 이 단계에서 명령을 실행할 수 있습니다.

  • Out-of-Box Experience(OOBE): 시스템은 Windows 설치 축약 버전을 실행하여 사용자에게 시스템 언어, 표준 시간대, 등록된 조직과 같은 정보를 입력하도록 요청합니다. EC2Config와 함께 Sysprep을 실행할 때 응답 파일은 이 단계를 자동으로 실행합니다.

Sysprep 작업

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

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

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

    BundleConfig.xml 파일에는 다음 설정이 포함되어 있습니다. 이 설정은 변경할 수 있습니다.

    • AutoSysprep: Sysprep을 자동적으로 사용할지 여부를 지정합니다. Sysprep을 EC2 Service Properties 대화 상자로부터 실행하는 경우에는 이 값을 변경할 필요가 없습니다. 기본 값은 No입니다.

    • SetRDPCertificate: 원격 데스크톱 서버에 대한 자체 서명된 인증서를 설정합니다. 이렇게 함으로써 원격 데스크톱 프로토콜(RDP)을 안정적으로 이용해 인스턴스에 연결할 수 있습니다. 새 인스턴스가 인증서를 사용해야 하는 경우 이 값을 Yes로 변경합니다. Windows Server 2008 또는 Windows Server 2012 인스턴스는 자신의 고유한 인증서를 생성할 수 있으므로 이 설정은 이 인스턴스에서는 사용되지 않습니다. 기본 값은 No입니다.

    • SetPasswordAfterSysprep: 새로 실행된 인스턴스에 무작위 암호를 설정하고 이를 사용자 실행 키로 암호화하고 암호화된 암호를 콘솔에 출력합니다. 새 인스턴스에 무작위의 암호화된 암호를 설정해서는 안 되는 경우에는 설정 값을 No로 변경합니다. 기본 값은 Yes입니다.

    • PreSysprepRunCmd: 실행할 명령의 위치 명령은 기본적으로 C:\Program Files\Amazon\Ec2ConfigService\Scripts\BeforeSysprep.cmd 디렉터리에 위치합니다.

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

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

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

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

    sysprep.exe /unattend: "C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml" /oobe /generalize /shutdown
일반화 단계
  • 이 도구는 컴퓨터 이름과 SID 같은 이미지 고유 정보 및 설정을 삭제합니다. 인스턴스가 도메인의 멤버인 경우에는 도메인에서 삭제됩니다. sysprep2008.xml 응답 파일은 이 단계에 영향을 미치는 다음의 설정을 포함합니다.

    • PersistAllDeviceInstalls: 이 설정은 Windows 설치로 하여금 장치를 제거하고 재구성하지 못하도록 함으로써 이미지 준비 과정을 가속화하는데, 이는 Amazon AMI는 특정 드라이버가 실행되는 것을 요구하고 그 드라이버들을 재검색하는 데 시간이 걸리기 때문입니다.

    • DoNotCleanUpNonPresentDevices: 이 설정은 현재 존재하지 않는 장비들에 대한 플러그-앤-플레이 정보를 담고 있습니다.

  • Sysprep은 AMI를 생성하기 위한 준비를 하는 과정에서 OS를 종료합니다. 시스템은 새 인스턴스를 시작하거나 원본 인스턴스를 시작합니다.

특수화 단계

시스템은 컴퓨터 이름과 SID와 같은 OS 특정 요건을 생성합니다. 시스템은 또한 sysprep2008.xml 응답 파일에 지정된 구성에 기반을 두어 다음 작업을 수행합니다.

  • CopyProfile: Sysprep을 구성해 내장된 관리자 프로파일을 비롯한 모든 사용자 프로파일을 삭제할 수 있습니다. 이 설정은 내장된 관리자 계정을 보유하고 있어서 계정에 대한 어떤 사용자 지정도 새 이미지로 전달됩니다. 기본값은 True입니다.

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

    새 이미지로 전달하고자 하는 사용자 프로파일에 대한 특정한 사용자 지정이 없다면 이 설정을 False로 변경하세요. 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 설정을 활성화하지 않으면 Sysprep이 완료된 후 인스턴스에 액세스할 수 없도록 설계되어 있습니다.

    C:\Program Files\Amazon\Ec2ConfigService\ScramblePassword.exe" -u Administrator

  • Synchronous command with order 3: 시스템은 다음 명령을 실행합니다.

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

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

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

OOBE 단계
  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_STATE_UNDEPLOYABLE

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

  3. PostSysprep.cmd가 실행되고 다음 작업이 수행됩니다.

    • 로컬 관리자 암호가 만료되지 않도록 설정합니다. 로컬 관리자 암호가 만료되면, 관리자가 로그인할 수 없을 수도 있습니다.

    • MSSQLServer 머신 이름(설치된 경우)를 설정하여 그 이름이 AMI와 동기화되도록 합니다.

Sysprep 이후

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

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

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

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

  2. 모든 “Before Windows is ready” 플러그인을 동시에 실행합니다.

    • Ec2SetPassword

    • Ec2SetComputerName

    • Ec2InitializeDrives

    • Ec2EventLog

    • Ec2ConfigureRDP

    • Ec2OutputRDPCert

    • Ec2SetDriveLetter

    • Ec2WindowsActivate

    • Ec2DynamicBootVolumeSize

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

  4. 모든 “After Windows is ready” 플러그인을 동시에 실행합니다.

    • Amazon CloudWatch Logs

    • UserData

    • AWS Systems Manager(Systems Manager)

Windows 플러그인에 대한 자세한 내용은 EC2Config 서비스를 사용하여 Windows 인스턴스 구성(레거시) 단원을 참조하세요.

EC2Config 서비스와 함께 Sysprep 실행하기

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

  1. Amazon EC2 콘솔에서 복사하고자 하는 AMI의 위치를 지정하거나 생성합니다.

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

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

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

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

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

  6. Ec2 서비스 속성 대화 상자에서 이미지 탭을 선택합니다. Ec2 서비스 속성 대화 상자의 옵션 및 설정에 대한 자세한 내용은 Ec2 서비스 속성을 참조하세요.

  7. 관리자 암호에 대한 옵션을 선택하고 Shutdown with Sysprep(Sysprep을 이용해 종료) 또는 Shutdown without Sysprep(Sysprep을 사용하지 않고 종료)을 선택합니다. EC2Config는 선택한 암호 옵션에 기반하는 설정 파일을 편집합니다.

    • Random(무작위): EC2Config는 암호를 생성하고 이를 사용자의 키로 암호화한 다음, 암호화된 암호를 콘솔에 표시합니다. 첫 실행 후 이 설정을 비활성화하여 인스턴스가 재부팅되거나 중단되고 시작된 경우에도 해당 암호가 계속 유지되도록 합니다.

    • 지정: 암호를 암호화되지 않은 형태(클리어 텍스트)로 Sysprep 응답 파일에 저장합니다. Sysprep은 다음에 실행될 때 관리자 암호를 설정합니다. 지금 종료하면 암호는 지금 바로 설정됩니다. 서비스가 다시 시작할 때 관리자 암호는 제거됩니다. 이 암호는 나중에 다시 확인할 수 없기 때문에 이를 꼭 기억해두세요.

    • Keep Existing(기존 유지): Sysprep이 실행 중일 때 또는 EC2Config가 재시작할 때, 관리자 계정에 대한 기존 암호를 변경시키지 않습니다. 이 암호는 나중에 다시 확인할 수 없기 때문에 이를 꼭 기억해두세요.

  8. 확인을 선택합니다.

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

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

"%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep""
참고

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

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