1. 개요
| 항목 | 내용 |
|---|---|
| 대상 | Lightsail Windows Server 인스턴스 |
| 문서 목적 | 인스턴스 중지 없이 자동 스냅샷 구성 (EventBridge + Lambda) |
| 작성일 | 2026-02-12 |
Windows Lightsail은 콘솔에서 자동 스냅샷 기능을 지원하지 않습니다. (Linux/Ubuntu만 지원) 본 가이드는 인스턴스를 중지하지 않고 스냅샷을 생성하는 방식입니다.
본 가이드의 스냅샷은 Sysprep을 실행하지 않는 백업용 스냅샷입니다. 이 스냅샷으로 새 인스턴스를 생성하면 브라우저 기반 RDP가 불가하며, 원본 인스턴스의 관리자 암호로만 접속 가능합니다.
2. 데이터 정합성 주의사항
실행 중 스냅샷은 찍는 순간 디스크에 쓰기 중인 데이터가 불완전하게 저장될 수 있습니다.
권장: 사용자가 없는 새벽 시간대에 실행하세요.
3. 전체 구성도
EventBridge (매일 새벽 3시 자동 실행)
│
▼
Lambda 함수 실행
│
├── 1단계: 스냅샷 생성 (인스턴스 실행 상태 유지)
└── 2단계: 오래된 스냅샷 자동 삭제
4. 구성 순서 요약
[STEP 1] IAM 커스텀 정책 생성
↓
[STEP 2] IAM 역할 생성 (Lambda용)
↓
[STEP 3] Lambda 함수 생성 및 코드 배포
↓
[STEP 4] Lambda 테스트 실행
↓
[STEP 5] EventBridge 스케줄 규칙 생성
↓
[STEP 6] 모니터링 설정 (실패 알림)
5. IAM 커스텀 정책 생성
5-1. 정책 생성
- AWS 콘솔 → IAM → 좌측 메뉴 Policies → Create policy
- JSON 탭 선택 후 아래 입력:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lightsail:GetInstance",
"lightsail:CreateInstanceSnapshot",
"lightsail:GetInstanceSnapshot",
"lightsail:GetInstanceSnapshots",
"lightsail:DeleteInstanceSnapshot"
],
"Resource": "*"
}
]
}- Policy name:
LightsailSnapshotPolicy - Create policy 클릭
6. IAM 역할 생성 (Lambda용)
- IAM → Roles → Create role
- Trusted entity: AWS service → Lambda
- 정책 연결:
LightsailSnapshotPolicyAWSLambdaBasicExecutionRole
- Role name:
LightsailAutoSnapshotRole - Create role 클릭
7. Lambda 함수 생성
7-1. 함수 생성
- AWS 콘솔 → Lambda → Create function
| 항목 | 설정값 |
|---|---|
| 옵션 | Author from scratch |
| Function name | lightsail-auto-snapshot |
| Runtime | Python 3.14 |
| Architecture | x86_64 |
- Change default execution role → Use an existing role →
LightsailAutoSnapshotRole - Create function 클릭
7-2. 함수 코드 입력
Code 탭 →
lambda_function.py의 기존 내용을 모두 삭제하고 아래 코드를 붙여넣습니다.import boto3 from datetime import datetime, timezone def lambda_handler(event, context): # ============================================================ # 설정 (본인 환경에 맞게 수정하세요) # ============================================================ INSTANCE_NAME = '본인의-인스턴스명' # Lightsail 인스턴스 이름 REGION = 'ap-northeast-2' # 인스턴스 리전 RETENTION_COUNT = 7 # 보관할 스냅샷 수 # ============================================================ client = boto3.client('lightsail', region_name=REGION) timestamp = datetime.now(timezone.utc).strftime('%Y%m%d-%H%M') snapshot_name = f'{INSTANCE_NAME}-auto-{timestamp}' # 1단계: 스냅샷 생성 (인스턴스 실행 상태 유지) print(f'[1/2] Creating snapshot: {snapshot_name}') client.create_instance_snapshot( instanceSnapshotName=snapshot_name, instanceName=INSTANCE_NAME ) print(' Snapshot creation started.') # 2단계: 오래된 스냅샷 삭제 print(f'[2/2] Cleaning up old snapshots (keep {RETENTION_COUNT})...') cleanup_snapshots(client, INSTANCE_NAME, RETENTION_COUNT) print('All done.') return { 'statusCode': 200, 'body': f'Snapshot created: {snapshot_name}' } def cleanup_snapshots(client, instance_name, retention_count): """보관 수를 초과하는 오래된 자동 스냅샷을 삭제합니다.""" prefix = f'{instance_name}-auto-' all_snapshots = client.get_instance_snapshots()['instanceSnapshots'] # 자동 생성 스냅샷만 필터 후 최신순 정렬 auto = [s for s in all_snapshots if s['name'].startswith(prefix)] auto.sort(key=lambda s: s['createdAt'], reverse=True) # 보관 수 초과분 삭제 for old in auto[retention_count:]: print(f' Deleting: {old["name"]}') client.delete_instance_snapshot( instanceSnapshotName=old['name'] )- Deploy 버튼을 클릭합니다.
7-4. 타임아웃 설정
무중단 방식은 스냅샷 생성을 요청만 하고 완료를 기다리지 않으므로 짧은 타임아웃으로 충분합니다.
- Configuration 탭 → General configuration → Edit
| 항목 | 설정값 |
|---|---|
| Memory | 128 MB (기본값) |
| Timeout | 1 min 0 sec |
- Save 클릭
8. Lambda 테스트 실행
8-1. 테스트 실행
- Test 탭 → Event name:
test→ Event JSON:{}→ Test 클릭
8-2. 실행 결과 확인
[1/2] Creating snapshot: Windows_Server_2022-tft-auto-20260211-1800
Snapshot creation started.
[2/2] Cleaning up old snapshots (keep 7)...
All done.
8-3. Lightsail 콘솔에서 확인
- Lightsail → 인스턴스 → Snapshots 탭
- 스냅샷이 생성 중(Pending) 또는 완료(Available) 상태인지 확인
9. EventBridge 스케줄 규칙 생성
- 일정 클릭
- 크론 기반 일정 설정
위 예시는 매일 새벽 3시에 작동합니다.
3. 대상을 선택합니다. 람다
4. 람다 함수 선택 (기존에 생성한 람다 함수를 선택합니다.)
5.일정 완료후 작업을 none으로 설정하고 기본값을 사용합니다.
매일 새벽 3시에 인스턴스 스냅샷이 자동으로 생성됩니다.
10. 관리자 암호 보관 (필수)
본 가이드의 스냅샷은 Sysprep을 실행하지 않는 백업용 스냅샷입니다. 이 스냅샷으로 새 인스턴스를 생성하면 브라우저 기반 RDP가 불가하며, 원본 인스턴스의 관리자 암호로만 접속 가능합니다.
암호 확인 방법
- Lightsail 콘솔 → 인스턴스 선택 → Connect 탭
- Password 항목 옆 Show 클릭
- 표시된 암호를 안전한 곳에 보관
주의: 암호를 분실하면 복원한 인스턴스에 접속할 수 없습니다.
댓글
댓글 0개
이 문서에는 댓글을 달 수 없습니다.