

# Amazon EC2 AMI 수명 주기
<a name="ami-lifecycle"></a>

Amazon Machine Image(AMI)는 인스턴스를 설정하고 부팅하는 데 필요한 소프트웨어 구성이 들어 있는 이미지입니다. 인스턴스를 시작할 때 AMI를 지정해야 합니다. Amazon에서 제공하는 AMI를 사용하거나 자체 AMI를 생성할 수 있습니다. AMI는 인스턴스를 시작하려는 AWS 리전에 위치해야 합니다.

AMI의 수명 주기에는 AMI 생성, 복사, 사용 중단, 비활성화 및 삭제(등록 취소)가 포함됩니다.

**AMI를 생성합니다.** Amazon에서는 인스턴스를 시작하는 데 사용할 수 있는 AMI를 제공하지만, 필요에 맞게 사용자 지정 AMI를 생성할 수도 있습니다. 사용자 지정 AMI를 생성하려면 기존 AMI에서 인스턴스를 시작하고 인스턴스를 사용자 지정한 다음(예: 소프트웨어 설치 및 운영 체제 설정 구성) 인스턴스에서 AMI를 생성합니다. 모든 인스턴스 사용자 지정은 새 AMI에 저장되므로 새 AMI에서 시작하는 인스턴스에 이러한 사용자 지정이 포함됩니다.

**증명 가능한 AMI.** EC2 인스턴스 증명을 지원하는 AMI를 생성하려면 [증명 가능한 AMI](attestable-ami.md) 섹션을 참조하세요.

**AMI를 복사합니다.** AMI를 사용하여 AMI가 위치한 AWS 리전에서만 인스턴스를 시작할 수 있습니다. 여러 리전에서 동일한 구성으로 인스턴스를 시작해야 하는 경우 다른 리전에 AMI를 복사합니다.

**AMI를 사용 중단합니다.** AMI를 대체되거나 오래된 것으로 표시하려면 즉시 또는 향후 사용 중단 날짜를 설정할 수 있습니다. 사용되지 않는 AMI는 AMI 목록에서 숨겨지지만, 사용자와 서비스가 AMI ID를 알고 있는 경우 사용되지 않는 AMI를 계속 사용할 수 있습니다.

**AMI를 비활성화합니다.** AMI의 임시 사용을 방지하기 위해 AMI를 비활성화할 수 있습니다. 비활성화한 AMI는 새 인스턴스를 시작하는 데 사용할 수 없습니다. 그러나 AMI를 다시 활성화하면 인스턴스를 시작하는 데 다시 사용할 수 있습니다. AMI를 비활성화해도 AMI에서 이미 시작된 기존 인스턴스에는 영향을 주지 않습니다.

**AMI를 등록 취소(삭제)합니다.** AMI가 더 이상 필요하지 않으면 등록을 취소하여 새 인스턴스를 시작하는 데 사용되지 않도록 할 수 있습니다. AMI가 보존 규칙과 일치하면 해당 AMI는 휴지통으로 이동되고, 보존 기간이 만료되기 전에는 복원 가능하며, 기간이 만료된 후에는 영구적으로 삭제됩니다. 보존 규칙과 일치하지 않으면 즉시 영구적으로 삭제됩니다. AMI를 등록 취소해도 AMI에서 시작된 기존 인스턴스에는 영향이 없습니다.

**AMI 수명 주기를 자동화합니다.** Amazon Data Lifecycle Manager를 사용하여 Amazon EBS 지원 AMI와 해당하는 백업 스냅샷의 생성, 보존, 복사, 사용 중단 및 등록 취소를 자동화할 수 있습니다. EC2 Image Builder를 사용하여 사용자 지정 AMI의 생성, 관리, 배포를 자동화할 수도 있습니다. 자세한 내용은 *Amazon EBS 사용 설명서*와 [EC2 Image Builder 사용 설명서](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)의 [Amazon Data Lifecycle Manager를 사용하여 백업 자동화](https://docs.aws.amazon.com/ebs/latest/userguide/snapshot-lifecycle.html)를 참조하세요.

**Topics**
+ [AMI 생성](creating-an-ami-ebs.md)
+ [Amazon S3 지원 AMI 생성](creating-an-ami-instance-store.md)
+ [Windows Sysprep을 사용하여 AMI 생성](ami-create-win-sysprep.md)
+ [AMI 복사](CopyingAMIs.md)
+ [AMI 저장 및 복원](ami-store-restore.md)
+ [AMI 계보](ami-ancestry.md)
+ [AMI 사용](ec2-ami-usage.md)
+ [AMI 사용 중지](ami-deprecate.md)
+ [AMI 비활성화](disable-an-ami.md)
+ [AMI 등록 취소](deregister-ami.md)

# Amazon EBS 지원 AMI 생성
<a name="creating-an-ami-ebs"></a>

Amazon EC2 인스턴스 또는 Amazon EC2 인스턴스의 루트 볼륨 스냅샷에서 고유 Amazon EBS 지원 AMI를 생성할 수 있습니다.

인스턴스에서 Amazon EBS 지원 AMI를 생성하려면 기존 Amazon EBS 지원 AMI를 사용하여 인스턴스를 시작합니다. 이 AMI는 [VM Import/Export](https://docs.aws.amazon.com/vm-import/latest/userguide/what-is-vmimport.html)를 사용하여 생성한 AWS Marketplace에서 받은 AMI 또는 액세스할 수 있는 기타 AMI일 수 있습니다. 특정 요구 사항에 맞게 인스턴스를 사용자 지정한 후 새 AMI를 생성하고 등록합니다. 그런 다음 새 AMI를 사용하여 사용자 지정이 있는 새 인스턴스를 시작할 수 있습니다.

**참고**  
EC2 인스턴스 증명을 지원하는 AMI를 생성하려면 [증명 가능한 AMI](attestable-ami.md) 섹션을 참조하세요.

아래에 설명된 절차는 암호화된 Amazon Elastic Block Store(Amazon EBS) 볼륨(루트 볼륨 포함) 및 암호화되지 않은 볼륨에서 지원되는 Amazon EC2 인스턴스에 작동합니다.

이 AMI의 생성 과정은 Amazon S3 지원 AMI와 다릅니다. 자세한 내용은 [Amazon S3 지원 AMI 생성](creating-an-ami-instance-store.md) 섹션을 참조하세요.

**Topics**
+ [인스턴스에서 AMI 생성 개요](#process-creating-an-ami-ebs)
+ [인스턴스에서 AMI 생성](#how-to-create-ebs-ami)
+ [스냅샷에서 AMI 생성](#creating-launching-ami-from-snapshot)

## 인스턴스에서 AMI 생성 개요
<a name="process-creating-an-ami-ebs"></a>

다음 다이어그램은 실행 중인 EC2 인스턴스에서 Amazon EBS 지원 AMI를 생성하는 프로세스를 요약합니다. 기존 AMI로 시작하고, 인스턴스를 시작하고, 사용자 지정하고, 새 AMI를 생성하고, 마지막으로 새 AMI의 인스턴스를 시작합니다. 다이어그램의 숫자는 다음 설명의 숫자와 일치합니다.

![\[인스턴스에서 AMI를 생성하기 위한 워크플로\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/running-instance.png)


**1 – AMI \$11: 기존 AMI로 시작**  
생성하려는 AMI와 유사한 기존 AMI를 찾습니다. 이는 AWS Marketplace에서 받은 AMI, [VM Import/Export](https://docs.aws.amazon.com/vm-import/latest/userguide/what-is-vmimport.html)를 사용하여 생성한 AMI 또는 액세스할 수 있는 기타 AMI일 수 있습니다. 필요에 맞게 이 AMI를 사용자 지정합니다.  
다이어그램에서 **EBS 루트 볼륨 스냅샷 \$11(EBS root volume snapshot \$11)**은 AMI가 Amazon EBS 지원 AMI이고 루트 볼륨에 대한 정보가 이 스냅샷에 저장됨을 나타냅니다.

**2 – 기존 AMI에서 인스턴스 시작**  
AMI를 구성하는 방법은 새 AMI의 기반이 될 AMI에서 인스턴스를 시작한 다음 인스턴스를 사용자 지정하는 것입니다(다이어그램에서 **3**에 표시됨). 그런 다음 사용자 지정을 포함하는 새 AMI를 생성합니다(다이어그램에서 **4**에 표시됨).

**3 - EC2 인스턴스 \$11: 인스턴스 사용자 지정**  
인스턴스에 연결하고 필요에 맞게 인스턴스를 사용자 지정합니다. 새 AMI에 이러한 사용자 지정이 포함됩니다.  
인스턴스에서 다음과 같은 작업을 수행하여 인스턴스를 사용자 지정할 수 있습니다.  
+ 소프트웨어 및 애플리케이션 설치
+ 데이터 복사
+ 임시 파일 삭제, 하드 드라이브 조각 모음을 통한 시작 속도 향상
+ 추가 EBS 볼륨 연결

**4 – 이미지 생성**  
인스턴스에서 AMI를 생성할 때 Amazon EC2는 인스턴스의 모든 기능을 중지하여 생성 프로세스 중 일관된 상태를 유지하기 위해 AMI를 생성하기 전에 인스턴스의 전원을 차단합니다. 인스턴스가 AMI 생성에 적합한 일관된 상태를 유지하는 경우 전원을 차단하지 않고 인스턴스를 재부팅하도록 Amazon EC2를 설정할 수 있습니다. 일부 파일 시스템(예: XFS)에서는 활동을 동결 및 동결 해제하여 인스턴스를 재부팅하지 않고 이미지를 안전하게 생성할 수 있습니다.  
AMI 생성 프로세스 중에 Amazon EC2는 인스턴스의 루트 볼륨과 인스턴스에 연결된 다른 EBS 볼륨의 스냅샷을 생성합니다. [AMI 등록을 해제](deregister-ami.md)하고 스냅샷을 삭제할 때까지는 스냅샷에 대한 요금이 부과됩니다. 인스턴스에 연결된 볼륨이 암호화된 경우 새 AMI는 Amazon EBS 암호화를 지원하는 인스턴스에서만 시작됩니다.  
볼륨의 크기에 따라 AMI 생성 프로세스를 완료하는 데 몇 분 정도 걸리지만 경우에 따라 24시간까지 걸릴 수도 있습니다. AMI를 생성하기 전에 볼륨의 스냅샷을 생성하는 것이 더 효율적일 수 있습니다. 이처럼 AMI를 생성할 때 작은 증분적 스냅샷만 만들어야 프로세스가 더 빠르게 완료됩니다. 스냅샷을 만드는 데 걸리는 전체 시간은 동일하게 유지됩니다.

**5 - AMI \$12: 새 AMI**  
프로세스가 완료되면 인스턴스의 루트 볼륨에서 새 AMI 및 스냅샷(**스냅샷 \$12(snapshot \$12)**)이 생성됩니다. 인스턴스 저장소 볼륨 또는 EBS 볼륨을 인스턴스에 추가한 경우 루트 볼륨 외에 새 AMI에 대한 블록 디바이스 매핑에 이러한 볼륨 관련 정보가 포함됩니다.  
Amazon EC2는 자동으로 AMI를 등록합니다.

**6 – 새 AMI에서 인스턴스 시작**  
새 AMI를 사용하여 인스턴스를 시작할 수 있습니다.

**7 - EC2 인스턴스 \$12: 새 인스턴스**  
새 AMI를 사용하여 인스턴스를 시작하면 Amazon EC2는 스냅샷을 사용하여 인스턴스의 루트 볼륨에 대한 새 EBS 볼륨을 생성합니다. 인스턴스를 사용자 지정할 때 인스턴스 저장소 볼륨 또는 EBS 볼륨을 추가한 경우 새 AMI에 대한 블록 디바이스 매핑에 이러한 볼륨 관련 정보가 포함되고, 새 AMI에서 시작하는 인스턴스에 대한 블록 디바이스 매핑에 이러한 볼륨 관련 정보가 자동으로 포함됩니다. 새 인스턴스에 대한 블록 디바이스 매핑에 지정된 인스턴스 스토어 볼륨은 새 볼륨이므로 AMI를 생성하는 데 사용된 인스턴스에 대한 인스턴스 스토어 볼륨의 데이터가 포함되어 있지 않습니다. EBS 볼륨의 데이터는 유지됩니다. 자세한 내용은 [Amazon EC2 인스턴스의 볼륨에 대한 블록 디바이스 매핑](block-device-mapping-concepts.md) 섹션을 참조하세요.  
EBS 지원 AMI에서 새 인스턴스를 만들 때는 루트 볼륨과 추가 EBS 저장소를 모두 프로덕션 환경에 배치하기 전에 초기화해야 합니다. 자세한 내용은 *Amazon EBS 사용 설명서*의 [Initialize Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-initialize.html)를 참조하세요.

## 인스턴스에서 AMI 생성
<a name="how-to-create-ebs-ami"></a>

기존 인스턴스가 있는 경우 이 인스턴스에서 AMI를 생성할 수 있습니다.

------
#### [ Console ]

**API 생성**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. AMI를 생성할 인스턴스를 선택하고 **Actions**(작업), **Image and templates**(이미지 및 템플릿), **Create image**(이미지 생성)를 차례로 선택합니다.
**작은 정보**  
이 옵션이 비활성화되어 있다면 Amazon EBS 지원 인스턴스가 아님을 의미합니다.

1. **Create image**(이미지 생성) 페이지에서 다음 정보를 지정합니다.

   1. **Image name**(이미지 이름)에 이미지의 고유 이름을 최대 127자로 입력합니다.

   1. **Image description**(이미지 설명)에 이미지에 대한 선택적 설명을 최대 255자로 입력합니다.

   1. **인스턴스 재부팅**의 경우 확인란을 선택된 상태로 두거나(기본값) 선택을 취소합니다.
      + **인스턴스 재부팅**을 선택하면 Amazon EC2가 새 AMI를 생성할 때 인스턴스가 재부팅되므로, 데이터가 사용되지 않는 동안 연결된 볼륨의 스냅샷을 생성하여 일관된 상태를 유지할 수 있습니다.
      + **인스턴스 재부팅** 선택을 취소하면 Amazon EC2가 새 AMI를 생성할 때 인스턴스가 종료되거나 재부팅되지 않습니다.
**주의**  
**인스턴스 재부팅** 선택을 취소하는 경우 생성된 이미지의 파일 시스템 무결성을 보장할 수 없습니다.

   1. **Instance volumes**(인스턴스 볼륨) - 다음과 같이 루트 볼륨을 수정하고, Amazon EBS 및 인스턴스 스토어 볼륨을 추가할 수 있습니다.

      1. 루트 볼륨은 첫 번째 행에 정의됩니다.
         + 루트 볼륨의 크기를 변경하려면 [**크기(Size)**] 에 필요한 값을 입력합니다.
         + [**종료 시 삭제 여부(Delete on termination)**]를 선택할 경우 이 AMI에서 생성된 인스턴스를 종료하면 EBS 볼륨이 삭제됩니다. [**종료 시 삭제 여부(Delete on termination)**]를 선택 취소할 경우 인스턴스를 종료하면 EBS 볼륨이 삭제되지 않습니다. 자세한 내용은 [인스턴스가 종료될 때 데이터 보존](preserving-volumes-on-termination.md) 섹션을 참조하세요.

      1. EBS 볼륨을 추가하려면 [**볼륨 추가(Add volume)**]를 선택합니다(새 행이 추가됨). **스토리지 유형**에서 **EBS**를 선택하고 행의 필드를 작성합니다. 새 AMI에서 인스턴스를 시작하면 추가 볼륨이 인스턴스에 자동으로 연결됩니다. 빈 볼륨은 반드시 포맷하고 탑재해야 합니다. 스냅샷 기반 볼륨을 반드시 마운트해야 합니다.

      1. 인스턴스 스토어 볼륨을 추가하려면 [Amazon EC2 AMI에 인스턴스 스토어 볼륨 추가](adding-instance-storage-ami.md)를 참조하세요. 새 AMI에서 인스턴스를 시작하면 추가 볼륨이 자동으로 시작되어 탑재됩니다. 이러한 볼륨에는 AMI를 기반으로 하는 실행 중인 인스턴스에 대한 인스턴스 스토어 볼륨의 데이터가 포함되어 있지 않습니다.

   1. **스냅샷 대상** - 인스턴스 볼륨이 EBS 로컬 스냅샷을 지원하는 로컬 영역에 있는 경우 AMI의 스냅샷을 생성할 위치를 선택합니다.
      + **AWS 리전**: 볼륨이 위치한 로컬 영역의 상위 리전에 스냅샷을 생성합니다.
      + **AWS 로컬 영역**: 볼륨과 동일한 로컬 영역에 스냅샷을 생성합니다.
**참고**  
이 옵션은 EBS 로컬 스냅샷을 지원하는 로컬 영역에만 나타나며 인스턴스가 로컬 영역에 생성된 경우에만 나타납니다. 볼륨이 리전에 있는 경우 이 옵션은 표시되지 않으며 스냅샷은 볼륨과 동일한 리전에 자동으로 생성됩니다. 자세한 내용은 *Amazon EBS 사용 설명서*에서 [로컬 영역의 로컬 스냅샷](https://docs.aws.amazon.com/ebs/latest/userguide/snapshots-localzones.html)을 참조하세요.
**중요**  
인스턴스 볼륨의 모든 스냅샷은 동일한 위치에 있어야 합니다. 기존 스냅샷의 위치를 확인합니다. 기존 스냅샷이 선택한 대상과 다른 위치에 있는 경우 AMI 생성이 실패합니다.

   1. **[태그(Tags)]** - 동일한 태그 또는 다른 태그를 사용하여 AMI와 스냅샷을 태깅할 수 있습니다.
      + AMI와 스냅샷에 *동일한* 태그를 지정하려면 [**이미지와 스냅샷을 함께 태깅(Tag image and snapshots together)**]을 선택합니다. 생성된 AMI와 모든 스냅샷에 동일한 태그가 적용됩니다.
      + AMI와 스냅샷에 *다른* 태그를 지정하려면 [**이미지 및 스냅샷을 개별적으로 태깅(Tag image and snapshots separately)**]을 선택합니다. 생성된 AMI와 스냅샷에 서로 다른 태그가 적용됩니다. 그러나 모든 스냅샷의 태그는 동일하며 각 스냅샷에 다른 태그를 지정할 수는 없습니다.

      태그를 추가하려면 [**태그 추가(Add tag)**]를 선택하고 해당 태그에 대한 키와 값을 입력합니다. 각 태그에 대해 반복합니다.

   1. AMI를 생성할 준비가 되면 **Create image**(이미지 생성)를 선택합니다.

1. 생성 중인 AMI의 상태를 보려면

   1. 탐색 창에서 **AMI**를 선택합니다.

   1. 필터를 **Owned by me**(내 소유)로 설정하고 목록에서 AMI를 찾습니다.

      처음에 상태는 `pending`이지만 몇 분 후에 `available`로 변경되어야 합니다.

1. (선택 사항) 새 AMI에 대해 생성된 스냅샷을 보려면

   1. 이전 단계에서 찾은 AMI의 ID를 기록해 둡니다.

   1. 탐색 창에서 **스냅샷**을 선택합니다.

   1. 필터를 **Owned by me**(내 소유)로 설정한 다음 **Description**(설명) 열에 새 AMI ID가 있는 스냅샷을 찾습니다.

      이 AMI에서 인스턴스를 시작할 때, Amazon EC2가 이 스냅샷을 사용하여 인스턴스의 루트 볼륨을 생성합니다.

------
#### [ AWS CLI ]

**API 생성**  
[create-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html) 명령을 사용합니다.

```
aws ec2 create-image \
    --instance-id i-1234567890abcdef0 \
    --name "my-web-server" \
    --description "My web server image" \
    --no-reboot
```

------
#### [ PowerShell ]

**API 생성**  
[New-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Image.html) cmdlet을 사용합니다.

```
New-EC2Image `
    -InstanceId i-1234567890abcdef0 ` 
    -Name "my-web-server" `
    -Description "My web server image" `
    -NoReboot $true
```

------

## 스냅샷에서 AMI 생성
<a name="creating-launching-ami-from-snapshot"></a>

인스턴스의 루트 볼륨에 대한 스냅샷이 있으면 이 스냅샷에서 AMI를 생성할 수 있습니다.

**참고**  
대부분의 경우 Windows, Red Hat, SUSE 및 SQL Server용 AMI를 사용하려면 AMI에 올바른 라이선스 정보가 있어야 합니다. 자세한 내용은 [AMI 결제 정보 이해](ami-billing-info.md) 섹션을 참조하세요. 스냅샷에서 AMI를 생성할 때 `RegisterImage` 작업은 스냅샷의 메타데이터에서 올바른 결제 정보를 가져오지만, 이를 위해서는 적절한 메타데이터가 있어야 합니다. 올바른 결제 정보가 적용되었는지 확인하려면 새 AMI의 **플랫폼 세부 정보** 필드를 확인합니다. 필드가 비어 있거나 예상 운영 체제 코드(예: Windows, Red Hat, SUSE 또는 SQL)와 일치하지 않는 경우 AMI 생성에 실패한 것이므로 AMI를 삭제하고 [인스턴스에서 AMI 생성](#how-to-create-ebs-ami)의 지침을 따라야 합니다.

------
#### [ Console ]

**스냅샷에서 AMI 생성**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 [**스냅샷(Snapshots)**]을 선택합니다.

1. AMI를 생성할 스냅샷을 선택하고 **Actions**(작업), **Create image from snapshot**(스냅샷에서 이미지 생성)을 선택합니다.

1. **스냅샷에서 이미지 생성** 페이지에서 다음 정보를 지정합니다.

   1. **이미지 이름(Image name)**에 이미지를 설명하는 이름을 입력합니다.

   1. **설명(Description)**에 이미지에 대한 간략한 설명을 입력합니다.

   1. **아키텍처(Architecture)**에 대해 이미지 아키텍처를 선택합니다. 32비트의 경우 **i386**, 64비트의 경우 **x86\$164**, 64비트 ARM의 경우 **arm64**, 64비트 macOS의 경우 **x86\$164**를 선택하세요.

   1. **루트 디바이스 이름**에서 루트 볼륨에 사용할 디바이스 이름을 입력합니다. 자세한 내용은 [Amazon EC2 인스턴스의 볼륨 디바이스 이름](device_naming.md) 섹션을 참조하세요.

   1. **가상화 유형(Virtualization type)**에서 이 AMI에서 시작된 인스턴스에서 사용할 가상화 유형을 선택합니다. 자세한 내용은 [가상화 유형](ComponentsAMIs.md#virtualization_types) 섹션을 참조하세요.

   1. (반가상화 가상화에만 해당) **커널 ID(Kernel ID)**에서 이미지의 운영 체제 커널을 선택합니다. 인스턴스의 루트 볼륨 스냅샷을 사용하는 경우 원래 인스턴스와 동일한 커널 ID를 선택합니다. 확실하지 않다면 기본 커널을 사용하십시오.

   1. (반가상화 가상화에만 해당) **RAM 디스크 ID(RAM disk ID)**에서 이미지의 RAM 디스크를 선택합니다. 특정 커널을 선택할 경우 해당 커널을 지원하는 드라이버가 설치된 특정 RAM 디스크를 선택해야 합니다.

   1. **부트 모드**에서 이미지의 부트 모드를 선택하거나, 이 AMI로 인스턴스가 시작될 때 인스턴스 유형에서 지원하는 부트 모드로 부팅되도록 **기본값 사용**을 선택합니다. 자세한 내용은 [Amazon EC2 AMI의 부팅 모드 설정](set-ami-boot-mode.md) 섹션을 참조하세요.

   1. (선택 사항) **블록 디바이스 매핑**에서 루트 볼륨을 사용자 지정하고 데이터 볼륨을 더 추가합니다.

      각 볼륨에 대해 크기, 유형, 성능 특성, 종료 시 삭제 동작 및 암호화 상태를 지정할 수 있습니다. 루트 볼륨의 경우 크기는 스냅샷의 크기보다 작을 수 없습니다. 볼륨 유형의 경우 범용 SSD `gp3`이 기본 선택 사항입니다.

   1. (선택 사항) **태그**에서 새 AMI에 하나 이상의 태그를 추가할 수 있습니다. 태그를 추가하려면 [**태그 추가(Add tag)**]를 선택하고 해당 태그에 대한 키와 값을 입력합니다. 각 태그에 대해 반복합니다.

   1. AMI를 생성할 준비가 되면 **Create image**(이미지 생성)를 선택합니다.

1. (Windows, Red Hat, SUSE, SQL Server 전용) 올바른 결제 정보가 적용되었는지 확인하려면 새 AMI의 **플랫폼 세부 정보** 필드를 확인합니다. 필드가 비어 있거나 예상 운영 체제 코드(예: **Windows** 또는 **Red Hat**)와 일치하지 않는 경우 AMI 생성에 실패한 것이므로 AMI를 삭제하고 [인스턴스에서 AMI 생성](#how-to-create-ebs-ami)의 지침을 따라야 합니다.

------
#### [ AWS CLI ]

**AWS CLI를 사용하여 스냅샷에서 AMI를 생성하려면 다음을 수행하세요.**  
[register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) 명령을 사용합니다.

```
aws ec2 register-image \
    --name my-image \
    --root-device-name /dev/xvda \
    --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0db2cf683925d191f}
```

------
#### [ PowerShell ]

**PowerShell을 사용하여 스냅샷에서 AMI를 생성하려면 다음을 수행하세요.**  
[Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) cmdlet을 사용합니다.

```
$block = @{SnapshotId=snap-0db2cf683925d191f}
Register-EC2Image `
    -Name my-image `
    -RootDeviceName /dev/xvda `
    -BlockDeviceMapping @{DeviceName="/dev/xvda";Ebs=$block}
```

------

# Amazon S3 지원 AMI 생성
<a name="creating-an-ami-instance-store"></a>

루트 볼륨 유형은 인스턴스를 시작할 때 지정한 AMI에 따라 결정됩니다.

Amazon S3 지원 Linux AMI를 생성하려면 기존 Amazon S3 지원 Linux AMI에서 시작한 인스턴스에서 시작합니다. 필요에 맞게 인스턴스를 사용자 지정한 후에는 볼륨을 번들링하고 이러한 사용자 지정을 적용하여 새 인스턴스를 시작하는 데 사용할 수 있는 새 AMI를 등록합니다.

Windows AMI는 루트 볼륨에 대한 인스턴스 저장소를 지원하지 않으므로 Amazon S3 지원 Windows AMI를 생성할 수 없습니다.

**중요**  
C1, C3, D2, I2, M1, M2, M3, R3, X1 인스턴스 유형만 인스턴스 저장소 볼륨을 루트 볼륨으로 지원하며, Amazon S3 지원 AMI가 필요합니다.

이 AMI의 생성 과정은 Amazon EBS 지원 AMI와 다릅니다. 자세한 내용은 [Amazon EBS 지원 AMI 생성](creating-an-ami-ebs.md) 섹션을 참조하세요.

**Topics**
+ [AMI 생성 개요](#process-creating-an-ami-instance-store)
+ [사전 조건](#bundle-ami-prerequisites)
+ [Amazon Linux 인스턴스에서 AMI 생성](#amazon_linux_instructions)
+ [Amazon EC2 AMI 도구 설정](set-up-ami-tools.md)
+ [Amazon EC2 AMI 도구 참조](ami-tools-commands.md)
+ [Amazon S3 지원 AMI를 EBS 지원 AMI로 변환](Using_ConvertingS3toEBS.md)

## AMI 생성 개요
<a name="process-creating-an-ami-instance-store"></a>

다음 다이어그램은 인스턴스 저장소 루트 볼륨이 있는 인스턴스에서 AMI를 만드는 프로세스를 요약한 것입니다.

![\[Amazon S3 지원 AMI를 생성합니다.\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/ami_create_instance_store.png)


우선 만들려는 AMI와 비슷한 AMI에서 인스턴스를 시작합니다. 인스턴스에 연결하여 인스턴스를 사용자 지정할 수 있습니다. 인스턴스가 원하는 대로 설정되었으면 이 인스턴스를 번들링할 수 있습니다. 번들링 프로세스가 완료되는 데 몇 분 정도 걸립니다. 프로세스가 완료된 후에는 이미지 매니페스트(`image.manifest.xml`)와 루트 볼륨 템플릿을 포함하는 파일(`image.part.`*xx*)로 구성된 번들이 만들어집니다. 그 다음에는 이 번들을 Amazon S3 버킷으로 업로드하고 AMI를 등록합니다.

**참고**  
Amazon S3 지원 Linux AMI의 S3 버킷에 객체를 업로드하려면 버킷에 대해 ACL을 사용하도록 설정해야 합니다. 그렇지 않으면 Amazon EC2는 업로드할 객체에 ACL을 설정할 수 없습니다. 대상 버킷에서 S3 객체 소유권에 대해 버킷 소유자 강제 설정을 사용하는 경우 ACL이 비활성화되어 있으므로 이 설정은 작동하지 않습니다. 자세한 내용은 [객체 소유권 제어 및 버킷에 대해 ACL 사용 중지](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)를 참조하십시오.

새 AMI를 사용하여 인스턴스를 시작하는 경우 Amazon S3으로 업로드한 번들을 사용하여 인스턴스용 루트 볼륨이 생성됩니다. Amazon S3의 번들에 사용된 스토리지 공간에 대해 사용자가 삭제할 때까지 사용자 계정에 요금이 발생합니다. 자세한 내용은 [Amazon EC2 AMI 등록 취소](deregister-ami.md) 섹션을 참조하세요.

루트 볼륨 외에도 인스턴스에 인스턴스 저장소 볼륨을 추가하는 경우, 새 AMI에 대한 블록 디바이스 매핑과 새 AMI에서 시작하는 인스턴스에 대한 블록 디바이스 매핑에 이러한 볼륨에 대한 정보가 포함됩니다. 자세한 내용은 [Amazon EC2 인스턴스의 볼륨에 대한 블록 디바이스 매핑](block-device-mapping-concepts.md) 섹션을 참조하세요.

## 사전 조건
<a name="bundle-ami-prerequisites"></a>

AMI를 만들려면 먼저 다음 작업을 완료해야 합니다.
+ AMI 도구를 설치합니다. 자세한 내용은 [Amazon EC2 AMI 도구 설정](set-up-ami-tools.md) 섹션을 참조하세요.
+ AWS CLI를 설치합니다. 자세한 내용은 [AWS CLI 시작하기](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)를 참조하세요.
+ 번들용 S3 버킷이 있고 버킷에 ACL이 활성화되어 있는지 확인합니다. ACL 구성에 대한 자세한 내용은 [ACL 구성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)을 참조하세요.
  + AWS Management Console을 사용하여 S3 버킷에 폴더를 생성하려면 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 열고 **버킷 생성**을 선택합니다.
  + AWS CLI을 사용하여 S3 버킷을 생성하려면 [mb](https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html) 명령을 사용할 수 있습니다. 설치된 AMI 도구 버전이 1.5.18 이상일 경우 `ec2-upload-bundle` 명령을 사용하여 S3 버킷을 생성할 수도 있습니다. 자세한 내용은 [ec2-upload-bundle](ami-tools-commands.md#ami-upload-bundle) 섹션을 참조하세요.
+ 번들의 파일이 S3 버킷에서 암호화되지 않았는지 확인합니다. AMI에 암호화가 필요한 경우 EBS 지원 AMI를 대신 사용할 수 있습니다. 자세한 내용은 [EBS-backed AMI에서 암호화 사용](AMIEncryption.md) 섹션을 참조하세요.
+ AWS 계정 ID가 있어야 합니다. 자세한 내용은 **AWS Account Management 참조 안내서의 [View AWS 계정 identifiers](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html)를 참조하세요.
+ AWS CLI를 사용하기 위한 자격 증명이 있는지 확인합니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 인증 및 액세스 제어](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html)를 참조하세요.
+ X.509 인증서와 그에 따른 프라이빗 키가 있어야 합니다.
  + X.509 인증서를 만들어야 할 경우 [서명 인증서 관리](set-up-ami-tools.md#ami-tools-managing-certs) 단원을 참조하세요. X.509 인증서 및 프라이빗 키는 AMI를 암호화하고 해독하는 데 사용됩니다.
  + [중국(베이징)] `$EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-cn-north-1.pem` 인증서를 사용합니다.
  + [AWS GovCloud(미국 서부)] `$EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-gov.pem` 인증서를 사용합니다.
+ 인스턴스에 연결하여 인스턴스를 사용자 지정합니다. 예를 들어, 소프트웨어 및 애플리케이션을 설치하고, 데이터를 복사하고, 임시 파일을 삭제하고, Linux 구성을 수정할 수 있습니다.

## Amazon Linux 인스턴스에서 AMI 생성
<a name="amazon_linux_instructions"></a>

다음 절차에서는 Amazon Linux 1을 실행하는 인스턴스 저장소 루트 볼륨이 있는 인스턴스에서 AMI를 생성하는 방법을 설명합니다. 다른 Linux 배포를 실행하는 인스턴스에서는 작동하지 않을 수 있습니다.

**AMI 도구 사용을 준비하려면(HVM 인스턴스에만 해당)**

1. AMI 도구를 올바르게 부팅하려면 GRUB Legacy가 필요합니다. 다음 명령을 사용하여 GRUB을 설치합니다.

   ```
   [ec2-user ~]$ sudo yum install -y grub
   ```

1. 다음 명령을 사용하여 파티션 관리 패키지를 설치합니다.

   ```
   [ec2-user ~]$ sudo yum install -y gdisk kpartx parted
   ```

**인스턴스 저장소 루트 볼륨이 있는 Amazon Linux 인스턴스에서 AMI를 생성하려면**

이 절차에서는 [사전 조건](#bundle-ami-prerequisites)의 사전 조건을 충족한다고 가정합니다.

다음 명령에서는 자신의 정보로 각각의 *사용자 입력 자리 표시자*를 바꿉니다.

1. 인스턴스에 자격 증명을 업로드합니다. 이러한 자격 증명은 사용자와 Amazon EC2만 사용자의 AMI에 액세스할 수 있음을 보장하는 데 사용됩니다.

   1. 다음과 같이 인스턴스에서 자격 증명에 대한 임시 디렉터리를 생성합니다.

      ```
      [ec2-user ~]$ mkdir /tmp/cert
      ```

      이렇게 하면 생성된 이미지에서 자격 증명을 제외할 수 있습니다.

   1. [scp](linux-file-transfer-scp.md) 등의 보안 복사 도구를 사용하여 컴퓨터의 X.509 인증서와 해당 프라이빗 키를 인스턴스의 `/tmp/cert` 디렉터리로 복사합니다. 다음 `-i my-private-key.pem` 명령의 **scp** 옵션은 X.509 프라이빗 키가 아니라 SSH를 사용하여 인스턴스에 연결하는 데 사용되는 프라이빗 키입니다. 예:

      ```
      you@your_computer:~ $ scp -i my-private-key.pem /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem /path/to/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem ec2-user@ec2-203-0-113-25.compute-1.amazonaws.com:/tmp/cert/
      pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem  100%  717     0.7KB/s   00:00
      cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem  100%  685     0.7KB/s   00:00
      ```

   또는 이들은 일반 텍스트 파일이므로 텍스트 편집기에서 인증서와 키를 열고 내용을 `/tmp/cert`의 새 파일로 복사할 수 있습니다.

1. <a name="step_with_bundle_path_amazon_linux"></a>인스턴스 내에서 [ec2-bundle-vol](ami-tools-commands.md#ami-bundle-vol) 명령을 실행하여 Amazon S3로 업로드할 번들을 준비합니다. `-e` 옵션을 지정하여 자격 증명이 저장되어 있는 디렉터리를 제외해야 합니다. 기본적으로 번들 프로세스에는 중요 정보를 포함할 수 있는 파일이 제외됩니다. 값에는 `*.sw`, `*.swo`, `*.swp`, `*.pem`, `*.priv`, `*id_rsa*`, `*id_dsa*` `*.gpg`, `*.jks`, `*/.ssh/authorized_keys` 및 `*/.bash_history`가 포함됩니다. 이러한 파일을 모든 포함하려면 `--no-filter` 옵션을 사용합니다. 이러한 파일 중 일부만 포함하려면 `--include` 옵션을 사용합니다.
**중요**  
기본적으로 AMI 번들링 프로세스에서는 루트 볼륨을 나타내는 `/tmp` 디렉터리에 압축 및 암호화된 파일 모음이 생성됩니다. `/tmp`에 사용 가능한 디스크 공간이 충분하지 않아서 번들을 저장할 수 없으면 `-d /path/to/bundle/storage` 옵션을 사용하여 번들을 저장할 다른 위치를 지정합니다. 인스턴스 중에는 `/mnt` 또는 `/media/ephemeral0`에 사용자가 사용할 수 있는 휘발성 스토리지가 탑재된 인스턴스도 있으며, 새 Amazon EBS 볼륨을 생성, 연결 및 탑재하여 번들을 저장할 수도 있습니다. 자세한 내용은 *Amazon EBS 사용 설명서*의 [Create an Amazon EBS volume](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-creating-volume.html)을 참조하세요.

   1. **ec2-bundle-vol** 명령을 루트로 실행해야 합니다. 대부분의 명령에 대해 **sudo**를 사용하여 승격된 권한을 얻을 수 있지만 이 경우 환경 변수를 유지하려면 **sudo -E su**를 실행해야 합니다.

      ```
      [ec2-user ~]$ sudo -E su
      ```

      이제 bash 프롬프트가 사용자를 루트 사용자로 식별하고 달러 기호가 해시 태그로 바뀌어 현재 위치가 루트 셸임을 표시합니다.

      ```
      [root ec2-user]#
      ```

   1. AMI 번들을 실행하려면 다음과 같이 [ec2-bundle-vol](ami-tools-commands.md#ami-bundle-vol) 명령을 실행합니다.

      ```
      [root ec2-user]# ec2-bundle-vol -k /tmp/cert/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c /tmp/cert/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 123456789012 -r x86_64 -e /tmp/cert --partition gpt
      ```
**참고**  
중국(베이징) 및 AWS GovCloud(미국 서부) 리전의 경우 `--ec2cert` 파라미터를 사용하고 [사전 조건](#bundle-ami-prerequisites)에 따라 인증서를 지정합니다.

      이미지가 생성되는 데 몇 분 정도 걸릴 수 있습니다. 이 명령이 완료되면 `/tmp`(또는 기본값이 아닌) 디렉터리에 번들(`image.manifest.xml`과 여러 `image.part.`*xx* 파일)이 포함됩니다.

   1. 루트 셸을 종료합니다.

      ```
      [root ec2-user]# exit
      ```

1. (선택 사항) 인스턴스 스토어 볼륨을 더 추가하려면 AMI의 `image.manifest.xml` 파일에서 블록 디바이스 매핑을 편집합니다. 자세한 내용은 [Amazon EC2 인스턴스의 볼륨에 대한 블록 디바이스 매핑](block-device-mapping-concepts.md) 섹션을 참조하세요.

   1. `image.manifest.xml` 파일의 백업을 만듭니다.

      ```
      [ec2-user ~]$ sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak
      ```

   1. 읽고 편집하기 쉽도록 `image.manifest.xml` 파일의 서식을 다시 설정합니다.

      ```
      [ec2-user ~]$ sudo xmllint --format /tmp/image.manifest.xml.bak > /tmp/image.manifest.xml
      ```

   1. 텍스트 편집기로 `image.manifest.xml`에서 블록 디바이스 매핑을 편집합니다. 아래 예는 `ephemeral1` 인스턴스 스토어 볼륨의 새 항목을 보여 줍니다.
**참고**  
제외 파일 목록은 [ec2-bundle-vol](ami-tools-commands.md#ami-bundle-vol) 단원을 참조하세요.

      ```
          <block_device_mapping>
            <mapping>
              <virtual>ami</virtual>
              <device>sda</device>
            </mapping>
            <mapping>
              <virtual>ephemeral0</virtual>
              <device>sdb</device>
            </mapping>
            <mapping>
              <virtual>ephemeral1</virtual>
              <device>sdc</device>
            </mapping>
            <mapping>
              <virtual>root</virtual>
              <device>/dev/sda1</device>
            </mapping>
          </block_device_mapping>
      ```

   1. `image.manifest.xml` 파일을 저장하고 텍스트 편집기를 종료합니다.

1. Amazon S3에 번들을 업로드하려면 다음과 같이 [ec2-upload-bundle](ami-tools-commands.md#ami-upload-bundle) 명령을 실행합니다.

   ```
   [ec2-user ~]$ ec2-upload-bundle -b amzn-s3-demo-bucket/bundle_folder/bundle_name -m /tmp/image.manifest.xml -a your_access_key_id -s your_secret_access_key
   ```
**중요**  
US East (N. Virginia) 이외 리전에서 AMI를 등록하려면 `--region` 옵션이 있는 대상 리전과 대상 리전에 이미 존재하는 버킷 경로 또는 대상 리전에 생성할 수 있는 고유 버킷 경로를 모두 지정해야 합니다.

1. (선택 사항) 번들을 Amazon S3에 업로드한 후에는 다음 `/tmp` 명령을 사용하여 인스턴스의 **rm** 디렉터리에서 번들을 제거할 수 있습니다.

   ```
   [ec2-user ~]$ sudo rm /tmp/image.manifest.xml /tmp/image.part.* /tmp/image
   ```
**중요**  
`-d /path/to/bundle/storage`에서 [Step 2](#step_with_bundle_path_amazon_linux) 옵션과 함께 경로를 지정한 경우 `/tmp` 대신 해당 경로를 사용합니다.

1. AMI를 등록하려면 다음과 같이 [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) 명령을 사용합니다.

   ```
   [ec2-user ~]$ aws ec2 register-image --image-location amzn-s3-demo-bucket/bundle_folder/bundle_name/image.manifest.xml --name AMI_name --virtualization-type hvm
   ```
**중요**  
이전에 [ec2-upload-bundle](ami-tools-commands.md#ami-upload-bundle) 명령에 리전을 지정한 경우 이 명령에도 해당 리전을 다시 지정하세요.

# Amazon EC2 AMI 도구 설정
<a name="set-up-ami-tools"></a>

AMI 도구를 사용하여 Amazon S3 지원 Linux AMI를 생성하고 관리할 수 있습니다. 도구를 사용하려면 Linux 인스턴스에 이 도구를 설치해야 합니다. AMI 도구는 RPM으로도 설치 가능하고 RPM을 지원하지 않는 Linux 배포판의 경우 .zip 파일로도 설치 가능합니다.

**RPM을 사용하여 AMI 도구를 설치하려면**

1. yum과 같은 Linux 배포용 패키지 관리자를 사용하여 Ruby를 설치합니다. 예:

   ```
   [ec2-user ~]$ sudo yum install -y ruby
   ```

1. wget 또는 curl과 같은 도구를 사용하여 RPM 파일을 다운로드합니다. 예:

   ```
   [ec2-user ~]$ wget https://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm
   ```

1. 다음 명령을 사용하여 RPM 파일의 서명이 활성화되었는지 확인합니다.

   ```
   [ec2-user ~]$ rpm -K ec2-ami-tools.noarch.rpm
   ```

   위의 명령은 파일의 SHA1 및 MD5 해시가 `OK.`임을 나타냅니다. 명령에서 해시가 `NOT OK`임을 나타내면 다음 명령을 사용하여 파일의 헤더 SHA1 및 MD5 해시를 표시합니다.

   ```
   [ec2-user ~]$ rpm -Kv ec2-ami-tools.noarch.rpm
   ```

   그런 다음 파일의 헤더 SHA1 및 MD5 해시를 다음 확인된 AMI 도구 해시와 비교하여 파일의 진위 여부를 확인합니다.
   + 헤더 SHA1: a1f662d6f25f69871104e6a62187fa4df508f880
   + MD5: 9faff05258064e2f7909b66142de6782

   파일의 헤더 SHA1 및 MD5 해시가 확인된 AMI 도구 해시와 일치하면 다음 단계를 계속 진행합니다.

1. 다음 명령을 사용하여 RPM을 설치합니다:

   ```
   [ec2-user ~]$ sudo yum install ec2-ami-tools.noarch.rpm
   ```

1. [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version) 명령을 사용하여 AMI 도구 설치를 확인합니다.

   ```
   [ec2-user ~]$ ec2-ami-tools-version
   ```
**참고**  
"cannot load such file -- ec2/amitools/version (LoadError)"과 같은 로드 오류가 발생하면 다음 단계를 수행하여 AMI 도구 설치 위치를 `RUBYLIB` 경로에 추가합니다.

1. (선택 사항) 이전 단계에서 오류가 발생하면 AMI 도구 설치 위치를 `RUBYLIB` 경로에 추가합니다.

   1. 다음 명령을 실행하여 추가할 경로를 확인합니다.

      ```
      [ec2-user ~]$ rpm -qil ec2-ami-tools | grep ec2/amitools/version
      /usr/lib/ruby/site_ruby/ec2/amitools/version.rb
      /usr/lib64/ruby/site_ruby/ec2/amitools/version.rb
      ```

      위의 예시를 보면 이전 로드 오류에서 없다고 표시된 파일이 `/usr/lib/ruby/site_ruby` 및 `/usr/lib64/ruby/site_ruby`에 위치하고 있습니다.

   1. 이전 단계의 위치를 `RUBYLIB` 경로에 추가합니다.

      ```
      [ec2-user ~]$ export RUBYLIB=$RUBYLIB:/usr/lib/ruby/site_ruby:/usr/lib64/ruby/site_ruby
      ```

   1. [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version) 명령을 사용하여 AMI 도구 설치를 확인합니다.

      ```
      [ec2-user ~]$ ec2-ami-tools-version
      ```

**.zip 파일을 사용하여 AMI 도구를 설치하려면**

1. **apt-get**과 같은 Linux 배포용 패키지 관리자를 사용하여 Ruby를 설치하고 압축을 풉니다. 예:

   ```
   [ec2-user ~]$ sudo apt-get update -y && sudo apt-get install -y ruby unzip
   ```

1. wget 또는 curl과 같은 도구를 사용하여 .zip 파일을 다운로드합니다. 예:

   ```
   [ec2-user ~]$ wget https://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip
   ```

1. 파일의 압축을 적합한 설치 디렉터리(예: `/usr/local/ec2`)에 풉니다.

   ```
   [ec2-user ~]$ sudo mkdir -p /usr/local/ec2
   $ sudo unzip ec2-ami-tools.zip -d /usr/local/ec2
   ```

   .zip 파일에는 ec2-ami-tools-*x*.*x*.*x* 폴더가 있습니다. *x*.*x*.*x*는 도구의 버전 번호입니다(예: `ec2-ami-tools-1.5.7`).

1. `EC2_AMITOOL_HOME` 환경 변수를 도구의 설치 디렉터리로 설정합니다. 예:

   ```
   [ec2-user ~]$ export EC2_AMITOOL_HOME=/usr/local/ec2/ec2-ami-tools-x.x.x
   ```

1. 도구를 `PATH` 환경 변수에 추가합니다. 예:

   ```
   [ec2-user ~]$ export PATH=$EC2_AMITOOL_HOME/bin:$PATH
   ```

1. [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version) 명령을 사용하여 AMI 도구 설치를 확인할 수 있습니다.

   ```
   [ec2-user ~]$ ec2-ami-tools-version
   ```

## 서명 인증서 관리
<a name="ami-tools-managing-certs"></a>

AMI 도구의 특정 명령에는 X.509 인증서라고도 하는 서명 인증서가 필요합니다. 인증서를 생성한 다음 AWS에 업로드해야 합니다. 예를 들어 OpenSSL과 같은 타사 도구를 사용하여 인증서를 생성할 수 있습니다.

**서명 인증서를 만들려면**

1. OpenSSL을 설치 및 구성합니다.

1. `openssl genrsa` 명령을 사용하여 프라이빗 키를 생성하고 `.pem` 파일에 출력을 저장합니다. 2048 또는 4096비트 RSA 키를 생성하는 것이 좋습니다.

   ```
   openssl genrsa 2048 > private-key.pem
   ```

1. `openssl req` 명령을 사용하여 인증서를 만듭니다.

   ```
   openssl req -new -x509 -nodes -sha256 -days 365 -key private-key.pem -outform PEM -out certificate.pem
   ```

AWS에 인증서를 업로드하려면 [upload-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/upload-signing-certificate.html) 명령을 사용합니다.

```
aws iam upload-signing-certificate --user-name user-name --certificate-body file://path/to/certificate.pem
```

사용자에게 적용되는 인증서를 나열하려면 [list-signing-certificates](https://docs.aws.amazon.com/cli/latest/reference/iam/list-signing-certificates.html) 명령을 사용하십시오.

```
aws iam list-signing-certificates --user-name user-name
```

사용자의 서명 인증서를 비활성화하거나 다시 활성화하려면 [update-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/update-signing-certificate.html) 명령을 사용하십시오. 다음 명령으로 인증서를 비활성화할 수 있습니다.

```
aws iam update-signing-certificate --certificate-id OFHPLP4ZULTHYPMSYEX7O4BEXAMPLE --status Inactive --user-name user-name
```

인증서를 삭제하려면 [delete-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-signing-certificate.html) 명령을 사용하십시오.

```
aws iam delete-signing-certificate --user-name user-name --certificate-id OFHPLP4ZULTHYPMSYEX7O4BEXAMPLE
```

# Amazon EC2 AMI 도구 참조
<a name="ami-tools-commands"></a>

AMI 도구 명령을 사용하여 Amazon S3 지원 Linux AMI를 생성하고 관리할 수 있습니다. 도구를 설정하려면 [Amazon EC2 AMI 도구 설정](set-up-ami-tools.md)을 참조하세요.

액세스 키에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자를 위한 액세스 키 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)를 참조하세요.

**Topics**
+ [ec2-ami-tools-version](#ami-tools-version)
+ [ec2-bundle-image](#ami-bundle-image)
+ [ec2-bundle-vol](#ami-bundle-vol)
+ [ec2-delete-bundle](#ami-delete-bundle)
+ [ec2-download-bundle](#ami-download-bundle)
+ [ec2-migrate-manifest](#ami-migrate-manifest)
+ [ec2-unbundle](#ami-unbundle)
+ [ec2-upload-bundle](#ami-upload-bundle)
+ [AMI 도구의 일반 옵션](#common-args-ami)

## ec2-ami-tools-version
<a name="ami-tools-version"></a>

### 설명
<a name="ami-tools-version-description"></a>

AMI 도구 버전을 설명합니다.

### 구문
<a name="ami-tools-version-request"></a>

**ec2-ami-tools-version**

### 출력
<a name="ami-tools-version-output"></a>

버전 정보입니다.

### 예시
<a name="ami-tools-version-response"></a>

이 예시 명령은 사용 중인 AMI 도구의 버전 정보를 표시합니다.

```
[ec2-user ~]$ ec2-ami-tools-version
1.5.2 20071010
```

## ec2-bundle-image
<a name="ami-bundle-image"></a>

### 설명
<a name="bundle-image-description"></a>

루프백 파일에서 생성한 운영 체제 이미지로부터 Amazon S3 지원 Linux AMI를 생성합니다.

### 구문
<a name="bundle-image-request"></a>

****ec2-bundle-image** -c *path* -k *path* -u *account* -i *path* [-d *path*] [--ec2cert *path*] [-r *architecture*] [--productcodes *code1*,*code2*,...] [-B *mapping*] [-p *prefix*]** 

### 옵션
<a name="bundle-image-parameters"></a>

`-c, --cert` *path*  
사용자의 PEM 인코딩된 RSA 퍼블릭 키 인증서 파일입니다.  
Required: Yes

`-k, --privatekey` *path*  
PEM 인코딩된 RSA 키 파일의 경로입니다. 이 번들이 번들링되지 않아 안전한 장소에 보관되도록 이 키를 지정해야 합니다. 키를 AWS 계정에 등록할 필요는 없습니다.  
Required: Yes

`-u, --user ` *계정*  
사용자의 AWS 계정 ID(대시 없이)입니다.  
Required: Yes

`-i, --image` *path*  
번들링할 이미지에 대한 경로입니다.  
Required: Yes

`-d, --destination` *path*  
번들을 생성할 디렉터리입니다.  
기본값: `/tmp`  
Required: No

`--ec2cert` *path*  
이미지 매니페스트를 암호화하는 데 사용되는 Amazon EC2 X.509 퍼블릭 키 인증서의 경로입니다.  
`us-gov-west-1` 및 `cn-north-1` 리전은 기본값이 아닌 퍼블릭 키 인증서를 사용하며, 해당 인증서의 경로는 이 옵션으로 지정해야 합니다. 인증서 경로는 AMI 도구의 설치 방법에 따라 다릅니다. Amazon Linux의 경우, 인증서가 `/opt/aws/amitools/ec2/etc/ec2/amitools/`에 있습니다. [Amazon EC2 AMI 도구 설정](set-up-ami-tools.md)의 RPM 또는 ZIP 파일에서 AMI 도구를 설치한 경우 `$EC2_AMITOOL_HOME/etc/ec2/amitools/`에 인증서가 있습니다.  
필수: `us-gov-west-1` 및 `cn-north-1` 리전에만 해당됩니다.

`-r, --arch` *아키텍처*  
이미지 아키텍처. 명령줄에 아키텍처를 제공하지 않으면 번들링 시작 시 해당 메시지가 표시됩니다.  
유효한 값: `i386` \$1 `x86_64`  
Required: No

`--productcodes` *code1,code2,...*  
등록 시 이미지에 연결할 제품 코드로, 쉼표로 구분됩니다.  
Required: No

`-B, --block-device-mapping` *매핑*  
이 AMI의 인스턴스에 블록 디바이스를 표시할 방법을 정의합니다(인스턴스 유형이 지정된 디바이스를 지원하는 경우).  
쉼표로 구분된 키-값 페어 목록을 지정합니다. 여기서 각 키는 가상 이름이며 각 값은 해당 디바이스 이름입니다. 가상 이름에는 다음이 포함됩니다.  
+ `ami` - 인스턴스별로 표시되는 루트 파일 시스템 디바이스
+ `root` - 커널별로 표시되는 루트 파일 시스템 디바이스
+ `swap` - 인스턴스별로 표시되는 교체 디바이스
+ `ephemeralN` - N번째 인스턴스 스토어 볼륨
Required: No

`-p, --prefix` *prefix*  
번들링된 AMI 파일의 파일 이름 접두사입니다.  
기본값: 이미지 파일의 이름입니다. 예를 들어, 이미지 경로가 `/var/spool/my-image/version-2/debian.img`이면, 기본 접두사는 `debian.img`입니다.  
Required: No

`--kernel` *kernel\$1id*  
사용되지 않음. [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html)를 사용하여 커널을 설정합니다.  
Required: No

`--ramdisk` *ramdisk\$1id*  
사용되지 않음. [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html)를 사용하여 RAM 디스크를 설정합니다(필요한 경우).  
필수 여부: 아니요

### 출력
<a name="bundle-image-output"></a>

번들링 프로세스의 단계 및 상태를 설명하는 상태 메시지입니다.

### 예시
<a name="bundle-image-response"></a>

이 예시에서는 루프백 파일에서 생성한 운영 체제 이미지로부터 번들링된 AMI를 생성합니다.

```
[ec2-user ~]$ ec2-bundle-image -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 111122223333 -i image.img -d bundled/ -r x86_64
Please specify a value for arch [i386]: 
Bundling image file...
Splitting bundled/image.gz.crypt...
Created image.part.00
Created image.part.01
Created image.part.02
Created image.part.03
Created image.part.04
Created image.part.05
Created image.part.06
Created image.part.07
Created image.part.08
Created image.part.09
Created image.part.10
Created image.part.11
Created image.part.12
Created image.part.13
Created image.part.14
Generating digests for each part...
Digests generated.
Creating bundle manifest...
ec2-bundle-image complete.
```

## ec2-bundle-vol
<a name="ami-bundle-vol"></a>

### 설명
<a name="bundle-vol-description"></a>

인스턴스의 루트 볼륨 복사본을 압축, 암호화 및 서명하여 Amazon S3 지원 Linux AMI를 생성합니다.

인스턴스로부터 제품 코드, 커널 설정, RAM 디스크 설정 및 블록 디바이스 매핑을 상속하려는 Amazon EC2 시도입니다.

기본적으로 번들 프로세스에는 중요 정보를 포함할 수 있는 파일이 제외됩니다. 값에는 `*.sw`, `*.swo`, `*.swp`, `*.pem`, `*.priv`, `*id_rsa*`, `*id_dsa*` `*.gpg`, `*.jks`, `*/.ssh/authorized_keys` 및 `*/.bash_history`가 포함됩니다. 이러한 파일을 모든 포함하려면 `--no-filter` 옵션을 사용합니다. 이러한 파일 중 일부만 포함하려면 `--include` 옵션을 사용합니다.

자세한 내용은 [Amazon S3 지원 AMI 생성](creating-an-ami-instance-store.md) 섹션을 참조하세요.

### 구문
<a name="bundle-vol-request"></a>

****ec2-bundle-vol** -c *path* -k *path* -u *account* [-d *path*] [--ec2cert *path*] [-r *architecture*] [--productcodes *code1*,*code2*,...] [-B *mapping*] [--all] [-e *directory1*,*directory2*,...] [-i *file1*,*file2*,...] [--no-filter] [-p *prefix*] [-s *size*] [--[no-]inherit] [-v *volume*] [-P *type*] [-S *script*] [--fstab *path*] [--generate-fstab] [--grub-config *path*]** 

### 옵션
<a name="bundle-vol-parameters"></a>

`-c, --cert` *path*  
사용자의 PEM 인코딩된 RSA 퍼블릭 키 인증서 파일입니다.  
Required: Yes

`-k, --privatekey ` *path*   
사용자의 PEM 인코딩된 RSA 키 파일의 경로입니다.  
Required: Yes

`-u, --user` *계정*  
사용자의 AWS 계정 ID(대시 없이)입니다.  
Required: Yes

`-d, --destination` *destination*  
번들을 생성할 디렉터리입니다.  
기본값: `/tmp`  
Required: No

`--ec2cert` *path*  
이미지 매니페스트를 암호화하는 데 사용되는 Amazon EC2 X.509 퍼블릭 키 인증서의 경로입니다.  
`us-gov-west-1` 및 `cn-north-1` 리전은 기본값이 아닌 퍼블릭 키 인증서를 사용하며, 해당 인증서의 경로는 이 옵션으로 지정해야 합니다. 인증서 경로는 AMI 도구의 설치 방법에 따라 다릅니다. Amazon Linux의 경우, 인증서가 `/opt/aws/amitools/ec2/etc/ec2/amitools/`에 있습니다. [Amazon EC2 AMI 도구 설정](set-up-ami-tools.md)의 RPM 또는 ZIP 파일에서 AMI 도구를 설치한 경우 `$EC2_AMITOOL_HOME/etc/ec2/amitools/`에 인증서가 있습니다.  
필수: `us-gov-west-1` 및 `cn-north-1` 리전에만 해당됩니다.

`-r, --arch ` *아키텍처*  
이미지 아키텍처입니다. 명령줄에 이를 제공하지 않으면 번들링 시작 시 이를 제공하라는 메시지가 표시됩니다.  
유효한 값: `i386` \$1 `x86_64`  
Required: No

`--productcodes` *code1,code2,...*  
등록 시 이미지에 연결할 제품 코드로, 쉼표로 구분됩니다.  
Required: No

`-B, --block-device-mapping` *매핑*  
이 AMI의 인스턴스에 블록 디바이스를 표시할 방법을 정의합니다(인스턴스 유형이 지정된 디바이스를 지원하는 경우).  
쉼표로 구분된 키-값 페어 목록을 지정합니다. 여기서 각 키는 가상 이름이며 각 값은 해당 디바이스 이름입니다. 가상 이름에는 다음이 포함됩니다.  
+ `ami` - 인스턴스별로 표시되는 루트 파일 시스템 디바이스
+ `root` - 커널별로 표시되는 루트 파일 시스템 디바이스
+ `swap` - 인스턴스별로 표시되는 교체 디바이스
+ `ephemeralN` - N번째 인스턴스 스토어 볼륨
Required: No

`-a, --all`  
원격으로 마운트된 파일 시스템의 디렉터리를 포함하여 모든 디렉터리를 번들링합니다.  
Required: No

`-e, --exclude ` *directory1,directory2,...*  
번들 작업에서 제외할 절대 디렉터리 경로 및 파일 목록입니다. 이 파라미터는 `--all` 옵션보다 우선합니다. exclude가 지정되면 파라미터와 함께 나열된 디렉터리 및 하위 디렉터리는 볼륨에 번들링되지 않습니다.  
Required: No

`-i, --include ` *file1,file2,...*  
번들 작업에 포함할 파일 목록입니다. 지정된 파일은 중요한 정보를 포함할 수 있으므로 AMI에서 제외되지 않습니다.  
Required: No

`--no-filter`  
지정한 경우 지정한 파일이 중요한 정보를 포함할 수 있으므로 AMI에서 파일을 제외하지 않습니다.  
Required: No

`-p, --prefix ` *prefix*  
번들링된 AMI 파일의 파일 이름 접두사입니다.  
기본값: `image`  
Required: No

`-s, --size` *size*  
생성할 이미지 파일의 크기(MB, 1024 \$1 1024바이트)입니다. 최대 크기는 10240MB입니다.  
기본값: 10240  
Required: No

`--[no-]inherit`  
이미지가 인스턴스의 메타데이터를 상속해야 하는지 여부를 나타냅니다(기본값은 상속). `--inherit`를 활성화했지만 인스턴스 메타데이터에 액세스할 수 없으면 번들링이 실패합니다.  
Required: No

`-v, --volume ` *볼륨*  
번들을 생성해 올 마운트된 볼륨의 절대 경로입니다.  
기본값: 루트디렉터리입니다(/).  
Required: No

`-P, --partition` *type*  
디스크 이미지에서 파티션 테이블을 사용해야 하는지 여부를 나타냅니다. 파티션 테이블 유형을 지정하지 않으면, 볼륨의 상위 블록 디바이스에서 사용한 유형이 기본값이 됩니다. 이를 적용할 수 없으면 `gpt`가 기본값이 됩니다.  
유효한 값: `mbr` \$1 `gpt` \$1 `none`  
Required: No

`-S, --script` *스크립트*  
번들링 작업 직전에 실행할 사용자 정의 스크립트입니다. 스크립트에서 하나의 인수(볼륨의 마운트 지점)를 예상해야 합니다.  
Required: No

`--fstab` *path*  
이미지에 번들링할 fstab 경로입니다. 지정하지 않으면 Amazon EC2가 /etc/fstab을 번들링합니다.  
Required: No

`--generate-fstab`  
Amazon EC2-제공 fstab을 사용하여 볼륨을 번들링합니다.  
Required: No

`--grub-config`  
이미지에 번들링할 대체 grub 구성 파일 경로입니다. 기본적으로 `ec2-bundle-vol`은 복제된 이미지에 `/boot/grub/menu.lst` 또는 `/boot/grub/grub.conf`가 있을 것으로 예상합니다. 이 옵션을 사용하면 대체 grub 구성 파일에 대한 경로를 지정할 수 있습니다. 이 경로는 기본값(있는 경우)을 덮어씁니다.  
Required: No

`--kernel` *kernel\$1id*  
사용되지 않음. [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html)를 사용하여 커널을 설정합니다.  
Required: No

`--ramdisk`*ramdisk\$1id*  
사용되지 않음. [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html)를 사용하여 RAM 디스크를 설정합니다(필요한 경우).  
필수 여부: 아니요

### 출력
<a name="bundle-vol-output"></a>

번들링 단계 및 상태를 설명하는 상태 메시지입니다.

### 예시
<a name="bundle-vol-response"></a>

이 예시에서는 로컬 시스템의 루트 파일 시스템의 스냅샷을 압축, 암호화 및 서명하여 번들링된 AMI를 생성합니다.

```
[ec2-user ~]$ ec2-bundle-vol -d /mnt -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 111122223333 -r x86_64
  Copying / into the image file /mnt/image...
  Excluding:
       sys
       dev/shm
       proc
       dev/pts
       proc/sys/fs/binfmt_misc
       dev
       media
       mnt
       proc
       sys
       tmp/image
       mnt/img-mnt
  1+0 records in
  1+0 records out
  mke2fs 1.38 (30-Jun-2005)
  warning: 256 blocks unused.

  Splitting /mnt/image.gz.crypt...
  Created image.part.00
  Created image.part.01
  Created image.part.02
  Created image.part.03
  ...
  Created image.part.22
  Created image.part.23
  Generating digests for each part...
  Digests generated.
  Creating bundle manifest...
  Bundle Volume complete.
```

## ec2-delete-bundle
<a name="ami-delete-bundle"></a>

### 설명
<a name="delete-bundle-description"></a>

Amazon S3 스토리지에서 지정된 번들을 삭제합니다. 번들을 삭제한 다음에는 해당 AMI에서 인스턴스를 시작할 수 있습니다.

### 구문
<a name="delete-bundle-request"></a>

****ec2-delete-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* [-t *token*] [--url *url*] [--region *region*] [--sigv *version*] [-m *path*] [-p *prefix*] [--clear] [--retry] [-y]** 

### 옵션
<a name="delete-bundle-parameters"></a>

`-b, --bucket `*bucket*  
번들링된 AMI를 포함하는 Amazon S3 버킷 이름으로, '/'-delimited 경로 접두사가 붙기도 합니다(옵션).  
Required: Yes

`-a, --access-key` *access\$1key\$1id*  
AWS 액세스 키 ID입니다.  
Required: Yes

`-s, --secret-key` *secret\$1access\$1key*  
AWS 보안 액세스 키입니다.  
Required: Yes

`-t, --delegation-token` *token*  
AWS 요청에 함께 전달되는 위임 토큰입니다. 자세한 내용은 *IAM 사용 설명서*의 [임시 보안 자격 증명](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)을 참조하세요.  
필수 항목 여부: 임시 보안 자격 증명을 사용하는 경우에만.  
기본값: `AWS_DELEGATION_TOKEN` 환경 변수 값(설정된 경우).

`--region`*region*  
요청 서명에서 사용하는 리전입니다.  
기본값: `us-east-1`  
필수: 서명 버전 4를 사용하는 경우 필수입니다.

`--sigv`*version*  
요청 서명 시 사용하는 서명 버전입니다.  
유효한 값: `2` \$1 `4`  
기본값: `4`  
Required: No

`-m, --manifest`*경로*  
매니페스트 파일 경로입니다.  
필수: `--prefix` 또는 `--manifest`를 지정해야 합니다.

`-p, --prefix` *prefix*  
번들링된 AMI 파일 이름 접두사입니다. 전체 접두사를 제공합니다. 예를 들어 접두사가 image.img인 경우, `-p image.img`를 사용해야 합니다(`-p image` 아님).  
필수: `--prefix` 또는 `--manifest`를 지정해야 합니다.

`--clear`  
지정된 번들을 삭제한 후 비어 있으면 Amazon S3 버킷을 삭제합니다.  
Required: No

`--retry`  
모든 Amazon S3 오류에서 작업당 최대 5회 자동으로 재시도합니다.  
Required: No

`-y, --yes`  
모든 질문 메시지에 대한 답은 자동적으로 예라고 가정합니다.  
필수 여부: 아니요

### 출력
<a name="delete-bundle-output"></a>

Amazon EC2에서 삭제 프로세스의 단계 및 상황을 나타내는 상태 메시지를 표시합니다.

### 예시
<a name="delete-bundle-response"></a>

이 예시에서는 Amazon S3에서 번들을 삭제합니다.

```
[ec2-user ~]$ ec2-delete-bundle -b amzn-s3-demo-bucket -a your_access_key_id -s your_secret_access_key
Deleting files:
amzn-s3-demo-bucket/image.manifest.xml
amzn-s3-demo-bucket/image.part.00
amzn-s3-demo-bucket/image.part.01
amzn-s3-demo-bucket/image.part.02
amzn-s3-demo-bucket/image.part.03
amzn-s3-demo-bucket/image.part.04
amzn-s3-demo-bucket/image.part.05
amzn-s3-demo-bucket/image.part.06
Continue? [y/n]
y
Deleted amzn-s3-demo-bucket/image.manifest.xml
Deleted amzn-s3-demo-bucket/image.part.00
Deleted amzn-s3-demo-bucket/image.part.01
Deleted amzn-s3-demo-bucket/image.part.02
Deleted amzn-s3-demo-bucket/image.part.03
Deleted amzn-s3-demo-bucket/image.part.04
Deleted amzn-s3-demo-bucket/image.part.05
Deleted amzn-s3-demo-bucket/image.part.06
ec2-delete-bundle complete.
```

## ec2-download-bundle
<a name="ami-download-bundle"></a>

### 설명
<a name="download-bundle-description"></a>

지정된 Amazon S3 지원 Linux AMI를 Amazon S3 스토리지에서 다운로드합니다.

### 구문
<a name="download-bundle-request"></a>

****ec2-download-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* -k *path* [--url *url*] [--region *region*] [--sigv *version*] [-m *file*] [-p *prefix*] [-d *directory*] [--retry]** 

### 옵션
<a name="download-bundle-parameters"></a>

`-b, --bucket` *bucket*  
번들이 있는 Amazon S3 버킷 이름으로, '/'-delimited 경로 접두사가 붙기도 합니다(옵션).  
Required: Yes

`-a, --access-key` *access\$1key\$1id*  
AWS 액세스 키 ID입니다.  
Required: Yes

`-s, --secret-key` *secret\$1access\$1key*  
AWS 보안 액세스 키입니다.  
Required: Yes

`-k, --privatekey` *path*  
매니페스트를 해독하는 데 사용되는 프라이빗 키입니다.  
Required: Yes

`--url` *url*  
Amazon S3 서비스 URL입니다.  
기본값: `https://s3.amazonaws.com/`  
Required: No

`--region` *region*  
요청 서명에서 사용하는 리전입니다.  
기본값: `us-east-1`  
필수: 서명 버전 4를 사용하는 경우 필수입니다.

`--sigv` *version*  
요청 서명 시 사용하는 서명 버전입니다.  
유효한 값: `2` \$1 `4`  
기본값: `4`  
Required: No

`-m, --manifest` *file*  
매니페스트 파일 이름입니다(경로 제외). 매니페스트(`-m`) 또는 접두사(`-p`) 중 하나를 지정하는 것이 좋습니다.  
Required: No

`-p, --prefix ` *prefix*  
번들링된 AMI 파일의 파일 이름 접두사입니다.  
기본값: `image`  
Required: No

`-d, --directory ` *directory*  
다운로드된 번들이 저장되는 디렉터리입니다. 존재하는 디렉터리여야 합니다.  
기본값: 현재 작업 디렉터리입니다.  
Required: No

 `--retry`   
모든 Amazon S3 오류에서 작업당 최대 5회 자동으로 재시도합니다.  
필수 여부: 아니요

### 출력
<a name="download-bundle-output"></a>

다운로드 프로세스의 다양한 단계를 나타내는 상태 메시지가 표시됩니다.

### 예시
<a name="download-bundle-response"></a>

이 예시는 `bundled` 디렉터리(Linux **mkdir** 명령 사용)를 생성하고 `amzn-s3-demo-bucket` Amazon S3 버킷에서 번들을 다운로드합니다.

```
[ec2-user ~]$ mkdir bundled
[ec2-user ~]$ ec2-download-bundle -b amzn-s3-demo-bucket/bundles/bundle_name -m image.manifest.xml -a your_access_key_id -s your_secret_access_key -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -d mybundle
Downloading manifest image.manifest.xml from amzn-s3-demo-bucket to mybundle/image.manifest.xml ...
Downloading part image.part.00 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.00 ...
Downloaded image.part.00 from amzn-s3-demo-bucket
Downloading part image.part.01 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.01 ...
Downloaded image.part.01 from amzn-s3-demo-bucket
Downloading part image.part.02 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.02 ...
Downloaded image.part.02 from amzn-s3-demo-bucket
Downloading part image.part.03 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.03 ...
Downloaded image.part.03 from amzn-s3-demo-bucket
Downloading part image.part.04 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.04 ...
Downloaded image.part.04 from amzn-s3-demo-bucket
Downloading part image.part.05 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.05 ...
Downloaded image.part.05 from amzn-s3-demo-bucket
Downloading part image.part.06 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.06 ...
Downloaded image.part.06 from amzn-s3-demo-bucket
```

## ec2-migrate-manifest
<a name="ami-migrate-manifest"></a>

### 설명
<a name="migrate-manifest-description"></a>

Amazon S3 지원 Linux AMI(예: 해당 인증서, 커널, RAM 디스크)가 다른 리전을 지원하도록 수정합니다.

### 구문
<a name="migrate-manifest-request"></a>

****ec2-migrate-manifest** -c *path* -k *path* -m *path* \$1(-a *access\$1key\$1id* -s *secret\$1access\$1key* --region *region*) \$1 (--no-mapping)\$1 [--ec2cert *ec2\$1cert\$1path*] [--kernel *kernel-id*] [--ramdisk *ramdisk\$1id*]** 

### 옵션
<a name="migrate-manifest-parameters"></a>

`-c, --cert` *path*  
사용자의 PEM 인코딩된 RSA 퍼블릭 키 인증서 파일입니다.  
Required: Yes

`-k, --privatekey` *path*  
사용자의 PEM 인코딩된 RSA 키 파일의 경로입니다.  
Required: Yes

`--manifest` *path*  
매니페스트 파일 경로입니다.  
Required: Yes

`-a, --access-key` *access\$1key\$1id*  
AWS 액세스 키 ID입니다.  
필수: 자동 매핑 사용 시 필수입니다.

`-s, --secret-key ` *secret\$1access\$1key*  
AWS 보안 액세스 키입니다.  
필수: 자동 매핑 사용 시 필수입니다.

`--region` *region*  
매핑 파일에서 조회하는 리전입니다.  
필수: 자동 매핑 사용 시 필수입니다.

`--no-mapping`  
커널 및 RAM 디스크의 자동 매핑을 비활성화합니다.  
 마이그레이션 동안 Amazon EC2는 매니페스트 파일에 있는 커널 및 RAM 디스크를 대상 리전용으로 설계된 커널 및 RAM 디스크로 교체합니다. `--no-mapping` 파라미터를 지정하지 않으면, `ec2-migrate-bundle`에서 `DescribeRegions` 및 `DescribeImages` 작업을 사용하여 자동화된 매핑을 수행합니다.  
필수: 자동 매핑에 사용되는 `-a`, `-s` 및 `--region` 옵션을 제공하지 않는 경우 필수입니다.

`--ec2cert` *path*  
이미지 매니페스트를 암호화하는 데 사용되는 Amazon EC2 X.509 퍼블릭 키 인증서의 경로입니다.  
`us-gov-west-1` 및 `cn-north-1` 리전은 기본값이 아닌 퍼블릭 키 인증서를 사용하며, 해당 인증서의 경로는 이 옵션으로 지정해야 합니다. 인증서 경로는 AMI 도구의 설치 방법에 따라 다릅니다. Amazon Linux의 경우, 인증서가 `/opt/aws/amitools/ec2/etc/ec2/amitools/`에 있습니다. [Amazon EC2 AMI 도구 설정](set-up-ami-tools.md)의 ZIP 파일에서 AMI 도구를 설치한 경우, `$EC2_AMITOOL_HOME/etc/ec2/amitools/`에 인증서가 있습니다.  
필수: `us-gov-west-1` 및 `cn-north-1` 리전에만 해당됩니다.

`--kernel` *kernel\$1id*  
선택할 커널의 ID입니다.  
커널 및 RAM 디스크 대신 PV-GRUB를 사용하는 것이 좋습니다. 자세한 내용을 알아보려면 *Amazon EC2 사용 설명서*의 [사용자 제공 커널](https://docs.aws.amazon.com/linux/al2/ug/UserProvidedKernels.html)을 참조하세요.
필수 여부: 아니요

`--ramdisk` *ramdisk\$1id*  
선택할 RAM 디스크의 ID입니다.  
커널 및 RAM 디스크 대신 PV-GRUB를 사용하는 것이 좋습니다. 자세한 내용을 알아보려면 *Amazon EC2 사용 설명서*의 [사용자 제공 커널](https://docs.aws.amazon.com/linux/al2/ug/UserProvidedKernels.html)을 참조하세요.
필수 여부: 아니요

### 출력
<a name="migrate-manifest-output"></a>

번들링 프로세스의 단계 및 상태를 설명하는 상태 메시지입니다.

### 예시
<a name="migrate-manifest-response"></a>

이 예시는 `my-ami.manifest.xml` 매니페스트에 지정된 AMI;를 복사합니다.

```
[ec2-user ~]$ ec2-migrate-manifest --manifest my-ami.manifest.xml --cert cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem --privatekey pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem --region eu-west-1 

Backing up manifest...
Successfully migrated my-ami.manifest.xml It is now suitable for use in eu-west-1.
```

## ec2-unbundle
<a name="ami-unbundle"></a>

### 설명
<a name="unbundle-description"></a>

Amazon S3 지원 Linux AMI에서 번들을 다시 생성합니다.

### 구문
<a name="unbundle-request"></a>

****ec2-unbundle** -k *path* -m *path* [-s *source\$1directory*] [-d *destination\$1directory*]** 

### 옵션
<a name="unbundle-parameters"></a>

`-k, --privatekey` *path*  
PEM 인코딩된 RSA 키 파일의 경로입니다.  
Required: Yes

`-m, --manifest` *path*  
매니페스트 파일 경로입니다.  
Required: Yes

`-s, --source` *source\$1directory*  
번들이 포함된 디렉터리입니다.  
기본값: 현재 디렉터리입니다.  
Required: No

`-d, --destination` *destination\$1directory*  
AMI 번들을 해제해 넣을 디렉터리입니다. 대상 디렉터리가 있어야 합니다.  
기본값: 현재 디렉터리입니다.  
필수 여부: 아니요

### 예시
<a name="unbundle-response"></a>

이 Linux 및 UNIX 예시는 `image.manifest.xml` 파일에 지정된 AMI 번들을 해제합니다.

```
[ec2-user ~]$ mkdir unbundled
$ ec2-unbundle -m mybundle/image.manifest.xml -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -s mybundle -d unbundled
$ ls -l unbundled
total 1025008
-rw-r--r-- 1 root root 1048578048 Aug 25 23:46 image.img
```

### 출력
<a name="unbundle-output"></a>

번들 해제 프로세스의 다양한 단계를 나타내는 상태 메시지가 표시됩니다.

## ec2-upload-bundle
<a name="ami-upload-bundle"></a>

### 설명
<a name="upload-bundle-description"></a>

Amazon S3 지원 Linux AMI 번들을 Amazon S3로 업로드하고 업로드된 객체에서 적절한 액세스 제어 목록(ACL)을 설정합니다. 자세한 내용은 [Amazon S3 지원 AMI 생성](creating-an-ami-instance-store.md) 섹션을 참조하세요.

**참고**  
Amazon S3 지원 Linux AMI의 S3 버킷에 객체를 업로드하려면 버킷에 대해 ACL을 사용하도록 설정해야 합니다. 그렇지 않으면 Amazon EC2는 업로드할 객체에 ACL을 설정할 수 없습니다. 대상 버킷에서 S3 객체 소유권에 대해 버킷 소유자 강제 설정을 사용하는 경우 ACL이 비활성화되어 있으므로 이 설정은 작동하지 않습니다. 자세한 내용은 [객체 소유권 제어 및 버킷에 대해 ACL 사용 중지](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)를 참조하십시오.

### 구문
<a name="upload-bundle-request"></a>

****ec2-upload-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* [-t *token*] -m *path* [--url *url*] [--region *region*] [--sigv *version*] [--acl *acl*] [-d *directory*] [--part *part*] [--retry] [--skipmanifest]** 

### 옵션
<a name="upload-bundle-parameters"></a>

`-b, --bucket` *bucket*  
번들 이름을 저장할 Amazon S3 버킷 이름으로, 선택 항목인 '/'-delimited 경로 접두사가 붙기도 합니다. 버킷이 없을 경우에는 생성됩니다(해당 버킷 이름을 사용할 수 있는 경우). 또한 버킷이 존재하지 않고 AMI 도구 버전이 1.5.18 이상인 경우 이 명령은 버킷에 대한 ACL을 설정합니다.  
필수 여부: 예

`-a, --access-key` *access\$1key\$1id*  
사용자의 AWS 액세스 키 ID입니다.  
Required: Yes

`-s, --secret-key` *secret\$1access\$1key*  
AWS 보안 액세스 키입니다.  
Required: Yes

`-t, --delegation-token` *token*  
AWS 요청에 함께 전달되는 위임 토큰입니다. 자세한 내용은 *IAM 사용 설명서*의 [임시 보안 자격 증명](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)을 참조하세요.  
필수 항목 여부: 임시 보안 자격 증명을 사용하는 경우에만.  
기본값: `AWS_DELEGATION_TOKEN` 환경 변수 값(설정된 경우).

`-m, --manifest` *path*  
매니페스트 파일 경로입니다. 매니페스트 파일은 번들링 프로세스 중 생성되며 번들이 포함된 디렉터리에 있습니다.  
Required: Yes

`--url` *url*  
사용되지 않음. 버킷이 `--region` 위치(`EU` 제외)로 제한되어 있지 않은 경우 대신 `eu-west-1` 옵션을 사용합니다. `--location` 플래그는 이러한 특정 위치 제한을 적용하는 유일한 방법입니다.  
Amazon S3 엔드포인트 서비스 URL입니다.  
기본값: `https://s3.amazonaws.com/`  
Required: No

`--region` *region*  
대상 S3 버킷의 요청 서명에 사용할 리전입니다.  
+ 버킷이 없고 리전을 지정하지 않는 경우 이 도구는 (`us-east-1`에서) 위치 제한 없이 버킷을 만듭니다.
+ 버킷이 없고 리전을 지정하는 경우 이 도구는 지정된 리전에 버킷을 만듭니다.
+ 버킷이 있고 리전을 지정하지 않는 경우 이 도구는 버킷의 위치를 사용합니다.
+ 버킷이 있고 `us-east-1`을 리전으로 지정하는 경우 이 도구는 오류 메시지 없이 버킷의 실제 위치를 사용하며 일치하는 기존 파일을 덮어씁니다.
+ 버킷이 있고 버킷의 실제 위치와 일치하지 않는 리전(`us-east-1` 이외)을 지정하는 경우 도구가 종료되고 오류가 발생합니다.
버킷이 `EU` 위치(`eu-west-1` 제외)로 제한된 경우 대신 `--location` 플래그를 사용합니다. `--location` 플래그는 이러한 특정 위치 제한을 적용하는 유일한 방법입니다.  
기본값: `us-east-1`  
필수: 서명 버전 4를 사용하는 경우 필수입니다.

`--sigv` *version*  
요청 서명 시 사용하는 서명 버전입니다.  
유효한 값: `2` \$1 `4`  
기본값: `4`  
Required: No

`--acl` *acl*  
번들링된 이미지의 액세스 제어 목록 정책입니다.  
유효한 값: `public-read` \$1 `aws-exec-read`  
기본값: `aws-exec-read`  
Required: No

`-d, --directory` *directory*  
번들링된 AMI 파트가 포함된 디렉터리입니다.  
기본값: 매니페스트 파일이 포함된 디렉터리(`-m` 옵션 참조)입니다.  
Required: No

`--part` *part*  
지정된 파트와 모든 후속 파트의 업로드를 시작합니다. 예를 들어 `--part 04`입니다.  
Required: No

`--retry`  
모든 Amazon S3 오류에서 작업당 최대 5회 자동으로 재시도합니다.  
Required: No

`--skipmanifest`  
매니페스트를 업로드하지 않습니다.  
Required: No

`--location` *location*  
사용되지 않음. 버킷이 `--region` 위치(`EU` 제외)로 제한되어 있지 않은 경우 대신 `eu-west-1` 옵션을 사용합니다. `--location` 플래그는 이러한 특정 위치 제한을 적용하는 유일한 방법입니다.  
대상 Amazon S3 버킷의 위치 제한입니다. 버킷이 있고 버킷의 실제 위치와 일치하지 않는 위치를 지정하는 경우 도구가 종료되고 오류가 발생합니다. 버킷이 있고 위치를 지정하지 않는 경우 이 도구는 버킷의 위치를 사용합니다. 버킷이 없고 위치를 지정하는 경우 이 도구는 지정된 리전에 버킷을 만듭니다. 버킷이 없고 위치를 지정하지 않는 경우 이 도구는 (`us-east-1`에서) 위치 제한 없이 버킷을 만듭니다.  
기본값: `--region`이 지정된 경우 위치는 여기에 지정된 리전으로 설정됩니다. `--region`이 지정되지 않은 경우 위치는 기본적으로 `us-east-1`로 설정됩니다.  
필수 여부: 아니요

### 출력
<a name="upload-bundle-output"></a>

Amazon EC2에서 업로드 프로세스의 단계 및 상황을 나타내는 상태 메시지를 표시합니다.

### 예시
<a name="upload-bundle-response"></a>

이 예시에서는 `image.manifest.xml` 매니페스트에서 지정한 번들을 업로드합니다.

```
[ec2-user ~]$ ec2-upload-bundle -b amzn-s3-demo-bucket/bundles/bundle_name -m image.manifest.xml -a your_access_key_id -s your_secret_access_key
Creating bucket...
Uploading bundled image parts to the S3 bucket amzn-s3-demo-bucket ...
Uploaded image.part.00
Uploaded image.part.01
Uploaded image.part.02
Uploaded image.part.03
Uploaded image.part.04
Uploaded image.part.05
Uploaded image.part.06
Uploaded image.part.07
Uploaded image.part.08
Uploaded image.part.09
Uploaded image.part.10
Uploaded image.part.11
Uploaded image.part.12
Uploaded image.part.13
Uploaded image.part.14
Uploading manifest ...
Uploaded manifest.
Bundle upload completed.
```

## AMI 도구의 일반 옵션
<a name="common-args-ami"></a>

AMI 도구의 대부분은 다음과 같은 선택적 파라미터를 허용합니다.

`--help, -h`  
도움말 메시지를 표시합니다.

`--version`  
버전 및 저작권 통지를 표시합니다.

`--manual`  
수동 입력 항목을 표시합니다.

`--batch`  
배치 모드에서 실행되며 대화형 메시지를 표시하지 않습니다.

`--debug`  
문제를 해결할 때 유용한 정보를 표시합니다.

# Amazon S3 지원 AMI를 EBS 지원 AMI로 변환
<a name="Using_ConvertingS3toEBS"></a>

사용자 소유의 Amazon S3 지원 Linux AMI를 Amazon EBS 지원 Linux AMI로 변환할 수 있습니다.

**중요**  
소유하지 않은 AMI는 변환할 수 없습니다.

**Amazon S3 지원 AMI를 Amazon EBS 지원 AMI로 변환하려면**

1. Amazon EBS 기반 AMI에서 Amazon Linux 인스턴스를 시작합니다. 자세한 내용은 [콘솔에서 인스턴스 시작 마법사를 사용하여 EC2 인스턴스 시작](ec2-launch-instance-wizard.md) 섹션을 참조하세요. Amazon Linux 인스턴스에는 AWS CLI 및 AMI 도구가 미리 설치되어 있습니다.

1. Amazon S3 지원 AMI를 번들링하는 데 사용한 X.509 프라이빗 키를 인스턴스로 업로드합니다. 이 키는 사용자와 Amazon EC2만 사용자의 AMI에 액세스할 수 있음을 보장하는 데 사용됩니다.

   1. 다음과 같이 인스턴스에서 X.509 프라이빗 키에 대한 임시 디렉터리를 생성합니다.

      ```
      [ec2-user ~]$ mkdir /tmp/cert
      ```

   1. [scp](linux-file-transfer-scp.md) 등의 보안 복사 도구를 사용하여 컴퓨터의 X.509 프라이빗 키를 인스턴스의 `/tmp/cert` 디렉터리로 복사합니다. 다음 명령의 *my-private-key* 파라미터는 SSH를 사용하여 인스턴스에 연결하는 데 사용되는 프라이빗 키입니다. 예제:

      ```
      you@your_computer:~ $ scp -i my-private-key.pem /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem ec2-user@ec2-203-0-113-25.compute-1.amazonaws.com:/tmp/cert/
      pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem  100%  717     0.7KB/s   00:00
      ```

1. AWS CLI를 사용하도록 환경 변수를 구성합니다. 자세한 내용은 [환경 변수](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html)를 참조하세요.

   1. (권장) AWS 액세스 키, 보안 키 및 세션 토큰에 대한 환경 변수를 설정합니다.

      ```
      [ec2-user ~]$ export AWS_ACCESS_KEY_ID=your_access_key_id
      [ec2-user ~]$ export AWS_SECRET_ACCESS_KEY=your_secret_access_key
      [ec2-user ~]$ export AWS_SESSION_TOKEN=your_session_token
      ```

   1. AWS 액세스 키와 보안 키에 대한 환경 변수를 설정합니다.

      ```
      [ec2-user ~]$ export AWS_ACCESS_KEY_ID=your_access_key_id
      [ec2-user ~]$ export AWS_SECRET_ACCESS_KEY=your_secret_access_key
      ```

1. 새 AMI용 Amazon Elastic Block Store(Amazon EBS) 볼륨을 준비합니다.

   1. [create-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-volume.html) 명령을 사용하여 인스턴스와 동일한 가용 영역에 빈 EBS 볼륨을 생성합니다. 명령 출력의 볼륨 ID를 메모해 둡니다.
**중요**  
 이 EBS 볼륨은 크기가 원본 인스턴스 스토어 루트 볼륨보다 크거나 같아야 합니다.

      ```
      aws ec2 create-volume \
          --size 10 \
          --region us-west-2 \
          --availability-zone us-west-2b
      ```

   1. [attach-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/attach-volume.html) 명령을 사용하여 이 볼륨을 Amazon EBS 기반 인스턴스에 연결합니다.

      ```
      aws ec2 attach-volume \
          --volume-id vol-01234567890abcdef \
          --instance-id i-1234567890abcdef0 \
          --region us-west-2
      ```

1. 번들용 폴더를 생성합니다.

   ```
   [ec2-user ~]$ mkdir /tmp/bundle
   ```

1. `/tmp/bundle` using the [ec2-download-bundle](ami-tools-commands.md#ami-download-bundle) 명령을 사용하여 인스턴스 스토어 기반 AMI용 번들을 /tmp/bundle로 다운로드합니다.

   ```
   [ec2-user ~]$ ec2-download-bundle -b amzn-s3-demo-bucket/bundle_folder/bundle_name -m image.manifest.xml -a $AWS_ACCESS_KEY_ID -s $AWS_SECRET_ACCESS_KEY --privatekey /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -d /tmp/bundle
   ```

1. [ec2-unbundle](ami-tools-commands.md#ami-unbundle) 명령을 사용하여 번들에서 이미지 파일을 다시 구성합니다.

   1. 디렉터리를 번들 폴더로 변경합니다.

      ```
      [ec2-user ~]$ cd /tmp/bundle/
      ```

   1. [ec2-unbundle](ami-tools-commands.md#ami-unbundle) 명령을 실행합니다.

      ```
      [ec2-user bundle]$ ec2-unbundle -m image.manifest.xml --privatekey /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem
      ```

1. 번들링되지 않은 이미지의 파일을 새 EBS 볼륨으로 복사합니다.

   ```
   [ec2-user bundle]$ sudo dd if=/tmp/bundle/image of=/dev/sdb bs=1M
   ```

1. 번들링되지 않은 새 파티션용 볼륨을 검색합니다.

   ```
   [ec2-user bundle]$ sudo partprobe /dev/sdb1
   ```

1. 블록 디바이스를 나열하여 마운트할 디바이스 이름을 찾습니다.

   ```
   [ec2-user bundle]$ lsblk
   NAME         MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
   /dev/sda    202:0    0   8G  0 disk
   └─/dev/sda1 202:1    0   8G  0 part /
   /dev/sdb    202:80   0  10G  0 disk
   └─/dev/sdb1 202:81   0  10G  0 part
   ```

   이 예에서는 마운트할 파티션이 `/dev/sdb1`이지만, 디바이스 이름이 이와 다를 수 있습니다. 볼륨이 파티셔닝되지 않은 경우 마운트할 디바이스는 `/dev/sdb`(디바이스 파티션 끝 숫자가 없음)와 비슷할 것입니다.

1. 새 EBS 볼륨에 대한 탑재 지점을 생성하고 볼륨을 탑재합니다.

   ```
   [ec2-user bundle]$ sudo mkdir /mnt/ebs
   [ec2-user bundle]$ sudo mount /dev/sdb1 /mnt/ebs
   ```

1. 주로 사용하는 텍스트 편집기(예: `/etc/fstab` 또는 **vim**)를 사용하여 EBS 볼륨의 **nano** 파일을 열고 인스턴스 스토어(휘발성) 볼륨에 대한 항목을 모두 제거합니다. EBS 볼륨은 `/mnt/ebs`에 탑재되므로 `fstab` 파일은 `/mnt/ebs/etc/fstab`에 있습니다.

   ```
   [ec2-user bundle]$ sudo nano /mnt/ebs/etc/fstab
   #
   LABEL=/     /           ext4    defaults,noatime  1   1
   tmpfs       /dev/shm    tmpfs   defaults        0   0
   devpts      /dev/pts    devpts  gid=5,mode=620  0   0
   sysfs       /sys        sysfs   defaults        0   0
   proc        /proc       proc    defaults        0   0
   /dev/sdb        /media/ephemeral0       auto    defaults,comment=cloudconfig    0       2
   ```

   이 예에서는 마지막 줄을 제거해야 합니다.

1. 볼륨 마운트를 해제하고 인스턴스에서 볼륨을 분리합니다.

   ```
   [ec2-user bundle]$ sudo umount /mnt/ebs
   [ec2-user bundle]$ aws ec2 detach-volume --volume-id vol-01234567890abcdef --region us-west-2
   ```

1. 다음과 같이 새 EBS 볼륨에서 AMI를 생성합니다.

   1. 새 EBS 볼륨의 스냅샷을 생성합니다.

      ```
      [ec2-user bundle]$ aws ec2 create-snapshot --region us-west-2 --description "your_snapshot_description" --volume-id vol-01234567890abcdef
      ```

   1. 스냅샷이 완전한지 확인합니다.

      ```
      [ec2-user bundle]$ aws ec2 describe-snapshots --region us-west-2 --snapshot-id snap-0abcdef1234567890
      ```

   1. describe-images`aki` 명령을 사용하여 원래의 AMI에 사용된 프로세스 아키텍처, 가상화 유형 및 커널 이미지(**describe-images**)를 식별합니다. 이 단계의 경우 원본 Amazon S3 지원 AMI의 AMI ID가 필요합니다.

      ```
      [ec2-user bundle]$ aws ec2 describe-images --region us-west-2 --image-id ami-0abcdef1234567890 --output text
      IMAGES	x86_64	amazon/amzn-ami-pv-2013.09.2.x86_64-s3	ami-8ef297be	amazon	available	public	machine	aki-fc8f11cc	instance-store	paravirtual	xen
      ```

      이 예에서는 아키텍처가 `x86_64`이고 커널 이미지 ID가 `aki-fc8f11cc`입니다. 다음 단계에서는 이들 값을 사용합니다. 위 명령의 출력에 `ari` ID도 나열되면 이 ID도 메모해 둡니다.

   1. 새 EBS 볼륨의 스냅샷 ID와 이전 단계의 값을 사용하여 새 AMI를 등록합니다. 이전 명령 출력에 `ari` ID가 나열된 경우, `--ramdisk-id ari_id`를 사용하여 이 ID를 다음 명령에 포함합니다.

      ```
      [ec2-user bundle]$ aws ec2 register-image --region us-west-2 --name your_new_ami_name --block-device-mappings DeviceName=device-name,Ebs={SnapshotId=snap-0abcdef1234567890} --virtualization-type paravirtual --architecture x86_64 --kernel-id aki-fc8f11cc --root-device-name device-name
      ```

1. (선택 사항) 새 AMI에서 인스턴스를 시작할 수 있음을 테스트한 후에는 이 절차용으로 생성한 EBS 볼륨을 삭제할 수 있습니다.

   ```
   aws ec2 delete-volume --volume-id vol-01234567890abcdef
   ```

# Windows Sysprep을 사용하여 Amazon EC2 AMI 생성
<a name="ami-create-win-sysprep"></a>

Microsoft System Preparation(Windows Sysprep) 도구는 새 이미지를 캡처하기 전에 인스턴스별 시스템 구성이 제거된 상태로 일반 버전의 운영 체제를 생성합니다.

소프트웨어 및 설정으로 사전 설치 및 사전 구성된 안전한 맞추형 최신 “골드” 서버 이미지의 생성, 관리 및 배포를 자동화하려면 [EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)를 사용하는 것이 좋습니다.

Windows Sysprep을 사용하면 Windows 시작 에이전트(EC2Launch v2, EC2Launch 및 EC2Config)를 통해 표준화된 AMI를 생성할 수도 있습니다.

**중요**  
Windows Sysprep을 사용하여 인스턴스 백업을 생성하지 마세요. Windows Sysprep은 시스템에 고유한 정보를 삭제하는데, 이는 인스턴스 백업에 의도하지 않은 결과를 낳을 수 있습니다.

Windows Sysprep의 문제를 해결하려면 [Amazon EC2 Windows 인스턴스 Sysprep 문제 해결](sysprep-troubleshoot.md)의 내용을 참조하세요.

**Topics**
+ [Windows Sysprep 단계](#sysprep-phases)
+ [시작하기 전 준비 사항](#sysprep-begin)
+ [EC2Launch v2와 함께 Windows Sysprep 사용](sysprep-using-ec2launchv2.md)
+ [EC2Launch와 함께 Windows Sysprep 사용](ec2launch-sysprep.md)
+ [EC2Config와 함께 Windows Sysprep 사용](sysprep-using.md)

## Windows Sysprep 단계
<a name="sysprep-phases"></a>

Windows Sysprep은 다음 단계를 거칩니다.
+ **일반화**: Sysprep 도구는 이미지 고유 정보 및 설정을 삭제합니다. 예를 들어 Windows Sysprep은 보안 식별자(SID), 컴퓨터 이름, 이벤트 로그, 특정 드라이버를 제거합니다. 이 단계가 완료되면 운영 체제(OS)는 AMI를 생성할 준비가 됩니다.
**참고**  
`PersistAllDeviceInstalls` 설정이 true로 기본 설정되어 있기 때문에 Windows Sysprep을 Windows 시작 에이전트와 함께 실행할 때 시스템은 드라이버가 제거되는 것을 방지합니다.
+ **특수화**: 플러그-앤-플레이가 컴퓨터를 스캔하여 검색된 장치에 대해 드라이버를 설치합니다. Sysprep 도구는 컴퓨터 이름과 SID와 같은 OS 요건을 생성합니다. 필요한 경우 이 단계에서 명령을 실행할 수 있습니다.
+ **Out-of-Box Experience(OOBE)**: 시스템은 Windows 설치 축약 버전을 실행하여 사용자에게 시스템 언어, 표준 시간대, 등록된 조직과 같은 정보를 입력하도록 요청합니다. Windows 시작 에이전트와 함께 Windows Sysprep을 실행할 때 응답 파일은 이 단계를 자동으로 실행합니다.

## 시작하기 전 준비 사항
<a name="sysprep-begin"></a>
+ Windows Sysprep을 수행하기 전에 Windows Sysprep을 실행할 단일 관리자 계정을 제외하고 로컬 사용자 계정 및 계정 프로파일을 모두 제거하는 것이 좋습니다. 추가 계정 및 프로파일로 Windows Sysprep를 수행하면 프로파일 데이터 손실 또는 Windows Sysprep 완료 실패 등 예기치 못한 동작이 발생할 수 있습니다.
+ [Sysprep 개요](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--system-preparation--overview)에 대해 자세히 알아보세요.
+ [서버 역할에 대한 Sysprep 지원](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep-support-for-server-roles)에 대해 알아보세요.

# EC2Launch v2와 함께 Windows Sysprep을 사용하여 AMI 생성
<a name="sysprep-using-ec2launchv2"></a>

EC2Launch v2 에이전트가 설치된 인스턴스에서 이미지를 생성하면 이미지가 준비될 때 EC2Launch v2가 특정 작업을 수행합니다. 여기에는 Windows Sysprep 작업이 포함됩니다. 자세한 내용은 [Windows Sysprep 단계](ami-create-win-sysprep.md#sysprep-phases) 섹션을 참조하세요.

**Topics**
+ [Windows Sysprep 작업](#sysprep-actions-ec2launchv2)
+ [Sysprep 이후](#sysprep-post-ec2launchv2)
+ [EC2Launch v2와 함께 Windows Sysprep 실행](#sysprep-gui-procedure-ec2launchv2)

## Windows Sysprep 작업
<a name="sysprep-actions-ec2launchv2"></a>

Windows Sysprep과 EC2Launch v2는 이미지를 준비할 때 다음 작업을 수행합니다.

1. **EC2Launch 설정(EC2Launch settings)** 대화 상자에서 **Sysprep을 이용해 종료(Shutdown with Sysprep)**를 선택하면 시스템은 `ec2launch sysprep` 명령을 실행합니다.

1. EC2Launch v2는 `unattend.xml`에서 레지스트리 값을 읽어 `HKEY_USERS\.DEFAULT\Control Panel\International\LocaleName` 파일의 내용을 편집합니다. 이 파일은 `C:\ProgramData\Amazon\EC2Launch\sysprep` 디렉터리에 있습니다.

1. 시스템이 `BeforeSysprep.cmd`를 실행합니다. 이 명령은 다음과 같은 레지스트리 키를 생성합니다.

   **reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 1 /f**

   레지스트리 키는 RDP 연결이 다시 활성화될 때까지 RDP 연결을 비활성화합니다. RDP 연결을 비활성화하는 것은 필수적인 보안 조치입니다. 왜냐하면 Windows Sysprep이 실행된 이후 첫 번째 부팅 세션 동안 RDP가 연결을 허용하고 관리자 암호가 비어 있는 짧은 시간이 있기 때문입니다.

1. EC2Launch v2 서비스는 다음 명령을 실행하여 Windows Sysprep을 호출합니다.

   **sysprep.exe /oobe /generalize /shutdown /unattend: "C:\$1ProgramData\$1Amazon\$1EC2Launch\$1sysprep\$1unattend.xml"**

### 일반화 단계
<a name="sysprep-generalize-ec2launchv2"></a>
+ EC2Launch v2는 컴퓨터 이름과 SID 같은 이미지 고유 정보 및 설정을 삭제합니다. 인스턴스가 도메인의 멤버인 경우에는 도메인에서 삭제됩니다. `unattend.xml` 응답 파일은 이 단계에 영향을 미치는 다음의 설정을 포함합니다.
  + **PersistAllDeviceInstalls**: 이 설정은 Windows 설치로 하여금 장치를 제거하고 재구성하지 못하도록 함으로써 이미지 준비 과정을 가속화하는데, 이는 Amazon AMI는 특정 드라이버가 실행되는 것을 요구하고 그 드라이버들을 재검색하는 데 시간이 걸리기 때문입니다.
  + **DoNotCleanUpNonPresentDevices**: 이 설정은 현재 존재하지 않는 장비들에 대한 플러그-앤-플레이 정보를 담고 있습니다.
+ Windows Sysprep은 AMI를 생성하기 위한 준비를 하는 과정에서 OS를 종료합니다. 시스템은 새 인스턴스를 시작하거나 원본 인스턴스를 시작합니다.

### 특수화 단계
<a name="sysprep-specialize-ec2launchv2"></a>

시스템은 컴퓨터 이름과 SID와 같은 OS 특정 요건을 생성합니다. 시스템은 또한 `unattend.xml` 응답 파일에 지정된 구성에 기반을 두어 다음 작업을 수행합니다.
+ **CopyProfile**: Windows Sysprep을 구성해 내장된 관리자 프로파일을 비롯한 모든 사용자 프로파일을 삭제할 수 있습니다. 이 설정은 내장된 관리자 계정을 보유하고 있어서 계정에 대한 어떤 사용자 지정도 새 이미지로 전달됩니다. 기본 값은 `True`입니다.

  **CopyProfile**은 기본 프로파일을 기존의 로컬 관리자 프로파일로 바꿉니다. Windows Sysprep를 실행한 후 로그인한 모든 계정은 첫 로그인 시 해당 프로파일 및 콘텐츠의 사본을 받게 됩니다.

  새 이미지로 전달하고자 하는 사용자 프로파일에 대한 특정한 사용자 지정이 없다면 이 설정을 `False`로 변경하세요. Windows Sysprep은 모든 사용자 프로파일을 삭제하며, 이를 통해 시간과 디스크 공간을 절약합니다.
+ **TimeZone**: 표준 시간대는 UTC(협정 세계시)로 기본 설정되어 있습니다.
+ **Synchronous command with order 1**: 시스템은 다음 명령을 실행하여 관리자 계정을 활성화하고 암호 요건을 지정합니다.

  ```
  net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES
  ```
+ **Synchronous command with order 2**: 시스템은 관리자 암호를 암호화합니다. 이 보안 조치는 `setAdminAccount` 작업을 구성하지 않으면 Windows Sysprep이 완료된 후 인스턴스에 액세스할 수 없도록 설계되어 있습니다.

  시스템은 로컬 시작 에이전트 디렉터리(`C:\Program Files\Amazon\EC2Launch\`)에서 다음 명령을 실행합니다.

  ```
  EC2Launch.exe internal randomize-password --username Administrator
  ```
+ 원격 데스크톱 연결을 활성화하기 위해 시스템은 터미널 서버 `fDenyTSConnections` 레지스트리 키를 false로 설정합니다.

### OOBE 단계
<a name="sysprep-oobe-ec2launchv2"></a>

1. EC2Launch v2 응답 파일을 사용하여 다음과 같은 구성을 지정합니다.
   + `<InputLocale>en-US</InputLocale>`
   + `<SystemLocale>en-US</SystemLocale>`
   + `<UILanguage>en-US</UILanguage>`
   + `<UserLocale>en-US</UserLocale>`
   + `<HideEULAPage>true</HideEULAPage>`
   + `<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>`
   + `<ProtectYourPC>3</ProtectYourPC>`
   + `<BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>`
   + `<TimeZone>UTC</TimeZone>`
   + `<RegisteredOrganization>Amazon.com</RegisteredOrganization>`
   + `<RegisteredOwner>EC2</RegisteredOwner>`
**참고**  
일반화 및 특수화 단계에서 EC2Launch v2는 OS의 상태를 모니터링합니다. EC2Launch v2는 OS가 Sysprep 단계에 있다는 것을 탐지하면 시스템 로그에 다음 메시지를 출력합니다.  
Windows is being configured. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. 시스템이 EC2Launch v2를 실행합니다.

## Sysprep 이후
<a name="sysprep-post-ec2launchv2"></a>

Windows Sysprep이 완료된 후 EC2Launch v2는 콘솔에 다음 메시지를 출력합니다.

```
Windows sysprep configuration complete.
```

그 다음에 EC2Launch v2는 다음 작업을 수행합니다.

1. `agent-config.yml` 파일의 내용을 읽고 구성된 작업을 실행합니다.

1. `preReady` 스테이지의 모든 작업을 실행합니다.

1. 실행이 완료된 후에는 `Windows is ready`라는 메시지를 인스턴스 시스템 로그에 전송합니다.

1. `PostReady` 스테이지의 모든 작업을 실행합니다.

EC2Launch v2에 대한 자세한 내용은 [EC2Launch v2 에이전트를 사용하여 EC2 Windows 인스턴스 시작 중 태스크 수행](ec2launch-v2.md) 섹션을 참조하세요.

## EC2Launch v2와 함께 Windows Sysprep 실행
<a name="sysprep-gui-procedure-ec2launchv2"></a>

Windows Sysprep과 EC2Launch v2를 이용해 표준화된 AMI를 생성하려면 다음 절차를 수행하세요.

1. Amazon EC2 콘솔에서 복제하려는 AMI를 찾습니다.

1. 실행을 시작해서 Windows 인스턴스에 연결합니다.

1. 사용자 지정 설정

   1. Windows **시작** 메뉴에서 **Amazon EC2Launch 설정(Amazon EC2Launch settings)**을 검색하고 선택합니다. Amazon **EC2Launch 설정(EC2Launch settings)** 대화 상자의 옵션 및 설정에 대한 자세한 내용은 [Windows 인스턴스에 대한 EC2Launch v2 설정 구성](ec2launch-v2-settings.md) 단원을 참조하세요.

   1. 변경 사항이 있는 경우 종료하기 전에 **저장**을 선택합니다.

1. **Sysprep을 이용해 종료** 또는 **Sysprep을 이용하지 않고 종료**를 선택합니다.

Windows Sysprep 실행 및 인스턴스 종료 여부 확인 요청을 받을 때 **예**를 클릭합니다. EC2Launch v2는 Windows Sysprep을 실행합니다. 그런 다음 인스턴스에서 로그오프되고 인스턴스가 종료됩니다. Amazon EC2 콘솔에서 [**인스턴스(Instances)**] 페이지를 보면 인스턴스 상태가 [`Running`]에서 [`Stopping`]으로 바뀐 다음 다시 [`Stopped`]로 바뀌는 것을 확인할 수 있습니다. 이 지점에서는 안전하게 현재 인스턴스에서 AMI를 생성할 수 있습니다.

다음 명령을 사용해서 명령줄에서 Windows Sysprep 도구를 수동으로 호출할 수 있습니다.

```
"%programfiles%\amazon\ec2launch\ec2launch.exe" sysprep --shutdown=true
```

# EC2Launch와 함께 Windows Sysprep을 사용하여 AMI 생성
<a name="ec2launch-sysprep"></a>

EC2Launch 에이전트가 설치된 인스턴스에서 이미지를 생성하면 이미지가 준비될 때 EC2Launch가 특정 작업을 수행합니다. 여기에는 Windows Sysprep 작업이 포함됩니다. 자세한 내용은 [Windows Sysprep 단계](ami-create-win-sysprep.md#sysprep-phases) 섹션을 참조하세요.

EC2Launch는 AMI에서 이미지 준비 프로세스를 자동화하고 보호하는 기본 응답 파일과 배치 파일을 Windows Sysrep에 제공합니다. 이 파일을 수정하는 것은 선택 사항입니다. 이 파일은 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep` 디렉터리에 있습니다.

**중요**  
Windows Sysprep을 사용하여 인스턴스 백업을 생성하지 마세요. Windows Sysprep은 시스템에 특정한 정보를 제거합니다. 이 정보를 제거하면 인스턴스 백업에서 의도하지 않은 결과가 발생할 수 있습니다.

**Topics**
+ [Windows Sysprep에 대한 EC2Launch 응답 및 배치 파일](#ec2launch-sysprep-answer-batch)
+ [EC2Launch와 함께 Windows Sysprep 실행](#ec2launch-sysprep-running)
+ [사용자 지정 AMI 시작 시 Server 2016 이후에 대한 메타데이터/KMS 경로 업데이트](#update-metadata-KMS)

## Windows Sysprep에 대한 EC2Launch 응답 및 배치 파일
<a name="ec2launch-sysprep-answer-batch"></a>

Windows Sysprep에 대한 EC2Launch 응답 파일과 배치 파일에는 다음 내용이 포함됩니다.

`Unattend.xml`  
이 파일은 기본 응답 파일입니다. `SysprepInstance.ps1`을 실행하거나 사용자 인터페이스에서 **ShutdownWithSysprep**을 선택하는 경우 시스템이 이 파일에서 설정을 읽습니다.

`BeforeSysprep.cmd`  
EC2Launch가 Windows Sysprep을 실행하기 전에 이 배치 파일이 명령을 실행하도록 사용자 지정합니다.

`SysprepSpecialize.cmd`  
Windows Sysprep 특수화 단계 중에 명령을 실행하려면 이 배치 파일을 사용자 지정합니다.

## EC2Launch와 함께 Windows Sysprep 실행
<a name="ec2launch-sysprep-running"></a>

데스크톱 환경에서 Windows Server 2016 이후를 전체 설치할 때 **EC2 Launch Settings** 애플리케이션을 사용하여 EC2Launch와 함께 Windows Sysprep을 수동으로 실행할 수 있습니다.

**EC2Launch Settings 애플리케이션을 사용하여 Windows Sysprep 실행**

1. Amazon EC2 콘솔에서 Windows Server 2016 이후 AMI를 찾거나 생성합니다.

1. AMI에서 Windows 인스턴스를 시작합니다.

1. Windows 인스턴스에 연결하고 인스턴스를 사용자 지정합니다.

1. **EC2LaunchSettings** 애플리케이션을 검색하여 실행합니다. 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Settings` 디렉터리에 위치합니다.  
![\[EC2 Launch Settings 애플리케이션\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/ec2launch-sysprep.png)

1. 필요에 따라 옵션을 선택하거나 취소합니다. 이러한 설정은 `LaunchConfig.json` 파일에 저장되어 있습니다.

1. **Administrator 암호**에서 다음 중 하나를 수행합니다.
   + **임의(Random)**를 선택합니다. EC2Launch는 암호를 생성하고 사용자의 키를 사용하여 암호를 암호화합니다. 인스턴스가 재부팅 또는 중지되었다가 시작된 경우 이 암호가 그대로 유지되도록 시스템은 인스턴스가 시작된 후 이 설정을 비활성화합니다.
   + **지정(Specify)**을 선택하고 시스템 요구 사항을 충족하는 암호를 입력합니다. 암호는 `LaunchConfig.json`에 일반 텍스트로 저장되며 Windows Sysprep에서 관리자 암호를 설정한 후에 삭제됩니다. 지금 종료하면 암호는 지금 바로 설정됩니다. EC2Launch는 사용자의 키를 사용하여 암호를 암호화합니다.
   + **DoNothing**을 선택하고 `unattend.xml` 파일에 암호를 지정합니다. `unattend.xml`에 암호를 지정하지 않으면 관리자 계정이 비활성화됩니다.

1. **Sysprep을 이용해 종료(Shutdown with Sysprep)**를 선택합니다.

**EC2Launch를 사용하여 Windows Sysprep을 수동으로 실행**

1. Amazon EC2 콘솔에서 복제하려는 Windows Server 2016 이후 Datacenter 에디션 AMI를 찾거나 만듭니다.

1. 실행을 시작해서 Windows 인스턴스에 연결합니다.

1. 인스턴스를 사용자 지정합니다.

1. `LaunchConfig.json` 파일에서 설정을 지정합니다. 이 파일은 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Config` 디렉터리에 위치합니다.

   `adminPasswordType`에 대해 다음 값 중 하나를 지정할 수 있습니다.  
`Random`  
EC2Launch는 암호를 생성하고 사용자의 키를 사용하여 암호를 암호화합니다. 인스턴스가 재부팅 또는 중지되었다가 시작된 경우 이 암호가 그대로 유지되도록 시스템은 인스턴스가 시작된 후 이 설정을 비활성화합니다.  
`Specify`  
`adminPassword`에 지정한 암호가 EC2Launch에 사용됩니다. 암호가 시스템 요구 사항에 맞지 않으면 EC2Launch에서 임의의 암호를 대신 생성합니다. 암호는 `LaunchConfig.json`에 일반 텍스트로 저장되며 Windows Sysprep에서 관리자 암호를 설정한 후에 삭제됩니다. EC2Launch는 사용자의 키를 사용하여 암호를 암호화합니다.  
`DoNothing`  
`unattend.xml` 파일에 지정한 암호가 EC2Launch에 사용됩니다. `unattend.xml`에 암호를 지정하지 않으면 관리자 계정이 비활성화됩니다.

1. (선택 사항) `unattend.xml` 및 기타 구성 파일에서 설정을 지정합니다. 설치에 참가하려는 경우 이 파일을 변경할 필요가 없습니다. 파일은 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep` 디렉터리에 위치합니다.

1. Windows PowerShell에서 `./InitializeInstance.ps1 -Schedule`을 실행합니다. 스크립트는 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts` 디렉터리에 위치합니다. 이 스크립트는 다음 부팅 중에 초기화하도록 인스턴스를 예약합니다. 다음 단계에서 `SysprepInstance.ps1` 스크립트를 실행하기 전에 이 스크립트를 실행해야 합니다.

1. Windows PowerShell에서 `./SysprepInstance.ps1`을 실행합니다. 스크립트는 기본적으로 `C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts` 디렉터리에 위치합니다.

인스턴스에서 로그오프되고 인스턴스가 종료됩니다. Amazon EC2 콘솔에서 [**인스턴스(Instances)**] 페이지를 보면 인스턴스 상태가 [`Running`]에서 [`Stopping`]으로 바뀐 다음 [`Stopped`]로 바뀌는 것을 확인할 수 있습니다. 이 시점에서는 이 인스턴스에서 안전하게 AMI를 생성할 수 있습니다.

## 사용자 지정 AMI 시작 시 Server 2016 이후에 대한 메타데이터/KMS 경로 업데이트
<a name="update-metadata-KMS"></a>

사용자 지정 AMI를 시작할 때 Server 2016 이후에 대한 메타데이터/KMS 경로를 업데이트하려면 다음과 같이 하세요.
+ EC2LaunchSettings GUI(C:\$1ProgramData\$1Amazon\$1EC2-Windows\$1Launch\$1Settings\$1Ec2LaunchSettings.exe)를 실행하고 Windows Sysprep을 사용하여 종료하는 옵션을 선택합니다.
+ EC2LaunchSettings를 실행하고 Windows Sysprep 없이 종료한 다음 AMI를 생성합니다. 그러면 다음번 부팅할 때 EC2 시작 초기화 작업을 실행하도록 설정되며, 해당 인스턴스의 서브넷을 토대로 경로가 설정됩니다.
+ [PowerShell](ec2launch-config.md#ec2launch-inittasks)에서 AMI를 생성하기 전에 EC2 시작 초기화 작업을 수동으로 다시 예약합니다.
**중요**  
작업을 다시 예약하기 전에 기본 암호 재설정 동작을 적어 두세요.
+ Windows 정품 인증 또는 인스턴스 메타데이터 오류와의 통신이 발생하는 실행 중인 인스턴스에서 경로를 업데이트하려면 [“Windows를 정품 인증할 수 없음”](common-messages.md#activate-windows)을 참조하세요.

# EC2Config와 함께 Windows Sysprep을 사용하여 AMI 생성
<a name="sysprep-using"></a>

EC2Config 서비스가 설치된 인스턴스에서 이미지를 생성하면 이미지가 준비될 때 EC2Config가 특정 작업을 수행합니다. 여기에는 Windows Sysprep 작업이 포함됩니다. 자세한 내용은 [Windows Sysprep 단계](ami-create-win-sysprep.md#sysprep-phases) 섹션을 참조하세요.

**Topics**
+ [Windows Sysprep 작업](#sysprep-actions)
+ [Sysprep 이후](#sysprep-post)
+ [EC2Config 서비스와 함께 Windows Sysprep 실행하기](#sysprep-gui-procedure)

## Windows Sysprep 작업
<a name="sysprep-actions"></a>

Windows Sysprep과 EC2Config 서비스는 이미지를 준비할 때 다음 작업을 수행합니다.

1. **EC2 서비스 속성** 대화 상자에서 **Sysprep을 이용해 종료**를 선택하면, 시스템은 **ec2config.exe -sysprep** 명령을 실행합니다.

1. EC2Config 서비스는 `BundleConfig.xml` 파일의 내용을 읽습니다. 기본적으로 이 파일은 `C:\Program Files\Amazon\Ec2ConfigService\Settings` 디렉터리에 위치합니다.

    `BundleConfig.xml` 파일에는 다음 설정이 포함되어 있습니다. 이 설정은 변경할 수 있습니다.
   + **AutoSysprep**: Windows Sysprep을 자동적으로 사용할지 여부를 지정합니다. Windows Sysprep을 EC2 Service Properties 대화 상자로부터 실행하는 경우에는 이 값을 변경할 필요가 없습니다. 기본 값은 `No`입니다.
   + **SetRDPCertificate**: 원격 데스크톱 서버에 대한 자체 서명 인증서를 설정합니다. 이렇게 함으로써 원격 데스크톱 프로토콜(RDP)을 안정적으로 이용해 인스턴스에 연결할 수 있습니다. 새 인스턴스가 인증서를 사용해야 하는 경우 이 값을 `Yes`로 변경합니다. Windows Server 2012 인스턴스는 자신의 고유한 인증서를 생성할 수 있으므로 이 설정은 이 인스턴스에서는 사용되지 않습니다. 기본 값은 `No`입니다.
   + **SetPasswordAfterSysprep**: 새로 실행된 인스턴스에 무작위 암호를 설정하고 이를 사용자 실행 키로 암호화하고 암호화된 암호를 콘솔에 출력합니다. 새 인스턴스에 무작위의 암호화된 암호를 설정해서는 안 되는 경우에는 설정 값을 `No`로 변경합니다. 기본 값은 `Yes`입니다.
   +  **PreSysprepRunCmd**: 실행할 명령의 위치 명령은 기본적으로 `C:\Program Files\Amazon\Ec2ConfigService\Scripts\BeforeSysprep.cmd` 디렉터리에 위치합니다.

1. 시스템이 `BeforeSysprep.cmd`를 실행합니다. 이 명령은 다음과 같은 레지스트리 키를 생성합니다.

   ```
   reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f
   ```

   레지스트리 키는 RDP 연결이 다시 활성화될 때까지 RDP 연결을 비활성화합니다. RDP 연결을 비활성화하는 것은 필수적인 보안 조치입니다. 왜냐하면 Windows Sysprep이 실행된 이후 첫 번째 부팅 세션 동안 RDP가 연결을 허용하고 관리자 암호가 비어 있는 짧은 시간이 있기 때문입니다.

1. EC2Config 서비스는 다음 명령을 실행하여 Windows Sysprep을 호출합니다.

   ```
   sysprep.exe /unattend: "C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml" /oobe /generalize /shutdown
   ```

### 일반화 단계
<a name="sysprep-generalize"></a>
+ 이 도구는 컴퓨터 이름과 SID 같은 이미지 고유 정보 및 설정을 삭제합니다. 인스턴스가 도메인의 멤버인 경우에는 도메인에서 삭제됩니다. `sysprep2008.xml` 응답 파일은 이 단계에 영향을 미치는 다음의 설정을 포함합니다.
  + **PersistAllDeviceInstalls**: 이 설정은 Windows 설치로 하여금 장치를 제거하고 재구성하지 못하도록 함으로써 이미지 준비 과정을 가속화하는데, 이는 Amazon AMI는 특정 드라이버가 실행되는 것을 요구하고 그 드라이버들을 재검색하는 데 시간이 걸리기 때문입니다.
  + **DoNotCleanUpNonPresentDevices**: 이 설정은 현재 존재하지 않는 장비들에 대한 플러그-앤-플레이 정보를 담고 있습니다.
+ Windows Sysprep은 AMI를 생성하기 위한 준비를 하는 과정에서 OS를 종료합니다. 시스템은 새 인스턴스를 시작하거나 원본 인스턴스를 시작합니다.

### 특수화 단계
<a name="sysprep-specialize"></a>

시스템은 컴퓨터 이름과 SID와 같은 OS 특정 요건을 생성합니다. 시스템은 또한 sysprep2008.xml 응답 파일에 지정된 구성에 기반을 두어 다음 작업을 수행합니다.
+ **CopyProfile**: Windows Sysprep을 구성해 내장된 관리자 프로파일을 비롯한 모든 사용자 프로파일을 삭제할 수 있습니다. 이 설정은 내장된 관리자 계정을 보유하고 있어서 계정에 대한 어떤 사용자 지정도 새 이미지로 전달됩니다. 기본값은 True입니다.

  **CopyProfile**은 기본 프로파일을 기존의 로컬 관리자 프로파일로 바꿉니다. Windows Sysprep를 실행한 후 로그인한 모든 계정은 첫 로그인 시 해당 프로파일 및 콘텐츠의 사본을 받게 됩니다.

  새 이미지로 전달하고자 하는 사용자 프로파일에 대한 특정한 사용자 지정이 없다면 이 설정을 False로 변경하세요. Windows Sysprep은 모든 사용자 프로파일을 삭제하며, 이를 통해 시간과 디스크 공간을 절약합니다.
+ **TimeZone**: 표준 시간대는 UTC(협정 세계시)로 기본 설정되어 있습니다.
+ **Synchronous command with order 1**: 시스템은 다음 명령을 실행하여 관리자 계정을 활성화하고 암호 요건을 지정합니다.

  **net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES**
+ **Synchronous command with order 2**: 시스템은 관리자 암호를 암호화합니다. 이 보안 조치는 ec2setpassword 설정을 활성화하지 않으면 Windows Sysprep이 완료된 후 인스턴스에 액세스할 수 없도록 설계되어 있습니다.

  C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1ScramblePassword.exe" -u Administrator
+ **Synchronous command with order 3**: 시스템은 다음 명령을 실행합니다.

  C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1SysprepSpecializePhase.cmd

   이 명령은 다음과 같은 레지스트리 키를 추가하여 RDP를 재활성화합니다.

  reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 0 /f

### OOBE 단계
<a name="sysprep-oobe"></a>

1. 시스템은 EC2Config 응답 파일을 이용해 다음과 같은 구성을 지정합니다.
   + <InputLocale>en-US</InputLocale>
   + <SystemLocale>en-US</SystemLocale>
   + <UILanguage>en-US</UILanguage>
   + <UserLocale>en-US</UserLocale>
   + <HideEULAPage>true</HideEULAPage>
   + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
   + <NetworkLocation>Other</NetworkLocation>
   + <ProtectYourPC>3</ProtectYourPC>
   + <BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>
   + <TimeZone>UTC</TimeZone>
   + <RegisteredOrganization>Amazon.com</RegisteredOrganization>
   + <RegisteredOwner>Amazon</RegisteredOwner>
**참고**  
일반화 및 특수화 단계에서 EC2Config 서비스는 OS의 상태를 모니터링합니다. EC2Config는 OS가 Sysprep 단계에 있다는 것을 탐지하면 시스템 로그에 다음 메시지를 출력합니다.  
EC2ConfigMonitorState: Windows 0개가 구성 중입니다. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. OOBE 단계가 완료되면 `SetupComplete.cmd`에 있는 `C:\Windows\Setup\Scripts\SetupComplete.cmd`가 실행됩니다. 2015년 4월 이전의 Amazon 퍼블릭 AMI에서는 이 파일이 비어 있었고 이미지 상에서 아무 것도 실행하지 않았습니다. 2015년 4월 이후 발표된 퍼블릭 AMI의 경우 파일에 **call "C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1PostSysprep.cmd"** 값이 포함됩니다.

1. `PostSysprep.cmd`가 실행되고 다음 작업이 수행됩니다.
   + 로컬 관리자 암호가 만료되지 않도록 설정합니다. 로컬 관리자 암호가 만료되면, 관리자가 로그인할 수 없을 수도 있습니다.
   + MSSQLServer 머신 이름(설치된 경우)를 설정하여 그 이름이 AMI와 동기화되도록 합니다.

## Sysprep 이후
<a name="sysprep-post"></a>

Windows Sysprep이 완료된 후 EC2Config 서비스는 콘솔에 다음 메시지를 출력합니다.

```
Windows sysprep configuration complete.
			Message: Sysprep Start
			Message: Sysprep End
```

그 다음에 EC2Config는 다음 작업을 수행합니다.

1. config.xml 파일의 내용을 읽고 활성화된 모든 플러그인을 나열합니다.

1. 모든 “Before Windows is ready” 플러그인을 동시에 실행합니다.
   + Ec2SetPassword
   + Ec2SetComputerName
   + Ec2InitializeDrives
   + Ec2EventLog
   + Ec2ConfigureRDP
   + Ec2OutputRDPCert
   + Ec2SetDriveLetter
   + Ec2WindowsActivate
   + Ec2DynamicBootVolumeSize

1. 실행이 완료된 후에는 “Windows is ready”라는 메시지를 인스턴스 시스템 로그에 전송합니다.

1. 모든 “After Windows is ready” 플러그인을 동시에 실행합니다.
   + Amazon CloudWatch Logs 
   + UserData
   + AWS Systems Manager(Systems Manager) 

Windows 플러그인에 대한 자세한 내용은 [EC2Config 서비스를 사용하여 EC2 레거시 Windows 운영 체제 인스턴스를 시작하는 동안 태스크를 수행합니다.](ec2config-service.md) 단원을 참조하세요.

## EC2Config 서비스와 함께 Windows Sysprep 실행하기
<a name="sysprep-gui-procedure"></a>

Windows Sysprep과 EC2Config 서비스를 이용해 표준화된 AMI를 생성하려면 다음 절차를 수행하세요.

1. Amazon EC2 콘솔에서 복사하고자 하는 AMI의 위치를 지정하거나 [생성](creating-an-ami-ebs.md)합니다.

1. 실행을 시작해서 Windows 인스턴스에 연결합니다.

1. 그 AMI를 사용자 지정합니다.

1. EC2Config 서비스 응답 파일에서 구성 설정을 다음과 같이 지정합니다.

   `C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml`

1. Windows **시작** 메뉴에서 **모든 프로그램**을 선택한 후 **EC2ConfigService 설정**을 클릭합니다.

1. **Ec2 서비스 속성** 대화 상자에서 **이미지** 탭을 선택합니다. Ec2 서비스 속성 대화 상자의 옵션 및 설정에 대한 자세한 내용은 [Ec2 서비스 속성](ec2config-service.md)을 참조하세요.

1. 관리자 암호에 대한 옵션을 선택하고 **Shutdown with Sysprep(Sysprep을 이용해 종료)** 또는 **Shutdown without Sysprep(Sysprep을 사용하지 않고 종료)**을 선택합니다. EC2Config는 선택한 암호 옵션에 기반하는 설정 파일을 편집합니다.
   + **Random(무작위)**: EC2Config는 암호를 생성하고 이를 사용자의 키로 암호화한 다음, 암호화된 암호를 콘솔에 표시합니다. 첫 실행 후 이 설정을 비활성화하여 인스턴스가 재부팅되거나 중단되고 시작된 경우에도 해당 암호가 계속 유지되도록 합니다.
   + **지정**: 암호를 암호화되지 않은 형태(클리어 텍스트)로 Windows Sysprep 응답 파일에 저장합니다. Windows Sysprep은 다음에 실행될 때 관리자 암호를 설정합니다. 지금 종료하면 암호는 지금 바로 설정됩니다. 서비스가 다시 시작할 때 관리자 암호는 제거됩니다. 이 암호는 나중에 다시 확인할 수 없기 때문에 이를 꼭 기억해두세요.
   + **기존 유지**: Windows Sysprep이 실행 중일 때 또는 EC2Config가 재시작할 때, 관리자 계정에 대한 기존 암호를 변경하지 않습니다. 이 암호는 나중에 다시 확인할 수 없기 때문에 이를 꼭 기억해두세요.

1. **확인**을 선택합니다.

Windows Sysprep 실행 및 인스턴스 종료 여부 확인 요청을 받을 때 **예**를 클릭합니다. EC2Config가 Windows Sysprep을 실행하는 것을 확인할 수 있습니다. 그 다음 인스턴스에서 로그아웃되고 인스턴스는 종료됩니다. Amazon EC2 콘솔의 [**인스턴스(Instances)**] 페이지를 보면 인스턴스 상태가 [`Running`]에서 [`Stopping`]로 바뀐 다음 마지막으로 [`Stopped`]로 바뀌는 것을 확인할 수 있습니다. 이 지점에서는 안전하게 현재 인스턴스에서 AMI를 생성할 수 있습니다.

다음 명령을 사용해서 명령줄에서 Windows Sysprep 도구를 수동으로 호출할 수 있습니다.

```
"%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep"" 
```

**참고**  
CMD 셸이 이미 C:\$1Program Files\$1Amazon\$1EC2ConfigService\$1 디렉터리에 있는 경우에는 명령에 큰 따옴표가 필요 없습니다.

그러나 `Ec2ConfigService\Settings` 폴더에 지정된 XML 파일 옵션이 올바른지 주의 깊게 확인할 필요가 있습니다. 이것이 올바르게 지정되지 않은 경우는 인스턴스에 연결하지 못할 수 있습니다. 설정 파일에 대한 자세한 내용은 [EC2Config 설정 파일](ec2config-service.md#UsingConfigXML_WinAMI) 단원을 참조하세요. 명령줄에서 Windows Sysprep을 구성한 후 실행하는 예제는 `Ec2ConfigService\Scripts\InstallUpdates.ps1`의 내용을 참조하세요.

# Amazon EC2 AMI 복사
<a name="CopyingAMIs"></a>

여러 리전에 일관된 Amazon EC2 인스턴스 구성이 필요한 경우 단일 Amazon Machine Image(AMI)를 템플릿으로 사용하여 모든 인스턴스를 시작할 수 있습니다. 그러나 AMI는 리전별 리소스입니다. 특정 AWS 리전에서 인스턴스를 시작하려면 AMI가 해당 리전에 있어야 합니다. 따라서 여러 리전에서 동일한 AMI를 사용하려면 소스 리전에서 각 대상 리전으로 복사해야 합니다.

AMI 복사에 사용하는 방법은 *동일한 [파티션](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#partition) 내* 리전 전체 또는 *상이한 파티션 전체*에 복사하는지에 따라 달라집니다.
+ **리전 간 복사** - *동일한 파티션 내* 리전 전체에 AMI를 복사합니다(예: 상용 파티션 내 리전 전체). 이 복사 방법은 이 주제에 설명되어 있습니다.
+ **파티션 간 복사** - *하나의 파티션에서 다른 파티션으로* AMI를 복사합니다(예: 상용 파티션에서 AWS GovCloud (US) 파티션으로). 이 복사 방법에 대한 내용은 [AMI 저장 및 복원허용된 AMI](ami-store-restore.md) 섹션을 참조하세요.
+ **계정 간 복사** - 다른 AWS 계정에서 [본인의 AWS 계정과 공유한](sharingamis-explicit.md) AMI의 사본을 생성합니다. 이 복사 방법은 이 주제에 설명되어 있습니다.

리전 간 및 계정 간 AMI 복사의 복사 작업은 가능한 한 신속하게 처리됩니다. 완료 시간을 제어해야 하는 경우 AMI가 필요한 기간 내에 복사되도록 15분\$148시간 범위로 완료 기간을 지정할 수 있습니다. 시간 기반 AMI 복사 작업에 대해서는 추가 요금이 부과됩니다. 자세한 내용은 *Amazon EBS 사용 설명서*의 [Time-based copies](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)를 참조하세요.

**Topics**
+ [고려 사항](#copy-ami-considerations)
+ [비용](#copy-ami-costs)
+ [Amazon EC2 AMI를 복사할 수 있는 권한 부여](copy-ami-permissions.md)
+ [AMI 복사](#ami-copy-steps)
+ [대기 중인 AMI 복사 작업 중지](#ami-copy-stop)
+ [Amazon EC2 AMI 복사 작동 방식](how-ami-copy-works.md)

## 고려 사항
<a name="copy-ami-considerations"></a>
+ **AMI를 복사할 권한** - IAM 정책을 사용하여 사용자에게 AMI 복사 권한을 부여하거나 거부할 수 있습니다. 2024년 10월 28일부터 소스 AMI에 대한 `CopyImage` 작업을 위한 리소스 수준 권한을 지정할 수 있습니다. 새 AMI에 대한 리소스 수준 권한은 이전처럼 사용할 수 있습니다.
+ **시작 권한 및 Amazon S3 버킷 권한** - AWS에서는 소스 AMI의 시작 권한 또는 Amazon S3 버킷 권한을 새 AMI로 복사하지 않습니다. 복사 작업이 완료된 후 시작 권한 및 Amazon S3 버킷 권한을 새 AMI에 적용할 수 있습니다.
+ **태그** - 소스 AMI에 연결한 사용자 정의 AMI 태그만 복사할 수 있습니다. 다른 AWS 계정이 첨부한 시스템 태그(접두사 `aws:` 포함) 및 사용자 정의 태그는 복사되지 않습니다. AMI를 복사할 때 새 AMI 및 해당 지원 스냅샷에 새 태그를 연결할 수 있습니다.
+ **시간 기반 AMI 복사 할당량** - *누적 스냅샷 복사 처리량 할당량*에 도달하면 후속 시간 기반 AMI 복사 요청이 실패합니다. 자세한 내용은 *Amazon EBS 사용 설명서*의 [Quotas for time-based copies](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html#time-based-copies-quota)를 참조하세요.
+ **지원되는 소스 대상 복사본** - 소스 AMI의 위치에 따라 복사 가능 여부와 새 AMI에 허용되는 대상이 결정됩니다.
  + 소스 AMI가 리전에 있는 경우 해당 리전 내, 다른 리전 또는 해당 리전과 연결된 Outpost 또는 해당 리전의 로컬 영역으로 복사할 수 있습니다.
  + 소스 AMI가 로컬 영역에 있는 경우 해당 로컬 영역 내, 해당 로컬 영역의 상위 리전 또는 상위 리전이 동일한 다른 로컬 영역에 복사할 수 있습니다.
  + 소스 AMI가 Outpost에 있는 경우 복사할 수 없습니다.
+ **소스 및 대상에 대한 CLI 파라미터** - CLI를 사용하는 경우 복사할 AMI의 소스 위치와 새 AMI의 대상을 지정하는 데 다음 파라미터가 지원됩니다. 복사 작업은 대상 리전에서 시작해야 합니다. `--region` 파라미터를 생략하면 대상은 AWS CLI 설정에 구성된 기본 리전을 따릅니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/CopyingAMIs.html)

## 비용
<a name="copy-ami-costs"></a>

완료 시간이 지정되지 않은 경우 AMI 복사 요금이 부과되지 않습니다. 그러나 시간 기반 AMI 복사 작업에는 추가 요금이 적용됩니다. 자세한 내용은 *Amazon EBS 사용 설명서*의 [Time-based copies](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html#time-based-copies-pricing)를 참조하세요.

표준 스토리지 및 데이터 전송 요금이 적용됩니다. EBS 지원 AMI를 복사하면 추가 EBS 스냅샷의 스토리지에 대한 요금이 발생합니다.

# Amazon EC2 AMI를 복사할 수 있는 권한 부여
<a name="copy-ami-permissions"></a>

EBS 지원 AMI 또는 Amazon S3 지원 AMI를 복사하려면 다음 IAM 권한이 필요합니다.
+ `ec2:CopyImage` - AMI를 복사합니다. EBS 지원 AMI의 경우 AMI의 지원 스냅샷을 복사할 권한도 부여합니다.
+ `ec2:CreateTags` - 대상 AMI에 태그를 지정합니다. EBS 지원 AMI의 경우 대상 AMI의 지원 스냅샷에 태그를 지정할 권한도 부여합니다.

인스턴스 저장소 지원 AMI를 복사하는 경우 다음과 같은 *추가* IAM 권한이 필요합니다.
+ `s3:CreateBucket` - 새 AMI의 대상 리전에 S3 버킷 생성
+ `s3:PutBucketOwnershipControls` - `aws-exec-read`[미리 준비된 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl)로 객체를 쓸 수 있도록 새로 생성된 S3 버킷에 대해 ACL 활성화
+ `s3:GetBucketAcl` - 소스 버킷의 ACL 읽기
+ `s3:ListAllMyBuckets` - 대상 리전에서 AMI용 기존 S3 버킷 찾기
+ `s3:GetObject` - 소스 버킷에서 객체 읽기
+ `s3:PutObject` - 대상 버킷에 객체 쓰기
+ `s3:PutObjectAcl` - 대상 버킷에서 새 객체에 대한 권한 쓰기

**참고**  
2024년 10월 28일부터 소스 AMI에 대한 `CopyImage` 작업을 위한 리소스 수준 권한을 지정할 수 있습니다. 대상 AMI에 대한 리소스 수준 권한은 이전처럼 사용할 수 있습니다. 자세한 내용은 *서비스 승인 참조*의 [Amazon EC2에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions) 아래 테이블의 **CopyImage**를 참조하세요.

## EBS 지원 AMI를 복사하고 대상 AMI 및 스냅샷에 태그를 지정하기 위한 IAM 정책 예제
<a name="permissions-to-copy-ebs-backed-ami"></a>

다음 정책 예제에서는 EBS 지원 AMI를 복사하고 대상 AMI 및 지원 스냅샷에 태그를 지정할 수 있는 권한을 부여합니다.

**참고**  
2024년 10월 28일부터 `Resource` 요소에 스냅샷을 지정할 수 있습니다. 자세한 내용은 *서비스 승인 참조*의 [Amazon EC2에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions) 아래 테이블의 **CopyImage**를 참조하세요.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "PermissionToCopyAllImages",
        "Effect": "Allow",
        "Action": [
            "ec2:CopyImage",
            "ec2:CreateTags"
        ],
        "Resource": [
            "arn:aws:ec2:*::image/*",
            "arn:aws:ec2:*::snapshot/*"
        ]
    }]
}
```

------

## EBS 지원 AMI를 복사하지만 새 스냅샷에 태그 지정을 거부하는 IAM 정책 예제
<a name="permissions-to-copy-ebs-backed-ami-but-deny-tagging-new-snapshots"></a>

`ec2:CopySnapshot` 권한은 `ec2:CopyImage` 권한을 받을 때 자동으로 부여됩니다. 새 백업 스냅샷에 태그를 지정할 수 있는 권한을 명시적으로 거부하여 `ec2:CreateTags` 작업의 `Allow` 효과를 재정의할 수 있습니다.

다음 정책 예제에서는 EBS 지원 AMI를 복사할 수 있는 권한은 부여하지만 대상 AMI의 새 지원 스냅샷에 태그 지정을 거부합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": [
                "ec2:CopyImage",
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:::snapshot/*"
        }
    ]
}
```

------

## Amazon S3 지원 AMI를 복사하고 대상 AMI에 태그를 지정하는 IAM 정책 예제
<a name="permissions-to-copy-instance-store-backed-ami"></a>

다음 정책 예제에서는 지정된 소스 버킷의 모든 Amazon S3 지원 AMI를 지정된 리전에 복사하고 대상 AMI에 태그를 지정할 수 있는 권한을 부여합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "PermissionToCopyAllImages",
            "Effect": "Allow",
            "Action": [
                "ec2:CopyImage",
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:*::image/*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:GetBucketAcl",
                "s3:PutObjectAcl",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amis-for-111122223333-in-us-east-2-hash"
            ]
        }
    ]
}
```

------

AMI 소스 버킷의 Amazon 리소스 이름(ARN)을 찾으려면 Amazon EC2 콘솔([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/))을 열고 탐색 창에서 [**AMI(AMIs)**]를 선택한 다음 [**소스(Source)**] 열에서 버킷 이름을 찾습니다.

**참고**  
`s3:CreateBucket` 권한은 Amazon S3 지원 AMI를 개별 리전에 처음 복사할 때만 필요합니다. 이후 리전에 이미 생성된 Amazon S3 버킷은 향후 해당 리전에 복사하는 모든 AMI를 저장하는 데 사용됩니다.

## AMI 복사
<a name="ami-copy-steps"></a>

본인이 소유하는 AMI 또는 다른 계정에서 본인과 공유한 AMI를 복사할 수 있습니다. 지원되는 소스 및 대상 조합은 [고려 사항](#copy-ami-considerations) 섹션을 참조하세요.

------
#### [ Console ]

**AMI 복사**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 콘솔 탐색 모음에서 AMI가 들어 있는 리전을 선택합니다.

1. 탐색 창에서 **AMI**를 선택하여 리전에서 사용할 수 있는 AMI 목록을 표시합니다.

1. 복사하려는 AMI가 없으면 다른 필터를 선택합니다. **내 소유** AMI, **프라이빗 이미지**, **퍼블릭 이미지**, **비활성화된 이미지**로 필터링할 수 있습니다.

1. 복사할 AMI를 선택하고 **작업**, **AMI 복사**를 선택합니다.

1. **Amazon Machine Image(AMI) 복사** 페이지에서 다음 정보를 지정합니다.

   1. **AMI 복사 이름**: 새 AMI의 이름. Amazon EC2는 AMI에 대한 세부 정보를 표시할 때 운영 체제 정보를 제공하지 않으므로 이름에 이 정보를 포함할 수 있습니다.

   1. **AMI 복사 설명**: 원본과 사본을 구분할 수 있도록 설명에는 기본적으로 원본 AMI에 대한 정보가 포함됩니다. 필요에 따라 이 설명을 수정할 수 있습니다.

   1. **대상 리전**: AMI를 복사할 리전. 자세한 내용은 [리전 간 복사](how-ami-copy-works.md#copy-amis-across-regions) 및 [교차 계정 복사](how-ami-copy-works.md#copy-ami-across-accounts)(을)를 참조하세요.

   1. **태그 복사**: AMI를 복사할 때 사용자 정의 AMI 태그를 포함하려면 이 확인란을 선택합니다. 다른 AWS 계정이 첨부한 시스템 태그(접두사 `aws:` 포함) 및 사용자 정의 태그는 복사되지 않습니다.

   1. **시간 기반 복사**: 다음과 같이 복사 작업을 특정 기간 내에 완료할지, 가능한 한 신속하게 완료할지 지정할 수 있습니다.
      + 특정 기간 내에 복사를 완료하는 방법:
        + **시간 기반 복사 활성화**를 선택합니다.
        + 복사 작업에 허용되는 시간(15분씩 증분)을 **완료 기간**에 입력합니다. 완료 기간은 AMI에 연결된 모든 스냅샷에 적용됩니다.

          자세한 내용은 *Amazon EBS 사용 설명서*의 [Time-based copies](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)를 참조하세요.
      + 가능한 한 신속하게 복사를 완료하는 방법:
        + **시간 기반 복사 활성화**를 선택되지 않은 상태로 놓아둡니다.

   1. (EBS 지원 AMI만 해당) **AMI 사본의 EBS 스냅샷 암호화**: 대상 스냅샷을 암호화하거나 다른 키를 사용하여 다시 암호화하려면 이 확인란을 선택합니다. 암호화가 기본적으로 활성화되면 **AMI 사본의 EBS 스냅샷 암호화** 확인란이 선택되고 선택을 취소할 수 없습니다. 자세한 내용은 [암호화 및 복사](how-ami-copy-works.md#ami-copy-encryption) 섹션을 참조하세요.

   1. (EBS 지원 AMI만 해당) **KMS 키**: 대상 스냅샷을 암호화하는 데 사용하는 KMS 키입니다.

   1. **태그**: 새 AMI 및 새 스냅샷에 동일한 태그를 지정하거나 다른 태그를 지정할 수 있습니다.
      + 새 AMI 및 새 스냅샷에 *동일한* 태그를 지정하려면 **이미지와 스냅샷을 함께 태그 지정**을 선택합니다. 새 AMI 및 생성된 모든 스냅샷에 동일한 태그가 적용됩니다.
      + 새 AMI 및 새 스냅샷에 *다른* 태그를 지정하려면 **이미지와 스냅샷을 별도로 태그 지정**을 선택합니다. 새 AMI 및 생성된 스냅샷에 서로 다른 태그가 적용됩니다. 그러나 생성된 모든 스냅샷의 태그는 동일하며 각 스냅샷에 다른 태그를 지정할 수 없습니다.

      태그를 추가하려면 [**태그 추가(Add tag)**]를 선택하고 해당 태그에 대한 키와 값을 입력합니다. 각 태그에 대해 반복합니다.

   1. AMI를 복사할 준비가 되면 **AMI 복사**를 선택합니다.

      새 AMI의 초기 상태는 `Pending`입니다. 상태가 `Available`인 경우 AMI 복사 작업이 완료된 것입니다.

------
#### [ AWS CLI ]

**한 리전에서 다른 리전으로 AMI를 복사하려면**  
[copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 명령을 사용합니다. 원본 리전과 대상 리전을 모두 지정해야 합니다. `--source-region` 파라미터를 사용하여 원본 리전을 지정합니다. `--region` 파라미터를 사용하여 대상 리전을 지정할 수 있습니다(또는 이 파라미터를 생략하여 AWS CLI 설정에 구성된 기본 리전을 수임).

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region us-west-2 \
    --name my-ami \
    --region us-east-1
```

AMI 복사 중에 대상 스냅샷을 암호화하는 경우, `--encrypted` 및 `--kms-key-id` 파라미터를 추가로 지정해야 합니다.

**리전에서 로컬 영역으로 AMI를 복사하려면**  
[copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 명령을 사용합니다. 소스와 대상을 모두 지정해야 합니다. `--source-region` 파라미터를 사용하여 원본 리전을 지정합니다. `--destination-availability-zone` 파라미터를 사용하여 대상 로컬 영역을 지정합니다(`--destination-availability-zone-id`를 대신 사용할 수 있음). AMI는 동일한 리전에 있는 로컬 영역으로만 복사할 수 있습니다.

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --destination-availability-zone cn-north-1-pkx-1a \
    --name my-ami \
    --region cn-north-1
```

**로컬 영역에서 리전으로 AMI를 복사하려면**  
[copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 명령을 사용합니다. 소스와 대상을 모두 지정해야 합니다. `--source-region` 파라미터를 사용하여 원본 리전을 지정합니다. `--region` 파라미터를 사용하여 대상 리전을 지정합니다(또는 이 파라미터를 생략하여 AWS CLI 설정에 구성된 기본 리전을 수임). 소스 로컬 영역은 지정된 소스 AMI ID의 위치에서 수임됩니다. AMI를 로컬 영역에서 상위 리전으로만 복사할 수 있습니다.

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --name my-ami \
    --region cn-north-1
```

**한 로컬 영역에서 다른 로컬 영역으로 AMI를 복사하려면**  
[copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 명령을 사용합니다. 소스와 대상을 모두 지정해야 합니다. `--source-region` 파라미터를 사용하여 로컬 영역의 소스 리전을 지정합니다. `--destination-availability-zone` 파라미터를 사용하여 대상 로컬 영역을 지정합니다(`--destination-availability-zone-id`를 대신 사용할 수 있음). 소스 로컬 영역은 지정된 소스 AMI ID의 위치에서 수임됩니다. `--region` 파라미터를 사용하여 대상 로컬 영역의 상위 리전을 지정합니다(또는 이 파라미터를 생략하여 AWS CLI 설정에 구성된 기본 리전을 수임).

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --destination-availability-zone cn-north-1-pkx-1a \
    --name my-ami \
    --region cn-north-1
```

------
#### [ PowerShell ]

**한 리전에서 다른 리전으로 AMI를 복사하려면**  
[Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet을 사용합니다. 원본 리전과 대상 리전을 모두 지정해야 합니다. `-SourceRegion` 파라미터를 사용하여 원본 리전을 지정합니다. `-Region` 파라미터 또는 [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) cmdlet을 사용하여 대상 리전을 지정할 수 있습니다.

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion us-west-2 `
    -Name my-ami `
    -Region us-east-1
```

AMI 복사 중에 대상 스냅샷을 암호화하는 경우, `-Encrypted` 및 `-KmsKeyId` 파라미터를 추가로 지정해야 합니다.

**리전에서 로컬 영역으로 AMI를 복사하려면**  
[Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet을 사용합니다. 소스와 대상을 모두 지정해야 합니다. `-SourceRegion` 파라미터를 사용하여 원본 리전을 지정합니다. `-DestinationAvailabilityZone` 파라미터를 사용하여 대상 로컬 영역을 지정합니다(`-DestinationAvailabilityZoneId`를 대신 사용할 수 있음). AMI는 동일한 리전에 있는 로컬 영역으로만 복사할 수 있습니다.

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -DestinationAvailabilityZone cn-north-1-pkx-1a `
    -Name my-ami `
    -Region cn-north-1
```

**로컬 영역에서 리전으로 AMI를 복사하려면**  
[Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet을 사용합니다. 소스와 대상을 모두 지정해야 합니다. `-SourceRegion` 파라미터를 사용하여 원본 리전을 지정합니다. `-Region` 파라미터 또는 [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) cmdlet을 사용하여 대상 리전을 지정합니다. 소스 로컬 영역은 지정된 소스 AMI ID의 위치에서 수임됩니다. AMI를 로컬 영역에서 상위 리전으로만 복사할 수 있습니다.

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -Name my-ami `
    -Region cn-north-1
```

**한 로컬 영역에서 다른 로컬 영역으로 AMI를 복사하려면**  
[Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet을 사용합니다. 소스와 대상을 모두 지정해야 합니다. `-SourceRegion` 파라미터를 사용하여 로컬 영역의 소스 리전을 지정합니다. `-DestinationAvailabilityZone` 파라미터를 사용하여 대상 로컬 영역을 지정합니다(`-DestinationAvailabilityZoneId`를 대신 사용할 수 있음). 소스 로컬 영역은 지정된 소스 AMI ID의 위치에서 수임됩니다. `-Region` 파라미터 또는 [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) cmdlet을 사용하여 대상 로컬 영역의 상위 리전을 지정합니다.

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -DestinationAvailabilityZone cn-north-1-pkx-1a `
    -Name my-ami `
    -Region cn-north-1
```

------

## 대기 중인 AMI 복사 작업 중지
<a name="ami-copy-stop"></a>

다음 절차에 따라 보류 중인 AMI 복사를 중지할 수 있습니다.

------
#### [ Console ]

**AMI 복사 작업을 중지하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 모음의 리전 선택기에서 대상 리전을 선택합니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. 복사를 중지할 AMI를 선택하고 **작업**, **AMI 등록 해제**를 차례로 선택합니다.

1. 확인을 요청하면 **AMI 등록 취소(Deregister AMI)**를 선택합니다.

------
#### [ AWS CLI ]

**AMI 복사 작업을 중지하려면**  
[deregister-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-image.html) 명령을 사용합니다.

```
aws ec2 deregister-image --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**AMI 복사 작업을 중지하려면**  
[Unregister-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Image.html) cmdlet을 사용합니다.

```
Unregister-EC2Image -ImageId ami-0abcdef1234567890
```

------

# Amazon EC2 AMI 복사 작동 방식
<a name="how-ami-copy-works"></a>

소스 AMI를 복사하면 *대상* AMI라고 하는 동일하지만 별개의 새 AMI가 생성됩니다. 대상 AMI에는 고유한 AMI ID가 있습니다. 대상 AMI에 영향을 미치지 않고 원본 AMI를 변경하거나 다시 등록할 수 있습니다. 반대의 경우도 마찬가지입니다.

EBS 지원 AMI의 경우 각 지원 스냅샷이 동일하지만 별개의 대상 스냅샷으로 복사됩니다. AMI를 새 리전으로 복사하는 경우 스냅샷은 증분이 아닌 전체 복사본이 됩니다. 암호화되지 않은 백업 스냅샷을 암호화하거나 새 KMS 키로 암호화하는 경우 스냅샷은 전체(비증분) 복사본입니다. 이후에 AMI 복사 작업을 수행하면 백업 스냅샷의 증분 복사본이 생성됩니다.

**Topics**
+ [리전 간 복사](#copy-amis-across-regions)
+ [교차 계정 복사](#copy-ami-across-accounts)
+ [시간 기반 AMI 복사 작업](#ami-time-based)
+ [암호화 및 복사](#ami-copy-encryption)

## 리전 간 복사
<a name="copy-amis-across-regions"></a>

지리적으로 다른 리전 간에 AMI를 복사하면 다음과 같은 이점이 제공됩니다.
+ 일관적인 글로벌 배포: 한 리전에서 다른 리전으로 AMI를 복사하면 동일한 AMI를 기반으로 하는 일관적인 인스턴스를 여러 리전에서 시작할 수 있습니다.
+ 확장성: 사용자의 리전에 관계없이 요구 사항에 대응하는 글로벌 애플리케이션을 보다 손쉽게 설계하고 구축할 수 있습니다.
+ 성능: 애플리케이션을 분산하여 성능을 높이고 애플리케이션의 핵심 구성 요소를 사용자에게 보다 가까이 둘 수 있습니다. 또한 인스턴스 유형이나 여타 AWS 서비스와 같은 리전별 기능을 활용할 수 있습니다.
+ 고가용성: 여러 AWS 리전을 포괄하는 애플리케이션을 설계하고 배포하여 가용성을 높일 수 있습니다.

다음 다이어그램은 소스 AMI 및 다른 리전에 복사된 2개의 AMI 간 관계와 각각에서 시작된 EC2 인스턴스를 보여줍니다. AMI에서 인스턴스를 시작하는 경우 인스턴스는 AMI가 상주하는 동일한 리전에 상주합니다. 원본 AMI를 변경한 후 대상 리전의 AMI에 변경 내용을 반영하려면 원본 AMI를 대상 리전으로 다시 복사해야 합니다.

![\[서로 다른 리전에 복사된 AMI\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/ami_copy.png)


Amazon S3 지원 AMI를 리전에 처음 복사하면 해당 리전에 복사된 AMI에 대한 Amazon S3 버킷이 생성됩니다. 해당 리전에 복사하는 Amazon S3 지원 AMI는 모두 이 버킷에 저장됩니다. 버킷 이름 형식은 amis-for-*account*-in-*region*-*hash*를 따릅니다. 예를 들면 `amis-for-123456789012-in-us-east-2-yhjmxvp6`입니다.

**사전 조건**  
AMI를 복사하기 전에 원본 AMI의 내용이 다른 리전에서 실행이 가능하도록 업데이트되었는지 확인해야 합니다. 예를 들어 데이터베이스 연결 문자열 등의 애플리케이션 구성 데이터가 적절한 리소스를 가리키도록 업데이트해야 합니다. 그렇게 하지 않으면 대상 리전의 새 AMI에서 시작된 인스턴스가 여전히 소스 리전의 리소스를 사용하여 성능과 비용에 영향을 줄 수 있습니다.

**제한 사항**
+ 대상 리전은 300개의 동시 AMI 복사 작업으로 제한됩니다. 이는 시간 기반 AMI 복사 작업에도 적용됩니다.
+ 반가상화(PV) AMI를 지원하지 않는 리전으로 PV AMI를 복사할 수 없습니다. 자세한 내용은 [가상화 유형](ComponentsAMIs.md#virtualization_types) 섹션을 참조하세요.

## 교차 계정 복사
<a name="copy-ami-across-accounts"></a>

다른 AWS 계정의 AMI이 [자신의 AWS 계정과 공유](sharingamis-explicit.md)되는 경우 해당 공유 AMI를 복사할 수 있습니다. 이것을 교차 계정 액세스라고 합니다. 공유되는 AMI가 소스 AMI입니다. 소스 AMI를 복사할 때 새 AMI를 생성합니다. 새 AMI를 종종 대상 AMI라고 합니다.

**AMI 비용**
+ 공유 AMI의 경우 공유 AMI의 계정에 리전의 스토리지 비용이 청구됩니다.
+ 자신의 계정과 공유된 AMI를 복사하는 경우 계정에 생성된 대상 AMI의 소유자가 됩니다.
  + 소스 AMI의 소유자에게는 표준 Amazon EBS 또는 Amazon S3 전송 요금이 청구됩니다.
  + 대상 리전의 대상 AMI에 대한 스토리지 요금이 청구됩니다.

**리소스 권한**  
다른 계정에서 공유된 AMI를 복사하려면 AMI 자체가 아니라 AMI를 지원하는 스토리지에 대한 읽기 권한을 소스 AMI 소유자가 부여해야 합니다. 스토리지는 연결된 EBS 스냅샷(Amazon EBS 지원 AMI의 경우) 또는 연결된 S3 버킷(Amazon S3 지원 AMI) 중 하나입니다. 공유 AMI에 암호화된 스냅샷이 있는 경우, 소유자는 해당 키를 사용자와 공유해야 합니다. 리소스 권한 부여에 대한 자세한 내용은 EBS 스냅샷의 경우 *Amazon EBS 사용 설명서*의 [Amazon EBS 스냅샷을 다른 AWS 계정와 공유](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-modifying-snapshot-permissions.html), S3 버킷의 경우 *Amazon S3 사용 설명서*의 [Amazon S3의 Identity and Access Management](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html)를 참조하세요.

**참고**  
소스 AMI에 연결된 태그는 계정 간에 대상 AMI로 복사되지 않습니다.

## 시간 기반 AMI 복사 작업
<a name="ami-time-based"></a>

연결된 단일 스냅샷이 있는 EBS 지원 AMI에 대해 시간 기반 AMI 복사 작업을 시작하는 경우 **개별 시간 기반 스냅샷 복사 작업**과 동일한 방식으로 작동하며 동일한 처리량 제한이 적용됩니다.

연결된 여러 스냅샷이 있는 EBS 지원 AMI에 대해 시간 기반 AMI 복사 작업을 시작하는 경우 **동시 시간 기반 스냅샷 복사 작업**과 동일한 방식으로 작동하며 동일한 처리량 제한이 적용됩니다. 연결된 각 스냅샷은 별도의 스냅샷 복사 요청을 생성하며, 각 요청은 누적 스냅샷 복사 처리량 할당량에 포함됩니다. 사용자가 지정한 완료 기간은 연결된 각 스냅샷에 적용됩니다.

자세한 내용은 *Amazon EBS 사용 설명서*의 [Time-based copies](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)를 참조하세요.

## 암호화 및 복사
<a name="ami-copy-encryption"></a>

다음 표는 다양한 AMI 복사 시나리오에 대한 암호화 지원을 보여 줍니다. 암호화되지 않은 스냅샷을 복사하여 암호화된 스냅샷을 생성할 수 있지만, 암호화된 스냅샷을 복사하여 암호화되지 않은 스냅샷을 생성할 수는 없습니다.


| 시나리오 | 설명 | 지원 | 
| --- | --- | --- | 
| 1 | 암호화되지 않음-암호화되지 않음 | 예 | 
| 2 | 암호화됨-암호화됨 | 예 | 
| 3 | 암호화되지 않음-암호화됨 | 예 | 
| 4 | 암호화됨-암호화되지 않음 | 아니요 | 

**참고**  
`CopyImage` 작업 중 암호화는 Amazon EBS 지원 AMI에만 적용됩니다. Amazon S3 지원 AMI는 스냅샷을 사용하지 않기 때문에 복사를 사용하여 암호화 상태를 변경할 수 없습니다.

암호화 파라미터를 지정하지 않고 AMI를 복사하면 지원 스냅샷은 기본적으로 원래 암호화 상태로 복사됩니다. 따라서 소스 AMI가 암호화되지 않은 스냅샷으로 지원되는 경우 결과 대상 스냅샷도 암호화되지 않습니다. 마찬가지로 소스 AMI의 스냅샷이 암호화된 경우 결과 대상 스냅샷도 동일한 AWS KMS 키로 암호화됩니다. 여러 스냅샷이 지원하는 AMI의 경우, 각 대상 스냅샷에서 해당 소스 스냅샷의 암호화 상태가 유지됩니다.

AMI 복사 중에 대상 지원 스냅샷의 암호화 상태를 변경하려면 암호화 파라미터를 지정할 수 있습니다. 다음 예제는 대상 AMI의 암호화 상태를 변경하기 위해 `CopyImage` 작업으로 암호화 파라미터가 지정되는 기본이 아닌 사례를 보여줍니다.

**암호화되지 않은 원본 AMI을(를) 암호화된 대상 AMI(으)로 복사**

이 시나리오에서는 암호화되지 않은 루트 스냅샷으로 지원되는 AMI가 암호화된 루트 스냅샷이 있는 AMI로 복사됩니다. `CopyImage` 작업은 고객 관리형 키를 포함하여 2개의 암호화 파라미터를 사용하여 호출됩니다. 따라서 루트 스냅샷의 암호화 상태가 변경되므로 대상 AMI는 소스 스냅샷과 동일한 데이터를 포함하는 루트 스냅샷에 의해 지원되지만 지정된 키를 사용하여 암호화됩니다. 두 AMI 모두의 스냅샷에 대한 스토리지 비용과 각 AMI에서 시작되는 인스턴스에 대한 비용이 발생합니다.

**참고**  
기본적으로 암호화를 활성화하는 경우 AMI의 모든 스냅샷에서 `Encrypted` 파라미터를 `true`로 설정하는 것과 효과가 동일합니다.

![\[AMI 복사 후 즉시 스냅샷 암호화\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/ami-to-ami-convert.png)


`Encrypted` 파라미터를 설정하면 이 인스턴스에 대한 단일 스냅샷이 암호화됩니다. `KmsKeyId` 파라미터를 지정하지 않으면 스냅샷 복사본을 암호화하는 데 기본 고객 관리형 키가 사용됩니다.

암호화된 스냅샷을 포함하는 AMI 복사에 대한 자세한 내용은 [EBS-backed AMI에서 암호화 사용](AMIEncryption.md) 섹션을 참조하세요.

# S3를 사용하여 AMI 저장 및 복원
<a name="ami-store-restore"></a>

Amazon Machine Image(AMI)를 Amazon S3 버킷에 저장하고 AMI를 다른 S3 버킷으로 복사한 다음 S3 버킷에서 복원할 수 있습니다. S3 버킷을 사용하여 AMI를 저장하고 복원하면 한 AWS 파티션의 AMI를 다른 파티션으로, 예를 들어 기본 상용 파티션에서 AWS GovCloud (US) 파티션으로 복사할 수 있습니다. 또한 AMI를 S3 버킷에 저장하면 AMI의 아카이브 복사본을 만들 수도 있습니다.

S3를 사용하여 AMI를 저장하고 복원할 때 지원되는 API는 `CreateStoreImageTask`, `DescribeStoreImageTasks` 및 `CreateRestoreImageTask`입니다.

`CopyImage`는 AWS 파티션 내에서 AMI를 복사할 때 권장되는* *API입니다. 그러나 `CopyImage`를 사용하여 AMI를 *다른* 파티션으로 복사할 수는 없습니다.

AWS 파티션에 대한 자세한 내용은 *IAM 사용 설명서*의 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 페이지에서 *partition*을 참조하세요.

**주의**  
AWS 파티션 또는 AWS 리전 간에 데이터를 이동할 때는 해당하는 정부 규제 및 데이터 레지던시 요구 사항을 포함한 모든 관련 법률 및 비즈니스 요구 사항을 준수해야 합니다.

**Topics**
+ [사용 사례](#use-cases)
+ [제한 사항](#ami-store-restore-limitations)
+ [비용](#store-restore-costs)
+ [AMI 저장 및 복원 작동 방식](store-restore-how-it-works.md)
+ [이미지 저장 태스크 생성](work-with-ami-store-restore.md)

## 사용 사례
<a name="use-cases"></a>

**Topics**
+ [AWS 파티션 간 AMI 복사](#copy-to-partition)
+ [AMI의 아카이브 복사본 만들기](#archival-copies)

### AWS 파티션 간 AMI 복사
<a name="copy-to-partition"></a>

S3 버킷을 사용하여 AMI를 저장하고 복원하면 한 파티션에서 다른 AWS 파티션으로 또는 한 리전에서 다른 AWS 리전으로 AMI를 복사할 수 있습니다. 다음 예에서는 기본 상용 파티션의 AMI를 AWS GovCloud (US) 파티션으로, 특히 `us-east-2` 리전에서 `us-gov-east-1` 리전으로 복사합니다.

한 파티션에서 다른 파티션으로 AMI를 복사하려면 다음 단계를 수행합니다.
+ `CreateStoreImageTask`를 사용하여 현재 리전의 S3 버킷에 AMI를 저장합니다. 이 예에서 S3 버킷은 `us-east-2`에 있습니다.
+ `DescribeStoreImageTasks`를 사용하여 저장 태스크의 진행률을 모니터링합니다. 태스크가 완료되면 객체가 S3 버킷에 표시됩니다.
+ 선택한 절차를 사용하여 저장된 AMI 객체를 대상 파티션의 S3 버킷에 복사합니다. 이 예에서 S3 버킷은 `us-gov-east-1`에 있습니다.
**참고**  
각 파티션마다 다른 AWS 자격 증명이 필요하기 때문에 S3 객체를 한 파티션에서 다른 파티션으로 직접 복사할 수 없습니다. 파티션에서 S3 객체를 복사하는 프로세스는 이 설명서에서 다루지 않습니다. AWS에서는 다음 복사 프로세스를 예로 제공하지만 사용자는 보안 요구 사항을 충족하는 복사 프로세스를 사용해야 합니다.  
파티션에서 하나의 AMI를 복사하기 위한 복사 프로세스는 다음과 같이 간단할 수 있습니다. 즉, 원본 버킷에서 중간 호스트(예: EC2 인스턴스 또는 랩톱)로 [객체를 다운로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html)한 후 중간 호스트에서 대상 버킷으로 [객체를 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)합니다. 프로세스의 각 단계에 대해 파티션에 대한 AWS 자격 증명을 사용합니다.
지속적인 사용을 위해서는 S3 [멀티파트 다운로드 및 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)를 사용하여 복사본을 관리하는 애플리케이션을 개발하는 것이 좋습니다.
+ `CreateRestoreImageTask`를 사용하여 대상 파티션의 S3 버킷에서 AMI를 복원합니다. 이 예에서 S3 버킷은 `us-gov-east-1`에 있습니다.
+ AMI를 설명하여 복원 태스크의 진행률을 모니터링하면 사용 가능한 상태가 될 때를 확인할 수 있습니다. 스냅샷을 설명하여 복원된 AMI를 구성하는 스냅샷의 진행 비율을 모니터링할 수도 있습니다.

### AMI의 아카이브 복사본 만들기
<a name="archival-copies"></a>

S3 버킷에 AMI를 저장하여 아카이브 복사본을 만들 수 있습니다. AMI는 S3의 단일 객체로 압축되며 모든 AMI 메타데이터(공유 정보 제외)는 저장된 AMI의 일부로 보존됩니다. AMI 데이터는 스토리지 프로세스의 일부로 압축됩니다. 쉽게 압축할 수 있는 데이터가 포함된 AMI의 경우 S3의 객체 크기가 작아집니다. 비용을 절감하려면 저렴한 S3 스토리지 계층을 사용할 수 있습니다. 자세한 내용은 [Amazon S3 스토리지 클래스](https://aws.amazon.com/s3/storage-classes/) 및 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

## 제한 사항
<a name="ami-store-restore-limitations"></a>
+ AMI를 저장하려면 AWS 계정이(가) AMI와 해당 스냅샷을 소유하거나 AMI와 해당 스냅샷을 [계정과 직접 공유](sharingamis-explicit.md)해야 합니다. [공개 공유](sharingamis-intro.md) 전용인 AMI는 저장할 수 없습니다.
+ 이러한 API는 EBS-backed AMI를 저장할 때만 사용할 수 있습니다.
+ 반가상화(PV) AMI는 지원되지 않습니다.
+ 저장할 수 있는 AMI의 크기(압축 전)는 5,000GB로 제한됩니다.
+ 이미지 저장 요청의 할당량: 진행 중인 저장 작업(스냅샷 데이터) 1,200GB.
+ 이미지 복원 요청의 할당량: 진행 중인 복원 작업(스냅샷 데이터) 600GB.
+ 저장 태스크 중에는 스냅샷이 삭제되지 않아야 하며 저장을 수행하는 IAM 보안 주체가 스냅샷에 액세스할 수 있어야 합니다. 그렇지 않으면 저장 프로세스가 실패합니다.
+ 동일한 S3 버킷에 AMI의 여러 복사본을 생성할 수 없습니다.
+ S3 버킷에 저장된 AMI를 원래 AMI ID로 복원할 수 없습니다. [AMI 별칭 지정](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-ec2-aliases.html)을 사용하여 이 문제를 완화할 수 있습니다.
+ 현재, 저장 및 복원 API는 AWS Command Line Interface, AWS SDK 및 Amazon EC2 API를 사용하는 경우에만 지원됩니다. Amazon EC2 콘솔을 사용하여 AMI를 저장하고 복원할 수는 없습니다.

## 비용
<a name="store-restore-costs"></a>

S3를 사용하여 AMI를 저장 및 복원하는 경우 저장 및 복원 API에 사용되는 서비스와 데이터 전송 요금이 부과됩니다. 이 API는 S3 및 EBS Direct API(API 내부에서 스냅샷 데이터에 액세스하는 데 사용됨)를 사용합니다. 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/) 및 [Amazon EBS 요금](https://aws.amazon.com/ebs/pricing/)을 참조하세요.

# AMI 저장 및 복원 작동 방식
<a name="store-restore-how-it-works"></a>

S3를 사용하여 AMI를 저장하고 복원하려면 다음 API를 사용합니다.
+ `CreateStoreImageTask` – S3 버킷에 AMI 저장
+ `DescribeStoreImageTasks` – AMI 저장 태스크의 진행률 제공
+ `CreateRestoreImageTask` – S3 버킷에서 AMI 복원

**Topics**
+ [CreateStoreImageTask](#CreateStoreImageTask)
+ [DescribeStoreImageTasks](#DescribeStoreImageTasks)
+ [CreateRestoreImageTask](#CreateRestoreImageTask)
+ [파일 경로](#file-paths-in-s3)

## CreateStoreImageTask
<a name="CreateStoreImageTask"></a>

`CreateStoreImageTask` API는 AMI를 S3 버킷에 단일 객체로 저장합니다.

이 API는 AMI 및 해당 스냅샷의 모든 데이터를 읽은 다음 [S3 멀티파트 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)를 사용하여 데이터를 S3 객체에 저장하는 태스크를 생성합니다. 이 API는 리전에 특정되지 않은 AMI 메타데이터 대부분을 포함한 AMI의 모든 구성 요소와 AMI에 포함된 모든 EBS 스냅샷을 가져와서 S3의 단일 객체로 압축합니다. S3에 사용되는 공간의 양을 줄이기 위해 업로드 프로세스의 일부로 데이터가 압축되므로 S3의 객체는 AMI의 스냅샷 크기 합계보다 작을 수 있습니다.

이 API를 호출하는 계정에 AMI와 스냅샷의 태그가 표시되는 경우 해당 태그가 보존됩니다.

S3의 객체는 AMI와 동일한 ID를 가지지만 `.bin` 확장자가 사용됩니다. 또한 AMI 이름, AMI 설명, AMI 등록 날짜, AMI 소유자 계정 및 저장 작업의 타임스탬프와 같은 데이터는 S3 객체에 S3 메타데이터 태그로 저장됩니다.

태스크를 완료하는 데 걸리는 시간은 AMI의 크기에 따라 다릅니다. 또한 태스크가 대기열에 있기 때문에 진행 중인 다른 태스크의 수에 따라서도 달라집니다. `DescribeStoreImageTasks` API를 직접적으로 호출하여 태스크의 진행을 추적할 수 있습니다.

진행 중인 모든 AMI 크기의 합계는 계정당 1,200GB의 EBS 스냅샷 데이터로 제한됩니다. 진행 중인 태스크가 한도보다 작아질 때까지 추가 태스크 생성이 거부됩니다. 예를 들어 200GB의 스냅샷 데이터가 포함된 AMI와 400GB의 스냅샷 데이터가 포함된 또 다른 AMI가 현재 저장 중인 경우 진행 중인 합계가 한도보다 작은 600GB이므로 다른 요청이 수락됩니다. 그러나 1,200GB의 스냅샷 데이터가 포함된 단일 AMI가 현재 저장 중인 경우에는 태스크가 완료될 때까지 추가 태스크가 거부됩니다.

## DescribeStoreImageTasks
<a name="DescribeStoreImageTasks"></a>

`DescribeStoreImageTasks` API는 AMI 저장 태스크의 진행 상황을 설명합니다. 지정된 AMI에 대한 태스크를 설명할 수 있습니다. AMI를 지정하지 않으면 지난 31일 동안 처리된 모든 이미지 저장 태스크의 페이지 매김 목록이 표시됩니다.

각 AMI 태스크에 대한 응답에는 태스크가 `InProgress`, `Completed` 또는 `Failed`인지 표시됩니다. `InProgress` 태스크의 경우 응답에 예상 진행률이 백분율로 표시됩니다.

태스크는 역순으로 나열됩니다.

현재로서는 이전 월의 태스크만 볼 수 있습니다.

## CreateRestoreImageTask
<a name="CreateRestoreImageTask"></a>

`CreateRestoreImageTask` API는 `CreateStoreImageTask` 요청을 사용하여 이전에 생성된 S3 객체에서 AMI를 복원하는 태스크를 시작합니다.

복원 태스크는 저장 태스크가 수행된 동일한 리전 또는 다른 리전에서 수행될 수 있습니다.

AMI 객체를 복원할 S3 버킷은 복원 태스크가 요청된 동일한 리전에 있어야 합니다. AMI는 이 리전에 복원됩니다.

AMI는 저장된 AMI의 값에 해당하는 이름, 설명 및 블록 디바이스 매핑과 같은 메타데이터와 함께 복원됩니다. 이름은 이 계정의 리전 내 AMI에 대해 고유해야 합니다. 이름을 제공하지 않으면 새 AMI에 원래 AMI와 동일한 이름이 지정됩니다. 복원 프로세스 시 생성된 새 AMI ID가 AMI에 지정됩니다.

AMI 복원 태스크를 완료하는 데 걸리는 시간은 AMI의 크기에 따라 다릅니다. 또한 태스크가 대기열에 있기 때문에 진행 중인 다른 태스크의 수에 따라서도 달라집니다. AMI를 설명([describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html))하거나 EBS 스냅샷을 설명([describe-snapshots](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-snapshots.html))하여 태스크 진행률을 볼 수 있습니다. 태스크가 실패하면 AMI와 스냅샷이 실패 상태로 전환됩니다.

진행 중인 모든 AMI의 크기 합계는 계정당 600GB(복원 후 크기 기준)의 EBS 스냅샷 데이터로 제한됩니다. 진행 중인 태스크가 한도보다 작아질 때까지 추가 태스크 생성이 거부됩니다.

## 파일 경로
<a name="file-paths-in-s3"></a>

다음과 같은 방식으로 AMI를 저장 및 복원할 때 파일 경로를 사용할 수 있습니다.
+ S3에 AMI를 저장할 때 파일 경로를 버킷 이름에 추가할 수 있습니다. 내부적으로 시스템은 경로를 버킷 이름과 분리한 다음 AMI 저장을 위해 생성된 객체 키에 경로를 추가합니다. 전체 객체 경로가 API 호출의 응답에 표시됩니다.
+ AMI를 복원할 때 객체 키 파라미터가 제공되므로 경로를 객체 키 값의 시작 부분에 추가할 수 있습니다.

**예시: 파일 경로가 추가된 버킷 이름**  
AMI를 저장할 때 버킷 이름 뒤에 파일 경로를 지정합니다.

```
amzn-s3-demo-bucket/path1/path2
```

결과 객체 키는 다음과 같습니다.

```
path1/path2/ami-0abcdef1234567890.bin
```

AMI를 복원할 때 버킷 이름과 객체 키를 모두 지정할 수 있습니다. 예시는 [이미지 저장 태스크 생성](work-with-ami-store-restore.md#create-store-image-task) 섹션을 참조하세요.

# 이미지 저장 태스크 생성
<a name="work-with-ami-store-restore"></a>

S3 버킷에 AMI를 저장하면 이미지 저장 태스크가 생성됩니다. 이미지 저장 태스크를 사용하여 프로세스의 진행 상황과 결과를 모니터링할 수 있습니다.

**Topics**
+ [AMI 보안](#securing-amis)
+ [S3를 사용하여 AMI를 저장하고 복원하기 위한 권한](#ami-s3-permissions)
+ [이미지 저장 태스크 생성](#create-store-image-task)
+ [이미지 복원 태스크 생성](#create-restore-image-task)

## AMI 보안
<a name="securing-amis"></a>

S3 버킷에 AMI의 콘텐츠를 보호할 수 있는 충분한 보안으로 구성되어 있고 AMI 객체가 버킷에 남아 있는 동안 보안이 유지되도록 하는 것이 중요합니다. 불가능하다면 이러한 API를 사용하지 않는 것이 좋습니다. S3 버킷에 대한 퍼블릭 액세스가 허용되지 않는지 확인합니다. 필수는 아니지만, AMI가 저장되는 S3 버킷에 대해 [서버 측 암호화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)를 활성화하는 것이 좋습니다.

S3 버킷에 대한 적절한 보안 설정을 설정하는 방법에 대한 자세한 내용은 다음 보안 항목을 참조하세요.
+ [Amazon S3 스토리지에 대한 퍼블릭 액세스 차단](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)
+ [Amazon S3 버킷에 대한 기본 서버 측 암호화 동작 설정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html)
+ [AWS Config 규칙 s3-bucket-ssl-requests-only 준수를 위해 어떤 S3 버킷 정책을 사용할 수 있습니까?](https://repost.aws/knowledge-center/s3-bucket-policy-for-config-rule)
+ [Amazon S3서버 액세스 로깅 활성화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)

AMI 스냅샷이 S3 객체에 복사되면 데이터는 TLS 연결을 통해 복사됩니다. AMI를 암호화된 스냅샷과 함께 저장할 수 있지만 스냅샷은 저장 프로세스의 일부로 복호화됩니다.

## S3를 사용하여 AMI를 저장하고 복원하기 위한 권한
<a name="ami-s3-permissions"></a>

IAM 보안 주체가 Amazon S3를 사용하여 AMI를 저장 또는 복원하는 경우 이 보안 주체에 필요한 권한을 부여해야 합니다.

다음 예시 정책에는 IAM 보안 주체가 저장 및 복원 태스크를 수행하도록 허용하는 데 필요한 모든 작업이 포함되어 있습니다.

또한 보안 주체에게 특정 리소스에만 액세스할 수 있는 권한을 부여하는 IAM 정책을 생성할 수도 있습니다. 더 많은 예시 정책은 *IAM 사용 설명서*의 [AWS 리소스에 대한 액세스 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)를 참조하세요.

**참고**  
AMI를 구성하는 스냅샷이 암호화된 경우 또는 계정이 기본적으로 암호화에 대해 활성화된 경우 IAM 보안 주체에 KMS 키를 사용할 권한이 있어야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectTagging",
                "s3:AbortMultipartUpload",
                "ebs:CompleteSnapshot",
                "ebs:GetSnapshotBlock",
                "ebs:ListChangedBlocks",
                "ebs:ListSnapshotBlocks",
                "ebs:PutSnapshotBlock",
                "ebs:StartSnapshot",
                "ec2:CreateStoreImageTask",
                "ec2:DescribeStoreImageTasks",
                "ec2:CreateRestoreImageTask",
                "ec2:GetEbsEncryptionByDefault",
                "ec2:DescribeTags",
                "ec2:CreateTags"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 이미지 저장 태스크 생성
<a name="create-store-image-task"></a>

S3 버킷에 AMI를 저장하려면 먼저 이미지 저장 태스크를 생성합니다. 태스크를 완료하는 데 걸리는 시간은 AMI의 크기에 따라 다릅니다. 성공하거나 실패할 때까지 태스크의 진행 상황을 추적할 수 있습니다.

------
#### [ AWS CLI ]

**이미지 저장 태스크를 생성하려면 다음을 수행하세요.**  
[create-store-image-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-store-image-task.html) 명령을 사용합니다.

```
aws ec2 create-store-image-task \
    --image-id ami-0abcdef1234567890 \
    --bucket amzn-s3-demo-bucket
```

다음은 예제 출력입니다.

```
{
  "ObjectKey": "ami-0abcdef1234567890.bin"
}
```

**이미지 저장 태스크의 진행 상황을 설명하려면 다음을 수행하세요.**  
[describe-store-image-tasks](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-store-image-tasks.html) 명령을 사용합니다.

```
aws ec2 describe-store-image-tasks \
    --image-ids ami-0abcdef1234567890 \
    --query StoreImageTaskResults[].StoreTaskState \
    --output text
```

다음은 예제 출력입니다.

```
InProgress
```

------
#### [ PowerShell ]

**이미지 저장 태스크를 생성하려면 다음을 수행하세요.**  
[New-EC2StoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2StoreImageTask.html) cmdlet을 사용합니다.

```
New-EC2StoreImageTask `
    -ImageId ami-0abcdef1234567890 `
    -Bucket amzn-s3-demo-bucket
```

다음은 예제 출력입니다.

```
ObjectKey         : ami-0abcdef1234567890.bin
```

**이미지 저장 태스크의 진행 상황을 설명하려면 다음을 수행하세요.**  
[Get-EC2StoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2StoreImageTask.html) cmdlet을 사용합니다.

```
(Get-EC2StoreImageTask -ImageId ami-0abcdef1234567890).StoreTaskState
```

다음은 예제 출력입니다.

```
InProgress
```

------

## 이미지 복원 태스크 생성
<a name="create-restore-image-task"></a>

복원된 AMI의 이름을 지정해야 합니다. 이름은 이 계정의 리전 내 AMI에 대해 고유해야 합니다. 복원된 AMI에 새 AMI ID가 지정됩니다.

------
#### [ AWS CLI ]

**이미지 복원 태스크를 생성하려면 다음을 수행하세요.**  
[create-restore-image-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-restore-image-task.html) 명령을 사용합니다.

```
aws ec2 create-restore-image-task \
    --object-key ami-0abcdef1234567890.bin \
    --bucket amzn-s3-demo-bucket \
    --name "my-restored-ami"
```

다음은 예제 출력입니다.

```
{
   "ImageId": "ami-1234567890abcdef0"
}
```

------
#### [ PowerShell ]

**이미지 복원 태스크를 생성하려면 다음을 수행하세요.**  
[New-EC2RestoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2RestoreImageTask.html) cmdlet을 사용합니다.

```
New-EC2RestoreImageTask `
    -ObjectKey ami-0abcdef1234567890.bin `
    -Bucket amzn-s3-demo-bucket `
    -Name "my-restored-ami"
```

출력의 예제는 다음과 같습니다.

```
ImageId         : ami-1234567890abcdef0
```

------

# AMI 계보를 사용하여 AMI의 기원 추적하기
<a name="ami-ancestry"></a>

AMI 계보는 모든 상위 AMI의 ID와 리전을 반환함으로써 AMI의 기원을 추적할 수 있도록 도와줍니다. AMI를 생성하거나 복사할 때, 새 AMI는 소스(상위) AMI의 ID와 리전 정보를 유지합니다. 이를 통해 루트 AMI까지 이어지는 AMI 체인을 추적할 수 있습니다.

**주요 이점**

AMI 계보를 사용하면 다음을 수행할 수 있습니다.
+ 내부 정책 준수를 확인하기 위해 AMI 파생본을 추적
+ 상위 AMI에서 보안 문제가 발견된 경우, 잠재적으로 취약한 AMI 식별
+ 여러 리전에 걸쳐 AMI 기원에 대한 가시성 유지

**Topics**
+ [AMI 계보 작동 방식](#how-ami-ancestry-works)
+ [고려 사항](#ami-ancestry-conditions)
+ [AMI 계보 보기](#view-ami-ancestry)
+ [소스 AMI 식별](#identify-source-ami-used-to-create-new-ami)

## AMI 계보 작동 방식
<a name="how-ami-ancestry-works"></a>

AMI 계보는 지정된 AMI를 생성하는 데 사용된 상위 AMI, 그 상위의 상위 AMI 등 루트 AMI에 도달할 때까지의 모든 상위 AMI를 식별합니다. 작동 방식은 다음과 같습니다.
+ 각 AMI에는 소스(상위) AMI의 ID와 리전 정보가 표시됩니다.
+ 선택한 AMI부터 시작하여, 계보 항목 목록에 각 부모 AMI가 순차적으로 표시됩니다.
+ 계보 항목 목록은 루트 AMI에 도달할 때까지 거슬러 올라갑니다. 루트 AMI는 다음 중 하나에 해당합니다.
  + [확인된 공급자](sharing-amis.md#verified-ami-provider)의 퍼블릭 AMI(소유자 별칭이 `amazon` 또는 `aws-marketplace`로 표시됨)
  + 기록된 상위 AMI가 없는 AMI. 예를 들어, 인스턴스에서 AMI를 생성하는 방식과 달리, [RegisterImage](creating-an-ami-ebs.md#creating-launching-ami-from-snapshot)를 사용하여 스냅샷 집합으로부터 직접 AMI를 생성한 경우에는 추적할 소스 AMI가 없습니다.
  + 소스 AMI가 다른 [파티션](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#partition)에 속한 AMI.
  + 목록의 50번째 AMI. 계보 목록에 포함될 수 있는 최대 AMI 수는 50개입니다.

## 고려 사항
<a name="ami-ancestry-conditions"></a>
+ 소스 AMI의 ID와 리전 정보는 [CreateImage](creating-an-ami-ebs.md#how-to-create-ebs-ami), [CopyImage](CopyingAMIs.md#ami-copy-steps) 또는 [CreateRestoreImageTask](store-restore-how-it-works.md#CreateRestoreImageTask)를 사용하여 생성된 AMI에서만 제공됩니다.
+ [CreateImage](creating-an-ami-ebs.md#how-to-create-ebs-ami)를 사용하여 생성된 AMI(인스턴스에서 AMI 생성)의 경우, 소스 AMI ID는 해당 인스턴스를 실행하는 데 사용된 AMI의 ID입니다.
+ 다음의 경우에는 소스 AMI 정보를 사용할 수 없습니다.
  + [RegisterImage](creating-an-ami-ebs.md#creating-launching-ami-from-snapshot)를 사용하여 생성된 AMI(스냅샷에서 생성되었기 때문)
  + 일부 오래된 AMI.
+ 다음과 같은 경우에도 소스 AMI 정보는 유지됩니다.
  + AMI를 리전 간에 복사한 경우.
  + 소스 AMI가 등록 해제(삭제)된 경우.
  + 소스 AMI에 대한 접근 권한이 없는 경우.
+ 각 AMI 계보 목록은 최대 50개의 AMI로 제한됩니다.

## AMI 계보 보기
<a name="view-ami-ancestry"></a>

다음 방법을 사용하여 AMI의 계보를 확인할 수 있습니다.

------
#### [ Console ]

**AMI의 계보를 보려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. AMI를 선택한 다음, **AMI 계보** 탭을 선택합니다.

1. **AMI 계보 항목** 테이블에는 계보 목록에 포함된 모든 AMI가 표시됩니다.
   + **AMI ID** - 계보 목록에 포함된 각 AMI의 식별자입니다. 테이블의 첫 번째 항목은 선택한 AMI이며, 이후 항목은 해당 AMI의 상위 AMI입니다.
   + **소스 AMI ID** - **AMI ID** 열에 표시된 AMI가 생성된 소스 AMI의 ID입니다. 대시(**-**)는 AMI 계보 목록의 끝을 의미합니다.
   + **소스 AMI 리전** - 소스 AMI가 위치한 AWS 리전입니다.
   + **계보 수준** - 계보 목록 내에서의 위치를 나타내며, 다음과 같은 의미를 가집니다.
     + **0(입력 AMI)**은 계보를 확인하려는 선택한 AMI를 의미합니다.
     + 숫자가 증가할수록 더 오래된 상위 AMI를 의미합니다.
     + ***n*(원본 AMI)**은 루트 AMI를 의미하며, 숫자는 계보가 얼마나 과거까지 거슬러 올라가는지를 나타냅니다.
   + **생성 날짜** - AMI가 생성된 날짜 및 시간으로, UTC 형식으로 표시됩니다.
   + **소유자 별칭** - AMI 소유자의 별칭(예: `amazon`)입니다. 대시(**-**)는 AMI에 소유자 별칭이 없음을 의미합니다.

------
#### [ AWS CLI ]

**AMI의 계보를 보려면**  
[get-image-ancestry](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-image-ancestry.html) 명령을 사용하여 AMI ID를 지정합니다.

```
aws ec2 get-image-ancestry \
    --image-id ami-1111111111EXAMPLE \
    --region us-east-1
```

다음은 예제 출력입니다. 출력에는 계보 순서대로 AMI가 나열되며, 첫 번째 항목은 지정한(입력) AMI이고, 이후에는 상위 AMI, 상위의 상위 AMI 순으로 표시되며, 마지막은 루트 AMI입니다.

```
{
    "ImageAncestryEntries": [
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-1111111111EXAMPLE", // Input AMI
            "SourceImageId": "ami-2222222222EXAMPLE",
            "SourceImageRegion": "us-east-1"

        },
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-2222222222EXAMPLE", // Parent AMI
            "SourceImageId": "ami-3333333333EXAMPLE",
            "SourceImageRegion": "us-east-1"
        },
        ...
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-8888888888EXAMPLE", // Root AMI
            "ImageOwnerAlias": "aws-marketplace",
            "SourceImageId": "ami-9999999999EXAMPLE",
            "SourceImageRegion": "us-east-2"
        }
    ]
}
```

------
#### [ PowerShell ]

**AMI의 계보를 보려면**  
[Get-EC2ImageAncestry](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAncestry.html) cmdlet을 사용합니다.

```
Get-EC2ImageAncestry -ImageId ami-1111111111EXAMPLE
```

다음은 예제 출력입니다. 출력에는 계보 순서대로 AMI가 나열되며, 첫 번째 항목은 지정한(입력) AMI이고, 이후에는 상위 AMI, 상위의 상위 AMI 순으로 표시되며, 마지막은 루트 AMI입니다.

```
ImageAncestryEntries : {
    @{
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-1111111111EXAMPLE"    # Input AMI
        SourceImageId = "ami-2222222222EXAMPLE"
        SourceImageRegion = "us-east-1"
    },
    @{
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-2222222222EXAMPLE"    # Parent AMI
        SourceImageId = "ami-3333333333EXAMPLE"
        SourceImageRegion = "us-east-1"
    },
    ...
    @{
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-8888888888EXAMPLE"    # Root AMI
        ImageOwnerAlias = "aws-marketplace"
        SourceImageId = "ami-9999999999EXAMPLE"
        SourceImageRegion = "us-east-2"
    }
}
```

------

## 소스 AMI 식별
<a name="identify-source-ami-used-to-create-new-ami"></a>

AMI를 생성하는 데 사용된 직계 상위(소스) AMI만 식별하면 되는 경우, 다음 방법을 사용할 수 있습니다.

------
#### [ Console ]

**선택한 AMI를 생성하는 데 사용된 소스 AMI를 식별하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. 세부 정보를 볼 AMI를 선택합니다.

   소스 AMI 정보는 **소스 AMI ID** 및 **소스 AMI 리전** 필드에 표시됩니다.

------
#### [ AWS CLI ]

**지정된 AMI를 생성하는 데 사용된 소스 AMI를 식별하려면**  
[describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 명령을 사용합니다.

```
aws ec2 describe-images \
    --region us-east-1 \
    --image-ids ami-0abcdef1234567890 \
    --query "Images[].{ID:SourceImageId,Region:SourceImageRegion}"
```

다음은 예제 출력입니다.

```
[
    {
        "ID": "ami-0abcdef1234567890",
        "Region": "us-west-2"
    }
}
```

------
#### [ PowerShell ]

**지정된 AMI를 생성하는 데 사용된 소스 AMI를 식별하려면**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet을 사용합니다.

```
Get-EC2Image -ImageId ami-0abcdef1234567890 | Select SourceImageId, SourceImageRegion
```

출력의 예제는 다음과 같습니다.

```
SourceImageId           SourceImageRegion
-------------           -----------------
ami-0abcdef1234567890 us-west-2
```

------

# AMI 사용 관리 및 모니터링
<a name="ec2-ami-usage"></a>

AWS는 AMI 사용을 효과적으로 관리하고 모니터링하는 데 도움이 되는 몇 가지 기능을 제공합니다. 공유 AMI를 사용하는 계정을 추적하고, AMI가 마지막으로 사용된 시기를 식별하고, AWS 계정에서 특정 AMI를 참조하는 리소스를 검색할 수 있습니다.

다음 표에서는 AMI 사용을 관리 및 모니터링하기 위한 기능에 대한 개요를 제공합니다.


| 기능 | 사용 사례: | 주요 이점 | 
| --- | --- | --- | 
| [AMI 사용 보고서](your-ec2-ami-usage.md) | AMI를 사용하는 AWS 계정 및 각 AMI의 사용 빈도를 파악합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ec2-ami-usage.html)  | 
| [마지막으로 사용된 시간 추적](ami-last-launched-time.md) | AMI가 마지막으로 사용된 시간을 확인합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ec2-ami-usage.html)  | 
| [AMI 참조 확인](ec2-ami-references.md) | AWS 리소스가 최신 규정 준수 AMI를 사용하는지 확인합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ec2-ami-usage.html)  | 

**Topics**
+ [AMI 사용 보기](your-ec2-ami-usage.md)
+ [Amazon EC2 AMI를 마지막으로 사용한 시점 확인](ami-last-launched-time.md)
+ [지정된 AMI를 참조하는 리소스 식별](ec2-ami-references.md)

# AMI 사용 보기
<a name="your-ec2-ami-usage"></a>

Amazon Machine Image(AMI)를 다른 AWS 계정(특정 AWS 계정, 조직, 조직 단위(OU) 또는 공개적으로)과 공유하는 경우 AMI 사용 보고서를 생성하여 이러한 AMI가 어떻게 사용되는지 확인할 수 있습니다. 보고서는 다음에 대한 가시성을 제공합니다.
+ EC2 인스턴스 또는 시작 템플릿에서 AMI를 사용하는 AWS 계정
+ 각 AMI를 참조하는 EC2 인스턴스 또는 시작 템플릿의 수

AMI 사용 보고서는 다음 기능을 지원하여 AMI를 보다 효과적으로 관리하는 데 도움이 됩니다.
+ AMI를 안전하게 등록 취소 또는 비활성화할 수 있도록 AMI를 참조하는 AWS 계정 및 리소스 유형을 식별합니다.
+ 스토리지 비용을 절감하기 위해 등록 취소할 미사용 AMI를 식별합니다.
+ 가장 많이 사용되는 AMI를 식별합니다.

**Topics**
+ [AMI 사용 보고서 작동 방식](#how-ami-usage-reports-work)
+ [AMI 사용 보고서 생성](#create-ami-usage-reports)
+ [AMI 사용 보고서 보기](#view-ami-usage-reports)
+ [AMI 사용 보고서 삭제](#delete-ami-usage-reports)
+ [보고서 할당량](#ami-usage-report-quotas)

## AMI 사용 보고서 작동 방식
<a name="how-ami-usage-reports-work"></a>

AMI 사용 보고서를 생성할 때 다음을 지정합니다.
+ 보고할 AMI.
+ AWS 계정 확인할 (특정 계정 또는 모든 계정).
+ 확인할 리소스 유형(EC2 인스턴스, 시작 템플릿 또는 둘 다).
+ 시작 템플릿의 경우 확인할 버전 수(기본값은 최신 버전 20개).

Amazon EC2는 각 AMI에 대해 별도의 보고서를 생성합니다. 각 보고서는 다음을 제공합니다.
+ AMI를 사용하는 AWS 계정의 목록.
+ 계정당 리소스 유형별로 AMI를 참조하는 리소스 수. 시작 템플릿의 경우 AMI가 시작 템플릿의 여러 버전에서 참조되더라도 개수는 1뿐입니다.

**중요**  
AMI 사용 보고서를 생성할 때 최신 활동이 포함되지 않을 수 있습니다. 지난 24시간 동안의 인스턴스 활동 및 지난 며칠 동안의 시작 템플릿 활동은 보고서에 표시되지 않을 수 있습니다.

Amazon EC2는 생성된 보고서를 30일 경과 후 자동으로 삭제합니다. EC2 콘솔에서 보고서를 다운로드하여 로컬로 유지할 수 있습니다.

## AMI 사용 보고서 생성
<a name="create-ami-usage-reports"></a>

AMI가 사용되는 방식을 보려면 먼저 보고할 계정 및 리소스 유형을 지정하여 AMI 사용 보고서를 생성해야 합니다. 보고서가 생성되면 보고서의 내용을 볼 수 있습니다. EC2 콘솔에서 보고서를 다운로드할 수도 있습니다.

------
#### [ Console ]

**AMI 사용 보고서를 생성하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. AMI를 선택하고 **작업**, **AMI 사용**, **내 AMI 사용 보기**를 선택합니다.

1. **내 AMI 사용 보고서 생성** 페이지에서 다음을 수행합니다.

   1. **리소스 유형**에서 보고할 리소스 유형을 하나 이상 선택합니다.

   1. **계정 ID**에서 다음 중 하나를 수행합니다.
      + **계정 ID 지정**을 선택한 다음 보고할 각 계정에 대해 **계정 ID 추가**를 선택합니다.
      + 모든 계정을 보고하려면 **모든 계정 포함**을 선택합니다.

   1. **내 AMI 사용 보고서 생성**을 선택합니다.

1. AMI 페이지에서 **내 AMI 사용** 탭을 선택합니다.

1. 세부 정보를 볼 보고서 ID를 선택합니다.

------
#### [ AWS CLI ]

**계정 목록에 대한 AMI 사용 보고서를 생성하려면**  
[create-image-usage-report](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image-usage-report.html) 명령을 다음 필수 파라미터와 함께 사용합니다.
+ `--image-id` - 보고할 AMI의 ID입니다.
+ `--resource-types` - 확인할 리소스의 유형입니다. 다음 예제에서 확인할 리소스 유형은 EC2 인스턴스 및 시작 템플릿입니다. 또한 확인할 시작 템플릿 버전의 수도 지정됩니다(`version-depth=100`).

 특정 계정에 대해 보고하려면 `--account-ids` 파라미터를 사용하여 보고할 계정의 ID를 각각 지정합니다.

```
aws ec2 create-image-usage-report \
    --image-id ami-0abcdef1234567890 \
    --account-ids 111122223333 444455556666 123456789012 \
    --resource-types ResourceType=ec2:Instance \
      'ResourceType=ec2:LaunchTemplate,ResourceTypeOptions=[{OptionName=version-depth,OptionValues=100}]'
```

**모든 계정의 AMI 사용 보고서를 생성하려면**  
지정된 AMI를 사용하여 모든 계정에 대해 보고하려면 동일한 명령을 사용하되 `--account-ids` 파라미터를 생략합니다.

```
aws ec2 create-image-usage-report \
    --image-id ami-0abcdef1234567890 \
    --resource-types ResourceType=ec2:Instance \
      'ResourceType=ec2:LaunchTemplate,ResourceTypeOptions=[{OptionName=version-depth,OptionValues=100}]'
```

다음은 예제 출력입니다.

```
{
    "ReportId": "amiur-00b877d192f6b02d0"
}
```

**보고서 생성 상태를 모니터링하려면**  
[describe-image-usage-reports](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-reports.html) 명령을 사용하고 보고서 ID를 지정합니다.

```
aws ec2 describe-image-usage-reports --report-ids amiur-00b877d192f6b02d0
```

다음은 예제 출력입니다. `State` 필드의 초기 값은 `pending`입니다. 보고서 항목을 보려면 상태가 `available`이어야 합니다.

```
{
    "ImageUsageReports": [
        {
            "ImageId": "ami-0e9ae3dc21c2b3a64",
            "ReportId": "amiur-abcae3dc21c2b3999",
            "ResourceTypes": [
                {"ResourceType": "ec2:Instance"}
            ],
            "State": "pending",
            "CreationTime": "2025-09-29T13:27:12.322000+00:00",
            "ExpirationTime": "2025-10-28T13:27:12.322000+00:00"
        }
    ]
}
```

------
#### [ PowerShell ]

**계정 목록에 대한 AMI 사용 보고서를 생성하려면**  
[New-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2ImageUsageReport.html) cmdlet을 다음 필수 파라미터와 함께 사용합니다.
+ `-ImageId` - 보고할 AMI의 ID입니다.
+ `-ResourceType` - 확인할 리소스의 유형입니다. 다음 예제에서 확인할 리소스 유형은 EC2 인스턴스 및 시작 템플릿입니다. 또한 확인할 시작 템플릿 버전의 수도 지정됩니다(`'version-depth' = 100`).

 특정 계정에 대해 보고하려면 `-AccountId` 파라미터를 사용하여 보고할 계정의 ID를 각각 지정합니다.

```
New-EC2ImageUsageReport `
    -ImageId ami-0abcdef1234567890 `
    -AccountId 111122223333 444455556666 123456789012 `
    -ResourceType @(
        @{ResourceType = 'ec2:Instance'},
        @{ResourceType = 'ec2:LaunchTemplate'ResourceTypeOptions = @{'version-depth' = 100}
        })
```

**모든 계정의 AMI 사용 보고서를 생성하려면**  
지정된 AMI를 사용하여 모든 계정에 대해 보고하려면 동일한 명령을 사용하되 `-AccountId` 파라미터를 생략합니다.

```
New-EC2ImageUsageReport `
    -ImageId ami-0abcdef1234567890 `
    -ResourceType @(
        @{ResourceType = 'ec2:Instance'},
        @{ResourceType = 'ec2:LaunchTemplate'ResourceTypeOptions = @{'version-depth' = 100}
        })
```

다음은 예제 출력입니다.

```
ReportId
--------
amiur-00b877d192f6b02d0
```

**보고서 생성 상태를 모니터링하려면**  
[Get-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReport.html) 명령을 사용하고 보고서 ID를 지정합니다.

```
Get-EC2ImageUsageReport -ReportId amiur-00b877d192f6b02d0
```

다음은 예제 출력입니다. `State` 필드의 초기 값은 `pending`입니다. 보고서 항목을 보려면 상태가 `available`이어야 합니다.

```
ImageUsageReports
-----------------
{@{ImageId=ami-0e9ae3dc21c2b3a64; ReportId=amiur-abcae3dc21c2b3999; ResourceTypes=System.Object[]; State=pending; CreationTime=2025-09-29; ExpirationTime=2025-10-28}}
```

------

## AMI 사용 보고서 보기
<a name="view-ami-usage-reports"></a>

지난 30일 동안 특정 AMI에 대해 생성한 모든 사용 보고서를 볼 수 있습니다. Amazon EC2는 생성된 보고서를 30일 경과 후 자동으로 삭제합니다.

각 보고서에 대해 AMI를 사용하는 AWS 계정을 확인할 수 있고, 각 계정에 대해 리소스 유형별로 AMI를 참조하는 리소스 수를 확인할 수 있습니다. 보고서 생성이 시작된 시점도 확인할 수 있습니다. 이 정보는 보고서가 **완료**(콘솔) 또는 `available`(AWS CLI) 상태인 경우에만 사용할 수 있습니다.

**중요**  
AMI 사용 보고서를 생성할 때 최신 활동이 포함되지 않을 수 있습니다. 지난 24시간 동안의 인스턴스 활동 및 지난 며칠 동안의 시작 템플릿 활동은 보고서에 표시되지 않을 수 있습니다.

------
#### [ Console ]

**AMI 사용 보고서를 보려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. AMI를 선택합니다.

1. **내 사용 보고서** 탭을 선택합니다.

   보고서 목록에는 다음이 표시됩니다.
   + 선택한 AMI에 대해 지난 30일 동안 생성된 모든 보고서입니다.
   + 각 보고서에 대해 **보고서 시작 시간** 열에 보고서가 생성된 날짜가 표시됩니다.

1. 내용을 보려면 보고서의 ID를 선택합니다.

1. AMI 세부 정보 페이지의 **내 사용 보고서** 탭으로 돌아가려면 **이 AMI에 대한 모든 보고서 보기**를 선택합니다.

------
#### [ AWS CLI ]

**지정된 AMI에 대한 모든 AMI 사용 보고서를 나열하려면**  
[describe-image-usage-reports](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-reports.html) 명령을 사용하고 AMI의 ID를 지정하여 보고서 목록을 가져옵니다.

```
aws ec2 describe-image-usage-reports --image-ids ami-0abcdef1234567890
```

다음은 예제 출력입니다. 각 보고서 ID는 스캔한 리소스 유형, 보고서 생성 및 만료 날짜와 함께 나열됩니다. 이 정보를 사용하여 항목을 보려는 보고서를 식별할 수 있습니다.

```
{
  "ImageUsageReports": [
    {
      "ImageId": "ami-0abcdef1234567890",
      "ReportId": "amiur-1111111111111111",
      "ResourceTypes": [
        {
          "ResourceType": "ec2:Instance"
        }
      ],
      "State": "available",
      "CreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ExpirationTime": "2025-10-28T13:27:12.322000+00:00",
      "Tags": []
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ReportId": "amiur-22222222222222222",
      "ResourceTypes": [
        {
          "ResourceType": "ec2:Instance"
        },
        {
          "ResourceType": "ec2:LaunchTemplate"
        }
      ],
      "State": "available",
      "CreationTime": "2025-10-01T13:27:12.322000+00:00",
      "ExpirationTime": "2025-10-30T13:27:12.322000+00:00",
      "Tags": []
    }
  ],
  "NextToken": "opaque"
}
```

**지정된 AMI에 대한 AMI 사용 보고서의 내용을 보려면**  
[describe-image-usage-report-entries](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-report-entries.html) 명령을 사용하고 AMI의 ID를 지정합니다. 응답은 지정된 AMI에 대한 모든 보고서를 반환하며, AMI를 사용한 계정 및 해당 리소스 수를 보여줍니다.

```
aws ec2 describe-image-usage-report-entries --image-ids ami-0abcdef1234567890
```

다음은 예제 출력입니다.

```
{
  "ImageUsageReportEntries": [
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "123412341234",
      "UsageCount": 15,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-1111111111111111"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "123412341234",
      "UsageCount": 2,
      "ReportCreationTime": "2025-10-01T13:27:12.322000+00:00",
      "ReportId": "amiur-22222222222222222"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "001100110011",
      "UsageCount": 39,
      "ReportCreationTime": "2025-10-01T13:27:12.322000+00:00",
      "ReportId": "amiur-22222222222222222"
    }
  ],
  "NextToken": "opaque"
}
```

**지정된 AMI 사용 보고서의 내용을 보려면**  
[describe-image-usage-report-entries](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-report-entries.html) 명령을 사용하고 보고서의 ID를 지정합니다. 응답은 지정된 보고서의 모든 항목을 반환하며, AMI를 사용한 계정 및 해당 리소스 수를 보여줍니다.

```
aws ec2 describe-image-usage-report-entries --report-ids amiur-11111111111111111
```

다음은 예제 출력입니다.

```
{
  "ImageUsageReportEntries": [
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "123412341234",
      "UsageCount": 15,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-11111111111111111"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:LaunchTemplate",
      "AccountId": "123412341234",
      "UsageCount": 4,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-11111111111111111"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:LaunchTemplate",
      "AccountId": "001100110011",
      "UsageCount": 2,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-11111111111111111"
    }
  ],
  "NextToken": "opaque"
}
```

------
#### [ PowerShell ]

**지정된 AMI에 대한 모든 AMI 사용 보고서를 나열하려면**  
[Get-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReport.html) cmdlet을 사용하고 AMI의 ID를 지정하여 보고서 목록을 가져옵니다.

```
Get-EC2ImageUsageReport -ImageId ami-0abcdef1234567890
```

다음은 예제 출력입니다. 각 보고서 ID는 스캔한 리소스 유형, 보고서 생성 및 만료 날짜와 함께 나열됩니다. 이 정보를 사용하여 항목을 보려는 보고서를 식별할 수 있습니다.

```
@{
    ImageUsageReports = @(
        @{
            ImageId = "ami-0abcdef1234567890"
            ReportId = "amiur-1111111111111111"
            ResourceTypes = @(
                @{
                    ResourceType = "ec2:Instance"
                }
            )
            State = "available"
            CreationTime = "2025-09-29T13:27:12.322000+00:00"
            ExpirationTime = "2025-10-28T13:27:12.322000+00:00"
        },
        @{
            ImageId = "ami-0abcdef1234567890"
            ReportId = "amiur-22222222222222222"
            ResourceTypes = @(
                @{
                    ResourceType = "ec2:Instance"
                }
            )
            State = "available"
            CreationTime = "2025-09-30T13:27:12.322000+00:00"
            ExpirationTime = "2025-10-29T13:27:12.322000+00:00"
        },
        @{
            ImageId = "ami-0abcdef1234567890"
            ReportId = "amiur-33333333333333333"
            ResourceTypes = @(
                @{
                    ResourceType = "ec2:Instance"
                }
            )
            State = "available"
            CreationTime = "2025-10-01T13:27:12.322000+00:00"
            ExpirationTime = "2025-10-30T13:27:12.322000+00:00"
        }
    )
    NextToken = "opaque"
}
```

**지정된 AMI에 대한 AMI 사용 보고서의 내용을 보려면**  
[Get-EC2ImageUsageReportEntry](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReportEntry.html) cmdlet을 사용하고 AMI의 ID를 지정합니다. 응답은 지정된 AMI에 대한 모든 보고서를 반환하며, AMI를 사용한 계정 및 해당 리소스 수를 보여줍니다.

```
Get-EC2ImageUsageReportEntry -ImageId ami-0abcdef1234567890
```

다음은 예제 출력입니다.

```
ImageUsageReportEntries : {@{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:Instance"
    AccountId = "123412341234"
    UsageCount = 15
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-1111111111111111"
    }, @{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:Instance"
    AccountId = "123412341234"
    UsageCount = 7
    ReportCreationTime = "2025-09-30T13:27:12.322000+00:00"
    ReportId = "amiur-22222222222222222"
    }...}
NextToken : opaque
```

**지정된 AMI 사용 보고서의 내용을 보려면**  
[Get-EC2ImageUsageReportEntry](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReportEntry.html) cmdlet을 사용하고 보고서의 ID를 지정합니다. 응답은 지정된 보고서의 모든 항목을 반환하며, AMI를 사용한 계정 및 해당 리소스 수를 보여줍니다.

```
Get-EC2ImageUsageReportEntry -ReportId amiur-11111111111111111
```

다음은 예제 출력입니다.

```
ImageUsageReportEntries : {@{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:Instance"
    AccountId = "123412341234"
    UsageCount = 15
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-11111111111111111"
    }, @{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:LaunchTemplate"
    AccountId = "123412341234"
    UsageCount = 4
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-11111111111111111"
    }, @{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:LaunchTemplate"
    AccountId = "************"
    UsageCount = 2
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-11111111111111111"
    }}
NextToken : opaque
```

------

## AMI 사용 보고서 삭제
<a name="delete-ami-usage-reports"></a>

Amazon EC2는 생성된 보고서를 30일 경과 후 자동으로 삭제합니다. 그 전에 수동으로 삭제할 수 있습니다.

------
#### [ Console ]

**AMI 사용 보고서를 삭제하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. AMI를 선택합니다.

1. **내 AMI 사용** 탭을 선택합니다.

1. 삭제할 보고서 옆에 위치한 옵션 버튼을 선택하고 **삭제**를 선택합니다.

------
#### [ AWS CLI ]

**AMI 사용 보고서를 삭제하려면**  
[delete-image-usage-report](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-image-usage-report.html) 명령을 사용하고 보고서의 ID를 지정합니다.

```
aws ec2 delete-image-usage-report --report-id amiur-0123456789abcdefg
```

------
#### [ PowerShell ]

**AMI 사용 보고서를 삭제하려면**  
[Remove-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2ImageUsageReport.html) cmdlet을 사용하고 보고서의 ID를 지정합니다.

```
Remove-EC2ImageUsageReport -ReportId amiur-0123456789abcdefg
```

------

## 보고서 할당량
<a name="ami-usage-report-quotas"></a>

다음 할당량은 AMI 사용량 보고서 생성에 적용됩니다. 할당량은 AWS 리전별로 적용됩니다.


| 설명 | 할당량 | 
| --- | --- | 
| AWS 계정당 진행 중인(pending) AMI 사용량 보고서 | 2,000 | 
| AMI당 진행 중인(pending) AMI 사용량 보고서 | 1 | 

# Amazon EC2 AMI를 마지막으로 사용한 시점 확인
<a name="ami-last-launched-time"></a>

Amazon EC2는 AMI가 인스턴스를 시작하는 데 마지막으로 사용된 날짜와 시간을 자동으로 추적합니다. 오랫동안 인스턴스를 시작하는 데 사용되지 않은 AMI가 있는 경우 해당 AMI가 [등록 취소](deregister-ami.md) 또는 [사용 중단](ami-deprecate.md)에 적합한지 고려해 보세요.

**고려 사항**
+ AMI를 사용하여 인스턴스를 시작하면 24시간이 지나서 사용량이 보고됩니다.
+ 마지막 실행 시간을 확인하려면 AMI의 소유자여야 합니다.
+ AMI 사용 데이터는 2017년 4월부터 사용할 수 있습니다.

------
#### [ Console ]

**AMI의 마지막 시작 시간 보기**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **AMI**를 선택합니다.

1. 필터 표시줄에서 **내 소유**를 선택합니다.

1. AMI에 대한 확인란을 선택합니다.

1. **세부 정보** 탭에서 **마지막 시작 시간**을 찾습니다.

------
#### [ AWS CLI ]

**AMI를 설명하여 마지막 시작 시간을 보는 방법**  
[describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 명령을 사용합니다. `LastLaunchedTime`이 없는 경우 본인이 AMI를 소유하는지 확인합니다.

```
aws ec2 describe-images \
    --image-id ami-0abcdef1234567890 \
    --query Images[].LastLaunchedTime \
    --output text
```

다음은 예제 출력입니다.

```
2025-02-17T20:22:19Z
```

**AMI의 마지막 시작 시간 속성을 보는 방법**  
[describe-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html) 명령을 사용합니다. 본인이 지정된 AMI의 소유자여야 합니다.

```
aws ec2 describe-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute lastLaunchedTime \
    --query LastLaunchedTime.Value \
    --output text
```

다음은 예제 출력입니다.

```
2025-02-17T20:22:19Z
```

------
#### [ PowerShell ]

**AMI를 설명하여 마지막 시작 시간을 보는 방법**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet을 사용합니다. `LastLaunchedTime`이 없는 경우 본인이 AMI를 소유하는지 확인합니다.

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).LastLaunchedTime
```

다음은 예제 출력입니다.

```
2025-02-17T20:22:19Z
```

**AMI의 마지막 시작 시간 속성을 보는 방법**  
[Get-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html) cmdlet을 사용합니다. 본인이 지정된 AMI의 소유자여야 합니다.

```
(Get-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute LastLaunchedTime).LastLaunchedTime
```

출력의 예제는 다음과 같습니다.

```
2025-02-17T20:22:19Z
```

------

# 지정된 AMI를 참조하는 리소스 식별
<a name="ec2-ami-references"></a>

AMI가 퍼블릭 또는 프라이빗인지, 누가 소유하는지 관계없이 지정된 Amazon Machine Image(AMI)를 참조하는 AWS 리소스를 식별할 수 있습니다. 이러한 가시성은 리소스가 최신 규정 준수 AMI를 사용하는지 확인하는 데 도움이 됩니다.

**주요 이점**

AMI 참조를 확인하면 다음과 같은 이점이 있습니다.
+ 계정의 AMI 사용을 감사합니다.
+ 특정 AMI가 참조되는 위치를 확인합니다.
+ 최신 AMI를 참조하도록 리소스를 업데이트하여 규정 준수를 유지합니다.

 

**Topics**
+ [지원되는 리소스](#ec2-ami-references-supported-resources)
+ [AMI 참조 확인 작동 방식](#how-ami-references-works)
+ [필수 IAM 권한](#ami-references-required-permissions)
+ [AMI 참조를 확인하는 단계](#ami-reference-procedures)

## 지원되는 리소스
<a name="ec2-ami-references-supported-resources"></a>

AMI 참조는 다음에서 확인할 수 있습니다.
+ EC2 인스턴스
+ 시작 템플릿
+ SSM 파라미터
+ Image Builder 이미지 레시피
+ Image Builder 컨테이너 레시피

## AMI 참조 확인 작동 방식
<a name="how-ami-references-works"></a>

**기본 작업**

AMI 참조 확인을 실행할 때 다음 작업을 수행합니다.
+ 확인할 AMI를 지정합니다.
+ 스캔할 리소스 유형을 선택합니다.
+ 지정된 AMI를 참조하는 리소스의 목록을 받습니다.

**리소스 유형 선택**

콘솔에서 스캔할 리소스 유형을 선택합니다.

CLI에서 다음 CLI 파라미터 중 하나 또는 둘 다를 사용하여 스캔할 리소스 유형을 지정합니다.
+ `IncludeAllResourceTypes`: 지원되는 리소스 유형을 모두 스캔합니다.
+ `ResourceTypes`: 지정된 리소스 유형을 스캔합니다.

**응답 범위 지정**

`ResourceTypes` 파라미터를 사용하여 `ResourceTypeOptions` 값을 사용자 지정하면 EC2 인스턴스 및 시작 템플릿에 대한 응답의 범위를 지정할 수 있습니다. 콘솔과 `IncludeAllResourceTypes` 파라미터 모두 기본 옵션 값을 사용합니다. `ResourceTypes`과 `IncludeAllResourceTypes`를 함께 사용하면 `ResourceTypes` 옵션 값이 기본값보다 우선합니다.

기본값은 다음과 같습니다.


| 리소스 유형 | 범위 지정 옵션(`OptionName`) | 용도 | `OptionValue` 및 콘솔의 기본값 | 
| --- | --- | --- | --- | 
| EC2 인스턴스 | state-name | 인스턴스 상태를 기준으로 필터링 | pending, running, shutting-down, terminated, stopping, stopped(모든 상태) | 
| 시작 템플릿 | version-depth | 확인할 시작 템플릿 버전 수를 지정(최신 버전부터 시작) | 10(최신 버전) | 

## 필수 IAM 권한
<a name="ami-references-required-permissions"></a>

DescribeImageReferences API를 사용하여 지정된 AMI를 참조하는 리소스를 식별하려면 리소스를 설명할 수 있는 다음 IAM 권한이 필요합니다.
+ `ec2:DescribeInstances`
+ `ec2:DescribeLaunchTemplates`
+ `ec2:DescribeLaunchTemplateVersions`
+ `ssm:DescribeParameters`
+ `ssm:GetParameters`
+ `imagebuilder:ListImageRecipes`
+ `imagebuilder:ListContainerRecipes`
+ `imagebuilder:GetContainerRecipe`

**DescribeImageReferences API 사용을 위한 예제 IAM 정책**  
다음 예제 정책은 EC2 인스턴스, 시작 템플릿, Systems Manager 파라미터, Image Builder 이미지 레시피 및 Image Builder 컨테이너 레시피를 설명할 수 있는 권한을 포함하는 DescribeImageReferences API 사용 권한을 부여합니다.

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "ec2:DescribeImageReferences",
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DescribeInstances",
				"ec2:DescribeLaunchTemplates",
				"ec2:DescribeLaunchTemplateVersions",
				"ssm:DescribeParameters",
				"ssm:GetParameters",
				"imagebuilder:ListImageRecipes",
				"imagebuilder:ListContainerRecipes",
				"imagebuilder:GetContainerRecipe"
			],
			"Resource": "*",
			"Condition": {
				"ForAnyValue:StringEquals": {
					"aws:CalledVia": [
						"ec2-images.amazonaws.com"
					]
				}
			}
		}
	]
}
```

------

**중요**  
정책을 직접 생성하는 대신 AWS 관리형 정책 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html)를 사용하는 것이 좋습니다. 필요한 권한만 제공하는 사용자 지정 IAM 정책을 생성하려면 시간과 전문 지식이 필요하며 새 리소스 유형을 사용할 수 있게 되면 업데이트가 필요합니다.  
`AmazonEC2ImageReferencesAccessPolicy` 관리형 정책:  
DescribeImageReferences API를 사용하는 데 필요한 모든 권한(EC2 인스턴스, 시작 템플릿, Systems Manager 파라미터, Image Builder 컨테이너 및 이미지 레시피를 설명할 수 있는 권한 포함)을 부여합니다.
새 리소스 유형을 사용할 수 있게 되면 자동으로 지원합니다(`IncludeAllResourceTypes` 파라미터를 사용할 때 특히 중요함).
`AmazonEC2ImageReferencesAccessPolicy` 정책을 IAM 자격 증명(사용자, 그룹, 역할)에 연결할 수 있습니다.  
이 정책에 포함된 권한을 보려면 *AWS 관리형 정책 참조*에서 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html)를 참조하세요.

## AMI 참조를 확인하는 단계
<a name="ami-reference-procedures"></a>

다음 절차에 따라 지정된 AMI를 참조하는 AWS 리소스를 식별합니다.

------
#### [ Console ]

**지정된 AMI를 참조하는 리소스를 식별하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. 참조를 확인할 AMI를 하나 이상 선택합니다.

1. **작업**, **AMI 사용**, **참조된 리소스 보기**를 선택합니다.

1. **선택한 AMI를 참조하는 리소스 보기** 페이지에서

   1. **리소스 유형**에서 하나 이상의 리소스 유형을 선택합니다.

   1. **리소스 보기**를 선택합니다.

1. **선택한 AMI를 참조하는 리소스** 섹션이 나타납니다. 목록에는 지정된 AMI를 참조하는 리소스가 표시됩니다. 각 행은 다음 정보를 제공합니다.
   + **AMI ID** - 참조된 AMI의 ID입니다.
   + **리소스 유형** - AMI를 참조하는 리소스의 리소스 유형입니다.
   + **리소스 ID** - AMI를 참조하는 리소스의 ID입니다.

------
#### [ AWS CLI ]

**특정 리소스 유형의 AMI 참조를 확인하려면**  
[describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) 명령을 `--resource-types` 파라미터와 함께 사용합니다. 다음 예제에서는 EC2 인스턴스(인스턴스 상태별 범위 지정), 시작 템플릿(가장 최근의 시작 템플릿 버전 20개로 범위 지정) 및 기타 특정 리소스 유형을 확인합니다.

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --resource-types \
        'ResourceType=ec2:Instance,ResourceTypeOptions=[{OptionName=state-name,OptionValues=[running,pending]}]' \
        'ResourceType=ec2:LaunchTemplate,ResourceTypeOptions=[{OptionName=version-depth,OptionValues=[20]}]' \
        'ResourceType=ssm:Parameter' \
        'ResourceType=imagebuilder:ImageRecipe' \
        'ResourceType=imagebuilder:ContainerRecipe'
```

다음은 예제 출력입니다.

```
{
    "ImageReferences": [
        {
            "ImageId": "ami-0abcdef1234567890",
            "ResourceType": "ec2:Instance",
            "Arn": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"
        },
        {
            "ImageId": "ami-1234567890abcdef0",
            "ResourceType": "ec2:LaunchTemplate",
            "Arn": "arn:aws:ec2:us-east-1:123456789012:launch-template/lt-1234567890abcdef0"
        }
    ]
}
```

**지원되는 모든 리소스 유형에 대한 AMI 참조를 확인하려면**  
[describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) 명령을 `--include-all-resource-types` 파라미터와 함께 사용합니다.

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --include-all-resource-types
```

**지원되는 모든 리소스 유형 및 특정 옵션에 대한 AMI 참조를 확인하려면**  
[describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) 명령을 `--include-all-resource-types` 및 `--resource-types` 파라미터와 함께 사용합니다. 이 예제에서는 EC2 인스턴스의 응답 범위를 실행 중 또는 보류 중 인스턴스로 조정하면서 모든 리소스 유형을 확인합니다.

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --include-all-resource-types \
    --resource-types 'ResourceType=ec2:Instance,ResourceTypeOptions=[{OptionName=state-name,OptionValues=[running,pending]}]'
```

------
#### [ PowerShell ]

**특정 리소스 유형의 AMI 참조를 확인하려면**  
[Get-EC2ImageReference](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) cmdlet을 `-ResourceType` 파라미터와 함께 사용합니다. 다음 예제에서는 EC2 인스턴스(인스턴스 상태별 범위 지정), 시작 템플릿(가장 최근의 시작 템플릿 버전 20개로 범위 지정) 및 기타 특정 리소스 유형을 확인합니다.

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -ResourceType @(
        @{
            ResourceType = 'ec2:Instance'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'state-name'
                    OptionValues = @('running', 'pending')
                }
            )
        },
        @{
            ResourceType = 'ec2:LaunchTemplate'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'version-depth'
                    OptionValues = @('20')
                }
            )
        },
        @{
            ResourceType = 'ssm:Parameter'
        },
        @{
            ResourceType = 'imagebuilder:ImageRecipe'
        },
        @{
            ResourceType = 'imagebuilder:ContainerRecipe'
        }
    )
```

**지원되는 모든 리소스 유형에 대한 AMI 참조를 확인하려면**  
[Get-EC2ImageReference](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) cmdlet을 `-IncludeAllResourceTypes` 파라미터와 함께 사용합니다.

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -IncludeAllResourceTypes
```

**지원되는 모든 리소스 유형 및 특정 옵션에 대한 AMI 참조를 확인하려면**  
[Get-EC2ImageReference](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) cmdlet을 `-IncludeAllResourceTypes` 및 `-ResourceType` 파라미터와 함께 사용합니다. 이 예제에서는 EC2 인스턴스의 응답 범위를 실행 중 또는 보류 중 인스턴스로 조정하면서 모든 리소스 유형을 확인합니다.

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -IncludeAllResourceTypes `
    -ResourceType @(
        @{
            ResourceType = 'ec2:Instance'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'state-name'
                    OptionValues = @('running', 'pending')
                }
            )
        }
    )
```

------

# Amazon EC2 AMI 사용 중단
<a name="ami-deprecate"></a>

AMI가 만료되어 사용되지 않도록 할 날짜를 지정하여 사용 중지할 수 있습니다. AMI가 만료되는 시점을 나타내는 AMI의 향후 사용 중지 날짜를 지정할 수도 있습니다. 예를 들어 더 이상 적극적으로 유지 관리되지 않는 AMI를 사용 중지하거나, 새 버전으로 대체된 AMI를 사용 중지할 수 있습니다. 기본적으로 사용 중지된 AMI는 AMI 목록에 표시되지 않으므로 새 사용자가 오래된 AMI를 사용할 수 없습니다. 그러나 기존 사용자, 그리고 시작 템플릿 및 Auto Scaling 그룹과 같은 시작 서비스는 해당 ID를 지정하여 사용 중지된 AMI 계속 사용할 수 있습니다. 사용자 및 서비스가 사용할 수 없도록 AMI 삭제하려면 [등록 취소](deregister-ami.md)해야 합니다.

AMI I가 사용 중지된 후:
+ AMI 사용자의 경우, 해당 ID를 지정하거나 사용 중지된 AMI가 표시되도록 지정하지 않는 한 사용 중지된 AMI는 [DescribeImages](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) API 호출에 표시되지 않습니다. AMI 소유자에게는 사용 중지된 AMI가 [DescribeImages](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) API 호출에 계속 표시됩니다.
+ AMI 사용자의 경우 사용 중지된 AMI를 EC2 콘솔을 통해 선택할 수 없습니다. 예를 들어 사용 중지된 AMI는 인스턴스 시작 마법사의 AMI 카탈로그에 표시되지 않습니다. AMI 소유자는 EC2 콘솔에서 사용 중지된 AMI를 계속 볼 수 있습니다.
+ AMI 사용자의 경우 사용 중지된 AMI 의 ID를 알고 있으면 API, CLI 또는 SDK를 통해 계속 사용 중지된 AMI를 사용하여 인스턴스를 시작할 수 있습니다.
+ 시작 템플릿 및 Auto Scaling 그룹과 같은 시작 서비스는 사용 중지된 AMI를 계속 참조할 수 있습니다.
+ 이후에 사용 중지된 AMI 사용하여 시작된 EC2 인스턴스는 영향을 받지 않으며 중지, 시작 및 재부팅할 수 있습니다.

프라이빗 및 퍼블릭 AMI를 모두 사용 중지할 수 있습니다.

**Topics**
+ [비용](#ami-deprecate-costs)
+ [고려 사항](#ami-deprecate-limitations)
+ [AMI 사용 중지](#deprecate-ami)
+ [사용 중지된 AMI 설명](#describe-deprecate-ami)
+ [AMI 사용 중단 취소](#cancel-deprecate-ami)

## 비용
<a name="ami-deprecate-costs"></a>

AMI를 사용 중지하더라도 해당 AMI는 삭제되지 않습니다. AMI 소유자는 AMI의 스냅샷에 대한 비용을 계속 지불합니다. 스냅샷에 대한 지불을 중지하려면 AMI 소유자가 AMI를 [등록 취소](deregister-ami.md)하여 삭제해야 합니다.

## 고려 사항
<a name="ami-deprecate-limitations"></a>
+ AMI를 사용 중지하려면 해당 AMI의 소유자여야 합니다.
+ 최근에 인스턴스를 시작하는 데 사용된 적이 없는 AMI는 사용을 중단하거나 등록을 해제(deregistering)하는 것이 좋습니다. 자세한 내용은 [Amazon EC2 AMI를 마지막으로 사용한 시점 확인](ami-last-launched-time.md) 섹션을 참조하세요.
+ Amazon Data Lifecycle Manager EBS 지원 AMI 정책을 생성하여 EBS 지원 AMI의 사용 중단을 자동화할 수 있습니다. 자세한 내용은 [AMI 수명 주기 정책 생성](https://docs.aws.amazon.com/ebs/latest/userguide/ami-policy.html)을 참조하세요.
+ 기본적으로 모든 퍼블릭 AMI의 사용 중단 날짜가 AMI 생성 날짜로부터 2년으로 설정됩니다. 사용 중단 날짜를 2년보다 짧게 설정할 수 있습니다. 사용 중단 날짜를 취소하거나 중단 날짜를 연장하려면 [특정 AWS 계정과 공유](sharingamis-explicit.md)만을 통해 AMI를 프라이빗으로 설정해야 합니다.

## AMI 사용 중지
<a name="deprecate-ami"></a>

특정 날짜 및 시간에 AMI를 사용 중지할 수 있습니다. AMI의 소유자여야 합니다.

사용 중단 날짜의 상한은 지금부터 10년입니다. 단, 상한이 생성 날짜로부터 2년인 퍼블릭 AMI는 예외입니다. 과거의 날짜는 지정할 수 없습니다.

------
#### [ Console ]

**특정 날짜에 AMI 사용 중단**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 탐색기에서 **AMI(AMIs)**를 선택합니다.

1. 필터 표시줄에서 **내 소유**를 선택합니다.

1. AMI를 선택하고 **작업(Actions)**, **AMI 사용 중단 관리(Manage AMI Deprecation)**를 선택합니다. 여러 AMI를 선택하여 한 번에 여러 AMI의 사용 중단 날짜를 동일하게 설정할 수 있습니다.

1. **활성화** 확인란을 선택한 다음 사용 중단 날짜 및 시간을 입력합니다.

1. **저장**을 선택합니다.

------
#### [ AWS CLI ]

**특정 날짜에 AMI 사용 중단**  
[enable-image-deprecation](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image-deprecation.html) 명령을 사용합니다. 초 단위로 값을 지정하면 Amazon EC2가 초를 가장 가까운 분으로 반올림합니다.

```
aws ec2 enable-image-deprecation \
    --image-id ami-0abcdef1234567890 \
    --deprecate-at "2025-04-15T13:17:12.000Z"
```

------
#### [ PowerShell ]

**특정 날짜에 AMI 사용 중단**  
[Enable-EC2ImageDeprecation](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2ImageDeprecation.html) cmdlet을 사용합니다. 초 단위로 값을 지정하면 Amazon EC2가 초를 가장 가까운 분으로 반올림합니다.

```
Enable-EC2ImageDeprecation `
    -ImageId ami-0abcdef1234567890 `
    -DeprecateAt 2025-04-15T13:17:12.000Z
```

------

## 사용 중지된 AMI 설명
<a name="describe-deprecate-ami"></a>

AMI의 사용 중단 날짜 및 시간을 보고 사용 중단 날짜를 기준으로 AMI를 필터링할 수 있습니다.

------
#### [ Console ]

**AMI의 사용 중단 날짜 보기**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 탐색기에서 **AMI(AMIs)**를 선택한 후 AMI를 선택합니다.

1. **사용 중단 시간** 필드(AMI 옆에 있는 확인란을 선택한 경우 **세부 정보** 탭에 있음)를 확인합니다. 이 필드에는 AMI의 사용 중단 날짜 및 시간이 표시됩니다. 필드가 비어 있는 경우 AMI는 사용 중단되지 않습니다.

**사용 중단 날짜별로 AMI 필터링**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 탐색기에서 **AMI(AMIs)**를 선택합니다.

1. 필터 표시줄에서 **내 소유(Owned by me)** 또는 **프라이빗 이미지(Private images)**를 선택합니다(프라이빗 이미지에는 사용자와 공유되는 AMI와 사용자가 소유한 AMI가 포함됨).

1. 검색 창에 **Deprecation time**을 입력한 다음(문자를 입력하면 **사용 중단 시간(Deprecation time)** 필터가 나타남) 연산자와 날짜 및 시간을 선택합니다.

------
#### [ AWS CLI ]

모든 AMI를 설명하는 경우 본인이 AMI 사용자 또는 AMI 소유자인지에 따라 결과가 다릅니다.
+ **AMI 사용자** - 기본적으로 모든 AMI를 설명할 때 본인과 공유되지만 본인이 소유하지 않는 사용 중단된 AMI는 제외됩니다. 사용 중단된 AMI를 결과에 포함하려면 `--include-deprecated` 옵션을 지정합니다.
+ **AMI 소유자** - 모든 AMI를 설명할 때 사용 중단된 AMI를 포함하여 본인이 소유하는 모든 AMI가 포함됩니다. 본인이 소유하는 사용 중단된 AMI는 `--no-include-deprecated` 옵션을 사용하여 제외할 수 없습니다.

**계정에 대한 모든 AMI를 설명할 때 사용 중단된 AMI를 포함하는 방법**  
다음 [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 명령을 사용합니다.

```
aws ec2 describe-images 
    --owners 123456789012 \   
    --include-deprecated
```

**계정의 사용 중단된 AMI를 설명하는 방법**  
다음 [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 명령을 사용합니다.

```
aws ec2 describe-images \
    --owners self \
    --query "Images[?DeprecationTime!=null].ImageId" \
    --output text
```

다음은 예제 출력입니다.

```
ami-0abcdef1234567890
```

**AMI의 사용 중단 날짜 설명**  
다음 [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 명령을 사용합니다. `DeprecationTime`이 출력에 표시되지 않는 경우 AMI는 사용되지 않거나 향후 날짜에 사용되지 않도록 설정되어 있습니다.

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Images[].DeprecationTime \
    --output text
```

다음은 예제 출력입니다.

```
2025-05-01T00:00:00.000Z
```

------
#### [ PowerShell ]

**계정의 사용 중단된 AMI를 나열하는 방법**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet을 사용합니다.

```
(Get-EC2Image -Owner self | Where-Object {$_.DeprecationTime -ne $null}).ImageId
```

다음은 예제 출력입니다.

```
ami-0abcdef1234567890
```

**AMI의 사용 중단 날짜 설명**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet을 사용합니다. `DeprecationTime`이 출력에 표시되지 않는 경우 AMI는 사용되지 않거나 향후 날짜에 사용되지 않도록 설정되어 있습니다.

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).DeprecationTime
```

다음은 예제 출력입니다.

```
2025-05-01T00:00:00.000Z
```

------

## AMI 사용 중단 취소
<a name="cancel-deprecate-ami"></a>

사용 중단 날짜 및 시간이 제거되므로 AMI 사용 중단은 취소할 수 있습니다. 이 절차를 수행하려면 AMI 소유자여야 합니다.

------
#### [ Console ]

**AMI의 사용 중단 취소**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 탐색기에서 **AMI(AMIs)**를 선택합니다.

1. 필터 표시줄에서 **내 소유**를 선택합니다.

1. AMI를 선택하고 **작업(Actions)**, **AMI 사용 중단 관리(Manage AMI Deprecation)**를 선택합니다. 여러 AMI를 선택하여 여러 AMI의 사용 중단을 한 번에 취소할 수 있습니다.

1. **활성화** 확인란을 선택 취소한 다음 **저장**을 선택합니다.

------
#### [ AWS CLI ]

**AMI의 사용 중단 취소**  
다음 [disable-image-deprecation](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image-deprecation.html) 명령을 사용합니다.

```
aws ec2 disable-image-deprecation --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**AMI의 사용 중단 취소**  
[Disable-EC2ImageDeprecation](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2ImageDeprecation.html) cmdlet을 사용합니다.

```
Disable-EC2ImageDeprecation -ImageId ami-0abcdef1234567890
```

------

# Amazon EC2 AMI 비활성화
<a name="disable-an-ami"></a>

인스턴시 시작에 사용되지 않도록 AMI를 비활성화할 수 있습니다. 비활성화된 AMI에서는 새 인스턴스를 시작할 수 없습니다. 비활성화된 AMI를 다시 활성화하면 인스턴스 시작에 다시 사용할 수 있습니다.

프라이빗 및 퍼블릭 AMI를 모두 비활성화할 수 있습니다.

거의 사용하지 않지만 장기간 유지해야 하는 비활성화된 EBS 지원 AMI의 스토리지 비용을 줄이려면 관련 스냅샷을 아카이빙할 수 있습니다. 자세한 내용은 *Amazon EBS 사용 설명서*의 [Archive Amazon EBS snapshots](https://docs.aws.amazon.com/ebs/latest/userguide/snapshot-archive.html)를 참조하세요.

**Topics**
+ [AMI 비활성화 작동 방식](#how-disable-ami-works)
+ [비용](#ami-disable-costs)
+ [사전 조건](#ami-disable-prerequisites)
+ [필수 IAM 권한](#ami-disable-iam-permissions)
+ [AMI 비활성화](#disable-ami)
+ [비활성화된 AMI 설명](#describe-disabled-ami)
+ [비활성화된 AMI 다시 활성화](#re-enable-a-disabled-ami)

## AMI 비활성화 작동 방식
<a name="how-disable-ami-works"></a>

**주의**  
AMI를 비활성화하면 시작 권한이 모두 제거됩니다.

**AMI가 비활성화된 경우:**
+ AMI의 상태가 `disabled`로 변경됩니다.
+ 비활성화된 AMI는 공유될 수 없습니다. AMI가 퍼블릭 상태였거나 이전에 공유된 경우 프라이빗으로 전환됩니다. AMI가 AWS 계정, 조직 또는 조직 단위와 공유된 경우 비활성화된 이들은 AMI에 대한 액세스 권한을 잃게 됩니다.
+ 비활성화된 AMI는 기본적으로 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) API 호출에 표시되지 않습니다.
+ 비활성화된 AMI는 **내 소유** 콘솔 필터 아래에 표시되지 않습니다. 비활성화된 AMI를 찾으려면 **비활성화된 이미지** 콘솔 필터를 사용합니다.
+ 비활성화된 AMI는 EC2 콘솔에서 인스턴스 시작 선택이 불가능합니다. 예를 들어 비활성화된 AMI는 시작 인스턴스 마법사의 AMI 카탈로그나 시작 템플릿을 생성할 때 표시되지 않습니다.
+ 시작 템플릿 및 Auto Scaling 그룹과 같은 시작 서비스는 비활성화된 AMI를 계속 참조할 수 있습니다. 비활성화된 AMI에서 후속 인스턴스를 시작하면 실패하므로 사용 가능한 AMI만 참조하도록 시작 템플릿과 Auto Scaling 그룹을 업데이트하는 것이 좋습니다.
+ 이후에 비활성화된 AMI 사용하여 시작되었던 EC2 인스턴스는 영향을 받지 않으며 중지, 시작 및 재부팅할 수 있습니다.
+ 비활성화된 AMI와 관련된 스냅샷은 삭제할 수 없습니다. 연결된 스냅샷을 삭제하려고 하면 `snapshot is currently in use` 오류가 발생합니다.

**AMI가 다시 활성화된 경우:**
+ AMI의 상태가 `available`로 변경되고, 이를 사용하여 인스턴스를 시작할 수 있습니다.
+ AMI가 공유될 수 있습니다.
+ 비활성화되었을 때 액세스 권한을 잃은 AWS 계정, 조직 및 조직 단위는 자동으로 액세스 권한을 획득하고, AMI가 다시 공유될 수 있습니다.

## 비용
<a name="ami-disable-costs"></a>

AMI를 비활성화하더라도 해당 AMI는 삭제되지 않습니다. AMI가 EBS 지원 AMI인 경우 AMI의 EBS 스냅샷에 대한 요금은 계속 지불합니다. AMI를 유지하려는 경우 스냅샷을 보관하여 스토리지 비용을 줄일 수 있습니다. 자세한 내용은 *Amazon EBS 사용 설명서*의 [Archive Amazon EBS snapshots](https://docs.aws.amazon.com/ebs/latest/userguide/snapshot-archive.html)를 참조하세요. AMI와 스냅샷을 보관하지 않으려면 AMI 등록을 취소하고 스냅샷을 삭제해야 합니다. 자세한 내용은 [AMI 등록 취소](deregister-ami.md) 섹션을 참조하세요.

## 사전 조건
<a name="ami-disable-prerequisites"></a>

AMI를 비활성화하거나 다시 활성화하려면 AMI의 소유자여야 합니다.

## 필수 IAM 권한
<a name="ami-disable-iam-permissions"></a>

AMI를 비활성화하고 다시 활성화하려면 다음 IAM 권한이 있어야 합니다.
+ `ec2:DisableImage`
+ `ec2:EnableImage`

## AMI 비활성화
<a name="disable-ami"></a>

EC2 콘솔 또는 AWS Command Line Interface(AWS CLI) 사용을 통해 AMI를 비활성화할 수 있습니다. 이 절차를 수행하려면 AMI 소유자여야 합니다.

------
#### [ Console ]

**AMI 비활성화**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **AMI**를 선택합니다.

1. 필터 표시줄에서 **내 소유**를 선택합니다.

1. AMI를 선택한 다음 **작업**, **AMI 비활성화**를 선택합니다. 한 번에 여러 개의 AMI를 선택하여 비활성화할 수 있습니다.

1. **AMI 비활성화** 창에서 **AMI 비활성화**를 선택합니다.

------
#### [ AWS CLI ]

**AMI 비활성화**  
다음 [https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image.html) 명령을 사용합니다.

```
aws ec2 disable-image --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**AMI 비활성화**  
[Disable-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2Image.html) cmdlet을 사용합니다.

```
Disable-EC2Image -ImageId ami-0abcdef1234567890
```

------

## 비활성화된 AMI 설명
<a name="describe-disabled-ami"></a>

EC2 콘솔 또는 AWS CLI 사용을 통해 비활성화된 AMI를 볼 수 있습니다.

비활성화된 AMI를 보려면 AMI 소유자여야 합니다. 비활성화된 AMI는 프라이빗으로 전환되므로 소유자가 아닌 경우 비활성화된 AMI를 볼 수 없습니다.

------
#### [ Console ]

**비활성화된 AMI 보기**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **AMI**를 선택합니다.

1. 필터 막대에서 **비활성화된 이미지**를 선택합니다.  
![\[비활성화된 이미지 필터\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/ami-filter-by-disabled-images.png)

------
#### [ AWS CLI ]

기본적으로 모든 AMI를 설명하는 경우 비활성화된 AMI는 결과에 포함되지 않습니다. 비활성화된 AMI를 결과에 포함하려면 `--include-disabled` 옵션을 지정합니다. AMI가 비활성화된 경우 AMI의 `State` 필드는 `disabled`입니다.

**계정에 대한 모든 AMI를 설명할 때 비활성화된 AMI를 포함하는 방법**  
다음 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 명령을 사용합니다.

```
aws ec2 describe-images \
    --owners 123456789012 \
    --include-disabled
```

**계정에 대한 비활성화된 AMI를 나열하는 방법**  
다음 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 명령을 사용합니다.

```
aws ec2 describe-images \
    --owners self \
    --include-disabled \
    --filters Name=state,Values=disabled \
    --query Images[].ImageId \
    --output text
```

다음은 예제 출력입니다.

```
ami-0abcdef1234567890
```

**AMI 상태를 설명하는 방법**  
다음 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 명령을 사용합니다. `DeprecationTime`이 출력에 표시되지 않는 경우 AMI는 사용되지 않거나 향후 날짜에 사용되지 않도록 설정되어 있습니다.

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Images[].State \
    --output text
```

다음은 예제 출력입니다.

```
disabled
```

------
#### [ PowerShell ]

기본적으로 모든 AMI를 설명하는 경우 비활성화된 AMI는 결과에 포함되지 않습니다. 비활성화된 AMI를 결과에 포함하려면 `-IncludeDisabled` 파라미터를 지정합니다. AMI가 비활성화된 경우 AMI의 `State` 필드는 `disabled`입니다.

**계정에 대한 비활성화된 AMI를 나열하는 방법**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet을 사용합니다.

```
(Get-EC2Image `
    -Owner self `
    -IncludeDisabled $true | Where-Object {$_.State -eq "disabled"}).ImageId
```

다음은 예제 출력입니다.

```
ami-0abcdef1234567890
```

**AMI 상태를 설명하는 방법**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet을 사용합니다.

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).State.Value
```

다음은 예제 출력입니다.

```
disabled
```

------

## 비활성화된 AMI 다시 활성화
<a name="re-enable-a-disabled-ami"></a>

비활성화된 AMI를 다시 활성화할 수 있습니다. 이 절차를 수행하려면 AMI 소유자여야 합니다.

------
#### [ Console ]

**비활성화된 AMI 다시 활성화**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **AMI**를 선택합니다.

1. 필터 막대에서 **비활성화된 이미지**를 선택합니다.

1. AMI를 선택한 다음 **작업**, **AMI 활성화**를 선택합니다. 여러 AMI를 선택하여 여러 AMI를 한 번에 다시 활성화할 수 있습니다.

1. **AMI 활성화** 창에서 **활성화**를 선택합니다.

------
#### [ AWS CLI ]

**비활성화된 AMI 다시 활성화**  
다음 [https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image.html) 명령을 사용합니다.

```
aws ec2 enable-image --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**비활성화된 AMI 다시 활성화**  
[Enable-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2Image.html) cmdlet을 사용합니다.

```
Enable-EC2Image -ImageId ami-0abcdef1234567890
```

------

# Amazon EC2 AMI 등록 취소
<a name="deregister-ami"></a>

AMI를 등록 취소하면 Amazon EC2에서 AMI를 영구적으로 삭제합니다. AMI의 등록을 취소한 이후에는 새 인스턴스를 시작하기 위해 해당 AMI를 사용하는 것은 불가능합니다. AMI 사용을 마쳤으면 AMI의 등록을 취소할 수 있습니다.

우발적이거나 악의적인 AMI 등록 취소를 방지하기 위해 [등록 취소 보호](ami-deregistration-protection.md)를 활성화할 수 있습니다. 실수로 EBS 지원 AMI를 등록 취소한 경우 영구 삭제되기 전에 허용된 기간에 복원하는 경우에만 [휴지통](https://docs.aws.amazon.com/ebs/latest/userguide/recycle-bin.html)을 사용하여 복원할 수 있습니다.

AMI 등록을 취소할 때 연결된 스냅샷을 선택적으로 동시에 삭제할 수 있습니다. 다만 여러 AMI와 연결된 스냅샷은 삭제하도록 지정된 경우에도 삭제되지 않지만 AMI는 여전히 등록 취소됩니다. 삭제되지 않은 스냅샷에서는 계속 스토리지 비용이 발생합니다.

AMI를 시작한 인스턴스에서는 AMI를 등록 취소해도 영향을 받지 않습니다. 이러한 인스턴스는 계속 사용할 수 있습니다. 기본적으로 AMI 등록 취소는 AMI 생성 프로세스 중에 생성된 스냅샷에 영향을 주지 않습니다. 이러한 인스턴스에 대한 사용 비용과 스냅샷에 대한 스토리지 비용은 계속 발생합니다. 따라서 불필요한 비용이 발생하지 않도록 필요하지 않는 스냅샷을 삭제하고 인스턴스를 종료하는 것이 좋습니다. 등록 취소 중에 자동으로 스냅샷을 삭제하거나 등록 취소 후에 수동으로 스냅샷을 삭제할 수 있습니다. 자세한 내용은 [사용하지 않는 리소스로 인한 비용 방지](#delete-unneeded-resources-to-avoid-unnecessary-costs) 섹션을 참조하세요.

이후 등록이 취소된 AMI에서 시작된 인스턴스의 경우에도 `describe-instance-image-metadata` AWS CLI 명령을 사용하여 AMI에 대한 몇 가지 개략적인 정보를 볼 수 있습니다. 자세한 내용은 [describe-instance-image-metadata](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-image-metadata.html) 섹션을 참조하세요.

**Topics**
+ [고려 사항](#deregister-ami-considerations)
+ [AMI 등록 취소](#deregister-an-ami)
+ [사용하지 않는 리소스로 인한 비용 방지](#delete-unneeded-resources-to-avoid-unnecessary-costs)
+ [등록 취소로부터 Amazon EC2 AMI 보호](ami-deregistration-protection.md)

## 고려 사항
<a name="deregister-ami-considerations"></a>
+ 계정이 소유하지 않은 AMI는 등록 취소할 수 없습니다.
+ AWS Backup 서비스에서 관리하는 AMI를 등록 취소하는 데 Amazon EC2를 사용할 수 없습니다. 대신 AWS Backup을 사용하여 백업 볼트의 해당 복구 지점을 삭제합니다. 자세한 내용은 AWS Backup 개발자 안내서**의 [백업 삭제](https://docs.aws.amazon.com/aws-backup/latest/devguide/deleting-backups.html)를 참조하세요.

## AMI 등록 취소
<a name="deregister-an-ami"></a>

EBS 지원 AMI와 Amazon S3 지원 AMI를 등록 취소할 수 있습니다. EBS 지원 AMI의 경우 연결된 스냅샷을 선택적으로 동시에 삭제할 수 있습니다. 그러나 스냅샷이 다른 AMI와 연결된 경우 삭제하도록 지정된 경우에도 스냅샷은 삭제되지 않습니다.

------
#### [ Console ]

**AMI 등록 해제**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. 필터 막대에서 **내 소유**를 선택하여 사용 가능한 AMI를 나열하거나 **비활성화된 이미지**를 선택하여 비활성화된 AMI를 나열합니다.

1. 등록 취소할 AMI를 선택합니다.

1. **작업(Actions)**, **AMI 등록 취소(AMI Deregister)**를 선택합니다.

1. (선택 사항) 등록 취소 중에 연결된 스냅샷을 삭제하려면 **연결된 스냅샷 삭제** 확인란을 선택합니다.
**참고**  
스냅샷이 다른 AMI와 연결된 경우 확인란을 선택하더라도 스냅샷은 삭제되지 않습니다.

1. **AMI 등록 취소**를 선택합니다.

   콘솔이 목록에서 AMI를 제거하는 데 몇 분 정도 걸릴 수 있습니다. 상태를 새로 고치려면 **새로 고침**을 선택합니다.

------
#### [ AWS CLI ]

**AMI 등록 해제**  
다음 [deregister-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-image.html) 명령을 사용합니다.

```
aws ec2 deregister-image --image-id ami-0abcdef1234567890
```

**AMI 등록을 취소하고 연결된 스냅샷을 삭제하려면**  
다음 [deregister-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-image.html) 명령을 사용하고 `--delete-associated-snapshots` 파라미터를 지정합니다. 스냅샷이 다른 AMI와 연결된 경우 이 파라미터를 지정하더라도 스냅샷은 삭제되지 않습니다.

```
aws ec2 deregister-image \
    --image-id ami-0abcdef1234567890 \
    --delete-associated-snapshots
```

------
#### [ PowerShell ]

**AMI 등록 해제**  
[Unregister-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Image.html) cmdlet을 사용합니다.

```
Unregister-EC2Image -ImageId ami-0abcdef1234567890
```

**AMI 등록을 취소하고 연결된 스냅샷을 삭제하려면**  
[Unregister-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Image.html) cmdlet을 사용하고 `-DeleteAssociatedSnapshots` 파라미터를 지정합니다. 스냅샷이 다른 AMI와 연결된 경우 이 파라미터를 지정하더라도 스냅샷은 삭제되지 않습니다.

```
Unregister-EC2Image `
    -ImageId ami-0abcdef1234567890 `
    -DeleteAssociatedSnapshots
```

------

## 사용하지 않는 리소스로 인한 비용 방지
<a name="delete-unneeded-resources-to-avoid-unnecessary-costs"></a>

AMI를 등록 취소하더라도 기본적으로 AMI와 연결된 리소스가 모두 삭제되지는 않습니다. 이러한 리소스로는 EBS 지원 AMI에 대한 스냅샷 및 Amazon S3 지원 AMI에 대한 Amazon S3의 파일이 포함됩니다. AMI를 등록 취소할 때 AMI에서 시작된 인스턴스는 종료 또는 중지되지 않습니다.

스냅샷과 파일을 저장하는 비용은 계속 발생하고 실행 중인 인스턴스에 대한 비용도 발생합니다.

이러한 유형의 불필요한 비용을 방지하려면 필요하지 않은 리소스를 삭제하는 것이 좋습니다.

**EBS-backed AMI**
+ AMI 등록을 취소하면서 연결된 스냅샷을 삭제합니다. 자세한 내용은 [AMI 등록 취소](#deregister-an-ami) 섹션을 참조하세요.
+ 연결된 스냅샷을 삭제하지 않고 AMI 등록을 취소하는 경우 수동으로 [스냅샷을 삭제할 수 있습니다](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-deleting-snapshot.html#ebs-delete-snapshot). AMI 생성 중에 생성된 인스턴스 루트 볼륨의 스냅샷은 다음과 같은 설명 형식을 갖습니다.

  ```
  Created by CreateImage(i-1234567890abcdef0) for ami-0abcdef1234567890
  ```
+ AMI에서 시작된 인스턴스가 더는 필요하지 않은 경우 해당 인스턴스를 [중지](Stop_Start.md#starting-stopping-instances)하거나 [종료](terminating-instances.md#terminating-instances-console)할 수 있습니다. 인스턴스를 나열하려면 AMI의 ID 기준으로 필터링합니다.

**Amazon S3 지원 AMI**
+ [ec2-delete-bundle](ami-tools-commands.md#ami-delete-bundle)(AMI 도구) 명령을 사용하여 Amazon S3에서 번들을 삭제합니다.
+ 번들을 삭제한 후 Amazon S3 버킷이 비어 있고 해당 버킷을 더는 사용하지 않는다면 [버킷을 삭제](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)할 수 있습니다.
+ AMI에서 시작된 인스턴스가 더는 필요하지 않은 경우 해당 인스턴스를 [종료](terminating-instances.md#terminating-instances-console)할 수 있습니다. 인스턴스를 나열하려면 AMI의 ID 기준으로 필터링합니다.

# 등록 취소로부터 Amazon EC2 AMI 보호
<a name="ami-deregistration-protection"></a>

AMI에서 *등록 취소 보호*를 켜서 우발적이거나 악의적인 삭제를 방지할 수 있습니다. 등록 취소 보호를 켜면 IAM 권한이 상관없이 사용자는 AMI를 등록 취소할 수 없습니다. AMI를 등록 취소하려면 먼저 등록 취소 보호를 꺼야 합니다.

AMI에서 등록 취소 보호를 켤 때 24시간의 휴지 기간을 포함하는 옵션이 제공됩니다. 이 휴지 기간은 이 기능을 끈 후에도 등록 취소 보호가 계속 적용되는 기간입니다. 이 휴지 기간에는 AMI 등록을 취소할 수 없습니다. 휴지 기간이 끝나면 AMI를 등록 취소할 수 있습니다.

등록 취소 보호는 모든 기존 및 신규 AMI에서 기본적으로 꺼져 있습니다.

## 등록 취소 보호 켜기
<a name="enable-deregistration-protection"></a>

등록 취소 보호를 켜려면 다음 절차를 따르세요.

------
#### [ Console ]

**등록 취소 보호를 켜는 방법**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. 필터 막대에서 **내 소유**를 선택하여 사용 가능한 AMI를 나열하거나 **비활성화된 이미지**를 선택하여 비활성화된 AMI를 나열합니다.

1. 등록 취소 보호를 켜려는 AMI를 선택하고 **작업**, **AMI 등록 취소 보호 관리**를 선택합니다.

1. **AMI 등록 취소 보호 관리** 대화 상자에서 휴지 기간을 포함하거나 포함하지 않고 등록 취소 보호를 켤 수 있습니다. 다음 옵션 중 하나를 선택하세요.
   + **24시간의 휴지 기간을 포함하여 활성화** - 휴지 기간이 포함된 경우 등록 취소 보호가 꺼진 후에도 24시간 동안 AMI 등록을 취소할 수 없습니다.
   + **휴지 기간 없이 활성화** - 휴지 기간이 없으면 등록 취소 보호가 꺼진 후 즉시 AMI를 등록 취소할 수 있습니다.

1. **저장**을 선택합니다.

------
#### [ AWS CLI ]

**등록 취소 보호를 켜는 방법**  
[enable-image-deregistration-protection](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image-deregistration-protection.html) 명령을 사용합니다. 선택적 휴지 기간을 활성화하려면 `--with-cooldown` 옵션을 포함합니다.

```
aws ec2 enable-image-deregistration-protection \
    --image-id ami-0abcdef1234567890 \
    --with-cooldown
```

------
#### [ PowerShell ]

**등록 취소 보호를 켜는 방법**  
[Enable-EC2ImageDeregistrationProtection](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2ImageDeregistrationProtection.html) cmdlet을 사용합니다. 선택적 휴지 기간을 활성화하려면 `-WithCooldown` 파라미터를 `true`로 설정합니다.

```
Enable-EC2ImageDeregistrationProtection `
    -ImageId ami-0abcdef1234567890 `
    -WithCooldown $true
```

------

## 등록 취소 보호 끄기
<a name="disable-deregistration-protection"></a>

등록 취소 보호를 끄려면 다음 절차를 따르세요.

AMI에 대한 등록 취소 보호를 켤 때 24시간의 휴지 기간을 포함하도록 선택한 경우 등록 취소 보호를 꺼도 즉시 AMI를 등록 취소할 수 없습니다. 휴지 기간은 24시간이며, 이 기간에 이 기능을 끈 후에도 등록 취소 보호가 계속 적용됩니다. 이 휴지 기간에는 AMI 등록을 취소할 수 없습니다. 휴지 기간이 끝난 후 AMI를 등록 취소할 수 있습니다.

------
#### [ Console ]

**등록 취소 보호를 끄는 방법**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **AMI**를 선택합니다.

1. 필터 막대에서 **내 소유**를 선택하여 사용 가능한 AMI를 나열하거나 **비활성화된 이미지**를 선택하여 비활성화된 AMI를 나열합니다.

1. 등록 취소 보호를 끄려는 AMI를 선택하고 **작업**, **AMI 등록 취소 보호 관리**를 선택합니다.

1. **AMI 등록 취소 보호 관리** 대화 상자에서 **비활성화**를 선택합니다.

1. **저장**을 선택합니다.

------
#### [ AWS CLI ]

**등록 취소 보호를 끄는 방법**  
[disable-image-deregistration-protection](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image-deregistration-protection.html) 명령을 사용합니다.

```
aws ec2 disable-image-deregistration-protection --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**등록 취소 보호를 끄는 방법**  
[Disable-EC2ImageDeregistrationProtection](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2ImageDeregistrationProtection.html) cmdlet을 사용합니다.

```
Disable-EC2ImageDeregistrationProtection -ImageId ami-0abcdef1234567890
```

------