View a markdown version of this page

搭配映像建置器管道使用 EventBridge - EC2 Image Builder

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

搭配映像建置器管道使用 EventBridge

AWS 和 合作夥伴服務會以近乎即時的方式將事件串流至 Amazon EventBridge 事件匯流排。您也可以傳送自己的自訂事件。事件匯流排使用規則將每個事件路由到一或多個目標。

Image Builder 會以兩個獨立方向使用 EventBridge:

  • 從規則啟動管道建置。您可以設定映像建置器管道做為規則目標,讓 EventBridge 在事件符合規則或排程觸發時執行管道。請參閱 根據排程觸發管道建置從事件模式觸發管道建置

  • 對 Image Builder 傳送的事件做出反應。發生重大變更時,Image Builder 會將事件發佈至預設事件匯流排,例如,當映像變成AVAILABLE或掃描偵測到 CVEs時。您可以使用規則來比對這些事件,並將其路由至目標,例如 Lambda 函數或 Amazon SNS 主題,以啟動您自己的自動化。請參閱 對映像建置器傳送的事件做出反應

如需 Image Builder 傳送的事件和每個事件中的欄位的詳細資訊,請參閱 Image Builder 傳送的事件訊息

注意

事件匯流排是區域特定的。規則及其調用的資源通常位於相同區域;若要跨區域路由,請將目標區域中的事件匯流排設為目標。Image Builder 會將其事件發佈至建置執行所在的 區域中的預設事件匯流排。

EventBridge 詞彙

下列術語可協助您了解 EventBridge 如何與您的映像建置器管道整合。

事件

描述環境中可能影響一或多個應用程式資源的變更。環境可以是 AWS 環境、SaaS 合作夥伴服務或應用程式,或是您的其中一個應用程式或服務。您也可以在時間軸上設定排程事件。

事件匯流排

從應用程式和服務接收事件資料的管道。

來源

將事件傳送至事件匯流排的服務或應用程式。

Target

EventBridge 在符合規則時叫用的資源或端點,將資料從事件傳遞到目標。

規則

規則會比對連入事件,並將這些事件路由到目標以進行處理。單一規則可以將事件傳送至多個目標,然後可以平行執行。規則是以事件模式或排程為基礎。

模式

事件模式會定義事件結構和規則相符的欄位,以啟動目標動作。

Schedule

排程規則會依排程執行動作,例如執行映像建置器管道以每季重新整理映像。排程表達式有兩種類型:

  • Cron 表達式 – 使用可以概述簡單條件的 cron 語法來比對特定排程條件;例如,特定日期每週執行一次。您也可以建立更複雜的條件,例如在每個月第五天的凌晨 2 點到凌晨 4 點之間執行。

  • 速率表達式 – 指定調用目標時的規則間隔,例如每 12 小時一次。

檢視映像建置器管道的 EventBridge 規則

映像建置器映像管道詳細資訊頁面中的 EventBridge 規則索引標籤會顯示您帳戶可存取的 EventBridge 事件匯流排,以及適用於目前管道之所選事件匯流排的規則。此標籤也會直接連結至 EventBridge 主控台,以建立新資源。

連結至 EventBridge 主控台的動作
  • 建立事件匯流排

  • 建立規則

若要進一步了解 EventBridge,請參閱《Amazon EventBridge 使用者指南》中的下列主題。

根據排程觸發管道建置

將映像建置器管道設定為 EventBridge 排程規則的目標,以定期重新整理映像。下列範例會建立規則,每 90 天啟動一次管道建置。

注意

管道也可以使用自己的內建排程 (存放在管道上的 Cron 或 Rate 表達式)。該排程由 Image Builder 管理,並與任何 EventBridge 規則分開:

  • 使用管道排程進行簡單的週期性重建。它也可以根據相依性更新進行閘道建置,並自動停用失敗的管道。請參閱 EC2 Image Builder API 參考Schedule中的 。

  • 使用 EventBridge 規則從事件模式啟動組建,或將一個觸發散發到多個目標。

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

  2. 若要查看在您帳戶下建立的影像管道清單,請從導覽窗格中選擇影像管道

    注意

    映像管道清單包含管道 – AMI 或 所建立輸出映像類型的指標Docker。

  3. 若要檢視詳細資訊或編輯管道,請選擇管道名稱連結。這會開啟管道的詳細資訊檢視。

    注意

    您也可以選取管道名稱旁的核取方塊,然後選擇檢視詳細資訊

  4. 開啟 EventBridge 規則索引標籤。

  5. 保留事件匯流排面板中預先選取的預設事件匯流排

  6. 選擇建立規則。這將帶您前往 Amazon EventBridge 主控台中的建立規則頁面。

  7. 輸入規則的名稱和描述。規則名稱在所選區域的事件匯流排中必須是唯一的。

  8. 定義模式面板中,選擇排程選項。這會展開面板,每個選取選項的固定速率為 。

  9. 90 在第一個方塊中輸入 ,然後從下拉式清單中選取天數

  10. 選取目標面板中執行下列動作:

    1. EC2 Image Builder目標下拉式清單中選取 。

    2. 若要將規則套用至映像建置器管道,請從映像管道下拉式清單中選取目標管道。

    3. EventBridge 需要許可才能啟動所選管道的建置。在此範例中,請保留預設選項,以為此特定資源建立新角色

    4. 選擇 Add target (新增目標)

  11. 選擇 Create (建立)

注意

目前的 EventBridge 主控台可能會透過 EventBridge 排程器建立排程,而確切的標籤和步驟可能會隨著時間而變更。連結的 Amazon EventBridge 使用者指南是目前主控台體驗的授權。

AWS CLI

這些步驟會建立排程規則,每 90 天啟動一次管道建置。EventBridge 需要一個可在管道imagebuilder:StartImagePipelineExecution上呼叫的 IAM 角色。

  1. 建立具有速率表達式的規則:

    aws events put-rule \ --name refresh-image-every-90-days \ --schedule-expression "rate(90 days)"
  2. 使用此信任政策,建立 EventBridge 可擔任的 IAM 角色:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" }] }

    連接允許管道啟動的許可政策:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "imagebuilder:StartImagePipelineExecution", "Resource": "arn:aws:imagebuilder:us-west-2:111122223333:image-pipeline/my-pipeline" }] }
  3. 新增管道做為規則的目標,參考上一個步驟中的角色:

    aws events put-targets \ --rule refresh-image-every-90-days \ --targets '[{ "Id": "1", "Arn": "arn:aws:imagebuilder:us-west-2:111122223333:image-pipeline/my-pipeline", "RoleArn": "arn:aws:iam::111122223333:role/EventBridgeImageBuilderRole" }]'
  4. 確認已連接目標:

    aws events list-targets-by-rule --rule refresh-image-every-90-days
注意

若要進一步了解此範例中未涵蓋的速率表達式規則設定,請參閱《Amazon EventBridge 使用者指南》中的速率表達式。

從事件模式觸發管道建置

當事件符合模式時,您可以啟動管道建置,而不是排程。建立具有事件模式的規則,然後將管道新增為目標 (具有 中所述的相同 IAM 角色根據排程觸發管道建置)。

下列範例會在特定基礎映像變成 時啟動組建AVAILABLE,例如,在基礎映像完成後鏈結相依映像組建。resources 字首會將規則範圍限定為基礎映像,使其僅符合該映像,而非相依管道自己的輸出:

{ "source": ["aws.imagebuilder"], "detail-type": ["EC2 Image Builder Image State Change"], "detail": { "state": { "status": ["AVAILABLE"] } }, "resources": [{ "prefix": "arn:aws:imagebuilder:us-west-2:111122223333:image/my-base-image/" }] }
重要

將事件模式範圍限定為基礎映像,如本範例中的 resources 字首所示。符合帳戶中每個AVAILABLE映像的模式也會符合相依管道自己的輸出映像,這會再次啟動管道並建立無限的建置迴圈。依特定基礎映像名稱或 ARN 字首進行篩選,讓規則只符合您想要的映像。

AWS 管理主控台
  1. 前往 https://console.aws.amazon.com/events/ 開啟 Amazon EventBridge 主控台。

  2. 選擇規則,然後選擇建立規則。保留預設事件匯流排。

  3. 輸入名稱和描述。在規則類型下,選擇具有事件模式的規則

  4. 針對事件來源,選擇其他,然後將上面的事件模式貼到事件模式方塊中。

  5. 選取目標面板中,EC2 Image Builder目標下拉式清單中選擇,然後從影像管道下拉式清單中選擇要建置的管道。

  6. EventBridge 需要許可才能啟動管道。保留預設選項,以為此特定資源建立新角色

  7. 選擇建立規則

AWS CLI

建立規則並將管道新增為目標:

aws events put-rule \ --name rebuild-on-base-available \ --event-pattern '{"source":["aws.imagebuilder"],"detail-type":["EC2 Image Builder Image State Change"],"detail":{"state":{"status":["AVAILABLE"]}},"resources":[{"prefix":"arn:aws:imagebuilder:us-west-2:111122223333:image/my-base-image/"}]}' aws events put-targets \ --rule rebuild-on-base-available \ --targets '[{"Id":"1","Arn":"arn:aws:imagebuilder:us-west-2:111122223333:image-pipeline/dependent-pipeline","RoleArn":"arn:aws:iam::111122223333:role/EventBridgeImageBuilderRole"}]'

如需您可以比對的事件及其欄位,請參閱 Image Builder 傳送的事件訊息

對映像建置器傳送的事件做出反應

當您的資源達到重要點時,Image Builder 會將事件發佈到預設事件匯流排,例如,當影像變更狀態、掃描完成、工作流程步驟暫停輸入,或管道自動停用時。您可以比對這些事件與規則,並將其路由至目標以啟動您自己的自動化。常見的模式包括:

  • 當映像變成 AVAILABLE或 時,透過 Amazon SNS 主題通知團隊FAILED

  • 叫用 Lambda 函數在參數存放區中註冊新的 AMI、啟動外部合規測試,或更新部署管道。

  • 當掃描報告關鍵 CVEs 時,安全性問題清單的提醒。

  • 當工作流程步驟暫停建置時,推動核准WaitForAction工作流程。

若要對 Image Builder 傳送的事件採取行動,請建立事件模式符合事件 source(aws.imagebuilder) 和 的規則detail-type,並選擇性地縮小 內欄位的範圍detail。然後新增執行自動化的目標。

範例:映像完成時通知 (AVAILABLEFAILED)

{ "source": ["aws.imagebuilder"], "detail-type": ["EC2 Image Builder Image State Change"], "detail": { "state": { "status": ["AVAILABLE", "FAILED"] } } }

範例:只有在掃描發現關鍵 CVEs 時提醒

使用數值比對器,讓清理掃描不會觸發規則:

{ "source": ["aws.imagebuilder"], "detail-type": ["EC2 Image Builder CVE Detected"], "detail": { "finding-severity-counts": { "critical": [{ "numeric": [">", 0] }] } } }
AWS 管理主控台
  1. 前往 https://console.aws.amazon.com/events/ 開啟 Amazon EventBridge 主控台。

  2. 選擇規則,然後選擇建立規則。保留預設事件匯流排。

  3. 輸入名稱和描述。在規則類型下,選擇具有事件模式的規則

  4. 針對事件來源,選擇其他,然後將上述其中一個事件模式貼到事件模式方塊中。

  5. 選擇您的目標,例如 Amazon SNS 主題或 Lambda 函數,並完成目標設定。

  6. 選擇建立規則

AWS CLI

建立規則並將相符事件傳送至 Amazon SNS 主題:

aws events put-rule \ --name image-available-or-failed \ --event-pattern '{"source":["aws.imagebuilder"],"detail-type":["EC2 Image Builder Image State Change"],"detail":{"state":{"status":["AVAILABLE","FAILED"]}}}' aws events put-targets \ --rule image-available-or-failed \ --targets '[{"Id":"1","Arn":"arn:aws:sns:us-west-2:111122223333:image-status"}]'

EventBridge 還需要將事件傳送至目標的許可。如需每個目標類型所需許可的詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的將事件傳送至目標的許可和使用 Amazon EventBridge 的資源型政策。 EventBridge EventBridge

注意

當您符合EC2 Image Builder Workflow Step Waiting事件時,您的目標可以使用事件workflow-step-execution-id中的 SendWorkflowStepActionRESUMEaction的 來呼叫 STOP。請參閱WaitForAction