View a markdown version of this page

使用增強型 AMI 分佈功能 - EC2 Image Builder

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

使用增強型 AMI 分佈功能

Image Builder 為您提供進階分佈功能,可將分佈與建置程序分開。您可以分發已建置的映像,在測試或分發階段重試失敗的 AMI 映像,而無需重建映像,並使用自訂工作流程定義多階段分發程序。

分發現有映像

DistributeImage 操作會分發映像建置器 (或您) 已建立的映像,而無需重新執行建置和測試階段。Image Builder 只會執行分佈階段,並使用您由 ARN 參考的分佈組態中的目標和設定。

您可以透過以下三種方式之一來識別來源映像:

  • AMI ID – 標準 AMI 識別符,例如 ami-0abcdef1234567890。AMI 必須在您呼叫 操作的區域中存在並可存取。

  • SSM 參數:格式為 的 Systems Manager 參數存放區參考ssm:/path/to/parameter,其中 的文字ssm:是參數名稱或 ARN。參數必須是其值為有效 AMI ID 的String參數。

  • 映像建置器映像版本 ARN – 在您呼叫 操作的區域中映像建置器映像的 ARN。影像的輸出資源必須在該區域中包含 AMI。您可以指定以組建編號結尾的組建版本 ARN,例如 image/my-image/1.0.0/1,或不含組建編號的版本 ARN,例如 image/my-image/1.0.0。Image Builder 會將版本 ARN 解析為 AVAILABLE 狀態的最新組建。

注意

來源映像必須是 AMI ID、SSM 參數或映像建置器映像 ARN,而且映像建置器不接受 AWS Marketplace 產品程式碼。分佈組態必須位於您呼叫 的相同區域中DistributeImage。您無法將內嵌分佈設定傳遞至此操作。

先決條件

與管道建置不同, 會在呼叫時DistributeImage擔任執行角色。請確定下列項目已就緒:

  • Image Builder 可以擔任以執行分佈的 Image Builder 執行角色。建議您建立已連接 EC2ImageBuilderExecutionPolicy AWS 受管政策的自訂角色。該政策ec2:EnableFastLaunch僅允許對標記為 的資源使用 ec2:ModifyImageAttributeec2:ModifySnapshotAttribute、 和 CreatedBy: EC2 Image Builder,並ssm:PutParameter僅允許對 下的參數使用 /imagebuilder/。如果您的分佈作用於其他資源,請將必要的許可新增至角色。若要設定沒有啟動範本的 EC2 Fast Launch,請同時連接 EC2FastLaunchFullAccess政策。若要使用啟動範本設定 EC2 Fast Launch,啟動範本必須具有 CreatedBy: EC2 Image Builder標籤。Image Builder 只會將此標籤新增至分佈組態在 中更新的啟動範本launchTemplateConfigurations。對於任何其他啟動範本,請自行新增標籤或連接EC2FastLaunchFullAccess政策。

  • 呼叫 imagebuilder:DistributeImage、 imagebuilder:GetDistributionConfiguration和 iam:PassRole 執行角色的許可。Image Builder 也會使用登入資料描述來源 AMI 以進行驗證,因此您需要ec2:DescribeImages每種來源類型。如果來源是 SSM 參數,您也需要ssm:GetParameter該參數。如果來源是映像建置器映像 ARN,您也需要在該映像imagebuilder:GetImage上。如果您在請求中包含標籤,您也需要 imagebuilder:TagResource。

  • 如果分發組態將 AMI 複製到其他帳戶 (targetAccountIds),或更新其他帳戶中的啟動範本或 SSM 參數,EC2ImageBuilderDistributionCrossAccountRole則每個帳戶中的 都會連接Ec2ImageBuilderCrossAccountDistributionAccess 政策受管政策。受管政策不包含啟動範本或 SSM 參數。若要更新這些參數,也請新增使用映像建置器設定跨帳戶 AMI 分佈列出 launchTemplateConfigurations和 參數存放區參數的政策。

AWS 管理主控台

若要在映像建置器主控台中分發現有映像,請依照下列步驟進行:

  1. 開啟 EC2 Image Builder 主控台,位於 https://console.aws.amazon.com/imagebuilder/。

  2. 從導覽窗格中選擇分佈設定。

  3. 選取定義目標的分佈組態,然後從動作功能表中選擇分佈映像。您一次只能為此動作選取一個分佈組態。

  4. 在要分佈的映像區段中,選擇來源映像類型 – AMI ID、SSM 參數或映像建置器映像 ARN,並指定要分佈的映像。

  5. 選擇 Image Builder 用來執行分佈的 IAM 角色。

  6. 選擇分佈映像。

AWS CLI

下列範例示範如何使用 distribute-image 命令分佈現有映像。您可以--execution-role依角色名稱或完整 ARN 指定 ;下列範例顯示兩種表單。

從 AMI ID 分佈

aws imagebuilder distribute-image \ --source-image ami-0abcdef1234567890 \ --distribution-configuration-arn arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-distribution \ --execution-role arn:aws:iam::123456789012:role/MyImageBuilderDistributionRole
從 SSM 參數分佈

aws imagebuilder distribute-image \ --source-image ssm:/golden/latest-ami \ --distribution-configuration-arn arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-distribution \ --execution-role MyImageBuilderDistributionRole
從映像建置器映像版本 ARN 分佈

此範例使用建置版本 ARN。您也可以省略結尾組建編號 (/1),以分發該映像版本的最新組建。

aws imagebuilder distribute-image \ --source-image arn:aws:imagebuilder:us-west-2:123456789012:image/my-image/1.0.0/1 \ --distribution-configuration-arn arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-distribution \ --execution-role MyImageBuilderDistributionRole

命令會傳回分佈imageBuildVersionArn的 。追蹤其進度的方式與追蹤組建的方式相同 – 請參閱 列出映像和建置版本。

重試失敗的映像

如果映像在測試或分佈階段失敗,請使用 retry-image 命令 (RetryImageAPI) 從失敗的階段開始重新執行映像。該階段中的步驟會再次執行。如果先前嘗試的 AMI 複本在目標區域和帳戶中仍然可用,Image Builder 會重複使用它,而不是再次複製 AMI。Image Builder 會重複使用原始執行角色、分佈組態和設定,因此您不會重建映像。重試會擔任相同的執行角色,因此您對該角色所做的任何許可修正都會套用到重試。

先決條件

重試失敗的影像之前,請確認下列事項。重試會計入並行映像建置配額,而且如果您已達到該配額,映像建置器會拒絕重試。

  • 映像處於 FAILED或 CANCELLED 狀態,並在測試或分佈階段失敗或取消。您無法重試成功或仍在進行中的映像,或任何其他階段中失敗或取消的映像。

  • 影像是在過去 30 天內建立的。

  • 映像是以 AMI 為基礎的映像。您無法重試容器映像。

  • 影像尚未重試次數上限。Image Builder 每個映像最多允許 10 次重試。

  • 您已識別並解決失敗的根本原因。在 CloudWatch Logs 中檢閱映像的日誌,以取得錯誤詳細資訊。

  • 您有權在要重試的映像建置版本imagebuilder:RetryImage上呼叫 。

  • 對於跨帳戶分佈失敗,請確認目的地帳戶中EC2ImageBuilderDistributionCrossAccountRole的 已連接 Ec2ImageBuilderCrossAccountDistributionAccess 政策受管政策。如需詳細資訊,請參閱使用映像建置器設定跨帳戶 AMI 分佈。

AWS 管理主控台

若要在映像建置器主控台中重試失敗的映像,請依照下列步驟執行:

  1. 開啟 EC2 Image Builder 主控台,位於 https://console.aws.amazon.com/imagebuilder/。

  2. 從導覽窗格中選擇影像,然後選擇失敗的影像建置版本。

  3. 選擇重試映像。只有在映像處於失敗或取消狀態時,才能使用此動作。

AWS CLI

提供失敗映像的映像建置版本 ARN:

aws imagebuilder retry-image \ --image-build-version-arn arn:aws:imagebuilder:us-west-2:123456789012:image/my-image/1.0.0/1

分佈工作流程

分佈工作流程是補充建置和測試工作流程的工作流程類型。分佈工作流程將分佈階段定義為一系列步驟,可讓您了解和控制 Image Builder 如何分佈 AMI。本節說明的步驟適用於 AMI 輸出映像。

在分佈工作流程中,您可以包含執行下列動作的步驟:

  • 跨區域和帳戶複製和共用 AMI。

  • 修改分散式 AMIs 上的映像屬性,例如啟動許可。

  • 套用其他映像組態。

  • 暫停以進行手動核准,或使用wait-for-action步驟進行外部回呼。這可讓您建置階段或門控推展 – 例如,分發到測試區域、等待核准,然後繼續生產區域。

每個步驟都會報告自己的狀態:PENDING、RUNNING、 WAITING(僅限wait-for-action步驟)COMPLETED、SKIPPED、、 FAILED或 CANCELLED ,而 Image Builder 會將步驟層級詳細資訊傳送至您的 CloudWatch 日誌群組。執行時間超過其timeoutSeconds值的步驟會報告 FAILED。Image Builder 也會在關鍵點發出 EventBridge 事件 – 例如,當影像變更狀態,以及wait-for-action步驟暫停輸入時。如需事件的完整清單,請參閱 Image Builder 傳送的事件訊息。

若要了解如何建立和自訂工作流程,包括 YAML 文件格式和可用的步驟動作,請參閱 管理映像建置器映像的建置、測試和分佈工作流程。