

# 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
   ```