建立執行個體儲存體支援的 AMI - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立執行個體儲存體支援的 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。

首先,請先從與您要建立的 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 執行個體)
  1. AMI 工具需要 GRUB 舊版才能正常開機。請使用下列命令安裝 GRUB:

    [ec2-user ~]$ sudo yum install -y grub
  2. 使用下列命令安裝分割區管理套件:

    [ec2-user ~]$ sudo yum install -y gdisk kpartx parted
從執行個體後端 Amazon Linux 執行個體建立 AMI

此程序假設您已滿足 必要條件 中的先決條件。

在下列命令中,將每個使用者輸入預留位置替換為您自己的資訊。

  1. 將您的登入資料上傳到執行個體。這些登入資料是用來確定只有您與 Amazon EC2 可存取您的 AMI。

    1. 在執行個體上為登入資料建立如下的暫時目錄:

      [ec2-user ~]$ mkdir /tmp/cert

      如此您就能將登入資料從建立的映像中排除。

    2. 使用 scp 等安全複製工具從電腦上將 X.509 憑證和對應的私有金鑰複製到執行個體上的 /tmp/cert 目錄內。以下 -i my-private-key.pem 命令中的 scp 選項為用來透過 SSH 連接執行個體的私有金鑰,而非 X.509 私有金鑰。例如:

      you@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 中的新檔案內。

  2. 從執行個體內執行 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 /path/to/bundle/storage 選項指定其他的 bundle 存放位置。部分執行個體會有暫時性儲存區掛載於 /mnt/media/ephemeral0 以供您使用,或者您也可以建立、連接及掛載新的 Amazon EBS 磁碟區,以存放 bundle。如需詳細資訊,請參閱「Amazon EBS 使用者指南」中的建立 Amazon EBS 磁碟區

    1. 您必須以 root 執行 ec2-bundle-vol 命令。針對多數命令,您皆能用 sudo 來取得更高級的許可,但在此情況下您應執行 sudo -E su 以保持環境變數。

      [ec2-user ~]$ sudo -E su

      請注意,bash 提示現在將您識別為根使用者,且貨幣符號已換成雜湊標籤,表示您正在根 shell 下:

      [root ec2-user]#
    2. 若要建立 AMI bundle,請照下列所示執行 ec2-bundle-vol 命令:

      [root ec2-user]# ec2-bundle-vol -k /tmp/cert/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c /tmp/cert/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 123456789012 -r x86_64 -e /tmp/cert --partition gpt
      注意

      對於中國 (北京) 和 AWS GovCloud (美國西部) 區域,請使用 --ec2cert 參數,並根據先決條件指定憑證。

      建立映像可能需要幾分鐘。完成此命令後,您的 /tmp (或非預設的) 目錄將包含 bundle (image.manifest.xml,加上多個 image.part.xx 檔案)。

    3. 退出根 shell。

      [root ec2-user]# exit
  3. (選用) 若要新增更多執行個體儲存體磁碟區,請在 AMI 的 image.manifest.xml 檔案中編輯區塊型裝置映射。如需詳細資訊,請參閱Amazon EC2 執行個體上磁碟區的區塊型儲存設備映射

    1. 為您的 image.manifest.xml 檔案建立備份。

      [ec2-user ~]$ sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak
    2. 重新格式化 image.manifest.xml 檔案,以方便讀取和編輯。

      [ec2-user ~]$ sudo xmllint --format /tmp/image.manifest.xml.bak > /tmp/image.manifest.xml
    3. 使用文字編輯器編輯 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>
    4. 儲存 image.manifest.xml 檔案並結束文字編輯器。

  4. 若要上傳 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 -a your_access_key_id -s your_secret_access_key
    重要

    若要在US East (N. Virginia) 以外的區域登錄 AMI,您必須使用 --region 選項指定兩個目標區域,和目標區域中已存在的儲存貯體路徑,或可在目標區域中建立的唯一儲存貯體路徑。

  5. (選用) bundle 上傳至 Amazon S3 之後,您可使用下列 /tmp 命令將 bundle 從執行個體的 rm 目錄中移除:

    [ec2-user ~]$ sudo rm /tmp/image.manifest.xml /tmp/image.part.* /tmp/image
    重要

    如果用 -d /path/to/bundle/storage 選項指定 步驟 2 中的路徑,請使用該路徑,而非 /tmp

  6. 若要登錄 AMI,請照下列所示執行 register-image 命令。

    [ec2-user ~]$ aws ec2 register-image --image-location amzn-s3-demo-bucket/bundle_folder/bundle_name/image.manifest.xml --name AMI_name --virtualization-type hvm
    重要

    如果您先前已指定 ec2-upload-bundle 命令的區域,請在此命令中再次指定該區域。