AMI 저장(S3 Store)과 복원(Restore)이 동작하는 방식

AMI 저장(S3 Store)과 복원(Restore)이 동작하는 방식

AMI를 S3에 저장했다가 다시 복원하려면 특정 API들을 사용해요. 이 글에서는 AMI를 S3 객체로 저장하는 CreateStoreImageTask, 진행 상황을 조회하는 DescribeStoreImageTasks, 그리고 S3에서 복원하는 CreateRestoreImageTask가 정확히 어떻게 동작하는지 살펴볼게요.

출처: 문서

본문

S3를 사용해 AMI를 저장하고 복원하려면 다음 API를 사용해요.

CreateStoreImageTask

CreateStoreImageTask API는 AMI를 S3 버킷의 단일 객체로 저장해요.

이 API는 AMI와 그 스냅샷의 모든 데이터를 읽는 작업을 만들고, S3 multipart upload를 사용해 S3 객체에 데이터를 저장합니다. AMI의 모든 구성 요소 — 대부분의 리전 비특정 AMI 메타데이터와 AMI에 포함된 모든 EBS 스냅샷 — 를 S3의 단일 객체로 묶어요. 업로드 과정에서 데이터가 압축되어 S3 사용 공간이 줄어들기 때문에, S3의 객체 크기는 AMI의 스냅샷 크기 합보다 작을 수 있어요.

이 API를 호출하는 계정에 보이는 AMI 및 스냅샷 태그가 있으면 그 태그들은 보존됩니다.

S3 객체는 AMI와 같은 ID를 가지되 확장자가 .bin으로 붙어요. S3 객체에는 다음 데이터도 S3 메타데이터 태그로 저장됩니다: AMI 이름, AMI 설명, AMI 등록 날짜, AMI 소유자 계정, 그리고 저장 작업 타임스탬프.

작업 완료에 걸리는 시간은 AMI 크기에 따라 달라져요. 작업이 대기열에 쌓이기 때문에 진행 중인 다른 작업이 몇 개인지에도 영향을 받습니다. DescribeStoreImageTasks API를 호출해 작업 진행 상황을 추적할 수 있어요.

진행 중인 모든 AMI의 크기 합은 계정당 1,200 GB의 EBS 스냅샷 데이터로 제한돼요. 진행 중인 작업이 한도보다 적어질 때까지 추가 작업 생성은 거부됩니다. 예를 들어 200 GB 스냅샷 데이터의 AMI 하나와 400 GB 스냅샷 데이터의 AMI 하나가 현재 저장 중이라면, 진행 중인 총합이 600 GB로 한도 미만이므로 추가 요청은 수락돼요. 하지만 단일 AMI가 1,200 GB의 스냅샷 데이터로 현재 저장 중이라면 그 작업이 완료될 때까지 추가 작업은 거부됩니다.

DescribeStoreImageTasks

DescribeStoreImageTasks API는 AMI 저장 작업의 진행 상황을 설명해요. 지정한 AMI에 대한 작업을 설명할 수 있고, AMI를 지정하지 않으면 지난 31일 동안 처리된 모든 스토어 이미지 작업의 페이지 매김 목록을 얻을 수 있어요.

각 AMI 작업에 대해 응답은 작업이 InProgress, Completed, Failed 중 어떤 상태인지 나타냅니다. InProgress 작업의 경우 응답이 백분율로 예상 진행 상황을 보여줘요.

작업은 역시간순(최신순)으로 나열됩니다. 현재는 지난달의 작업만 볼 수 있어요.

CreateRestoreImageTask

CreateRestoreImageTask API는 이전에 CreateStoreImageTask 요청으로 만든 S3 객체에서 AMI를 복원하는 작업을 시작해요.

복원 작업은 저장 작업이 수행된 동일한 리전 또는 다른 리전에서 수행할 수 있어요.

AMI 객체를 복원할 S3 버킷은 복원 작업을 요청하는 리전과 같은 리전에 있어야 해요. AMI는 이 리전에 복원됩니다.

AMI는 이름, 설명, 블록 디바이스 매핑 같은 메타데이터와 함께 복원되며, 이 값들은 저장된 AMI의 값과 일치합니다. 이름은 이 계정의 리전에서 AMI에 대해 고유해야 해요. 이름을 제공하지 않으면 새 AMI가 원래 AMI와 같은 이름을 갖게 됩니다. AMI는 복원 과정에서 생성되는 새 AMI ID를 얻게 돼요.

AMI 복원 작업 완료 시간은 AMI 크기에 따라 달라져요. 작업이 대기열에 쌓이기 때문에 진행 중인 다른 작업 수에도 영향을 받습니다. AMI(describe-images) 또는 그 EBS 스냅샷(describe-snapshots)을 설명해 작업 진행 상황을 볼 수 있어요. 작업이 실패하면 AMI와 스냅샷은 실패(failed) 상태로 옮겨집니다.

진행 중인 모든 AMI의 크기 합은 계정당 600 GB(복원 후 크기 기준)의 EBS 스냅샷 데이터로 제한돼요. 진행 중인 작업이 한도 미만이 될 때까지 추가 작업 생성은 거부됩니다.

파일 경로 (File paths)

AMI를 저장하고 복원할 때 다음과 같이 파일 경로를 사용할 수 있어요.

  • 저장 시: AMI를 S3에 저장할 때 버킷 이름에 파일 경로를 추가할 수 있어요. 내부적으로 시스템이 경로를 버킷 이름과 분리한 뒤, AMI 저장을 위해 생성된 객체 키에 경로를 추가합니다. 전체 객체 경로는 API 호출 응답에 표시돼요.
  • 복원 시: 객체 키(object key) 파라미터를 사용할 수 있으므로 경로를 객체 키 값의 앞부분에 추가할 수 있어요.

예제: 버킷 이름에 파일 경로 추가

AMI를 저장할 때 버킷 이름 뒤에 파일 경로를 지정해요.

amzn-s3-demo-bucket/path1/path2

그 결과 생성되는 객체 키는 다음과 같아요.

path1/path2/ami-0abcdef1234567890.bin

AMI를 복원할 때는 버킷 이름과 객체 키를 모두 지정해요. 예시는 Create a store image task를 참고하세요.

더 알아보기 (Learn more)