EBS 지원 AMI로 인스턴스 스토어 지원 AMI 변환
사용자 소유의 인스턴스 스토어 기반 Linux AMI를 Amazon EBS 기반 Linux AMI로 변환할 수 있습니다.
중요
소유하지 않은 AMI는 변환할 수 없습니다.
인스턴스 스토어 기반 AMI를 Amazon EBS 기반 AMI로 변환하려면
-
Amazon EBS 기반 AMI에서 Amazon Linux 인스턴스를 시작합니다. 자세한 내용은 콘솔에서 인스턴스 시작 마법사를 사용하여 EC2 인스턴스 시작 단원을 참조하십시오. Amazon Linux 인스턴스에는 AWS CLI 및 AMI 도구가 미리 설치되어 있습니다.
-
인스턴스 스토어 기반 AMI를 번들링하는 데 사용한 X.509 프라이빗 키를 인스턴스로 업로드합니다. 이 키는 사용자와 Amazon EC2만 사용자의 AMI에 액세스할 수 있음을 보장하는 데 사용됩니다.
-
다음과 같이 인스턴스에서 X.509 프라이빗 키에 대한 임시 디렉터리를 생성합니다.
[ec2-user ~]$
mkdir /tmp/cert
-
scp 등의 보안 복사 도구를 사용하여 컴퓨터의 X.509 프라이빗 키를 인스턴스의
/tmp/cert
디렉터리로 복사합니다. 다음 명령의my-private-key
파라미터는 SSH를 사용하여 인스턴스에 연결하는 데 사용되는 프라이빗 키입니다. 예:you@your_computer:~ $
scp -i
pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 717 0.7KB/s 00:00my-private-key
.pem/path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem
ec2-user@ec2-203-0-113-25.compute-1.amazonaws.com
:/tmp/cert/
-
-
AWS CLI를 사용하도록 환경 변수를 구성합니다. 자세한 내용은 환경 변수를 참조하세요.
-
(권장) 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
AWS 액세스 키와 보안 키에 대한 환경 변수를 설정합니다.
[ec2-user ~]$
export AWS_ACCESS_KEY_ID=
your_access_key_id
[ec2-user ~]$
export AWS_SECRET_ACCESS_KEY=
your_secret_access_key
-
-
새 AMI용 Amazon Elastic Block Store(Amazon EBS) 볼륨을 준비합니다.
-
create-volume 명령을 사용하여 인스턴스와 동일한 가용 영역에 빈 EBS 볼륨을 생성합니다. 명령 출력의 볼륨 ID를 메모해 둡니다.
중요
이 EBS 볼륨은 크기가 원본 인스턴스 스토어 루트 볼륨보다 크거나 같아야 합니다.
[ec2-user ~]$
aws ec2 create-volume --size 10 --region
us-west-2
--availability-zoneus-west-2b
-
attach-volume 명령을 사용하여 이 볼륨을 Amazon EBS 기반 인스턴스에 연결합니다.
[ec2-user ~]$
aws ec2 attach-volume --volume-id
volume_id
--instance-idinstance_id
--device /dev/sdb --regionus-west-2
-
-
번들용 폴더를 생성합니다.
[ec2-user ~]$
mkdir /tmp/bundle
-
/tmp/bundle
using the ec2-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 -
ec2-unbundle 명령을 사용하여 번들에서 이미지 파일을 다시 구성합니다.
-
디렉터리를 번들 폴더로 변경합니다.
[ec2-user ~]$
cd /tmp/bundle/
-
ec2-unbundle 명령을 실행합니다.
[ec2-user bundle]$
ec2-unbundle -m image.manifest.xml --privatekey
/path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem
-
-
번들링되지 않은 이미지의 파일을 새 EBS 볼륨으로 복사합니다.
[ec2-user bundle]$
sudo dd if=/tmp/bundle/image of=/dev/sdb bs=1M
-
번들링되지 않은 새 파티션용 볼륨을 검색합니다.
[ec2-user bundle]$
sudo partprobe /dev/sdb1
-
블록 디바이스를 나열하여 마운트할 디바이스 이름을 찾습니다.
[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
(디바이스 파티션 끝 숫자가 없음)와 비슷할 것입니다. -
새 EBS 볼륨에 대한 탑재 지점을 생성하고 볼륨을 탑재합니다.
[ec2-user bundle]$
sudo mkdir /mnt/ebs
[ec2-user bundle]$sudo mount
/dev/sdb1
/mnt/ebs -
주로 사용하는 텍스트 편집기(예:
/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
이 예에서는 마지막 줄을 제거해야 합니다.
-
볼륨 마운트를 해제하고 인스턴스에서 볼륨을 분리합니다.
[ec2-user bundle]$
sudo umount /mnt/ebs
[ec2-user bundle]$
aws ec2 detach-volume --volume-id
volume_id
--regionus-west-2
-
다음과 같이 새 EBS 볼륨에서 AMI를 생성합니다.
-
새 EBS 볼륨의 스냅샷을 생성합니다.
[ec2-user bundle]$
aws ec2 create-snapshot --region
us-west-2
--description "your_snapshot_description
" --volume-idvolume_id
-
스냅샷이 완전한지 확인합니다.
[ec2-user bundle]$
aws ec2 describe-snapshots --region
us-west-2
--snapshot-idsnapshot_id
-
describe-images
aki
명령을 사용하여 원래의 AMI에 사용된 프로세스 아키텍처, 가상화 유형 및 커널 이미지(describe-images)를 식별합니다. 이 단계의 경우 원본 인스턴스 스토어 기반 AMI의 AMI ID가 필요합니다.[ec2-user bundle]$
aws ec2 describe-images --region
IMAGES x86_64 amazon/amzn-ami-pv-2013.09.2.x86_64-s3
--image-idus-west-2
ami-id
--output textami-8ef297be
amazon available public machine aki-fc8f11cc instance-store paravirtual xen이 예에서는 아키텍처가
x86_64
이고 커널 이미지 ID가aki-fc8f11cc
입니다. 다음 단계에서는 이들 값을 사용합니다. 위 명령의 출력에ari
ID도 나열되면 이 ID도 메모해 둡니다. -
새 EBS 볼륨의 스냅샷 ID와 이전 단계의 값을 사용하여 새 AMI를 등록합니다. 이전 명령 출력에
ari
ID가 나열된 경우,--ramdisk-id
를 사용하여 이 ID를 다음 명령에 포함합니다.ari_id
[ec2-user bundle]$
aws ec2 register-image --region
us-west-2
--nameyour_new_ami_name
--block-device-mappings DeviceName=device-name
,Ebs={SnapshotId=snapshot_id
} --virtualization-type paravirtual --architecture x86_64 --kernel-idaki-fc8f11cc
--root-device-namedevice-name
-
-
(선택 사항) 새 AMI에서 인스턴스를 시작할 수 있음을 테스트한 후에는 이 절차용으로 생성한 EBS 볼륨을 삭제할 수 있습니다.
aws ec2 delete-volume --volume-id
volume_id