本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用無伺服器工作流程和 Amazon 監控標籤變更 EventBridge
Amazon EventBridge 支持對 AWS 資源進行標籤更改。使用此 EventBridge 類型,您可以建立 EventBridge規則以符合標籤變更,並將事件路由到一或多個目標。例如,目標可能是叫用自動化工作流程的 AWS Lambda 函數。本主題提供使用 Lambda 建置符合成本效益的無伺服器解決方案的教學課程,以安全地處理 AWS 資源上的標籤變更。
標籤變更產生 EventBridge 事件
EventBridge 提供描述 AWS 資源變更的近乎即時的系統事件串流。許多 AWS 資源都支援標籤,這些標籤是自訂的使用者定義屬性,可輕鬆組織和分類 AWS 資源。標籤的常見使用案例包括成本分配分類、存取控制安全性和自動化。
使用 EventBridge,您可以監視標籤的變更,並追蹤資 AWS 源上的標籤狀態。以前,為了實現類似的功能,您可能會持續輪詢APIs和協調多個呼叫。現在,對標籤進行任何變更,包括個別服務APIs、標籤編輯器和標籤都API會在資源事件上啟動標籤變更。下列範例顯示標籤變更提示的典型 EventBridge 事件。它會顯示新的、更新或已刪除的標籤鍵,以及它們的關聯值。
{ "version": "0", "id": "bddcf1d6-0251-35a1-aab0-adc1fb47c11c", "detail-type": "Tag Change on Resource", "source": "aws.tag", "account": "123456789012", "time": "2018-09-18T20:41:38Z", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-0000000aaaaaaaaaa" ], "detail": { "changed-tag-keys": [ "a-new-key", "an-updated-key", "a-deleted-key" ], "tags": { "a-new-key": "tag-value-on-new-key-just-added", "an-updated-key": "tag-value-was-just-changed", "an-unchanged-key": "tag-value-still-the-same" }, "service": "ec2", "resource-type": "instance", "version": 3, } }
所有 EventBridge 事件都有相同的頂層欄位:
-
version — 依預設,此值在所有事件中都設定為
0
(零)。 -
id — 針對每個事件產生唯一值。這對於追蹤事件在規則之間移動到目標並進行處理時很有幫助。
-
詳細資訊類型 — 與
source
欄位結合識別出現在詳細資訊欄位中的欄位和值。 -
來源 — 識別做為事件來源的服務。標籤變更的來源為
aws.tag
。 -
time — 事件的時間戳記。
-
區域 — 識別事件 AWS 區域 的起始位置。
-
資源 — 此JSON陣列包含 Amazon 資源名稱 (ARNs),可識別事件中涉及的資源。這是標籤已更改的資源。
-
detail — 一個JSON對象,其內容是根據事件類型不同。對於資源的標籤變更,包括下列詳細欄位:
-
changed-tag-keys— 此事件所變更的標籤鍵。
-
服務 — 資源所屬的服務。在這個例子中,服務是
ec2
,這是 Amazon EC2。 -
資源類型 — 服務的資源類型。在這個例子中,它是一個 Amazon EC2 實例。
-
版本 — 標籤組的版本。版本從 1 開始,並在標籤更改時遞增。您可以使用該版本來驗證標籤變更事件的順序。
-
標籤 — 變更後附加至資源的標籤。
-
如需詳細資訊,請參閱 Amazon EventBridge 使用者指南中的 Amazon EventBridge 事件模式。
透過使用 EventBridge,您可以根據不同欄位建立符合特定事件模式的規則。我們在教程中演示如何執行此操作。此外,我們還會展示如果指定的標籤未附加到EC2執行個體,Amazon 執行個體如何自動停止。我們使用 EventBridge 欄位來建立模式,以符合啟動 Lambda 函數之執行個體的標籤事件。
Lambda 和無伺服器
AWS Lambda 遵循無伺服器範例在雲端中執行程式碼。您只在需要時才執行程式碼,而不必考慮伺服器。您只需為使用的確切運算時間付費。即使它被稱為無服務器,但並不意味著沒有服務器。在此情況下,無伺服器表示您不需要佈建、設定或管理用來執行程式碼的伺服器。 AWS 為你做所有這些,所以你可以專注於你的代碼。如需 Lambda 的詳細資訊,請參閱AWS Lambda 產品概觀