View a markdown version of this page

在映像建置器中設定映像管道工作流程 - EC2 Image Builder

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

在映像建置器中設定映像管道工作流程

透過映像工作流程,您可以自訂管道執行的工作流程,以根據您的需求建置、測試和分發映像。您定義的工作流程會在映像建置器工作流程架構的內容中執行。如需構成工作流程架構之階段的詳細資訊,請參閱 管理映像建置器映像的建置、測試和分佈工作流程

建置工作流程

建置工作流程架構Build階段期間執行的工作流程。您只能為管道指定一個建置工作流程。或者,您可以完全略過建置來設定僅限測試的管道。

測試工作流程

測試工作流程會在工作流程架構的Test階段執行。您可以將一或多個測試工作流程新增至管道,最多可新增十個工作流程,這也會計算您的建置和分佈工作流程。測試工作流程可以平行執行,也可以一次執行一個,具體取決於您如何定義測試群組。如果您只希望管道建置,也可以完全略過測試。

分佈工作流程

分佈工作流程會在工作流程架構的Distribution階段執行。分發工作流程是選用的。如果您未指定,Image Builder 仍會執行您連接到管道或映像的分佈組態來分佈您的 AMI。當您想要使用不同的分佈設定覆寫該分佈組態,或取得分佈程序的更多可見性時,請指定分佈工作流程。您可以為管道指定一個分佈工作流程。如果您建置容器映像且未指定分佈工作流程,Image Builder 會為您新增 Amazon 受管容器分佈工作流程。

定義測試工作流程的測試群組

您可以在測試群組中定義測試工作流程。您可以為管道執行多個測試工作流程。合併限制總共十個工作流程,其中包括您的建置和分佈工作流程。您可以決定要以特定順序執行測試工作流程,還是同時執行盡可能多的測試工作流程。它們的執行方式取決於您如何定義測試群組。下列案例示範多種您可以定義測試工作流程的方式。

注意

parallelGrouponFailure設定僅適用於測試工作流程。Image Builder 會使用 在建置或分佈工作流程上拒絕它們InvalidParameterCombinationException

測試群組如何執行

Image Builder 會在測試群組中執行您的測試工作流程。它會一次執行一個群組。單一群組內的測試工作流程會同時執行 (平行)。Image Builder 同時執行最多五個測試工作流程;如果群組有超過五個,Image Builder 會在每個工作流程完成時啟動下一個測試工作流程。不屬於群組的測試工作流程會自行執行。

如何定義測試群組取決於您使用的是 主控台或 AWS CLI 和 API。選取符合您所用方法的標籤。

AWS 管理主控台

當您在主控台中建立或編輯管道時,您可以在映像建立程序的測試工作流程區段中定義測試工作流程。若要執行測試,請選擇選項以選取測試工作流程。若要在不測試的情況下建置映像,請選擇略過測試工作流程的選項。

主控台會將測試工作流程組織成測試群組。新的管道會從一個測試群組開始。若要建置測試組態,請執行下列動作:

  • 將測試工作流程新增至群組 – 將測試工作流程新增至群組,並從您自己的工作流程 (由我擁有) 或 AWS 受管工作流程 (由 Amazon 管理) 選取工作流程。如果工作流程定義參數,主控台會顯示這些參數,讓您可以輸入值。群組最多可保留五個同時執行的測試工作流程。

  • 新增測試群組 – 新增另一個測試群組以執行不同的一組測試。您最多可以新增十個測試群組。若要重新命名群組,請選擇編輯名稱。群組名稱最多可有 128 個字元,且可包含字母、數字、連字號 (-) 和底線 ()_

Image Builder 會依精靈中顯示的順序一次執行一個測試群組。群組內的測試工作流程會同時執行。群組最多可包含五個測試工作流程。若要一次執行一個測試,請將每個測試工作流程放在自己的群組中。

注意

您可以新增或移除測試工作流程和群組,但無法重新排序。在建立測試群組之前,先規劃測試群組的順序。

AWS CLI

當您使用 AWS CLI 或 Image Builder API 時,不會直接定義測試群組。反之,您可以在workflows清單中的每個測試工作流程上設定 parallelGroup 屬性。測試具有相同parallelGroup值的工作流程會形成一個群組並同時執行。沒有parallelGroup值的測試工作流程會自行執行。如果您未在任何測試工作流程上設定parallelGroup值,Image Builder 會一次執行一個。

AWS CLI 和 API 不會限制群組中的測試工作流程數量。唯一的限制是工作流程總數,不得超過十個 (包括您的建置和分佈工作流程)。主控台會將群組限制為五個測試工作流程。

Image Builder 一律會先執行建置工作流程,然後測試工作流程,再執行分佈工作流程。無論您如何列出,此順序都適用。

在測試階段,Image Builder 會訂購您的測試工作流程,如下所示:

  • 它會依每個群組第一次出現在workflows清單中的位置來排序群組。它不會依 parallelGroup值排序它們。

  • 它會讓沒有群組的每個工作流程保持在其列出的位置。

  • 它會在群組中一起執行工作流程,位於群組第一次出現的位置。

範例

假設您依此順序列出五個測試工作流程,並在其中一些工作流程上設定 parallelGroup值:

  • 測試工作流程 A – 無群組

  • 測試工作流程 B – parallelGrouptests-1

  • 測試工作流程 C – 無群組

  • 測試工作流程 D – parallelGrouptests-1

  • 測試工作流程 E – parallelGrouptests-2

Image Builder 會依下列順序執行它們:

  1. 自行測試工作流程 A。

  2. 同時測試工作流程 B 和測試工作流程 D。他們共用 tests-1群組,這首先出現在測試工作流程 B。

  3. 自行測試工作流程 C。

  4. tests-2群組中自行測試工作流程 E。

測試工作流程 D 與測試工作流程 B 一起執行,因為它們共用群組,即使您在它們之間列出測試工作流程 C。名為 的群組在 之前tests-1執行,tests-2因為 tests-1會先出現在清單中 – 群組順序遵循清單中的順序,而不是parallelGroup值。

案例 1:一次執行一個測試工作流程

若要一次執行一個所有測試工作流程,請為每個測試工作流程設定個別的測試群組,上限為總共十個工作流程的合併限制 (包括您的建置和分佈工作流程)。Image Builder 一次執行一個測試群組。這是確保您的測試工作流程以特定順序一次執行一個 的方法之一。

案例 2:同時執行多個測試工作流程

如果順序不重要,而且您想要同時執行盡可能多的測試工作流程,您可以設定單一測試群組,並在其中放置測試工作流程的最大數量。Image Builder 會同時啟動最多五個測試工作流程,並在其他人完成時啟動其他測試工作流程。如果您的目標是盡快執行測試工作流程,這是執行此作業的一種方法。

案例 3:混合與比對

如果您有混合情況,有些測試工作流程可以同時執行,有些則應該一次執行,您可以設定測試群組來完成此目標。設定測試群組的唯一限制是可針對管道執行的測試工作流程數量上限

從主控台在映像建置器管道中設定工作流程參數

工作流程參數的運作方式與建置、測試和分佈工作流程相同。當您建立或更新管道時,您可以選擇要包含的建置、測試和分佈工作流程。如果您在工作流程文件中為所選工作流程定義參數,映像建置器會在參數面板中顯示它們。對於未定義參數的工作流程,面板會隱藏。

每個參數都會顯示工作流程文件定義的下列屬性:

  • 名稱 (不可編輯) – 參數的名稱。

  • 類型 (不可編輯) – 參數值的資料類型。

  • – 參數的值。您可以編輯參數值來設定管道的參數值。

指定 Image Builder 用來執行工作流程動作的 IAM 服務角色

當您將自訂映像工作流程連接至管道,或設定記錄組態時,您也必須指定執行角色。這是 Image Builder 用來執行工作流程動作的 IAM 角色。角色必須信任 Image Builder 服務主體。如需必要許可,請參閱以下工作流程服務存取資訊。

若要執行映像工作流程,Image Builder 需要執行工作流程動作的許可。您可以使用 Image Builder 代表您擔任的執行角色授予此許可。您可以指派執行角色,如下所示。

重要

建議您不要將AWSServiceRoleForImageBuilder服務連結角色做為執行角色傳遞。反之,請建立自訂 IAM 角色並連接 EC2ImageBuilderExecutionPolicy AWS 受管政策。此政策會授予 Image Builder AWS 服務 代您呼叫 所需的相同許可。使用自訂角色可讓您完全控制 Image Builder 使用的許可。它也會讓 Image Builder 代表您執行的操作的服務控制政策 (SCPs) 和資源控制政策 (RCPs) 保持有效。

  • 主控台 – 在管道精靈步驟 3 定義映像建立程序中,從服務存取面板的 IAM 角色清單中選取您的自訂角色

  • 映像建置器 API – 在 CreateImage 動作請求中,指定您的自訂角色做為 executionRole 參數的值。

若要建立自訂執行角色,請參閱AWS Identity and Access Management 《 使用者指南》中的建立角色以將許可委派給 AWS 服務

將工作流程與管道建立關聯

若要將自訂建置、測試和分佈映像工作流程與您的管道建立關聯,請選取符合您要使用之方法的標籤。

AWS 管理主控台

當您在 中建立或更新管道時 AWS 管理主控台,建立映像管道精靈會包含工作流程步驟,您可以在其中選取管道執行的工作流程。若要建立自訂映像工作流程的關聯,請在該步驟中執行下列動作:

  1. 針對建置工作流程,選取您希望管道執行的建置工作流程。

  2. 對於測試工作流程,新增一或多個測試工作流程,並將其組織到測試群組中,以控制它們執行的順序。如需詳細資訊,請參閱定義測試工作流程的測試群組

  3. 對於分佈工作流程,如果您想要覆寫連接的分佈組態或更清楚地了解分佈程序,請選取分佈工作流程。這是選用的。

  4. 針對執行角色,選取 Image Builder 執行工作流程動作所擔任的 IAM 角色。建立自訂映像工作流程的關聯時,需要執行角色。如需詳細資訊,請參閱指定 Image Builder 用來執行工作流程動作的 IAM 服務角色

  5. 如果您選取的工作流程定義參數,請在參數面板中設定其值。如需詳細資訊,請參閱從主控台在映像建置器管道中設定工作流程參數

如需完整建立映像管道精靈的step-by-step演練,請參閱建立和更新 AMI 映像管道

AWS CLI

若要在建立管道時關聯自訂映像工作流程,請使用 create-image-pipeline命令。使用 --execution-role 參數指定您的執行角色,並使用 --workflows 參數列出您的建置、測試和分佈工作流程。下列範例會建立具有一個建置工作流程、一個測試工作流程和一個分佈工作流程的管道。

aws imagebuilder create-image-pipeline \ --name example-pipeline \ --image-recipe-arn arn:aws:imagebuilder:us-west-2:111122223333:image-recipe/example/1.0.0 \ --infrastructure-configuration-arn arn:aws:imagebuilder:us-west-2:111122223333:infrastructure-configuration/example \ --execution-role arn:aws:iam::111122223333:role/ImageBuilderWorkflowExecutionRole \ --workflows '[ {"workflowArn":"arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/example-build/1.0.0"}, {"workflowArn":"arn:aws:imagebuilder:us-west-2:111122223333:workflow/test/example-test/1.0.0","parallelGroup":"group-1","onFailure":"CONTINUE"}, {"workflowArn":"arn:aws:imagebuilder:us-west-2:111122223333:workflow/distribution/example-distribute/1.0.0"} ]'