本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將您的執行個體存放區轉換AMI為支援 EBS AMI
您可以將您擁有的執行個體商店支援AMI的 Linux 轉換為支援 Amazon EBS 的 Linux。AMI
重要
你不能轉換一AMI個你不擁有的。
若要將執行個體存放區備份轉換為 AMI Amazon 支援 EBS AMI
-
從 Amazon EBS 支AMI持的 Amazon Linux 實例啟動。如需詳細資訊,請參閱使用主控台中的啟動EC2執行個體精靈啟動執行個體。Amazon Linux 執行個體已預先安裝的 AWS CLI 和AMI工具。
-
將您用來將執行個體存放區備份的 X.509 私密金鑰上傳AMI到執行個體。我們使用此密鑰來確保只有您和 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 存取金鑰、私密金鑰和工作階段 Token 的環境變數。
[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
-
-
準備一個 Amazon 彈性塊商店(AmazonEBS)卷為您的新AMI。
-
使用 create- volume 命令,在與執行個體相同的可用區域中建立空白EBS磁碟區。記下命令輸出中的磁碟區 ID。
重要
此EBS磁碟區的大小必須相同或大於原始執行個體儲存根磁碟區。
[ec2-user ~]$
aws ec2 create-volume --size 10 --region
us-west-2
--availability-zoneus-west-2b
-
使用附加磁碟區命令將磁碟區連接到 Amazon EBS 支援的執行個體。
[ec2-user ~]$
aws ec2 attach-volume --volume-id
volume_id
--instance-idinstance_id
--device /dev/sdb --regionus-west-2
-
-
建立您的 bundle 資料夾。
[ec2-user ~]$
mkdir /tmp/bundle
-
/tmp/bundle
使用指令為您的執行個體存放區AMI下載套裝軟體ec2-download-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 命令從 bundle 重新建構映像檔。
-
將目錄變更為 bundle 資料夾。
[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 -
使用您最喜歡的文本編輯器(例如vim或nano)打開EBS卷上的文
/etc/fstab
件,並刪除例如存儲(臨時)卷的任何條目。由於該加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
-
AMI從新EBS磁碟區建立,如下所示。
-
建立新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指令識別原始AMI檔案上使用的處理器架構、虛擬化類型和核心映像 (
aki
)。在此步驟中,您需要原始執行個體存放區支援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,請將其記下。 -
AMI使用新磁碟區的快照 ID 和上一步的值註冊新EBS磁碟區。如果先前的命令輸出列出
ari
ID,請用--ramdisk-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