Amazon EBS 지원 AMI 만들기
Amazon EBS 지원 AMI 만들기 (Create an Amazon EBS-backed AMI)
Amazon EC2 인스턴스에서, 또는 인스턴스 루트 볼륨의 스냅샷에서 나만의 Amazon EBS 지원 AMI를 만들 수 있어요.
출처: 문서
본문
인스턴스에서 EBS 지원 AMI를 만들려면 먼저 기존 EBS 지원 AMI로 인스턴스를 시작해요. 이 AMI는 AWS Marketplace에서 얻은 것, VM Import/Export로 만든 것, 접근 가능한 아무 AMI든 될 수 있어요. 인스턴스를 요구사항에 맞게 커스터마이즈한 뒤 새 AMI를 만들어 등록하면, 그 새 AMI로 맞춤 구성이 반영된 인스턴스를 시작할 수 있어요.
참고: EC2 인스턴스 증명(attestation)을 지원하는 AMI를 만들려면 "Attestable AMIs"를 참고하세요.
아래 절차는 암호화된 EBS 볼륨(루트 볼륨 포함)으로 지원되는 인스턴스와 암호화되지 않은 볼륨 모두에 적용돼요. AMI 생성 과정은 Amazon S3 지원 AMI와는 달라요. 자세한 내용은 "Create an Amazon S3-backed AMI"를 참고하세요.
인스턴스에서 AMI 생성 개요 (Overview of AMI creation from an instance)
실행 중인 EC2 인스턴스에서 EBS 지원 AMI를 만드는 과정은 다음과 같아요: 기존 AMI로 시작 → 인스턴스 시작 → 커스터마이즈 → 새 AMI 생성 → 새 AMI로 인스턴스 시작.
- AMI #1: 기존 AMI로 시작 – 만들고 싶은 AMI와 비슷한 기존 AMI를 찾아요. AWS Marketplace에서 얻거나 VM Import/Export로 만들거나 접근 가능한 아무 AMI든 돼요. 이 AMI를 필요에 맞게 커스터마이즈할 거예요.
- 기존 AMI로 인스턴스 시작 – AMI를 구성하는 방법은 새 AMI의 기반이 될 인스턴스를 그 AMI로 시작하고 커스터마이즈한 뒤, 커스터마이즈가 포함된 새 AMI를 만드는 것이에요.
- EC2 인스턴스 #1: 인스턴스 커스터마이즈 – 인스턴스에 연결해 필요에 맞게 커스터마이즈해요. 소프트웨어·애플리케이션 설치, 데이터 복사, 임시 파일 삭제와 하드 드라이브 조각 모음으로 시작 시간 단축, 추가 EBS 볼륨 연결 등을 할 수 있어요. 새 AMI에 이 커스터마이즈가 포함돼요.
- 이미지 생성 – 인스턴스에서 AMI를 만들면 Amazon EC2가 생성 과정 중 인스턴스의 모든 것이 중지되고 일관된 상태인지 확인하기 위해 인스턴스를 종료(power down)해요. 인스턴스가 AMI 생성에 적합한 일관된 상태라고 확신한다면 종료·재부팅을 하지 말라고 지시할 수 있어요. XFS 같은 일부 파일 시스템은 활동을 동결·해제할 수 있어 인스턴스를 재부팅하지 않고 이미지를 만들어도 안전해요.
- AMI 생성 과정에서 Amazon EC2가 인스턴스의 루트 볼륨과 연결된 다른 EBS 볼륨의 스냅샷을 만들어요. AMI를 등록 해제하고 스냅샷을 삭제할 때까지 스냅샷 비용이 청구돼요. 인스턴스에 연결된 볼륨이 암호화되어 있다면 새 AMI는 Amazon EBS 암호화를 지원하는 인스턴스에서만 성공적으로 시작돼요.
- 볼륨 크기에 따라 AMI 생성이 몇 분 걸릴 수 있어요(때로는 최대 24시간). AMI를 만들기 전에 볼륨 스냅샷을 미리 만들어 두면, AMI 생성 시 작은 증분 스냅샷만 만들면 되어 과정이 더 빨라져요(총 스냅샷 생성 시간은 같아요).
- AMI #2: 새 AMI – 과정이 끝나면 인스턴스 루트 볼륨에서 만든 새 AMI와 스냅샷(#2)을 갖게 돼요. 루트 볼륨 외에 인스턴스 스토어 볼륨이나 EBS 볼륨을 추가했다면 새 AMI의 블록 디바이스 매핑에 이 볼륨 정보가 포함돼요. Amazon EC2가 AMI를 자동으로 등록해줘요.
- 새 AMI로 인스턴스 시작 – 새 AMI로 인스턴스를 시작할 수 있어요.
- EC2 인스턴스 #2: 새 인스턴스 – 새 AMI로 인스턴스를 시작하면 Amazon EC2가 스냅샷을 사용해 인스턴스 루트 볼륨용 새 EBS 볼륨을 만들어요. 새 AMI 블록 디바이스 매핑의 인스턴스 스토어 볼륨은 새 것이며, AMI를 만드는 데 쓴 인스턴스의 인스턴스 스토어 볼륨 데이터를 포함하지 않아요. EBS 볼륨의 데이터는 유지돼요.
- EBS 지원 AMI로 새 인스턴스를 만들 때는 운영(production)에 투입하기 전에 루트 볼륨과 추가 EBS 스토리지를 초기화해야 해요. 자세한 내용은 Amazon EBS 사용자 가이드의 "Initialize Amazon EBS volumes"를 참고하세요.
인스턴스에서 AMI 만들기 (Create an AMI from an instance)
콘솔:
- Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
- 탐색 창에서 Instances를 선택해요.
- AMI를 만들 인스턴스를 선택하고 Actions, Image and templates, Create image를 선택해요.
팁: 이 옵션이 비활성화되어 있으면 그 인스턴스는 Amazon EBS 지원 인스턴스가 아니에요.
- Create image 페이지에서 다음 정보를 지정해요.
- Image name – 최대 127자의 고유한 이미지 이름.
- Image description – 최대 255자의 선택적 설명.
- Reboot instance – 기본값(선택됨)을 유지하거나 해제해요. 선택하면 Amazon EC2가 데이터가 정지된 상태에서 연결 볼륨의 스냅샷을 찍기 위해 인스턴스를 재부팅해 일관된 상태를 보장해요. 해제하면 인스턴스를 종료·재부팅하지 않아요. 경고: 해제하면 생성된 이미지의 파일 시스템 무결성을 보장할 수 없어요.
- Instance volumes – 루트 볼륨을 수정하고 추가 EBS·인스턴스 스토어 볼륨을 추가할 수 있어요. 루트 볼륨은 첫 번째 행에 정의돼요. Size로 루트 볼륨 크기를 바꾸고, Delete on termination 선택 여부로 이 AMI에서 만든 인스턴스 종료 시 EBS 볼륨을 삭제할지 정해요. Add volume으로 볼륨을 추가하고 Storage type을 EBS로 선택하면, 새 AMI로 인스턴스를 시작할 때 추가 볼륨이 자동 연결돼요. 빈 볼륨은 포맷·마운트해야 하고, 스냅샷 기반 볼륨은 마운트해야 해요.
- Snapshot destination – 볼륨이 EBS 로컬 스냅샷을 지원하는 로컬 영역에 있으면 AMI 스냅샷을 어디에 만들지(AWS Region 또는 AWS Local Zone) 고르세요. 이 옵션은 EBS 로컬 스냅샷을 지원하는 로컬 영역에서 만들어진 인스턴스에만 나타나요. 중요: 인스턴스 볼륨의 모든 스냅샷은 같은 위치에 있어야 해요. 선택한 대상과 다른 위치에 기존 스냅샷이 있으면 AMI 생성이 실패해요.
- Tags – AMI와 스냅샷에 같은 태그를 붙이려면 Tag image and snapshots together, 다른 태그를 붙이려면 Tag image and snapshots separately를 선택해요. 후자의 경우 모든 스냅샷이 같은 태그를 받고, 스냅샷마다 다른 태그는 줄 수 없어요.
- Boot mode override – UEFI 부팅 모드만 지원하는 AMI를 만들려면
uefi를 선택하고, 그 외에는 기본값을 유지해 인스턴스의 부팅 모드를 상속하게 해요. 이 옵션은 현재 인스턴스 부팅 모드가 UEFI일 때만 동작해요.
- Create image를 선택해요. 생성 중 상태를 보려면 탐색 창에서 AMIs를 선택하고 Owned by me로 필터링해 목록에서 찾아요. 처음에는
pending이지만 몇 분 후available로 바뀌어요. - (선택) 새 AMI용으로 만들어진 스냅샷을 보려면 새 AMI ID를 기록하고 Snapshots에서 Owned by me로 필터링해 Description 열에 새 AMI ID가 있는 스냅샷을 찾아요. 이 AMI로 인스턴스를 시작할 때 Amazon EC2가 이 스냅샷으로 인스턴스 루트 볼륨을 만들어요.
AWS CLI: create-image 명령을 사용해요.
aws ec2 create-image \
--instance-id i-1234567890abcdef0 \
--name "my-web-server" \
--description "My web server image" \
--no-reboot
PowerShell: New-EC2Image cmdlet을 사용해요.
New-EC2Image `
-InstanceId i-1234567890abcdef0 `
-Name "my-web-server" `
-Description "My web server image" `
-NoReboot $true
스냅샷에서 AMI 만들기 (Create an AMI from a snapshot)
인스턴스 루트 볼륨의 스냅샷이 있다면 그 스냅샷에서 AMI를 만들 수 있어요.
참고: 대부분의 경우 Windows, Red Hat, SUSE, SQL Server용 AMI는 올바른 라이선스 정보가 있어야 해요. 스냅샷에서 AMI를 만들면
RegisterImage작업이 스냅샷 메타데이터에서 청구 정보를 파생하지만 올바른 메타데이터가 있어야 해요. 올바른 청구 정보가 적용됐는지 새 AMI의 Platform details 필드를 확인하세요. 필드가 비어 있거나 예상 운영 체제 코드(예: Windows, Red Hat, SUSE, SQL)와 맞지 않으면 AMI 생성이 실패한 것이므로 그 AMI를 버리고 "인스턴스에서 AMI 만들기" 절차를 따라야 해요.
콘솔:
- Amazon EC2 콘솔을 엽니다.
- 탐색 창에서 Snapshots를 선택해요.
- AMI를 만들 스냅샷을 선택하고 Actions, Create image from snapshot을 선택해요.
- Create image from snapshot 페이지에서 정보를 지정해요.
- Image name – 설명적인 이름.
- Description – 간단한 설명.
- Architecture – 32비트는
i386, 64비트는x86_64, 64비트 ARM은arm64, 64비트 macOS는x86_64를 선택해요. - Root device name – 루트 볼륨에 사용할 디바이스 이름.
- Virtualization type – 이 AMI에서 시작할 인스턴스가 사용할 가상화 유형.
- (반가상화 전용) Kernel ID – 이미지용 운영 체제 커널. 원래 인스턴스와 같은 커널 ID를 선택하고, 잘 모르면 기본 커널을 사용해요.
- (반가상화 전용) RAM disk ID – 이미지용 RAM 디스크. 특정 커널을 선택했다면 그 커널을 지원하는 드라이버가 있는 특정 RAM 디스크를 선택해야 할 수 있어요.
- Boot mode – 이미지의 부팅 모드. Use default를 선택하면 인스턴스를 시작할 때 인스턴스 유형이 지원하는 부팅 모드로 부팅해요.
- (선택) Block device mappings에서 루트 볼륨을 커스터마이즈하고 데이터 볼륨을 추가해요. 볼륨마다 크기, 유형, 성능 특성, 종료 시 삭제 동작, 암호화 상태를 지정할 수 있어요. 루트 볼륨 크기는 스냅샷 크기보다 작을 수 없고, 볼륨 유형은 General Purpose SSD
gp3가 기본이에요. - (선택) Tags에서 Add tag로 키·값 태그를 추가해요.
- Create image를 선택해요.
- (Windows, Red Hat, SUSE, SQL Server만) 새 AMI의 Platform details 필드로 올바른 청구 정보가 적용됐는지 확인해요.
AWS CLI: register-image 명령을 사용해요.
aws ec2 register-image \
--name my-image \
--root-device-name /dev/xvda \
--block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0db2cf683925d191f}
PowerShell: Register-EC2Image cmdlet을 사용해요.
$block = @{SnapshotId=snap-0db2cf683925d191f}
Register-EC2Image `
-Name my-image `
-RootDeviceName /dev/xvda `
-BlockDeviceMapping @{DeviceName="/dev/xvda";Ebs=$block}