View a markdown version of this page

管理映像建置器映像的建置、測試和分佈工作流程 - EC2 Image Builder

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

管理映像建置器映像的建置、測試和分佈工作流程

映像工作流程會定義 EC2 Image Builder 在映像建立程序的一個階段期間執行的步驟順序。您撰寫工作流程做為 YAML 文件,並將其建立為版本控制的可重複使用資源。Image Builder 接著會在建置、測試和分配映像時執行您的工作流程。

工作流程可讓您直接控制映像建立程序。您可以決定執行哪些步驟、執行順序、每個步驟失敗時執行的動作,以及 Image Builder 是否復原失敗的步驟。您可以從 Amazon 受管工作流程開始、複製和自訂工作流程,或從頭開始撰寫您自己的工作流程。

影像工作流程優點
  • 透過映像工作流程,您可以更靈活地控制映像建立程序。

  • 您可以在定義工作流程文件時新增自訂工作流程步驟,也可以選擇使用映像建置器預設工作流程。

  • 您可以排除 Image Builder 在預設映像工作流程中包含的工作流程步驟。

  • 您可以建立僅測試的工作流程,完全略過建置程序。您可以執行相同的 來建立僅限建置或僅限分佈的工作流程。

注意

您無法修改現有的工作流程,但您可以複製它或建立新版本。

工作流程架構:階段

Image Builder 會將映像建立程序組織成三個階段。每個階段都會執行相符類型的工作流程。階段會以固定順序執行,且階段只會在上一個階段成功完成後啟動。

下表列出每個階段的預設行為。由於您定義了每個工作流程中的步驟,因此您可以自訂階段的功能。

映像建置器工作流程階段

順序

階段

工作流程類型

它的功能 (預設)

1

建置

BUILD

啟動建置執行個體、執行您的建置元件,以及從執行個體建立映像 (AMI 或容器映像)。

2

測試

TEST

從新映像啟動測試執行個體、執行測試元件,以及選擇性地收集映像掃描問題清單。

3

發佈

DISTRIBUTION

將映像複製到目標區域和帳戶、修改映像屬性,以及套用發佈後組態,例如啟動範本和授權組態。

您只能在某些階段執行工作流程。例如,您可以略過建置階段來測試或分發已存在的映像,或略過測試階段來建置和分發而不進行測試。若要略過建置或測試階段,請從管道或映像請求中省略該類型的工作流程。

注意

分發工作流程是選用的。如果您省略它,Image Builder 不會略過分佈 – 它仍會執行您連接到管道或映像的分佈組態來分佈您的 AMI。當您想要使用不同的分佈設定覆寫該分佈組態,或取得分佈程序的更多可見性時,請新增分佈工作流程。若要完全略過分佈,請提供 null 或空白分佈組態。

注意

映像管道或映像請求最多可包含一個建置工作流程和一個分佈工作流程。它也可以包含一或多個測試工作流程。工作流程總數不能超過十個。例如,您可以將一個建置工作流程和一個分佈工作流程與最多八個測試工作流程配對。

工作流程如何執行

工作流程會依照您在 YAML 文件中定義的順序執行其步驟。每個步驟都會執行一個動作,例如啟動執行個體或執行中的元件。

步驟結果

每個步驟都會以下列其中一種狀態結束。

工作流程步驟結果

State

意義

COMPLETED

步驟已成功完成。

SKIPPED

評估為 之步驟的條件式if陳述式false,因此 Image Builder 略過該步驟。

FAILED

步驟未成功完成。

WAITING

WaitForAction 步驟已暫停,正在等待外部動作。

TIMED_OUT

步驟的執行時間超過其timeoutSeconds值。

失敗處理

每個步驟上的 onFailure 屬性會控制步驟失敗時會發生的情況。

  • Abort (預設) – Image Builder 使步驟失敗、工作流程失敗,而且不會執行進一步的步驟。如果啟用轉返,則轉返會從失敗的步驟開始,並在先前的步驟中向後運作。

  • Continue – Image Builder 未通過步驟,但執行其餘步驟。不會發生轉返。

轉返

當步驟以 onFailure: AbortrollbackEnabled: true(預設值) 失敗時,Image Builder 會以相反順序轉返完成的步驟,從失敗的步驟開始。並非所有動作都可以復原。沒有復原的動作會記錄 的狀態NO_ROLLBACK

使用 Amazon EventBridge 監控工作流程執行

Image Builder 會在工作流程執行時發出 Amazon EventBridge 事件,因此您可以對進度和需要注意的步驟做出反應。例如,WaitForAction步驟會將具有 詳細資訊類型的事件發佈EC2 Image Builder Workflow Step Waiting至您的預設事件匯流排。您可以將此事件路由到目標,例如 Lambda 函數或 Amazon SNS 主題,以推動核准程序。如需 Image Builder 如何使用 EventBridge 的詳細資訊,請參閱 Image Builder 中的 Amazon EventBridge 整合

若要以程式設計方式追蹤步驟層級進度,請使用 ListWorkflowExecutionsListWorkflowStepExecutionsGetWorkflowExecutionGetWorkflowStepExecution API 操作。

工作流程資源限制條件

您的工作流程文件和組態必須保持在下列預設限制內。

工作流程資源限制條件

限制條件

預設值限制

備註

每個工作流程文件的步驟

15

以文件順序執行的步驟。

每個工作流程文件的輸出

25

輸出會將值傳遞給稍後的工作流程。

每個工作流程文件的參數

25

發起人可以設定的輸入。

參數值長度

1,024 個字元

每個參數值。

內嵌文件大小 (data)

16,000 個位元組

針對大型文件使用 uri(Amazon S3) 選項。

每個映像或管道的工作流程

10

最多 1 個組建和 1 個分佈,加上測試工作流程,總共 10 個。

工作流程資源是不可變的。若要變更工作流程,請建立新版本或複製它。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 會建立和維護受管工作流程。當您在映像管道中使用受管工作流程或建立一次性映像時,您可以選擇您要使用的受管工作流程的 Amazon Resource Name (ARN)。Amazon 提供已套用修補程式和其他更新的最新版本。若要取得受管工作流程的清單,請參閱 列出映像工作流程,並篩選 Owner = Amazon (主控台)。

您可以根據您的建置速度和驗證需求,選擇受管工作流程。以下是受管工作流程類型的範例:

標準受管工作流程 (預設)

標準受管工作流程包括使用完整的 EC2 狀態檢查來建置、測試和驗證映像的完整步驟。

以下是標準受管工作流程:

  • build-image – 預設 Amazon 受管 AMI 建置工作流程。

  • test-image – 預設 Amazon 受管 AMI 測試工作流程。

  • build-container – 預設 Amazon 受管容器建置工作流程。

  • test-container – 預設 Amazon 受管容器測試工作流程。

Express 受管工作流程

快速受管工作流程僅包含基本步驟並縮短映像建立時間。

以下是快速受管工作流程:

  • express-build-image – 可縮短建置時間的 Express Amazon 受管 AMI 建置工作流程。僅等待執行個體執行中狀態,而非完整的 EC2 狀態檢查,並略過映像中繼資料集合。

  • express-build-container – 可縮短建置時間的 Express Amazon 受管容器建置工作流程。只等待執行個體執行狀態,而不是完整的 EC2 狀態檢查。

  • express-test-image – 可縮短測試時間的 Express Amazon 受管 AMI 測試工作流程。僅等待執行個體執行中狀態,而非完整的 EC2 狀態檢查,並略過安全性掃描問題清單集合。