本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立執行個體儲存體支援的 AMI
您啟動執行個體時指定的 AMI,會判定根設備磁碟區的類型。
若要建立執行個體後端 Linux AMI,請從您已從現有執行個體後端 Linux AMI 啟動的執行個體開始。在您將執行個體自訂到符合您的需求後,建立磁碟區並註冊新的 AMI。您可以搭配這些自訂項目,使用這個新的 AMI 啟動新的執行個體。
您無法建立執行個體儲存體支援的 Windows AMI,因為 Windows AMI 不支援根裝置的執行個體儲存體。
重要
只有下列執行個體類型支援執行個體儲存體磁碟區做為根裝置,且需要執行個體儲存體支援的 AMI:C1、C3、D2、I2、M1、M2、M3、R3 和 X1。
AMI 建立程序與 Amazon EBS 後端 AMI 不同。如需詳細資訊,請參閱建立 Amazon EBS 支援的 AMI。
目錄
AMI 建立概觀
以下圖表顯示從執行個體後端執行個體建立 AMI 之程序的摘要。
![建立執行個體儲存體支援的 AMI。](images/ami_create_instance_store.png)
首先,請先從與您要建立的 AMI 相似的 AMI 啟動執行個體。您可以連線到您的執行個體並自訂。設定好所要的執行個體後,您可以組合執行個體。完成綁定程序需要幾分鐘。程序完成後,您將擁有 bundle,其中包含映像工作資訊清單檔案 (image.manifest.xml
) 和含有根磁碟區範本的檔案 (image.part.
xx)。接著您上傳 bundle 至 Amazon S3 儲存貯體,然後登錄您的 AMI。
注意
若要為您的執行個體存放區後端 Linux AMI 將物件上傳到 S3 儲存貯體,必須為儲存貯體啟用 ACL。否則,Amazon EC2 將無法在要上傳的物件上設定 ACL。如果您的目的地儲存貯體將儲存貯體擁有者強制設定用於 S3 物件擁有權,這將無法運作,因為 ACL 已停用。如需詳細資訊,請參閱使用 S3 物件擁有權控制上傳物件的擁有權。
當您使用新的 AMI 啟動執行個體時,我們會使用上傳至 Amazon S3 的 bundle 建立執行個體的根磁碟區。Amazon S3 中 bundle 所用的儲存空間會使您的帳戶產生費用,直到刪除為止。如需詳細資訊,請參閱取消註冊 Amazon EC2 AMI。
若除了根設備磁碟區之外,您還為您的執行個體新增執行個體存放磁碟區,則新 AMI 的區塊型設備映射便會包含這些磁碟區的資訊,並且您從新的 AMI 啟動之執行個體的區塊型設備映射也會自動包含這些磁碟區的資訊。如需詳細資訊,請參閱 Amazon EC2 執行個體上磁碟區的區塊型儲存設備映射。
必要條件
在您可以開始建立 AMI 之前,務必完成以下工作:
-
安裝 AMI 工具。如需詳細資訊,請參閱設定 Amazon EC2 AMI 工具。
-
安裝 AWS CLI。如需詳細資訊,請參閱 AWS CLI入門。
-
請確定您具有套件組合的 S3 儲存貯體,並確定您的儲存貯體已啟用 ACL。如需有關設定 ACL 的詳細資訊,請參閱設定 ACL。
-
若要使用 建立 S3 儲存貯體 AWS Management Console,請在 https://console.aws.amazon.com/s3/
:// 開啟 Amazon S3 主控台,然後選擇建立儲存貯體。 -
若要使用 建立 S3 儲存貯體 AWS CLI,您可以使用 mb
命令。如果安裝的 AMI 工具版本為 1.5.18 或更新版本,也可以使用 ec2-upload-bundle
命令建立 S3 儲存貯體。如需詳細資訊,請參閱ec2-upload-bundle。
-
-
確保綁定的檔案未在 S3 儲存貯體加密。如果您需要對 AMI 進行加密,則可以改用 EBS 支援的 AMI。如需詳細資訊,請參閱對 EBS 支援的 AMI 使用加密。
-
請確定您擁有 AWS 您的帳戶 ID。如需詳細資訊,請參閱《AWS 帳戶管理參考指南》中的檢視 AWS 帳戶 識別符。
-
請確定您擁有可使用 AWS CLI的憑證。如需詳細資訊,請參閱AWS Command Line Interface 《 使用者指南》中的 的身分驗證和存取憑證 AWS CLI。
-
請確定您擁有 X.509 憑證和對應的私有金鑰。
-
如果需要建立 X.509 憑證,請參閱管理簽署憑證。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
以下程序介紹如何從執行 Amazon Linux 1 的執行個體儲存體支援的執行個體建立 AMI。它們可能不適用於執行其他 Linux 發行版的執行個體。
準備使用 AMI 工具 (僅適用於 HVM 執行個體)
-
AMI 工具需要 GRUB 舊版才能正常開機。請使用下列命令安裝 GRUB:
[ec2-user ~]$
sudo yum install -y grub
-
使用下列命令安裝分割區管理套件:
[ec2-user ~]$
sudo yum install -y gdisk kpartx parted
從執行個體後端 Amazon Linux 執行個體建立 AMI
此程序假設您已滿足 必要條件 中的先決條件。
在下列命令中,將每個使用者輸入預留位置
替換為您自己的資訊。
-
將您的登入資料上傳到執行個體。這些登入資料是用來確定只有您與 Amazon EC2 可存取您的 AMI。
-
在執行個體上為登入資料建立如下的暫時目錄:
[ec2-user ~]$
mkdir /tmp/cert
如此您就能將登入資料從建立的映像中排除。
-
使用 scp 等安全複製工具從電腦上將 X.509 憑證和對應的私有金鑰複製到執行個體上的
/tmp/cert
目錄內。以下-i
命令中的 scp 選項為用來透過 SSH 連接執行個體的私有金鑰,而非 X.509 私有金鑰。例如:my-private-key
.pemyou@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
中的新檔案內。 -
-
從執行個體內執行 ec2-bundle-vol 命令,準備要上傳至 Amazon S3 的 bundle。務必指定
-e
選項,以排除憑證存放位置的目錄。根據預設,bundle 程序不包含可能帶有敏感資訊的檔案。這些檔案包含*.sw
、*.swo
、*.swp
、*.pem
、*.priv
、*id_rsa*
、*id_dsa*
*.gpg
、*.jks
、*/.ssh/authorized_keys
和*/.bash_history
。若要包含所有這些檔案,請使用--no-filter
選項。若要包含這些檔案中的一部分,請使用--include
選項。重要
根據預設,AMI 綁定程序會在代表根磁碟區的
/tmp
目錄內建立經過壓縮加密的檔案集合。如果/tmp
內沒有足夠的可用磁碟空間可存放 bundle,您需要用-d
選項指定其他的 bundle 存放位置。部分執行個體會有暫時性儲存區掛載於/path/to/bundle/storage
/mnt
或/media/ephemeral0
以供您使用,或者您也可以建立、連接及掛載新的 Amazon EBS 磁碟區,以存放 bundle。如需詳細資訊,請參閱「Amazon EBS 使用者指南」中的建立 Amazon EBS 磁碟區。-
您必須以 root 執行 ec2-bundle-vol 命令。針對多數命令,您皆能用 sudo 來取得更高級的許可,但在此情況下您應執行 sudo -E su 以保持環境變數。
[ec2-user ~]$
sudo -E su
請注意,bash 提示現在將您識別為根使用者,且貨幣符號已換成雜湊標籤,表示您正在根 shell 下:
[root ec2-user]#
-
若要建立 AMI bundle,請照下列所示執行 ec2-bundle-vol 命令:
[root ec2-user]#
ec2-bundle-vol -k /tmp/cert/
pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem
-c /tmp/cert/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem
-u123456789012
-r x86_64 -e /tmp/cert --partitiongpt
注意
對於中國 (北京) 和 AWS GovCloud (美國西部) 區域,請使用
--ec2cert
參數,並根據先決條件指定憑證。建立映像可能需要幾分鐘。完成此命令後,您的
/tmp
(或非預設的) 目錄將包含 bundle (image.manifest.xml
,加上多個image.part.
xx
檔案)。 -
退出根 shell。
[root ec2-user]#
exit
-
-
(選用) 若要新增更多執行個體儲存體磁碟區,請在 AMI 的
image.manifest.xml
檔案中編輯區塊型裝置映射。如需詳細資訊,請參閱Amazon EC2 執行個體上磁碟區的區塊型儲存設備映射。-
為您的
image.manifest.xml
檔案建立備份。[ec2-user ~]$
sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak
-
重新格式化
image.manifest.xml
檔案,以方便讀取和編輯。[ec2-user ~]$
sudo xmllint --format /tmp/image.manifest.xml.bak > /tmp/image.manifest.xml
-
使用文字編輯器編輯
image.manifest.xml
中的區塊型裝置映射。下列範例顯示ephemeral1
執行個體存放磁碟區的新項目。注意
如需排除檔案清單,請參閱 ec2-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> -
儲存
image.manifest.xml
檔案並結束文字編輯器。
-
-
若要上傳 bundle 至 Amazon S3,請照下列所示執行 ec2-upload-bundle 命令。
[ec2-user ~]$
ec2-upload-bundle -b
amzn-s3-demo-bucket
/bundle_folder
/bundle_name
-m /tmp/image.manifest.xml -ayour_access_key_id
-syour_secret_access_key
重要
若要在US East (N. Virginia) 以外的區域登錄 AMI,您必須使用
--region
選項指定兩個目標區域,和目標區域中已存在的儲存貯體路徑,或可在目標區域中建立的唯一儲存貯體路徑。 -
(選用) bundle 上傳至 Amazon S3 之後,您可使用下列
/tmp
命令將 bundle 從執行個體的 rm 目錄中移除:[ec2-user ~]$
sudo rm /tmp/image.manifest.xml /tmp/image.part.* /tmp/image
重要
如果用
-d
選項指定 步驟 2 中的路徑,請使用該路徑,而非/path/to/bundle/storage
/tmp
。 -
若要登錄 AMI,請照下列所示執行 register-image
命令。 [ec2-user ~]$
aws ec2 register-image --image-location
amzn-s3-demo-bucket
/bundle_folder
/bundle_name
/image.manifest.xml --nameAMI_name
--virtualization-typehvm
重要
如果您先前已指定 ec2-upload-bundle 命令的區域,請在此命令中再次指定該區域。