S3를 사용해 AMI 저장·복원하기

S3를 사용해 AMI 저장·복원하기

Amazon Machine Image(AMI)를 Amazon S3 버킷에 저장하고, 다른 S3 버킷으로 복사한 뒤, 그 버킷에서 다시 복원할 수 있어요. 이렇게 S3 버킷을 이용해 AMI를 저장·복원하면 AWS 파티션 간에 AMI를 복사할 수 있어요. 예를 들어 상용 파티션에서 AWS GovCloud (US) 파티션으로 옮길 수 있죠. AMI를 S3 버킷에 저장해 보관용(아카이브) 복사본을 만들 수도 있어요.

출처: 문서

본문

S3를 이용한 AMI 저장·복원을 지원하는 API는 CreateStoreImageTask, DescribeStoreImageTasks, CreateRestoreImageTask예요. 한 AWS 파티션 내부에서 AMI를 복사할 때는 CopyImage가 권장되는 API예요. 하지만 CopyImage는 다른 파티션으로 AMI를 복사할 수 없어요. AWS 파티션에 대한 자세한 내용은 IAM 사용 설명서의 Amazon Resource Names (ARNs) 페이지에 있는 partition 항목을 참고하세요.

경고 — AWS 파티션 또는 AWS 리전 간에 데이터를 이동할 때는 적용되는 모든 법률과 비즈니스 요구 사항(정부 규정과 데이터 거주 요구 사항을 포함하되 이에 국한되지 않음)을 준수해야 해요.

목차

  • 사용 사례
  • 제한 사항
  • 비용
  • AMI 저장·복원이 동작하는 방식
  • 스토어 이미지 태스크 만들기

사용 사례

store/restore API는 다음 작업에 사용해요:

  • AWS 파티션 간에 AMI 복사
  • AMI 보관용 복사본 만들기

AWS 파티션 간에 AMI 복사하기

S3 버킷을 이용해 AMI를 저장·복원하면 한 AWS 파티션에서 다른 파티션으로, 또는 한 AWS 리전에서 다른 리전으로 AMI를 복사할 수 있어요. 다음 예시에서는 상용 파티션에 있는 AMI를 AWS GovCloud (US) 파티션으로 복사해요. 구체적으로 us-east-2 리전에서 us-gov-east-1 리전으로 옮기는 거예요.

한 파티션에서 다른 파티션으로 AMI를 복사하려면 다음 단계를 따르세요.

  1. CreateStoreImageTask를 사용해 현재 리전의 S3 버킷에 AMI를 저장합니다. 이 예시에서 S3 버킷은 us-east-2에 있어요.
  2. DescribeStoreImageTasks를 사용해 스토어 태스크의 진행 상황을 모니터링합니다. 태스크가 완료되면 S3 버킷에 객체가 나타나요.
  3. 원하는 방식으로 저장된 AMI 객체를 대상 파티션의 S3 버킷으로 복사합니다. 이 예시에서 S3 버킷은 us-gov-east-1에 있어요.

참고 — 파티션마다 서로 다른 AWS 자격 증명이 필요하므로, S3 객체를 한 파티션에서 다른 파티션으로 직접 복사할 수는 없어요. 파티션 간 S3 객체 복사 과정은 이 문서의 범위를 벗어나요. 아래에 복사 과정 예시를 제공하지만, 여러분의 보안 요구 사항에 맞는 복사 과정을 사용해야 해요.

  • 한 AMI를 파티션 간에 복사하려면 비교적 단순한 방법을 쓸 수 있어요: 소스 버킷에서 중간 호스트(예: EC2 인스턴스나 노트북)로 객체를 다운로드한 뒤, 중간 호스트에서 대상 버킷으로 객체를 업로드하는 방식이죠. 각 단계에서는 해당 파티션의 AWS 자격 증명을 사용해요.
  • 더 지속적인 사용을 위해서는 S3 멀티파트 다운로드·업로드를 활용해 복사를 관리하는 애플리케이션을 개발하는 것을 고려해 보세요.
  1. CreateRestoreImageTask를 사용해 대상 파티션의 S3 버킷에서 AMI를 복원합니다. 이 예시에서 S3 버킷은 us-gov-east-1에 있어요.
  2. AMI를 설명해 상태가 available이 되는 시점을 확인하며 복원 태스크의 진행 상황을 모니터링합니다. 복원된 AMI를 구성하는 스냅샷을 설명해 진행률(%)을 모니터링할 수도 있어요.

AMI 보관용 복사본 만들기

AMI를 S3 버킷에 저장해 보관용 복사본을 만들 수 있어요. AMI는 S3에서 단일 객체로 압축(packed)되고, 공유 정보를 제외한 모든 AMI 메타데이터가 저장된 AMI의 일부로 보존돼요. AMI 데이터는 저장 과정에서 압축돼요. 쉽게 압축되는 데이터를 포함한 AMI는 S3에서 더 작은 객체가 돼요. 비용을 줄이려면 저렴한 S3 스토리지 계층을 사용할 수 있어요. 자세한 내용은 Amazon S3 Storage Classes와 Amazon S3 pricing을 참고하세요.

제한 사항

  • AMI를 저장하려면 AWS 계정이 AMI와 그 스냅샷을 소유하거나, AMI와 스냅샷이 계정과 직접 공유되어 있어야 해요. 공개적으로 공유된 경우에는 AMI를 저장할 수 없어요.
  • 이 API로는 EBS 백킹 AMI만 저장할 수 있어요.
  • 반가상화(PV) AMI는 지원되지 않아요.
  • 저장할 수 있는 AMI 크기(압축 전)는 5,000 GB로 제한돼요.
  • 스토어 이미지 요청 할당량: 진행 중인 스토리지 작업(스냅샷 데이터) 1,200 GB.
  • 복원 이미지 요청 할당량: 진행 중인 복원 작업(스냅샷 데이터) 600 GB.
  • 스토어 태스크가 진행되는 동안 스냅샷을 삭제하면 안 되고, 스토어를 수행하는 IAM 프린시펄(principal)이 스냅샷에 접근할 수 있어야 해요. 그렇지 않으면 스토어 과정이 실패해요.
  • 같은 S3 버킷에 AMI의 복사본을 여러 개 만들 수 없어요.
  • S3 버킷에 저장된 AMI는 원래 AMI ID로 복원할 수 없어요. **AMI 별칭 지정(AMI aliasing)**을 사용하면 이 문제를 완화할 수 있어요.
  • 현재 store/restore API는 AWS Command Line Interface, AWS SDK, Amazon EC2 API로만 사용할 수 있어요. Amazon EC2 콘솔에서는 AMI를 저장·복원할 수 없어요.

비용

S3를 사용해 AMI를 저장·복원할 때는 store/restore API가 사용하는 서비스와 데이터 전송에 대한 비용이 청구돼요. 이 API는 S3와 EBS Direct API(스냅샷 데이터에 접근하기 위해 내부적으로 사용)를 사용해요. 자세한 내용은 Amazon S3 pricing과 Amazon EBS pricing을 참고하세요.

더 알아보기

  • AMI 복사가 동작하는 방식
  • AMI 저장·복원이 동작하는 방식