Amazon EC2 AMI 도구 참조

Amazon EC2 AMI 도구 참조

AMI 도구 명령을 사용해 Amazon S3 기반 Linux AMI를 생성·관리할 수 있어요. 도구를 설정하려면 "Amazon EC2 AMI 도구 설정"을 참고하세요. 액세스 키에 대한 자세한 내용은 IAM 사용 설명서의 "IAM 사용자의 액세스 키 관리"를 참고해요.

출처: 문서

본문

명령 목록

  • ec2-ami-tools-version
  • ec2-bundle-image
  • ec2-bundle-vol
  • ec2-delete-bundle
  • ec2-download-bundle
  • ec2-migrate-manifest
  • ec2-unbundle
  • ec2-upload-bundle

그리고 AMI 도구의 공통 옵션(Common options)도 다룹니다.

ec2-ami-tools-version

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

구문

ec2-ami-tools-version

출력 — 버전 정보입니다.

예제 — 사용 중인 AMI 도구의 버전 정보를 표시합니다.

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

ec2-bundle-image

설명 — 루프백 파일(loopback file)로 생성된 운영 체제 이미지에서 Amazon S3 기반 Linux AMI를 만듭니다.

구문

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

옵션

  • -c, --cert path — 사용자의 PEM 인코딩 RSA 공개 키 인증서 파일. 필수: 예
  • -k, --privatekey path — PEM 인코딩 RSA 키 파일 경로. 이 키로 이 번들을 언번들(unbundle)해야 하므로 안전한 곳에 보관하세요. 이 키가 AWS 계정에 등록될 필요는 없어요. 필수: 예
  • -u, --user account — 대시 없는 사용자의 AWS 계정 ID. 필수: 예
  • -i, --image path — 번들할 이미지 경로. 필수: 예
  • -d, --destination path — 번들을 만들 디렉터리. 기본값: /tmp. 필수: 아니요
  • --ec2cert path — 이미지 매니페스트를 암호화하는 데 사용하는 Amazon EC2 X.509 공개 키 인증서 경로. us-gov-west-1과 cn-north-1 리전은 비기본 공개 키 인증서를 사용하므로 이 옵션으로 그 인증서 경로를 지정해야 해요. 인증서 경로는 AMI 도구 설치 방법에 따라 다르며, Amazon Linux에서는 /opt/aws/amitools/ec2/etc/ec2/amitools/, RPM 또는 ZIP 파일로 설치했다면 $EC2_AMITOOL_HOME/etc/ec2/amitools/에 있습니다. 필수: us-gov-west-1과 cn-north-1 리전에만 해당
  • -r, --arch architecture — 이미지 아키텍처. 명령줄에서 아키텍처를 제공하지 않으면 번들링이 시작될 때 입력을 요청합니다. 유효 값: i386 | x86_64. 필수: 아니요
  • --productcodes code1,code2,... — 등록 시 이미지에 붙일 제품 코드(쉼표로 구분). 필수: 아니요
  • -B, --block-device-mapping mapping — 인스턴스 유형이 지정된 장치를 지원하면 블록 장치가 이 AMI의 인스턴스에 어떻게 노출되는지 정의합니다. 각 키가 가상 이름, 값이 해당 장치 이름인 키-값 쌍의 쉼표 구분 목록을 지정합니다. 가상 이름: ami(인스턴스가 보는 루트 파일 시스템 장치), root(커널이 보는 루트 파일 시스템 장치), swap(인스턴스가 보는 스왑 장치), ephemeralN(N번째 인스턴스 스토어 볼륨). 필수: 아니요
  • -p, --prefix prefix — 번들링된 AMI 파일의 파일명 접두사. 기본값: 이미지 파일 이름(예: 경로가 /var/spool/my-image/version-2/debian.img이면 기본 접두사는 debian.img). 필수: 아니요
  • --kernel kernel_id — 폐기됨. 커널 설정은 register-image를 사용하세요. 필수: 아니요
  • --ramdisk ramdisk_id — 폐기됨. RAM 디스크는 필요 시 register-image로 설정하세요. 필수: 아니요

출력 — 번들링 프로세스의 단계와 상태를 설명하는 상태 메시지.

예제 — 루프백 파일로 만든 운영 체제 이미지에서 번들 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
...
Generating digests for each part...
Digests generated.
Creating bundle manifest...
ec2-bundle-image complete.

ec2-bundle-vol

설명 — 인스턴스의 루트 볼륨 사본을 압축·암호화·서명해 Amazon S3 기반 Linux AMI를 만듭니다. Amazon EC2는 인스턴스에서 제품 코드, 커널 설정, RAM 디스크 설정, 블록 장치 매핑을 상속하려 시도합니다.

기본적으로 번들 프로세스는 민감한 정보를 포함할 수 있는 파일을 제외합니다. 이 파일에는 *.sw, *.swo, *.swp, *.pem, *.priv, *id_rsa*, *id_dsa*, *.gpg, *.jks, */.ssh/authorized_keys, */.bash_history가 포함됩니다. 이 파일들을 모두 포함하려면 --no-filter를, 일부만 포함하려면 --include 옵션을 사용하세요. 자세한 내용은 "Amazon S3 기반 AMI 생성"을 참고하세요.

구문

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]

주요 옵션 (자세한 설명은 ec2-bundle-image과 유사)

  • -c, --cert — PEM 인코딩 RSA 공개 키 인증서. 필수: 예
  • -k, --privatekey — PEM 인코딩 RSA 키 파일 경로. 필수: 예
  • -u, --user — 대시 없는 AWS 계정 ID. 필수: 예
  • -d, --destination — 번들 만들 디렉터리. 기본값: /tmp. 필수: 아니요
  • --ec2cert path — 위와 동일하게 us-gov-west-1·cn-north-1 리전에서 필요.
  • -r, --arch — 이미지 아키텍처(i386 | x86_64). 필수: 아니요
  • --productcodes — 등록 시 붙일 제품 코드. 필수: 아니요
  • -B, --block-device-mapping — 블록 장치 매핑 정의. 필수: 아니요
  • -a, --all — 원격 마운트된 파일 시스템의 디렉터리를 포함해 모든 디렉터리 번들. 필수: 아니요
  • -e, --exclude directory1,directory2,... — 번들 작업에서 제외할 절대 디렉터리 경로와 파일 목록. --all 옵션을 재정의합니다. 필수: 아니요
  • -i, --include file1,file2,... — 번들 작업에 포함할 파일 목록. 지정된 파일은 민감 정보를 포함할 수 있어 AMI에서 제외되곤 하지만, 여기에 포함됩니다. 필수: 아니요
  • --no-filter — 민감 정보 포함 가능성 때문에 파일을 제외하지 않습니다. 필수: 아니요
  • -p, --prefix — 번들 AMI 파일 이름 접두사. 기본값: image. 필수: 아니요
  • -s, --size size — 만들 이미지 파일의 크기(MB, 1024*1024 바이트). 최대 10240 MB. 기본값: 10240. 필수: 아니요
  • --[no-]inherit — 이미지가 인스턴스 메타데이터를 상속할지 여부(기본값은 상속). --inherit를 활성화했는데 인스턴스 메타데이터에 접근할 수 없으면 번들링이 실패합니다. 필수: 아니요
  • -v, --volume volume — 번들을 만들 마운트된 볼륨의 절대 경로. 기본값: 루트 디렉터리(/). 필수: 아니요
  • -P, --partition type — 디스크 이미지가 파티션 테이블을 사용할지 여부. 파티션 테이블 유형을 지정하지 않으면 볼륨의 상위 블록 장치에 사용된 유형(해당되는 경우)이 기본이며, 그렇지 않으면 기본값은 gpt. 유효 값: mbr | gpt | none. 필수: 아니요
  • -S, --script script — 번들링 직전에 실행할 사용자 지정 스크립트. 이 스크립트는 볼륨의 마운트 지점이라는 단일 인수를 기대해야 합니다. 필수: 아니요
  • --fstab path — 이미지에 번들할 fstab 경로. 지정하지 않으면 Amazon EC2가 /etc/fstab을 번들합니다. 필수: 아니요
  • --generate-fstab — Amazon EC2 제공 fstab으로 볼륨을 번들합니다. 필수: 아니요
  • --grub-config path — 이미지에 번들할 대체 grub 구성 파일 경로. 기본적으로 ec2-bundle-vol은 복제 이미지에 /boot/grub/menu.lst 또는 /boot/grub/grub.conf가 있을 것으로 기대합니다. 이 옵션으로 대체 경로를 지정할 수 있어요. 필수: 아니요
  • --kernel kernel_id, --ramdisk ramdisk_id — 폐기됨. 필수: 아니요

출력 — 번들링의 단계와 상태를 설명하는 상태 메시지.

예제 — 로컬 머신의 루트 파일 시스템 스냅샷을 압축·암호화·서명해 번들 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
  ...
  Splitting /mnt/image.gz.crypt...
  Created image.part.00
  ...
  Generating digests for each part...
  Digests generated.
  Creating bundle manifest...
  Bundle Volume complete.

ec2-delete-bundle

설명 — Amazon S3 스토리지에서 지정된 번들을 삭제합니다. 번들을 삭제하면 해당 AMI에서 인스턴스를 시작할 수 없습니다.

구문

ec2-delete-bundle -b bucket -a access_key_id -s secret_access_key [-t token] [--url url] [--region region] [--sigv version] [-m path] [-p prefix] [--clear] [--retry] [-y]

주요 옵션

  • -b, --bucket bucket — 번들 AMI를 담은 Amazon S3 버킷 이름(선택적인 / 구분 경로 접두사 포함). 필수: 예
  • -a, --access-key access_key_id — AWS 액세스 키 ID. 필수: 예
  • -s, --secret-key secret_access_key — AWS 시크릿 액세스 키. 필수: 예
  • -t, --delegation-token token — AWS 요청에 전달할 위임 토큰. 필수: 임시 보안 자격 증명 사용 시에만. 기본값: AWS_DELEGATION_TOKEN 환경 변수 값(설정된 경우).
  • --region region — 요청 서명에 사용할 리전. 기본값: us-east-1. 서명 버전 4 사용 시 필요.
  • --sigv version — 요청 서명에 사용할 서명 버전. 유효 값: 2 | 4. 기본값: 4. 필수: 아니요
  • -m, --manifest path — 매니페스트 파일 경로. --prefix 또는 --manifest 중 하나를 지정해야 함.
  • -p, --prefix prefix — 번들 AMI 파일 이름 접두사. 전체 접두사를 제공하세요(예: 접두사가 image.img이면 -p image.img 사용). --prefix 또는 --manifest 중 하나를 지정해야 함.
  • --clear — 지정된 번들 삭제 후 버킷이 비어 있으면 Amazon S3 버킷 삭제. 필수: 아니요
  • --retry — 모든 Amazon S3 오류에 대해 작업당 최대 5회 자동 재시도. 필수: 아니요
  • -y, --yes — 모든 프롬프트에 예라고 자동 응답. 필수: 아니요

출력 — 삭제 프로세스의 단계와 상태를 나타내는 상태 메시지.

예제 — 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
...
Continue? [y/n]
y
Deleted amzn-s3-demo-bucket/image.manifest.xml
...
ec2-delete-bundle complete.

ec2-download-bundle

설명 — 지정된 Amazon S3 기반 Linux AMI를 Amazon S3 스토리지에서 다운로드합니다.

구문

ec2-download-bundle -b bucket -a access_key_id -s secret_access_key -k path [--url url] [--region region] [--sigv version] [-m file] [-p prefix] [-d directory] [--retry]

주요 옵션

  • -b, --bucket bucket — 번들이 있는 Amazon S3 버킷 이름(선택적 / 구분 경로 접두사 포함). 필수: 예
  • -a, --access-key — AWS 액세스 키 ID. 필수: 예
  • -s, --secret-key — AWS 시크릿 액세스 키. 필수: 예
  • -k, --privatekey path — 매니페스트를 복호화하는 데 사용하는 개인 키. 필수: 예
  • --url url — Amazon S3 서비스 URL. 기본값: https://s3.amazonaws.com/. 필수: 아니요
  • --region region — 요청 서명에 사용할 리전. 기본값: us-east-1. 서명 버전 4 사용 시 필요.
  • --sigv version — 서명 버전(2 | 4, 기본 4). 필수: 아니요
  • -m, --manifest file — 매니페스트 파일 이름(경로 없이). -m 또는 -p 중 지정 권장. 필수: 아니요
  • -p, --prefix prefix — 번들 AMI 파일의 파일명 접두사. 기본값: image. 필수: 아니요
  • -d, --directory directory — 다운로드한 번들을 저장할 디렉터리(존재해야 함). 기본값: 현재 작업 디렉터리. 필수: 아니요
  • --retry — Amazon S3 오류 시 작업당 최대 5회 자동 재시도. 필수: 아니요

출력 — 다운로드 프로세스의 여러 단계를 나타내는 상태 메시지.

예제 — Linux mkdir 명령으로 bundled 디렉터리를 만들고 amzn-s3-demo-bucket 버킷에서 번들을 다운로드합니다.

[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 ...
...

ec2-migrate-manifest

설명 — Amazon S3 기반 Linux AMI(예: 인증서, 커널, RAM 디스크)를 수정해 다른 리전을 지원하도록 만듭니다.

구문

ec2-migrate-manifest -c path -k path -m path { (-a access_key_id -s secret_access_key --region region) | (--no-mapping) } [--ec2cert ec2_cert_path] [--kernel kernel-id] [--ramdisk ramdisk_id]

주요 옵션

  • -c, --cert path — PEM 인코딩 RSA 공개 키 인증서. 필수: 예
  • -k, --privatekey path — PEM 인코딩 RSA 키 파일 경로. 필수: 예
  • -m, --manifest path — 매니페스트 파일 경로. 필수: 예
  • -a, --access-key, -s, --secret-key, --region region — 자동 매핑 사용 시 필요.
  • --no-mapping — 커널과 RAM 디스크의 자동 매핑을 비활성화. 마이그레이션 중 Amazon EC2는 매니페스트 파일의 커널과 RAM 디스크를 대상 리전용으로 설계된 것으로 교체합니다. --no-mapping을 주지 않으면 ec2-migrate-bundle이 DescribeRegions와 DescribeImages 작업으로 자동 매핑을 수행할 수 있어요. 필수: 자동 매핑용 -a, -s, --region을 제공하지 않는 경우
  • --ec2cert path — us-gov-west-1·cn-north-1 리전에만 필요(설명은 위와 동일).
  • --kernel kernel_id — 선택할 커널 ID. > 중요 — 커널과 RAM 디스크 대신 PV-GRUB 사용을 권장합니다. 필수: 아니요
  • --ramdisk ramdisk_id — 선택할 RAM 디스크 ID. > 중요 — 커널과 RAM 디스크 대신 PV-GRUB 사용을 권장합니다. 필수: 아니요

출력 — 번들링 프로세스의 단계와 상태를 설명하는 상태 메시지.

예제 — my-ami.manifest.xml 매니페스트에 지정된 AMI를 US에서 EU로 복사합니다.

[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

설명 — Amazon S3 기반 Linux AMI에서 번들을 다시 만듭니다.

구문

ec2-unbundle -k path -m path [-s source_directory] [-d destination_directory]

주요 옵션

  • -k, --privatekey path — PEM 인코딩 RSA 키 파일 경로. 필수: 예
  • -m, --manifest path — 매니페스트 파일 경로. 필수: 예
  • -s, --source source_directory — 번들을 담은 디렉터리. 기본값: 현재 디렉터리. 필수: 아니요
  • -d, --destination destination_directory — AMI를 언번들할 디렉터리(존재해야 함). 기본값: 현재 디렉터리. 필수: 아니요

예제 — 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

출력 — 언번들링 프로세스의 여러 단계를 나타내는 상태 메시지.

ec2-upload-bundle

설명 — Amazon S3 기반 Linux AMI의 번들을 Amazon S3에 업로드하고 업로드된 객체에 적절한 액세스 제어 목록(ACL)을 설정합니다. 자세한 내용은 "Amazon S3 기반 AMI 생성"을 참고하세요.

참고 — Amazon S3 기반 Linux AMI용 S3 버킷에 객체를 업로드하려면 버킷에 ACL이 활성화되어 있어야 해요. 그렇지 않으면 Amazon EC2가 업로드할 객체에 ACL을 설정할 수 없습니다. 대상 버킷이 S3 Object Ownership의 버킷 소유자 강제(bucket owner enforced) 설정을 사용하면 ACL이 비활성화되어 동작하지 않아요. 자세한 내용은 "객체 소유권 제어 및 버킷의 ACL 비활성화"를 참고하세요.

구문

ec2-upload-bundle -b bucket -a access_key_id -s secret_access_key [-t token] -m path [--url url] [--region region] [--sigv version] [--acl acl] [-d directory] [--part part] [--retry] [--skipmanifest]

주요 옵션

  • -b, --bucket bucket — 번들을 저장할 Amazon S3 버킷 이름(선택적 / 구분 경로 접두사 포함). 버킷이 없으면 이름을 사용할 수 있는 경우 생성합니다. 버킷이 없고 AMI 도구 버전이 1.5.18 이상이면 이 명령이 버킷 ACL도 설정합니다. 필수: 예
  • -a, --access-key, -s, --secret-key — AWS 액세스 키 ID, 시크릿 키. 필수: 예
  • -t, --delegation-token token — 위임 토큰. 필수: 임시 보안 자격 증명 사용 시에만. 기본값은 AWS_DELEGATION_TOKEN 환경 변수 값.
  • -m, --manifest path — 매니페스트 파일 경로(번들링 중 생성되며 번들 디렉터리에서 찾을 수 있음). 필수: 예
  • --url url — 폐기됨. 버킷이 EU 위치(그리고 eu-west-1이 아님)로 제한되지 않는 한 --region 옵션을 사용하세요. --location 플래그가 그 특정 위치 제한을 타깃팅하는 유일한 방법입니다.
  • --region region — 대상 S3 버킷의 요청 서명에 사용할 리전. 버킷이 없고 리전 미지정 시 도구는 위치 제약 없이(us-east-1에) 버킷 생성. 버킷이 없고 리전 지정 시 지정 리전에 생성. 버킷이 있고 리전 미지정 시 버킷의 위치 사용. 버킷이 있고 us-east-1 지정 시 오류 없이 버킷의 실제 위치 사용(기존 일치 파일은 덮어씀). 버킷이 있고 us-east-1이 아닌 실제 위치와 다른 리전을 지정하면 오류로 종료. 기본값: us-east-1. 서명 버전 4 사용 시 필요.
  • --sigv version — 서명 버전(2 | 4, 기본 4). 필수: 아니요
  • --acl acl — 번들 이미지의 액세스 제어 목록 정책. 유효 값: public-read | aws-exec-read. 기본값: aws-exec-read. 필수: 아니요
  • -d, --directory directory — 번들 AMI 파트를 담은 디렉터리. 기본값: 매니페스트 파일이 있는 디렉터리. 필수: 아니요
  • --part part — 지정된 파트와 이후 모든 파트부터 업로드를 시작. 예: --part 04. 필수: 아니요
  • --retry — Amazon S3 오류 시 작업당 최대 5회 자동 재시도. 필수: 아니요
  • --skipmanifest — 매니페스트를 업로드하지 않음. 필수: 아니요
  • --location location — 폐기됨. 버킷이 EU 위치로 제한되지 않는 한 --region을 사용하세요. 대상 버킷의 위치 제약. (동작: 버킷이 있고 위치 불일치 시 오류, 버킷이 있고 미지정 시 버킷 위치 사용, 버킷이 없고 위치 지정 시 해당 위치에 생성, 버킷 없고 미지정 시 위치 제약 없이 생성.) 기본값: --region 지정 시 그 리전, 아니면 us-east-1. 필수: 아니요

출력 — 업로드 프로세스의 단계와 상태를 나타내는 상태 메시지.

예제 — 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
...
Uploading manifest ...
Uploaded manifest.
Bundle upload completed.

AMI 도구의 공통 옵션

대부분의 AMI 도구는 다음 선택적 파라미터를 받습니다.

  • --help, -h — 도움말 메시지 표시
  • --version — 버전과 저작권 고지 표시
  • --manual — 매뉴얼 항목 표시
  • --batch — 대화형 프롬프트를 억제하는 배치 모드로 실행
  • --debug — 문제 해결에 유용한 정보 표시

더 알아보기 (Learn more)