Amazon S3 지원 AMI를 EBS 지원 AMI로 변환
사용자 소유의 Amazon S3 지원 Linux AMI를 Amazon EBS 지원 Linux AMI로 변환할 수 있습니다.
중요
소유하지 않은 AMI는 변환할 수 없습니다.
Amazon S3 지원 AMI를 Amazon EBS 지원 AMI로 변환하려면
-
Amazon EBS 기반 AMI에서 Amazon Linux 인스턴스를 시작합니다. 자세한 내용은 콘솔에서 인스턴스 시작 마법사를 사용하여 EC2 인스턴스 시작 섹션을 참조하세요. Amazon Linux 인스턴스에는 AWS CLI 및 AMI 도구가 미리 설치되어 있습니다.
-
Amazon S3 지원 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 -imy-private-key.pem/path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pemec2-user@ec2-203-0-113-25.compute-1.amazonaws.com:/tmp/cert/ pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 717 0.7KB/s 00:00
-
-
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 볼륨은 크기가 원본 인스턴스 스토어 루트 볼륨보다 크거나 같아야 합니다.
aws ec2 create-volume \ --size 10 \ --regionus-west-2\ --availability-zoneus-west-2b -
attach-volume 명령을 사용하여 이 볼륨을 Amazon EBS 기반 인스턴스에 연결합니다.
aws ec2 attach-volume \ --volume-idvol-01234567890abcdef\ --instance-idi-1234567890abcdef0\ --regionus-west-2
-
-
번들용 폴더를 생성합니다.
[ec2-user ~]$mkdir /tmp/bundle -
/tmp/bundleusing the ec2-download-bundle 명령을 사용하여 인스턴스 스토어 기반 AMI용 번들을 /tmp/bundle로 다운로드합니다.[ec2-user ~]$ec2-download-bundle -bamzn-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-idvol-01234567890abcdef--regionus-west-2 -
다음과 같이 새 EBS 볼륨에서 AMI를 생성합니다.
-
새 EBS 볼륨의 스냅샷을 생성합니다.
[ec2-user bundle]$aws ec2 create-snapshot --regionus-west-2--description "your_snapshot_description" --volume-idvol-01234567890abcdef -
스냅샷이 완전한지 확인합니다.
[ec2-user bundle]$aws ec2 describe-snapshots --regionus-west-2--snapshot-idsnap-0abcdef1234567890 -
describe-images
aki명령을 사용하여 원래의 AMI에 사용된 프로세스 아키텍처, 가상화 유형 및 커널 이미지(describe-images)를 식별합니다. 이 단계의 경우 원본 Amazon S3 지원 AMI의 AMI ID가 필요합니다.[ec2-user bundle]$aws ec2 describe-images --regionus-west-2--image-idami-0abcdef1234567890--output text IMAGES x86_64 amazon/amzn-ami-pv-2013.09.2.x86_64-s3ami-8ef297beamazon available public machine aki-fc8f11cc instance-store paravirtual xen이 예에서는 아키텍처가
x86_64이고 커널 이미지 ID가aki-fc8f11cc입니다. 다음 단계에서는 이들 값을 사용합니다. 위 명령의 출력에ariID도 나열되면 이 ID도 메모해 둡니다. -
새 EBS 볼륨의 스냅샷 ID와 이전 단계의 값을 사용하여 새 AMI를 등록합니다. 이전 명령 출력에
ariID가 나열된 경우,--ramdisk-id를 사용하여 이 ID를 다음 명령에 포함합니다.ari_id[ec2-user bundle]$aws ec2 register-image --regionus-west-2--nameyour_new_ami_name--block-device-mappings DeviceName=device-name,Ebs={SnapshotId=snap-0abcdef1234567890} --virtualization-type paravirtual --architecture x86_64 --kernel-idaki-fc8f11cc--root-device-namedevice-name
-
-
(선택 사항) 새 AMI에서 인스턴스를 시작할 수 있음을 테스트한 후에는 이 절차용으로 생성한 EBS 볼륨을 삭제할 수 있습니다.
aws ec2 delete-volume --volume-idvol-01234567890abcdef