本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立新的容器配方版本
本節說明如何建立新的容器配方版本。
使用主控台建立新的容器配方版本
建立新版本的容器配方與建立新配方幾乎相同。不同之處在於,在大多數情況下,會預先選取某些詳細資訊以符合基礎配方。下列清單說明建立新配方和建立新版本現有配方之間的差異。
配方詳細資訊
-
名稱 – 無法編輯 。
-
版本 – 必要。此詳細資訊不會預先填入目前版本或任何種類的序列。以 major.minor.patch 格式輸入您要建立的版本編號。如果版本已經存在,您會遇到錯誤。
基礎映像
-
選取影像選項 – 已預先選取,但可編輯。如果您變更基礎映像來源的選擇,可能會遺失其他詳細資訊,這取決於您選擇的原始選項。
若要查看與您基本影像選取相關聯的詳細資訊,請選擇符合您選取的標籤。
執行個體組態
-
AMI ID – 預先填入,但可編輯。
-
儲存 (磁碟區)
EBS 磁碟區 1 (AMI根) – 預先填入。您無法編輯根磁碟區 裝置名稱 、快照 或 IOPS選項。不過,您可以變更所有剩餘的設定,例如大小 。您也可以新增磁碟區。
注意
如果您指定了從另一個帳戶與您共用AMI的 基礎,則指定的任何次要磁碟區的快照也必須與您的帳戶共用。
工作目錄
-
工作目錄路徑 – 預先填入,但可編輯。
元件
元件 – 已包含在配方中的元件會顯示在每個元件清單 (建置和測試) 結尾的所選元件區段中。您可以移除或重新排序選取的元件,以符合您的需求。
CIS 強化元件未遵循 Image Builder 配方中的標準元件排序規則。CIS 強化元件一律會持續執行,以確保基準測試針對您的輸出映像執行。
注意
建置和測試元件清單會根據元件擁有者類型顯示可用的元件。若要新增或更新配方的元件,請選取您要尋找之元件的擁有者類型。例如,如果您想要新增與您在 中訂閱的基本映像相關聯的元件 AWS Marketplace,
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 參數存放區。
若要展開版本控制選項或輸入參數 的設定,您可以選擇設定名稱旁的箭頭。若要展開所有選取元件的所有設定,您可以切換關閉和開啟展開所有項目。
-
Dockerfile 範本
-
Dockerfile 範本 – 預先填入,但可編輯。您可以指定 Image Builder 在執行階段以組建資訊取代的下列任何內容變數。
- parentImage (必要)
-
在建置時,此變數會解析為配方的基本映像。
範例:
FROM {{{ imagebuilder:parentImage }}}
- 環境 (指定元件時為必要)
-
此變數將解析為執行元件的指令碼。
範例:
{{{ imagebuilder:environments }}}
- 元件 (選用)
-
Image Builder 會解決容器配方包含之元件的建置和測試元件指令碼。此變數可以在環境變數之後,放置在 Dockerfile 中的任何位置。
範例:
{{{ imagebuilder:components }}}
目標儲存庫
-
目標儲存庫名稱 – 如果您的管道的管道分佈組態中沒有指定管道執行的區域 (區域 1),則儲存輸出映像的 Amazon 儲存ECR庫會在此儲存。
若要建立新的容器配方版本:
-
在容器配方詳細資訊頁面頂端,選擇建立新版本 。系統會將您導向容器配方的建立配方頁面。
-
若要建立新版本,請進行變更,然後選擇建立配方 。
如需如何在建立映像管道時建立容器配方的詳細資訊,請參閱本指南的入門一節步驟 2:選擇配方中的 。
使用 建立容器配方 AWS CLI
若要使用 中的 imagebuilder create-container-recipe
命令建立 Image Builder 容器配方 AWS CLI,請遵循下列步驟:
必要條件
執行本節中的 Image Builder 命令以使用 建立容器配方之前 AWS CLI,您必須建立配方將使用的元件。下列步驟中的容器配方範例是指本指南 從 建立自訂元件 AWS CLI章節中建立的範例元件。
建立元件後,或如果您使用現有元件,請注意ARNs您要包含在配方中的 。
-
建立CLI輸入JSON檔案
您可以使用內嵌create-container-recipe命令參數提供命令的所有輸入。不過,產生的命令可能很長。若要簡化命令,您可以改為提供包含所有容器配方設定JSON的檔案
注意
檔案中資料值的命名慣例JSON遵循為 Image Builder API動作請求參數指定的模式。若要檢閱API命令請求參數,請參閱EC2映像建置器API參考 中的CreateContainerRecipe命令。
若要提供資料值作為命令列參數,請參閱 AWS CLI 命令參考 中指定的參數名稱。
以下是此範例中參數的摘要:
-
元件 (必要物件陣列) – 包含
ComponentConfiguration
物件陣列。必須指定至少一個建置元件:注意
Image Builder 會依您在配方中指定的順序安裝元件。不過,CIS強化元件一律會最後執行,以確保基準測試會根據您的輸出映像執行。
-
元件ARN (字串,必要) – 元件 ARN。
提示
若要使用 範例建立您自己的容器配方,請將範例取代ARNsARNs為您用於配方之元件的 。其中包括每個 的 、 AWS 區域名稱和版本編號。
參數 (物件陣列) – 包含
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 會使用預設值。
-
-
-
containerType (字串,必要) – 要建立的容器類型。有效值包括
DOCKER
。 -
dockerfileTemplateData (字串) – 用來建置映像的 Dockerfile 範本,以內嵌資料 Blob 表示。
-
name (字串,必要) – 容器配方的名稱。
-
description (string) – 容器配方的描述。
-
parentImage (字串,必要) – 容器配方用作自訂映像基礎的影像。值可以是基本映像ARN或 AMI ID。
-
platformOverride (字串) – 當您使用自訂基礎映像時指定作業系統平台。
-
semanticVersion (字串,必要) – 以下列格式指定的容器配方語義版本,每個位置都有數值,以指示特定版本:<major>.<minor>.<patch>。例如,即改為
1.0.0
。若要進一步了解 Image Builder 資源的語意版本控制,請參閱 Image Builder 中的語意版本控制。 -
標籤 (字串映射) – 連接至容器配方的標籤。
-
instanceConfiguration (物件) – 一組選項,可用於設定執行個體以建置和測試容器映像。
-
image (string) – 用作容器建置和測試執行個體基礎映像的 AMI ID。如果您未指定此值,Image Builder 會使用適當的 Amazon ECS最佳化AMI作為基礎映像。
-
blockDeviceMappings (物件陣列) – 定義從 image 參數中AMI指定的 Image Builder 建置執行個體時要連接的區塊裝置。
-
deviceName (字串) – 這些映射適用的裝置。
-
ebs (物件) – 用於管理此映射的 Amazon EBS特定組態。
-
deleteOnTermination (布林值) – 用於設定關聯裝置終止時的刪除。
-
加密 (布林值) – 用於設定裝置加密。
-
volumeSize (整數) – 用於覆寫裝置的磁碟區大小。
-
volumeType (字串) – 用於覆寫裝置的磁碟區類型。
-
-
-
-
targetRepository (物件,必要) – 如果您的管道的管道分佈組態中沒有指定管道執行的區域 (區域 1),容器映像的目的地儲存庫。
-
repositoryName (字串,必要) – 儲存輸出容器映像的容器儲存庫名稱。此名稱以儲存庫位置為字首。
-
service (字串,必要) – 指定註冊此映像的服務。
-
-
workingDirectory (字串) – 在建置和測試工作流程期間使用的工作目錄。
{ "components": [ { "componentArn": "arn:aws:imagebuilder:us-east-1:123456789012:component/helloworldal2/x.x.x" } ], "containerType": "DOCKER", "description": "My Linux Docker container image", "dockerfileTemplateData": "FROM {{{ imagebuilder:parentImage }}}\n{{{ imagebuilder:environments }}}\n{{{ imagebuilder:components }}}", "name": "amazonlinux-container-recipe", "parentImage": "amazonlinux:latest", "platformOverride": "Linux", "semanticVersion": "1.0.2", "tags": { "sometag" : "Tag detail" }, "instanceConfiguration": { "image": "ami-1234567890", "blockDeviceMappings": [ { "deviceName": "/dev/xvda", "ebs": { "deleteOnTermination": true, "encrypted": false, "volumeSize": 8, "volumeType": "gp2" } } ] }, "targetRepository": { "repositoryName": "myrepo", "service": "ECR" }, "workingDirectory": "/tmp" }
-
-
建立配方
使用下列命令來建立配方。在
--cli-input-json
參數中提供您在上一個步驟中建立的JSON檔案名稱:aws imagebuilder create-container-recipe --cli-input-json file://
create-container-recipe.json
注意
-
您必須在JSON檔案路徑的開頭包含
file://
符號。 -
JSON 檔案的路徑應遵循執行命令之基礎作業系統的適當慣例。例如,Windows 會使用反斜線 (\) 來參照目錄路徑,而 Linux 會使用正斜線 (/)。
-