本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配映像建置器管道使用 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 規則從事件模式啟動組建,或將一個觸發散發到多個目標。
注意
若要進一步了解此範例中未涵蓋的速率表達式規則設定,請參閱《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 字首進行篩選,讓規則只符合您想要的映像。
如需您可以比對的事件及其欄位,請參閱 Image Builder 傳送的事件訊息。
對映像建置器傳送的事件做出反應
當您的資源達到重要點時,Image Builder 會將事件發佈到預設事件匯流排,例如,當影像變更狀態、掃描完成、工作流程步驟暫停輸入,或管道自動停用時。您可以比對這些事件與規則,並將其路由至目標以啟動您自己的自動化。常見的模式包括:
-
當映像變成
AVAILABLE或 時,透過 Amazon SNS 主題通知團隊FAILED。 -
叫用 Lambda 函數在參數存放區中註冊新的 AMI、啟動外部合規測試,或更新部署管道。
-
當掃描報告關鍵 CVEs 時,安全性問題清單的提醒。
-
當工作流程步驟暫停建置時,推動核准
WaitForAction工作流程。
若要對 Image Builder 傳送的事件採取行動,請建立事件模式符合事件 source(aws.imagebuilder) 和 的規則detail-type,並選擇性地縮小 內欄位的範圍detail。然後新增執行自動化的目標。
範例:映像完成時通知 (AVAILABLE 或 FAILED)
{ "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] }] } } }
注意
當您符合EC2 Image Builder Workflow Step Waiting事件時,您的目標可以使用事件workflow-step-execution-id中的 SendWorkflowStepAction 和 RESUME或 action的 來呼叫 STOP。請參閱WaitForAction。