本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立新的映像配方版本
本節說明如何建立映像配方或現有配方的新版本。映像配方定義基本 AMI、建置元件和組態。使用此配方透過映像建置器建立 Amazon Machine Image AMIs)。您可以從映像建置器主控台或使用 建立映像配方 AWS CLI。
從主控台建立新的映像配方版本
當您建立新的配方版本時,它幾乎與建立新的配方相同。差別在於,在大多數情況下,會預先選取特定詳細資訊以符合基本配方。下列清單說明建立新配方和建立新現有配方版本之間的差異。
新版本中的基本配方詳細資訊
-
名稱 – 無法編輯。
-
版本 – 必要。輸入您要建立的版本編號,格式為 <major>.<minor>.<patch>。Image Builder 支援配方的自動版本增量,可讓您在配方版本中使用萬用字元模式。當您使用萬用字元版本建立配方時
1.0.x,Image Builder 會自動遞增版本 (例如1.0.1、1.0.2、1.0.3等)。這不需要手動追蹤和增加配方版本。 -
選取影像選項 – 已預先選取,但您可以進行編輯。如果您變更基礎映像來源的選擇,可能會遺失其他取決於您選擇的原始選項的詳細資訊。
若要查看與基礎映像選取項目相關聯的詳細資訊,請選擇符合您選取的標籤。
-
執行個體組態 – 已預先選取設定,但您可以編輯這些設定。
-
Systems Manager 代理程式 – 您可以選取或清除此核取方塊,以控制 Systems Manager 代理程式在新映像上的安裝。根據預設,此核取方塊會保持清除狀態,而 Image Builder 會將 Systems Manager 代理程式保留在您的最終 AMI 中。若要從最終映像中移除 Systems Manager 代理程式,請選取核取方塊。
-
使用者資料 – 當您啟動建置執行個體時,您可以使用此區域來提供命令或執行的命令指令碼。不過,此值會取代 Image Builder 可能新增的任何命令,以確保已安裝 Systems Manager。這些命令包括在建立新映像之前,Image Builder 通常為 Linux 映像執行的清除指令碼。
當 Image Builder 啟動執行個體時,使用者資料指令碼會在 Cloud-init 階段期間執行,元件執行開始之前執行。此步驟會記錄到執行個體上的下列檔案:
var/log/cloud-init.log。注意
-
如果您輸入使用者資料,請確定 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 的詳細資訊,請參閱什麼是 Secrets Manager? AWS Secrets Manager 《 使用者指南》中的 。如需 AWS Systems Manager 參數存放區的詳細資訊,請參閱AWS Systems Manager 《 使用者指南》中的AWS Systems Manager 參數存放區。
若要展開版本控制選項或輸入參數的設定,您可以選擇設定名稱旁的箭頭。若要展開所有所選元件的所有設定,您可以切換關閉和開啟全部展開。
-
-
儲存 (磁碟區) – 已預先填入。根磁碟區 裝置名稱、快照和 IOPS 選擇無法編輯。不過,您可以變更所有剩餘的設定,例如大小。您也可以新增磁碟區,並加密新的或現有的磁碟區。
若要加密 Image Builder 在來源區域中 (建置執行的位置) 您帳戶下建立之映像的磁碟區,您必須在映像配方中使用儲存磁碟區加密。在建置的分佈階段執行的加密僅適用於分佈到其他帳戶或區域的映像。
注意
如果您為磁碟區使用加密,您必須分別選取每個磁碟區的金鑰,即使金鑰與根磁碟區所用的金鑰相同。
注意
如果您沒有現有的配方,請使用映像建置器管道精靈,或從導覽窗格中選擇映像配方,然後選擇建立映像配方。本節所述的欄位同時適用於新配方和新版本。
若要建立新的映像配方版本:
-
在配方詳細資訊頁面頂端,選擇建立新版本。這會開啟建立映像配方頁面。
-
若要建立新版本,請進行變更,然後選擇建立配方。
您的最終映像最多可包含 AWS Marketplace 來自映像產品和元件的九個產品代碼。如果您的基礎映像和元件超過此限制,Image Builder 會在配方建立期間傳回錯誤。
建立映像配方之前,請先檢閱下列限制條件:
-
您的最終映像最多可包含九個 AWS Marketplace 產品代碼,結合基礎映像和元件。產品代碼是 AWS Marketplace 連接至付費或支援的 AMI 以進行計費和授權的識別符。
-
您最多可以包含 20 個元件 (建置和測試組合)。這是您可以請求提高的預設限制 AWS 支援。
-
相同的元件不能在配方中出現超過一次。
-
所有元件都必須符合您基礎映像的平台 (Linux、Windows 或 macOS)。當中繼資料可用時,元件也必須支援作業系統版本。
如需有關在建立映像管道時建立映像配方的詳細資訊,請參閱本指南步驟 2:選擇配方入門一節中的 。
使用 建立映像配方 AWS CLI
若要使用 中的 Image Builder create-image-recipe命令建立映像配方 AWS CLI,請遵循下列步驟:
先決條件
在您執行本節中的映像建置器命令從 建立映像配方之前 AWS CLI,您可以選擇建立配方使用的元件。下列步驟中的映像配方範例是指本指南 從 建立自訂元件 AWS CLI區段中建立的範例元件。
如果您想要在配方中包含元件,請注意您要包含ARNs。您也可以建立配方,而不需要任何元件來測試現有的 AMIs或僅限分佈的工作流程。
-
建立 CLI 輸入 JSON 文件
您可以使用內嵌create-image-recipe命令參數來提供命令的所有輸入。不過,產生的命令可能相當長。若要簡化命令,您可以改為提供包含所有配方設定的 JSON 檔案。
注意
JSON 檔案中資料值的命名慣例遵循為映像建置器 API 操作請求參數指定的模式。若要檢閱 API 操作請求參數,請參閱 EC2 Image Builder API 參考中的 CreateImageRecipe 命令。
若要提供資料值做為命令列參數,請參閱 AWS CLI 命令參考中指定的參數名稱。
以下是這些範例指定的參數摘要:
-
name (字串,必要) – 映像配方的名稱。
-
description (字串) – 映像配方的描述。
-
parentImage (字串,必要) – 映像配方用作自訂映像基礎的映像。您可以使用下列其中一個選項來指定父系映像:
-
AMI ID – 當您有要自訂的特定 AMI (例如
ami-1234567890abcdef1) 時,請使用 。由於 AMI ID 是靜態的,我們建議您在希望配方自動挑選較新的基礎映像時,改為使用映像建置器映像 ARN 或 SSM 參數。 -
映像建置器映像資源 ARN – 當您想要建置在映像建置器映像之上時使用。這包括 Image Builder 為最熱門作業系統提供的 Amazon 受管映像,以及您先前建立的映像。使用語意版本指定映像 ARN,或使用版本萬用字元一律取得最新版本。
-
AWS Systems Manager (SSM) 參數存放區參數 – 當您希望配方自動挑選新的 AMI IDs 而不建立新的配方版本時使用。使用 為參數加上字首
ssm:,後面接著參數名稱或 ARN。這非常適合應一律使用最新 Amazon Linux 或 Windows 基礎映像的管道。 -
AWS Marketplace 產品 ID – 當您在 中訂閱 AMI 產品 AWS Marketplace 並想要進一步自訂產品時,請使用 。
注意
-
當您使用解析為 AMI 的 AMI ID 或 SSM 參數時,您必須擁有帳戶中該 AMI 的存取權。AMI 也必須存在於映像建置器執行建置的相同區域中。
-
Linux 和 macOS 範例會指定 AMI ID,而 Windows 範例會使用映像建置器映像 ARN。
-
-
semanticVersion (字串,必要) – 輸入您要建立的版本編號,格式為 <major>.<minor>.<patch>。Image Builder 支援配方的自動版本增量,可讓您在配方版本中使用萬用字元模式。當您使用萬用字元版本建立配方時
1.0.x,Image Builder 會自動遞增版本 (例如1.0.1、1.0.2、1.0.3等)。這不需要手動追蹤和增加配方版本。若要進一步了解 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 的詳細資訊,請參閱什麼是 Secrets Manager? AWS Secrets Manager 《 使用者指南》中的 。如需 AWS Systems Manager 參數存放區的詳細資訊,請參閱AWS Systems Manager 《 使用者指南》中的AWS Systems Manager 參數存放區。
-
name (字串,必要) – 要設定的元件參數名稱。
-
value (字串陣列,必要) – 包含字串陣列,以設定具名元件參數的值。如果為元件定義了預設值,且未提供其他值, AWS TOE 會使用預設值。
-
-
-
amiWatermarks (字串陣列,選用) – 要連接至從此配方建置之輸出 AMIs 的浮水印名稱清單。浮水印是譜系標記,可協助您追蹤影像的歷史記錄。指定 1 到 5 個名稱。每個名稱必須是 3 到 128 個字元,可包含字母、數字、空格和下列特殊字元:
( ) [ ] . / - ' @ _。如需詳細資訊,請參閱使用浮水印追蹤 AMI 歷程。 -
additionalInstanceConfiguration (物件) – 為您的建置執行個體指定其他設定和啟動指令碼。
-
systemsManagerAgent (物件) – 包含建置執行個體上 Systems Manager 代理程式的設定。
注意
Windows 配方不支援
systemsManagerAgent組態。如果您將其包含在 Windows 父系映像中,請求會失敗。-
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 /varLinux 範例使用此編碼值。
-
範例:不含元件的配方
您可以建立配方,而不需要任何元件來測試現有的 AMIs或僅限分佈的工作流程。下列範例顯示使用現有 AMI 而不套用任何其他元件的配方:
{ "name": "Test Distribution Recipe", "description": "Recipe for testing and distributing existing AMI without modifications.", "parentImage": "ami-1234567890abcdef1", "semanticVersion": "1.0.0", "additionalInstanceConfiguration": { "systemsManagerAgent": { "uninstallAfterBuild": true } } } -
-
建立配方
使用下列命令來建立配方。在
--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 來自映像產品和元件的九個產品代碼。如果您的基礎映像和元件在執行
create-image-recipe命令時超過此限制,Image Builder 會在配方建立期間傳回錯誤。命令會傳回新映像配方的 ARN,如下列範例輸出所示。
{ "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "clientToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "imageRecipeArn": "arn:aws:imagebuilder:us-west-2:123456789012:image-recipe/my-recipe/1.0.1" } -
-
驗證您的配方
若要確認 Image Builder 如預期建立您的配方,請使用上一個步驟傳回的 ARN 執行 get-image-recipe命令。
aws imagebuilder get-image-recipe --image-recipe-arn arn:aws:imagebuilder:us-west-2:123456789012:image-recipe/my-recipe/1.0.1
工作目錄
工作目錄會在 Image Builder 執行建置和測試操作的建置執行個體上指定檔案系統路徑。Image Builder 將此路徑傳遞給 AWS Systems Manager 做為命令執行的工作目錄。
如果您未指定工作目錄,Image Builder 會使用下列預設值:
-
Linux:
/tmp -
macOS:
/tmp -
Windows:
C:/
對於 Windows,路徑不能包含雙引號 (") 字元。
提示
當您的元件在安裝期間需要比預設目錄更多的暫存磁碟空間時,請將工作目錄設定為較大連接磁碟區的路徑。
AMI 標籤
您可以在映像分發之前,將標籤套用至映像建置器在建置階段建立的 AMI。Image Builder 會將這些標籤套用至 AMI,與配方本身的資源標籤分開。使用 JSON 輸入檔案中的 amiTags 參數指定 AMI 標籤。
注意
您無法使用預留標籤索引鍵 CreatedBy或 Ec2ImageBuilderArn。Image Builder 會自動管理這些金鑰。
{ "name": "tagged-recipe", "semanticVersion": "1.0.0", "parentImage": "arn:aws:imagebuilder:us-west-2:aws:image/amazon-linux-2023-x86/x.x.x", "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:aws:component/update-linux/x.x.x" } ], "amiTags": { "Environment": "Production", "Team": "Platform", "CostCenter": "12345" } }
常見錯誤和故障診斷
下表列出您在建立映像配方時可能遇到的常見錯誤,以及如何解決這些錯誤。
| 錯誤 | 原因 | Resolution |
|---|---|---|
| 「元件最多可在映像配方中指定一次」 | 重複的元件 (即使是不同版本)。 | 移除重複項目。每個元件只能使用一個版本。 |
| 「元件 ARN 與父映像平台不相符」 | 平台不相符。 | 驗證您的基礎映像平台。搭配 Linux AMIs 使用 Linux 元件,以此類推。 |
| 「元件 ARN 不支援父映像作業系統版本」 | 作業系統版本不相容。 | 檢查元件支援的作業系統版本。使用相容的元件版本。 |
| 「Image Builder 不支援在 Windows 上設定 SSM 代理程式」 | 您已systemsManagerAgent使用 Windows 父系映像指定 。 |
移除 additionalInstanceConfiguration.systemsManagerAgent區塊。 |
| 「您已超過 25 KB 的最大累積元件大小」 | 太多或太大的參數。 | 減少參數計數或縮短參數值。 |
| 「配方最多可包含 9 個市場產品」 | AWS Marketplace 產品代碼太多。 | 減少 AWS Marketplace 元件數量,或使用產品代碼較少的基礎映像。 |
| 「提供的語意版本未遵循所需的格式」 | 無效的版本字串。 | 使用 major.minor.patch 格式搭配一個選用x萬用字元。 |
| 「元件 ARN ... 已棄用且無法包含在新配方」(或「已停用」) | 參考元件具有 DEPRECATED或 DISABLED 狀態。 |
更新至目前的元件版本。 |
在主控台中將 VM 匯入為基礎映像
本節說明如何匯入虛擬機器 (VM) 做為映像配方的基礎映像。它不涵蓋與在此處建立配方或配方版本相關的其他步驟。如需使用映像建置器主控台中的管道建立精靈建立新的映像配方的其他步驟,請參閱 管道精靈:建立 AMI。如需建立新映像配方或配方版本的其他步驟,請參閱 建立新的映像配方版本。
若要在映像建置器主控台中匯入 VM 做為映像配方的基礎映像,請依照下列步驟以及任何其他必要步驟來建立配方或配方版本。
-
在基礎映像的選取映像區段中,選取匯入基礎映像選項。
-
像平常一樣選擇映像作業系統 (OS) 和作業系統版本。
VM 匯入組態
當您從虛擬化環境匯出 VM 時,該程序會建立一組或多個磁碟容器檔案,做為 VM 環境、設定和資料的快照。您可以使用這些檔案將 VM 匯入為映像配方的基礎映像。如需在映像建置器中匯入 VMs 的詳細資訊,請參閱 匯入和匯出 VM 映像
若要指定匯入來源的位置,請遵循下列步驟:
匯入來源
在磁碟容器 1 區段中,指定要匯入的第一個 VM 映像磁碟容器或快照的來源。
-
來源 – 這可以是 S3 儲存貯體或 EBS 快照。
-
選取磁碟的 S3 位置 – 在存放磁碟映像的 Amazon S3 中輸入位置。若要瀏覽位置,請選擇瀏覽 S3。
-
若要新增磁碟容器,請選擇新增磁碟容器。
IAM 角色
若要將 IAM 角色與您的 VM 匯入組態建立關聯,請從 IAM 角色下拉式清單中選取角色,或選擇建立新角色以建立新的角色。如果您建立新的角色,IAM 角色主控台頁面會在單獨的索引標籤中開啟。
進階設定 – 選用
下列設定為選用。透過這些設定,您可以為匯入建立的基礎映像設定加密、授權、標籤等。
一般
-
指定基礎映像的唯一名稱。如果您未輸入值,基礎映像會繼承配方名稱。
-
指定基礎映像的版本。使用下列格式:
<major>.<minor>.<patch>。如果您未輸入值,則基礎映像會繼承配方版本。 -
您也可以輸入基礎映像的描述。
基礎映像架構
若要指定 VM 匯入來源的架構,請從架構清單中選取值。
加密
如果您的 VM 磁碟映像已加密,您必須提供用於匯入程序的金鑰。若要 AWS KMS key 為匯入指定 ,請從加密 (KMS 金鑰) 清單中選擇值。清單包含您的帳戶在目前區域中可存取的 KMS 金鑰。
授權管理
當您匯入 VM 時,匯入程序會自動偵測 VM 作業系統,並將適當的授權套用至基礎映像。根據您的作業系統平台,授權類型如下:
-
包含授權 – 平台的適當 AWS 授權會套用至您的基礎映像。
-
自備授權 (BYOL) – 保留 VM 的授權,如適用。
若要將以 AWS License Manager 建立的授權組態連接至您的基礎映像,請從授權組態名稱清單中選取 。如需 License Manager 的詳細資訊,請參閱《 License Manager 使用者指南》中的使用授權組態。
注意
-
授權組態包含以企業協議條款為基礎的授權規則。
-
Linux 僅支援 BYOL 授權。
標籤 (基礎映像)
標籤使用鍵/值對將可搜尋的文字指派給您的 Image Builder 資源。若要指定匯入基礎映像的標籤,請使用索引鍵和值方塊輸入索引鍵/值對。
若要新增標籤,請選擇 Add tag (新增標籤)。若要移除標籤,請選擇 Remove tag (移除標籤)。