建立執行個體存放區支援 AMI - Amazon Elastic Compute Cloud

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

建立執行個體存放區支援 AMI

您AMI在啟動執行個體時指定的決定了根裝置磁碟區的類型。

若要建立以商店為基礎的 Linux 執行個體AMI,請從您從現有執行個體商店支援的 Linux 啟動的執行個體開始。AMI自訂執行個體以滿足您的需求後,請捆綁磁碟區並註冊新的執行個體AMI,您可以使用這些自訂項啟動新的執行個體。

您無法建立執行個體存放區支援的 Windows,AMI因為 Windows AMIs 不支援根裝置的執行個體存放區。

重要

只有下列執行個體類型支援執行個體存放區磁碟區做為根裝置,並且需要執行個體存放區支援AMI:C1、C3、D2、I2、M1、M2、M3、R3 和 X1。

Amazon EBS 支持的AMI創建過程是不同的AMIs。如需詳細資訊,請參閱創建一個 Amazon 支EBS持 AMI

AMI創作概述

下圖摘要說明AMI從執行處理商店支援執行處理建立的程序。

建立執行個體存放區支援AMI。

首先,從類似於您要建立的執行個AMI體啟動執行個體。AMI您可以連線到您的執行個體並自訂。設定好所要的執行個體後,您可以組合執行個體。完成綁定程序需要幾分鐘。程序完成後,您將擁有 bundle,其中包含映像工作資訊清單檔案 (image.manifest.xml) 和含有根磁碟區範本的檔案 (image.part.xx)。接下來,您將捆綁包上傳到您的 Amazon S3 存儲桶,然後註冊您的AMI.

注意

若要將物件上傳至執行個體商店支援 Linux 的 S3 儲存貯體AMI,ACLs必須為儲存貯體啟用。否則,Amazon EC2 將無法在要上傳的對象ACLs上進行設置。如果您的目標儲存貯體使用儲存貯體擁有者強制執行 S3 物件擁有權的設定,這將無法運作,因ACLs為已停用。如需詳細資訊,請參閱使用 S3 物件擁有權控制上傳物件的擁有權

當您使用新的執行個體啟動執行個體時AMI,我們會使用您上傳到 Amazon S3 的服務包為執行個體建立根磁碟區。Amazon S3 中 bundle 所用的儲存空間會使您的帳戶產生費用,直到刪除為止。如需詳細資訊,請參閱取消註冊 Amazon EC2 AMI

如果除了根裝置磁碟區之外,您還將執行個體存放區磁碟區新增至執行個體,則新磁碟區的區塊裝置對應AMI包含這些磁碟區的資訊,而從新磁碟區啟動的執行個體的區塊裝置對應AMI會自動包含這些磁碟區的資訊。如需詳細資訊,請參閱Amazon EC2 執行個體上磁碟區的區塊裝置對映

必要條件

您必須先完成下列工作AMI,才能建立:

  • 安裝工AMI具。如需詳細資訊,請參閱設置 Amazon EC2 AMI 工具

  • 安裝 AWS CLI. 如需詳細資訊,請參閱開始設定 AWS Command Line Interface

  • 請確定您有適用於套件的 S3 儲存貯體,並且儲存貯體已ACLs啟用。如需有關設定的詳細資訊ACLs,請參閱設定ACLs

    • 若要使用建立 S3 儲存貯體 AWS Management Console,請在的開啟 Amazon S3 主控台,https://console.aws.amazon.com/s3/然後選擇建立儲存貯體。

    • 若要使用建立 S3 儲存貯體 AWS CLI,您可以使用 mb 命令。如果您安裝的AMI工具版本為 1.5.18 或更新版本,您也可以使用ec2-upload-bundle命令建立 S3 儲存貯體。如需詳細資訊,請參閱ec2-upload-bundle

  • 確保您服務包中的檔案未在 S3 儲存貯體中加密。如果您需要加密AMI,則可以使用 EBS-backed 來AMI代替。如需詳細資訊,請參閱對 EBS 後端 AMI 使用加密

  • 確保您有您的 AWS 帳戶 ID。如需詳細資訊,請參閱《AWS 帳戶管理參考指南》中的檢視 AWS 帳戶 識別碼

  • 請確定您擁有可使用 AWS CLI的憑證。如需詳細資訊,請參閱《AWS Account Management 參考指南》中的AWS 帳戶最佳做法

  • 請確定您擁有 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 組態。

AMI從 Amazon Linux 實例創建一個

下列程序說明如何AMI從執行 Amazon Linux 1 的執行個體商店支援執行個體建立。它們可能不適用於運行其他 Linux 發行版的實例。

準備使用工AMI具(僅HVM實例)
  1. 這些AMI工具需要GRUB傳統才能正常啟動。使用以下命令進行安裝GRUB:

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

    [ec2-user ~]$ sudo yum install -y gdisk kpartx parted
若要AMI從執行個體以商店支援的 Amazon Linux 執行個體建立

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

在以下命令中,替換每個命令 user input placeholder 使用您自己的信息。

  1. 將您的登入資料上傳到執行個體。我們使用這些登入資料來確保只有您和 Amazon 才EC2能存取您的AMI.

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

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

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

    2. 使用 scp 等安全複製工具從電腦上將 X.509 憑證和對應的私有金鑰複製到執行個體上的 /tmp/cert 目錄內。下列scp命令中的-i my-private-key.pem選項是您用來連線至執行個體的私密金鑰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的暫時儲存,或者您也可以建立、連接和掛接新的 AmazonEBS) 磁碟區來存放組合。如需詳細資訊,請參閱 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套裝軟體,請執行下列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 (或非預設) 目錄會包含套件 (image.manifest.xml加上多個) image.part.xx 文件)。

    3. 退出根 shell。

      [root ec2-user]# exit
  3. (選擇性) 若要新增更多執行個體儲存磁碟區,請在image.manifest.xml檔案中為您的AMI. 如需詳細資訊,請參閱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
    重要

    若要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,請運行寄存器映像命令,如下所示。

    [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 命令的區域,請在此命令中再次指定該區域。