建立新的映像配方版本 - EC2 Image Builder

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

建立新的映像配方版本

本節說明如何建立新的版本的影像配方。

從主控台建立新的映像配方版本

當您建立新的配方版本時,它幾乎與建立新配方相同。差別在於,在大多數情況下,會預先選取特定詳細資訊以符合基本配方。下列清單說明建立新配方和建立新現有配方版本之間的差異。

新版本中的基礎配方詳細資訊
  • 名稱無法編輯

  • 版本 – 必要。此基本詳細資訊不會預先填入目前版本或任何種類的序列。輸入您要建立的版本編號,格式為 <major>.<minor>.<patch>。如果版本已存在,您遇到錯誤。

  • 選取影像選項 – 已預先選取,但您可以編輯。如果您變更基礎映像來源的選擇,則可能會遺失其他取決於您選擇的原始選項的詳細資訊。

    若要查看與您基本影像選取項目相關聯的詳細資訊,請選擇符合您選取的標籤。

    Managed image
    • 映像作業系統 (OS)無法編輯

    • 影像名稱 – 根據您對現有配方所做的基本影像選擇組合預先選取。不過,如果您變更選取映像選項,則會遺失預先選取的映像名稱

    • 自動版本控制選項不符合您的基本配方。此映像選項預設為使用選取的作業系統版本選項。

      重要

      如果您使用語意版本控制來啟動管道建置,請務必將此值變更為使用最新的可用作業系統版本。若要進一步了解 Image Builder 資源的語意版本控制,請參閱Image Builder 中的語意版本控制

    AWS Marketplace image
    • 訂閱 – 此索引標籤應開啟,而來自 的訂閱映像 AWS Marketplace 應預先選取,以符合您的基本配方。如果您變更配方用作其基礎映像的映像,則可能會遺失其他取決於您選擇的原始映像的詳細資訊。

    如需 AWS Marketplace 產品的詳細資訊,請參閱 AWS Marketplace 購買指南中的購買產品

    Custom AMI
    • AMI ID – 必要。不過,此設定不會預先填入您的原始項目。您必須輸入基礎映像的 AMI ID。

  • 執行個體組態 – 已預先選取設定,但您可以編輯這些設定。

    • Systems Manager 代理程式 – 您可以選取或清除此核取方塊,以控制 Systems Manager 代理程式在新映像上的安裝。預設會清除此核取方塊,以在新映像中包含 Systems Manager 代理程式。若要從最終映像中移除 Systems Manager 代理程式,請選取核取方塊,讓代理程式不會包含在 AMI 中。

    • 使用者資料 – 您可以在啟動建置執行個體時,使用此區域提供命令或命令指令碼來執行。不過,此值會取代 Image Builder 可能新增的任何命令,以確保已安裝 Systems Manager。這些命令包括映像建置器在建立新映像之前,通常為 Linux 映像執行的清除指令碼。

      注意
      • 如果您輸入使用者資料,請確定 Systems Manager 代理程式已預先安裝在您的基本映像上,或是您在使用者資料中包含安裝。

      • 針對 Linux 映像,請確定執行清除步驟,方法是包含 命令,在您的使用者資料指令碼perform_cleanup中建立名為 的空白檔案。Image Builder 會偵測此檔案,並在建立新映像之前執行清除指令碼。如需詳細資訊和範例指令碼,請參閱 Image Builder 的安全最佳實務

  • 工作目錄 – 已預先選取,但您可以進行編輯。

  • 元件 – 配方中已包含的元件會顯示在每個元件清單結尾的所選元件區段中 (建置和測試)。您可以移除或重新排序選取的元件,以符合您的需求。

    CIS 強化元件未遵循 Image Builder 配方中的標準元件排序規則。CIS 強化元件一律會最後執行,以確保基準測試會針對您的輸出映像執行。

    注意

    建置和測試元件清單會根據元件擁有者類型顯示可用的元件。若要新增元件,請選擇新增建置元件,然後選擇適用的擁有權篩選條件。例如,若要新增與 AWS Marketplace 產品相關聯的建置元件,請選取 AWS Marketplace。這會在列出 AWS Marketplace 元件的主控台界面右側開啟選擇面板。

    針對 CIS 元件,選取 Third party managed

    您可以為所選元件設定下列設定:

    • 版本控制選項 – 已預先選取,但您可以進行變更。建議您選擇使用最新的可用元件版本選項,以確保您的映像建置一律取得最新版本的元件。如果您需要在配方中使用特定元件版本,您可以選擇指定元件版本,然後在出現的元件版本方塊中輸入版本。

    • 輸入參數 – 顯示元件接受的輸入參數。會預先填入先前版本配方的值。如果您第一次在此配方中使用此元件,且已為輸入參數定義預設值,則預設值會顯示在帶有反灰色文字的值方塊中。如果未輸入其他值,Image Builder 會使用預設值。

      如果需要輸入參數,但元件中沒有定義的預設值,則必須提供值。如果缺少任何必要的參數且未定義預設值,Image Builder 將不會建立配方版本。

      重要

      元件參數是純文字值,並會登入 AWS CloudTrail。建議您使用 AWS Secrets Manager 或 AWS Systems Manager 參數存放區來存放秘密。如需 Secrets Manager 的詳細資訊,請參閱AWS Secrets Manager 《 使用者指南》中的什麼是 Secrets Manager?。如需 AWS Systems Manager 參數存放區的詳細資訊,請參閱AWS Systems Manager 《 使用者指南》中的AWS Systems Manager 參數存放區。

    若要展開版本控制選項輸入參數的設定,您可以選擇設定名稱旁的箭頭。若要展開所有所選元件的所有設定,您可以切換關閉和開啟全部展開

  • 儲存體 (磁碟區) – 已預先填入。根磁碟區 裝置名稱快照IOPS 選擇無法編輯。不過,您可以變更所有剩餘的設定,例如大小。您也可以新增磁碟區,並加密新的或現有的磁碟區。

    若要加密 Image Builder 在來源區域中 (建置執行的位置) 帳戶下建立之映像的磁碟區,您必須在映像配方中使用儲存磁碟區加密。在建置的分佈階段執行的加密僅適用於分佈到其他帳戶或區域的映像。

    注意

    如果您為磁碟區使用加密,您必須分別選取每個磁碟區的金鑰,即使該金鑰與根磁碟區所使用的金鑰相同。

若要建立新的映像配方版本:
  1. 在配方詳細資訊頁面頂端,選擇建立新版本。這會帶您前往建立映像配方頁面。

  2. 若要建立新版本,請進行變更,然後選擇建立配方

    您的最終映像最多可包含來自 AWS Marketplace 映像產品和元件的四個產品代碼。如果您選取的基礎映像和元件包含四個以上的產品代碼,Image Builder 會在您嘗試建立配方時傳回錯誤。

如需如何在建立映像管道時建立映像配方的詳細資訊,請參閱本指南的入門一節步驟 2:選擇配方

使用 建立映像配方 AWS CLI

若要使用 中的 Image Builder create-image-recipe命令建立映像配方 AWS CLI,請依照下列步驟進行:

先決條件

執行本節中的映像建置器命令從 建立映像配方之前 AWS CLI,您必須建立配方使用的元件。下列步驟中的映像配方範例是指本指南 從 建立自訂元件 AWS CLI區段中建立的範例元件。

建立元件後,或如果您使用的是現有元件,請注意您要包含在配方中的 ARNs。

  1. 建立 CLI 輸入 JSON 文件

    您可以使用內嵌create-image-recipe命令參數提供命令的所有輸入。不過,產生的命令可能相當長。若要簡化命令,您可以改為提供包含所有配方設定的 JSON 檔案。

    注意

    JSON 檔案中資料值的命名慣例遵循為 Image Builder API 操作請求參數指定的模式。若要檢閱 API 操作請求參數,請參閱 EC2 Image Builder API 參考中的 CreateImageRecipe 命令。

    若要提供資料值做為命令列參數,請參閱 AWS CLI 命令參考中指定的參數名稱。

    以下是這些範例指定的參數摘要:

    • name (字串,必要) – 映像配方的名稱。

    • description (string) – 映像配方的描述。

    • parentImage (字串,必要) – 影像配方用作自訂影像基礎的影像。此值可以是基本映像 ARN 或 AMI ID。

      注意

      Linux 和 macOS 範例使用 Image Builder AMI,而 Windows 範例使用 ARN。

    • semanticVersion (字串,必要) – 影像配方的語意版本,以下列格式表示,每個位置都有數值來表示特定版本:<major>.<minor>.<patch>。例如,值可能是 1.0.0。若要進一步了解 Image Builder 資源的語意版本控制,請參閱Image Builder 中的語意版本控制

    • 元件 (陣列、必要) – 包含ComponentConfiguration物件陣列。必須指定至少一個建置元件:

      注意

      Image Builder 會依您在配方中指定的順序安裝元件。不過,CIS 強化元件一律會最後執行,以確保基準測試針對您的輸出映像執行。

      • componentARN (字串,必要) – 元件 ARN。

        提示

        若要使用其中一個範例來建立自己的映像配方,您必須將範例 ARNs 取代為您配方所使用的元件 ARNs。

      • 參數 (物件陣列) – 包含ComponentParameter物件陣列。如果需要輸入參數,但元件中沒有定義的預設值,則必須提供值。如果缺少任何必要的參數,且未定義預設值,Image Builder 不會建立配方版本。

        重要

        元件參數是純文字值,並會登入 AWS CloudTrail。建議您使用 AWS Secrets Manager 或 AWS Systems Manager 參數存放區來存放秘密。如需 Secrets Manager 的詳細資訊,請參閱AWS Secrets Manager 《 使用者指南》中的什麼是 Secrets Manager?。如需 AWS Systems Manager 參數存放區的詳細資訊,請參閱AWS Systems Manager 《 使用者指南》中的AWS Systems Manager 參數存放區。

        • name (字串,必要) – 要設定的元件參數名稱。

        • value (字串陣列,必要) – 包含字串陣列,可設定具名元件參數的值。如果已為元件定義預設值,且未提供其他值, AWS TOE 會使用預設值。

    • additionalInstanceConfiguration (物件) – 為您的建置執行個體指定其他設定和啟動指令碼。

      • systemsManagerAgent (物件) – 包含建置執行個體上 Systems Manager 代理程式的設定。

        • uninstallAfterBuild (布林值) – 在建立新的 AMI 之前,控制 Systems Manager 代理程式是否從最終建置映像中移除。如果此選項設定為 true,則代理程式會從最終映像中移除。如果 選項設定為 false,則代理程式會保留在 中,使其包含在新的 AMI 中。預設值為 false

          注意

          如果uninstallAfterBuild屬性不包含在 JSON 檔案中,且下列條件為 true,則 Image Builder 會從最終映像中移除 Systems Manager 代理程式,使其無法在 AMI 中使用:

          • userDataOverride 為空或已從 JSON 檔案省略。

          • Image Builder 會自動將 Systems Manager 代理程式安裝在未於基礎映像預先安裝代理程式的作業系統建置執行個體上。

      • userDataOverride (字串) – 提供命令或命令指令碼,在您啟動建置執行個體時執行。

        注意

        使用者資料一律為 Base 64 編碼格式。例如,下列命令編碼為 IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg==

        #!/bin/bash mkdir -p /var/bb/ touch /var

        Linux 範例使用此編碼值。

    Linux

    下列範例中的基礎映像 (parentImage 屬性) 是 AMI。使用 AMI 時,您必須擁有 AMI 的存取權,且 AMI 必須位於來源區域 (映像建置器執行命令的相同區域)。將檔案儲存為 create-image-recipe.json,並在 create-image-recipe命令中使用它。

    { "name": "BB Ubuntu Image recipe", "description": "Hello World image recipe for Linux.", "parentImage": "ami-0a01b234c5de6fabc", "semanticVersion": "1.0.0", "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/bb$" } ], "additionalInstanceConfiguration": { "systemsManagerAgent": { "uninstallAfterBuild": true }, "userDataOverride": "IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg==" } }
    Windows

    下列範例參考最新版的 Windows Server 2016 英文完整基本映像。此範例中的 ARN 會根據您指定的語意版本篩選條件,參考 SKU 中的最新影像:arn:aws:imagebuilder:us-west-2:aws:image/windows-server-2016-english-full-base-x86/x.x.x

    { "name": "MyBasicRecipe", "description": "This example image recipe creates a Windows 2016 image.", "parentImage": "arn:aws:imagebuilder:us-west-2:aws:image/windows-server-2016-english-full-base-x86/x.x.x", "semanticVersion": "1.0.0", "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-example-component/2019.12.02/1" }, { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-imported-component/1.0.0/1" } ] }
    注意

    若要進一步了解 Image Builder 資源的語意版本控制,請參閱Image Builder 中的語意版本控制

    macOS

    下列範例中的基礎映像 (parentImage 屬性) 是 AMI。使用 AMI 時,您必須擁有 AMI 的存取權,且 AMI 必須位於來源區域 (映像建置器執行命令的相同區域)。將檔案儲存為 create-image-recipe.json,並在 create-image-recipe命令中使用它。

    { "name": "macOS Catalina Image recipe", "description": "Hello World image recipe for macOS.", "parentImage": "ami-0a01b234c5de6fabc", "semanticVersion": "1.0.0", "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/catalina$" } ], "additionalInstanceConfiguration": { "systemsManagerAgent": { "uninstallAfterBuild": true }, "userDataOverride": "IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg==" } }
  2. 建立配方

    使用下列命令來建立配方。在 --cli-input-json 參數中提供您在上一個步驟中建立的 JSON 檔案名稱:

    aws imagebuilder create-image-recipe --cli-input-json file://create-image-recipe.json
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

    • JSON 檔案的路徑應遵循執行命令之基礎作業系統的適當慣例。例如,Windows 使用反斜線 (\) 來參考目錄路徑,而 Linux 和 macOS 則使用正斜線 (/)。

    您的最終映像最多可包含 AWS Marketplace 來自映像產品和元件的四個產品代碼。如果您選取的基礎映像和元件包含四個以上的產品代碼,Image Builder 會在執行 create-image-recipe命令時傳回錯誤。

在 主控台中將 VM 匯入為您的基礎映像

在本節中,我們著重於如何匯入虛擬機器 (VM) 做為映像配方的基本映像。我們不涵蓋在此處建立配方或配方版本涉及的其他步驟。如需使用 Image Builder 主控台中的管道建立精靈建立新的映像配方的其他步驟,請參閱 管道精靈:建立 AMI。如需建立新映像配方或配方版本的其他步驟,請參閱建立新的映像配方版本

若要在 Image Builder 主控台中將 VM 匯入為映像配方的基礎映像,請依照下列步驟以及任何其他必要步驟來建立您的配方或配方版本。

  1. 在基本映像的選取映像區段中,選取匯入基本映像選項。

  2. 像往常一樣選擇映像作業系統 (OS)作業系統版本

VM 匯入組態

當您從虛擬環境匯出 VM 時,該程序會建立一組或多個磁碟容器檔案,做為 VM 環境、設定和資料的快照。您可以使用這些檔案來匯入 VM,做為映像配方的基本映像。如需在 Image Builder 中匯入 VMs的詳細資訊,請參閱 匯入和匯出 VM 映像

若要指定匯入來源的位置,請遵循下列步驟:

匯入來源

指定磁碟容器 1 區段中要匯入的第一個 VM 映像磁碟容器或快照的來源。

  1. 來源 – 可以是 S3 儲存貯體或 EBS 快照。

  2. 選取磁碟的 S3 位置 – 在 Amazon S3 中輸入儲存磁碟映像的位置。若要瀏覽位置,請選擇瀏覽 S3

  3. 若要新增磁碟容器,請選擇新增磁碟容器

IAM 角色

若要將 IAM 角色與您的 VM 匯入組態建立關聯,請從 IAM 角色下拉式清單中選取角色,或選擇建立新角色以建立新的角色。如果您建立新的角色,IAM 角色主控台頁面會在單獨的索引標籤中開啟。

進階設定 – 選用

下列設定為選用。透過這些設定,您可以為匯入建立的基本映像設定加密、授權、標籤等。

一般
  1. 指定基礎映像的唯一名稱。如果您未輸入值,基礎映像會繼承配方名稱。

  2. 指定基礎映像的版本。使用下列格式:<major>.<minor>.<patch>。如果您未輸入值,基礎映像會繼承配方版本。

  3. 您也可以輸入基本映像的描述

基礎映像架構

若要指定 VM 匯入來源的架構,請從架構清單中選擇值。

加密

如果您的 VM 磁碟映像已加密,您必須提供金鑰以用於匯入程序。若要 AWS KMS key 為匯入指定 ,請從加密 (KMS 金鑰) 清單中選擇值。清單包含您的帳戶在目前區域中可存取的 KMS 金鑰。

授權管理

當您匯入 VM 時,匯入程序會自動偵測 VM 作業系統,並將適當的授權套用至基礎映像。根據您的作業系統平台,授權類型如下所示:

  • 包含授權 – 平台的適當 AWS 授權會套用至您的基礎映像。

  • 自備授權 (BYOL) – 保留 VM 的授權,如適用。

若要將以 AWS License Manager 建立的授權組態連接至您的基本映像,請從授權組態名稱清單中選取 。如需 License Manager 的詳細資訊,請參閱使用 AWS License Manager

注意
  • 授權組態包含以企業協議條款為基礎的授權規則。

  • Linux 僅支援 BYOL 授權。

標籤 (基礎映像)

標籤使用鍵值對將可搜尋的文字指派給您的 Image Builder 資源。若要指定匯入基礎映像的標籤,請使用索引鍵和值方塊輸入索引對。

若要新增標籤,請選擇 Add tag (新增標籤)。若要移除標籤,請選擇 Remove tag (移除標籤)