本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立容器配方的新版本
本節說明如何建立容器配方的新版本。
使用主控台建立新的容器配方版本
建立新版本的容器配方與建立新配方幾乎相同。不同之處在於,在大多數情況下,某些詳細信息被預先選擇以匹配基本配方。下列清單說明建立新方案與建立現有方案的新版本之間的差異。
食譜詳情
-
名稱 — 不可編輯。
-
版本 — 必要。此詳細資料未預先填入目前版本或任何類型的序列。輸入您要以主要 .min or .patch 格式建立的版本號碼。如果版本已存在,則會遇到錯誤。
基本影像
-
選擇圖像選項 — 預先選擇,但可編輯。如果您變更基本影像來源的選擇,可能會遺失其他詳細資料,這取決於您選擇的原始選項。
若要查看與基本影像選取項目相關聯的詳細資料,請選擇符合您選取範圍的索引標籤。
執行個體組態
-
AMIID — 預先填入,但可編輯。
-
儲存 (磁碟區)
EBS卷 1(AMI根)-預填充。您無法編輯根磁碟區裝置名稱、快照或IOPS選取項目。但是,您可以變更所有剩餘的設定,例如「大小」。您也可以新增磁碟區。
注意
如果您指定了從其他帳戶與您共用的基礎AMI,則指定的任何輔助磁碟區的快照也必須與您的帳戶共用。
工作目錄
-
工作目錄路徑 — 預先填滿但可編輯。
元件
元件 — 已包含在方案中的元件會顯示在每個元件清單 (建置與測試) 結尾的 [選取的元件] 區段中。您可以移除或重新排序選取的元件,以符合您的需求。
CIS強化元件不遵循 Image Builder 方法中的標準元件排序規則。CIS強化元件一律會持續執行,以確保基準測試會針對您的輸出影像執行。
注意
建置和測試元件清單會根據元件擁有者類型顯示可用的元件。若要為您的方案新增或更新元件,請為您要尋找的元件選取擁有者類型。例如,如果您要新增與您在中訂閱之基礎映像檔相關聯的元件 AWS Marketplace,請
Third party managed
從搜尋列旁邊的擁有者類型清單中選取。您可以為選取的元件設定下列設定:
-
版本控制選項 — 預先選取,但您可以變更它們。我們建議您選擇 [使用最新的可用元件版本] 選項,以確保映像組建始終會選取最新版本的元件。如果您需要在方案中使用特定元件版本,您可以選擇 [指定元件版本],然後在出現的 [元件版本] 方塊中輸入版本。
-
輸入參數 — 顯示元件接受的輸入參數。「值」會預先填入方案先前版本的值。如果您是第一次在此方案中使用此元件,且已為輸入參數定義了預設值,則預設值會顯示在「值」(Val ue) 方塊中,並顯示灰色文字。如果未輸入其他值,「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 使用指南中的參數存放區
若要展開「版本控制」選項或「輸入」參數的設定,您可以選擇設定名稱旁邊的箭頭。若要展開所有選取零組件的所有設定,您可以將全部展開開關切換為關閉和開啟。
-
碼頭文件模板
-
碼頭文件模板-預填充,但可編輯。您可以指定下列 Image Builder 在執行階段以組建資訊取代的下列任何內容變數。
- parentImage (必填)
-
在建置階段,此變數會解析為您的方案的基礎映像檔。
範例:
FROM {{{ imagebuilder:parentImage }}}
- 環境 (如果已指定元件,則需要)
-
此變數將解析為執行元件的指令碼。
範例:
{{{ imagebuilder:environments }}}
- 組件(可選)
-
Image Builder 會針對容器配方所包含的元件,解析組建和測試元件指令碼。此變數可以放置在 Docker 檔案中的任何位置,位於環境變數之後。
範例:
{{{ 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令請求參數,請參閱 EC2Image Builder 參API考中的CreateContainerRecipe指令。
若要將資料值提供為指令行參數,請參考《指AWS CLI 令參考》中指定的參數名稱。
以下是此範例中參數的摘要:
-
元件 (物件陣列,必要) — 包含
ComponentConfiguration
物件陣列。至少必須指定一個組建元件:注意
Image Builder 會依照您在方案中指定元件的順序來安裝元件。不過,CIS強化元件永遠會持續執行,以確保基準測試會針對您的輸出影像執行。
-
組件 ARN(字符串,必需)-組件ARN。
提示
若要使用範例建立您自己的容器方案,ARNs請將範例ARNs取代為您用於方案的元件。其中包括每個項目的 AWS 區域、名稱和版本號碼。
參數 (物件陣列) — 包含
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 會使用預設值。
-
-
-
containerType(字串,必要) — 要建立的容器類型。有效值包括
DOCKER
。 -
dockerfileTemplateData(字符串)-用於構建圖像的 Docker 文件模板,表示為內聯數據塊。
-
name (字串,必要) — 容器配方的名稱。
-
說明 (字串) — 容器配方的說明。
-
parentImage(字串,必要) — 容器配方用來做為自訂影像基礎的影像。該值可以是基本映像ARN或 AMI ID。
-
platformOverride(字串) — 指定使用自訂基本映像時的作業系統平台。
-
semanticVersion(字串,必要) — 以下列格式指定之容器配方的語意版本,每個位置都有數值,表示特定版本:<major>。 <minor>。 <patch>。例如,即改為
1.0.0
。若要進一步瞭解 Image Builder 資源的語意版本控制,請參閱Image Builder 中的語義版本。 -
標籤 (字串對應) — 附加至容器配方的標籤。
-
instanceConfiguration(物件) — 可用來設定執行個體以建置和測試容器映像檔的一組選項。
-
圖像(字符串)-用作容器構建和測試實例的基本映像的 AMI ID。如果未指定此值,Image Builder 會使用適當的 Amazon ECS 最佳化AMI作為基礎映像。
-
blockDeviceMappings(物件陣列) — 定義要貼附的圖塊裝置,以從image參數中AMI指定的 Image Builder 建置例證。
-
deviceName(字串) — 這些對映套用至的裝置。
-
ebs (物件) — 用於管理此對應的 Amazon EBS 特定組態。
-
deleteOnTermination(布林值) — 用於在關聯裝置終止時配置刪除。
-
加密 (布林值) — 用於設定裝置加密。
-
volumeSize(整數) — 用於覆寫裝置的磁碟區大小。
-
volumeType(字串) — 用於覆寫裝置的磁碟區類型。
-
-
-
-
targetRepository(物件,必要) — 如果您的管線發佈組態中沒有指定其他存放庫,則為管線執行所在的區域 (Region 1),則為容器映像的目標存放庫。
-
repositoryName(字串,必要) — 儲存輸出容器映像檔的容器存放庫名稱。此名稱以儲存庫位置為字首。
-
服務 (字串,必要) — 指定註冊此影像的服務。
-
-
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" }
-
-
建立食譜
使用下列指令建立配方。在參數中提供您在上一個步驟中建立的JSON檔案名
--cli-input-json
稱:aws imagebuilder create-container-recipe --cli-input-json file://
create-container-recipe.json
注意
-
您必須在JSON檔案路徑的開頭包含
file://
符號。 -
JSON檔案的路徑應遵循執行指令之基礎作業系統的適當慣例。例如,Windows 會使用反斜線 (\) 來參照目錄路徑,而 Linux 會使用正斜線 (/)。
-