인스턴스를 재부팅하거나 시작할 때, 기존 Amazon Elastic Compute Cloud(Amazon EC2) Windows 인스턴스에서 사용자 지정 스크립트를 실행하고 싶습니다.
간략한 설명
EC2 인스턴스를 시작하거나 재부팅할 때 명령을 실행하려면 인스턴스를 재부팅하거나 시작할 때 실행할 사용자 데이터 스크립트를 구성하십시오.
운영 체제(OS)에 따라 다음 에이전트를 사용하여 사용자 데이터를 처리하도록 구성됩니다.
- Windows Server 2012 R2 이하 버전은 EC2Config를 사용합니다.
- Windows Server 2016 및 2019는 EC2Launch를 사용합니다.
- Windows Server 2022 및 2025는 EC2Launch v2를 사용합니다.
참고: Amazon EC2 콘솔에서 인스턴스의 사용자 데이터를 업데이트하려면 인스턴스를 중지해야 합니다. 하지만 EC2Launch v2의 경우 YAML 스크립트를 사용하여 중지 및 시작 없이 인스턴스를 업데이트할 수 있습니다.
해결 방법
(EC2Launch v2만 해당) YAML 스크립트를 사용하여 중지 및 시작 없이 인스턴스를 업데이트합니다.
원격 데스크톱 프로토콜(RDP)을 사용하여 Windows 인스턴스에 연결합니다.
재부팅하거나 재시작할 때마다 스크립트를 실행하려면 agent-config.yml 파일을 업데이트합니다. stage: postReady에 executeScript 작업을 추가하고 frequency를 always로 설정합니다.
YAML 파일 예제:
version: "1.0"
config:
- stage: boot
tasks:
- task: extendRootPartition
- stage: preReady
tasks:
- task: activateWindows
inputs:
activation:
type: amazon
- task: setDnsSuffix
inputs:
suffixes:
- $REGION.ec2-utilities.amazonaws.com
- task: setAdminAccount
inputs:
password:
type: random
- task: setWallpaper
inputs:
attributes:
- hostName
- instanceId
- privateIpAddress
- publicIpAddress
- ipv6Address
- instanceSize
- availabilityZone
- architecture
path: C:\Windows\Web\Wallpaper\Windows\img0.jpg
- stage: postReady
tasks:
- task: startSsm
- task: executeScript
inputs:
- frequency: always
type: powershell
runAs: localSystem
content: |-
New-Item -Path 'C:\PowerShellTest.txt' -ItemType File
다음에 인스턴스를 재부팅하거나 재시작할 때만 스크립트를 실행하려면 C:\ProgramData\Amazon\EC2Launch\state를 연 다음 .run-once 파일을 삭제합니다. agent-config.yml 파일을 업데이트하여 stage: postReady에 executeScript 작업을 추가하고 frequency를 once로 설정합니다.
중요: run-once 파일을 삭제하면 재시작 시 인스턴스의 로컬 관리자 암호가 변경됩니다. 키 페어 없이 인스턴스를 시작했거나 키 페어를 잊은 경우 재시작 시 인스턴스에 대한 액세스 권한을 잃을 수 있습니다.
명령 구문에 대한 자세한 내용은 YAML 구성 스크립트 구문을 참조하십시오.
인스턴스 중지 및 시작 구성
참고: 인스턴스를 중지한 후 시작하면 인스턴스의 퍼블릭 IP 주소가 변경됩니다. 퍼블릭 IP 주소 대신 탄력적 IP 주소를 사용하여 외부 트래픽을 인스턴스로 라우팅하는 것이 가장 좋습니다. Amazon Route 53을 사용하는 경우 퍼블릭 IP 주소가 변경될 때 Route 53 DNS 레코드를 업데이트해야 할 수 있습니다. 중지 및 시작은 인스턴스 재부팅과는 다릅니다. 자세한 내용은 EC2 인스턴스 중지 및 시작 작동 방식을 참조하십시오.
인스턴스를 중지하고 시작하기 전에 다음 작업을 수행하십시오.
인스턴스의 사용자 데이터 업데이트
인스턴스의 사용자 데이터에 명령을 스크립트로 추가합니다. 재부팅하거나 재시작할 때마다 실행되도록 스크립트를 구성하는 방법에 대한 자세한 내용은 다음에 재부팅 또는 시작 시 스크립트 실행을 참조하십시오.
참고: EC2Launch v2를 시작하거나 재부팅할 때마다 스크립트를 실행하려면 YAML 스크립트를 executeScript 작업 또는 XML 스크립트로 추가하십시오. YAML의 경우 frequency(빈도)를 always(항상)로 설정하고 XML 스크립트의 경우 <persist>true</persist> 태그를 추가합니다. 모든 에이전트에서 명령이 명령 프롬프트에서 실행되는지 또는 Windows PowerShell에서 실행되는지를 정의하는 태그로 사용자 데이터를 묶습니다. 명령 구문에 대한 자세한 내용은 Windows PowerShell 스크립트 구문을 참조하십시오.
문제 해결
문제를 해결하려면 EC2Config, EC2Launch 또는 EC2Launch v2 로그 파일에서 표준 출력 및 표준 오류 스트림을 확인하십시오.
로그 파일을 찾으려면 다음 위치를 확인하십시오.
- EC2Config의 경우 C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2Config.log를 확인합니다.
- EC2Launch의 경우 C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log를 확인합니다.
- EC2Launch v2의 경우 C:\ProgramData\Amazon\EC2Launch\log\agent.log를 확인합니다.
관련 정보
시작 시, 새 EC2 Windows 인스턴스에서 명령을 어떻게 실행합니까?