搭配 Amazon EventBridge 使用 Elastic Beanstalk - AWS Elastic Beanstalk

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

搭配 Amazon EventBridge 使用 Elastic Beanstalk

使用 Amazon EventBridge,您可以設定事件驅動規則來監控 Elastic Beanstalk 資源,並啟動使用其他服務的目標動作 AWS 。例如,您可以透過在生產環境的運作狀態變更為 Warning (警告) 狀態時傳送 Amazon SNS 主題,來設定傳出電子郵件通知的規則。或者,您可以在環境的運作狀態變更為 Degraded (已降級) 或 Severe (嚴重) 狀態時傳遞通知至 Slack,來設定 Lambda 函數。

您可以在 Amazon EventBridge 中建立規則,以對下列任何一個 Elastic Beanstalk 事件採取行動:

  • 環境操作的狀態變更 (包括建立、更新和終止操作)。事件將指明狀態變更是否已開始、成功或失敗。

  • 其他資源的狀態變更。除了環境之外,受監控的其他資源包括負載平衡器、Auto Scaling 群組和執行個體。

  • 環境的運作狀態轉換。事件指出環境運作狀態已從運作狀態轉換到另一個運作狀態。

  • 受管更新的狀態變更。事件將指明狀態變更是否已開始、成功或失敗。

若要擷取您感興趣的特定 Elastic Beanstalk 事件,請定義 EventBridge 可用來偵測事件的特定事件模式。事件模式擁有與其相符事件相同的結構。該模式引用您欲比對的欄位,並提供您正在尋找的數值。盡可能發出事件。在正常操作情況下,其可近乎即時地從 Elastic Beanstalk 傳送至 EventBridge。但是,可能會發生延遲或阻止事件傳遞的情況。

如需 Elastic Beanstalk 事件中包含的欄位清單及其可能的字串值,請參閱 Elastic Beanstalk 事件欄位映射。如需 EventBridge 規則如何使用事件模式的詳細資訊,請參閱 EventBridge 中的事件和事件模式

使用 EventBridge 監控 Elastic Beanstalk 資源

使用 EventBridge,您可以建立規則,其定義當 Elastic Beanstalk 針對其資源發出事件時要採取的動作。例如,您可以建立一個規則,在環境狀態變更時傳送電子郵件訊息給您。

EventBridge 主控台具有預先定義的模式選項,可建置 Elastic Beanstalk 事件模式。如果建立規則時在 EventBridge 主控台中選取此選項,您即可快速建置 Elastic Beanstalk 事件模式。您只需選取事件欄位和值。在您選取後,主控台即會建置並顯示事件模式。或者,您可以手動編輯您建置的事件模式,並將其儲存為自訂模式。此外,主控台還會提供選項來顯示詳細的範例事件,您可以複製並貼至您正在建置的事件模式。

如果您想要輸入或複製事件模式並貼至 EventBridge 主控台,可以選擇使用主控台中的 Custom pattern (自訂模式) 選項。這樣做,您不需要執行前述選取欄位和值的步驟。本主題提供您可以使用的事件比對模式Elastic Beanstalk 事件的範例。

建立資源事件的規則
  1. AWS 使用具有 EventBridge 和 Elastic Beanstalk 使用許可的帳戶登入 。

  2. 前往 https://console.aws.amazon.com/events/ 開啟 Amazon EventBridge 主控台。

  3. 在導覽窗格中,選擇規則

  4. 選擇建立規則

  5. 輸入規則的Name (名稱),或者輸入描述。

  6. 針對事件匯流排選擇預設值。當您帳戶中 AWS 的服務發出事件時,一律會傳送至您帳戶的預設事件匯流排。

  7. 針對規則類型,選擇具有事件模式的規則

  8. 選擇下一步

  9. 事件來源欄位中,選擇 AWS 事件或 EventBridge 合作夥伴事件

  10. (選用) 對於 Sample event (範例事件),請選擇 AWS 事件。在搜尋欄位中輸入 Elastic Beanstalk。這將提供您可以選擇顯示的 Elastic Beanstalk 事件範例清單。此步驟僅顯示您可以參考的範例事件。它不會影響規則建立的結果。本主題後面的 Elastic Beanstalk 事件範例 區段提供相同類型事件的範例。

  11. Event pattern (事件模式) 區段中,選擇 Event pattern form (事件模式表單)。

    注意

    如果已經有事件模式的文字,而且不需要使用 EventBridge 主控台進行建置,您可以選取 Custom pattern (JSON editor) (自訂模式 (JSON 編輯器))。然後,可以手動輸入或複製文字並貼至 Event Pattern (事件模式) 方塊。選擇 Next (下一步),然後轉到有關輸入目標的步驟。

  12. 事件來源欄位中,選擇 AWS 服務

  13. 針對AWS 服務,選取 Elastic Beanstalk

  14. 針對 Event type (事件類型),選取 Status Change (狀態變更)。

  15. 此步驟涵蓋如何使用 Elastic Beanstalk 的 detail type (詳細資訊類型)、status (狀態) 和 severity (嚴重性) 事件欄位。選擇這些欄位和想要比對的值後,主控台會建置並顯示事件模式。

    • 如果您只為特定詳細資訊類型選取一個值,則可以為階層中的下一個欄位選擇一或多個值 (一或多個)。

    • 如果您為特定詳細資訊類型選擇多個值,請勿為階層中的下一個欄位選擇特定值。這樣可以防止事件模式中欄位的模糊比對邏輯。

    environment (環境) 事件欄位不受此階層的影響,因此它會依照下一個步驟中所述顯示。

  16. 針對 Environment (環境),選取 Any environment (任何環境) 或 Specific environment(s) (特定環境)。

    • 如果您選取 Specific environment(s) (特定環境),可以從下拉式清單中選擇一或多個環境。EventBridge 會新增您在事件模式 detail (詳細資訊) 區段的 EnvironmentName[ ] 清單中選取的所有環境。然後,您的規則會篩選所有事件,以僅包含您選擇的特定環境。

    • 如果您選取 Any environment (任何環境),則不會將任何環境新增至您的事件模式。因此,您的規則不會根據環境來篩選任何 Elastic Beanstalk 事件。

  17. 選擇 Next (下一步)

  18. 目標類型欄位中,選擇 AWS 服務

  19. Select a target (選取目標) 下,選擇從 Elastic Beanstalk 收到資料狀態變更事件時,要採取的目標動作。

    例如,您可以使用 Amazon Simple Notification Service (SNS) 主題,在事件發生時,傳送電子郵件或文字訊息。若要執行此操作,您需要使用 Amazon SNS 主控台建立 Amazon SNS 主題。若要進一步了解,請參閱使用 Amazon SNS 傳送使用者通知

    重要

    某些目標動作可能需要使用其他服務,並產生額外費用,例如 Amazon SNS 或 Lambda 服務。如需 AWS 定價的詳細資訊,請參閱 https://aws.amazon.com/pricing/。有些服務屬於 AWS 免費用量方案。若您是新客戶,可以免費試用這些服務。如需更多資訊,請參閱https://aws.amazon.com/free/

  20. (選用) 選擇 Add another target (新增其他目標),以指定事件規則的其他目標動作。

  21. 選擇 Next (下一步)

  22. (選用) 為規則輸入一或多個標籤。如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的 Amazon EventBridge 標籤

  23. 選擇下一步

  24. 檢閱規則的詳細資訊,然後選擇建立規則

Elastic Beanstalk 事件模式範例

事件模式擁有與其相符事件相同的結構。該模式引用您欲比對的欄位,並提供您正在尋找的數值。

  • 所有環境的運作狀態變更

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Health status change" ] }
  • 下列環境的運作狀態變更myEnvironment1myEnvironment2。此事件模式會針對這兩個特定環境進行篩選,而之前的 Health status change (運作狀態變更) 範例不會針對所有環境來傳送事件。

    {"source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Health status change" ], "detail": { "EnvironmentName": [ "myEnvironment1", "myEnvironment2" ] } }
  • 所有環境的 Elastic Beanstalk 資源狀態變更

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Elastic Beanstalk resource status change" ] }
  • 下列環境的 Elastic Beanstalk 資源狀態變更Status 環境更新失敗並顯示 Severity 錯誤myEnvironment1myEnvironment2

    {"source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Elastic Beanstalk resource status change" ], "detail": { "Status": [ "Environment update failed" ], "Severity": [ "ERROR" ], "EnvironmentName": [ "myEnvironment1", "myEnvironment2" ] } }
  • 負載平衡器、Auto Scaling 群組和執行個體的其他資源狀態變更

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Other resource status change" ] }
  • 所有環境的受管更新狀態變更

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Managed update status change" ] }
  • 從 Elastic Beanstalk 擷取所有事件 (不包括 detail-type 區段)

    { "source": [ "aws.elasticbeanstalk" ] }

Elastic Beanstalk 事件範例

以下是資源狀態變更的 Elastic Beanstalk 事件範例:

{ "version":"0", "id":"1234a678-1b23-c123-12fd3f456e78", "detail-type":"Elastic Beanstalk resource status change", "source":"aws.elasticbeanstalk", "account":"111122223333", "time":"2020-11-03T00:31:54Z", "region":"us-east-1", "resources":[ "arn:was:elasticbeanstalk:us-east-1:111122223333:environment/myApplication/myEnvironment" ], "detail":{ "Status":"Environment creation started", "EventDate":1604363513951, "ApplicationName":"myApplication", "Message":"createEnvironment is starting.", "EnvironmentName":"myEnvironment", "Severity":"INFO" } }

以下是運作狀態變更的 Elastic Beanstalk 事件範例:

{ "version":"0", "id":"1234a678-1b23-c123-12fd3f456e78", "detail-type":"Health status change", "source":"aws.elasticbeanstalk", "account":"111122223333", "time":"2020-11-03T00:34:48Z", "region":"us-east-1", "resources":[ "arn:was:elasticbeanstalk:us-east-1:111122223333:environment/myApplication/myEnvironment" ], "detail":{ "Status":"Environment health changed", "EventDate":1604363687870, "ApplicationName":"myApplication", "Message":"Environment health has transitioned from Pending to Ok. Initialization completed 1 second ago and took 2 minutes.", "EnvironmentName":"myEnvironment", "Severity":"INFO" } }

Elastic Beanstalk 事件欄位映射

下表會將 Elastic Beanstalk 事件欄位及其可能的字串值映射至 EventBridge detail-type 欄位。如需有關 EventBridge 如何處理服務事件模式的詳細資訊,請參閱 EventBridge 中的事件和事件模式

EventBridge 欄位詳細資訊類型 Elastic Beanstalk 欄位狀態 Elastic Beanstalk 欄位嚴重性 Elastic Beanstalk 欄位訊息

Elastic Beanstalk 資源狀態變更

已啟動環境建立

INFO

createEnvironment 正在啟動。

環境建立成功

INFO

createEnvironment 已順利完成。

環境建立成功

INFO

已啟動的環境:<Environment Name>。但是,啟動期間發生問題。如需詳細資訊,請參閱事件日誌。

環境建立失敗

ERROR

無法啟動環境。

已啟動環境更新

INFO

環境更新正在啟動。

環境更新成功

INFO

環境更新已順利完成。

環境更新失敗

ERROR

無法部署組態。

已啟動環境終止

INFO

terminateEnvironment 正在啟動。

環境終止成功

INFO

terminateEnvironment 已順利完成。

環境終止失敗

INFO

環境終止步驟失敗,因為至少有一個環境終止工作流程失敗。

其他資源狀態變更

已建立 Auto Scaling 群組

INFO

createEnvironment 正在啟動。

已刪除 Auto Scaling 群組

INFO

createEnvironment 正在啟動。

已新增執行個體

INFO

已將執行個體 [i-123456789a12b1234] 新增至您的環境。

已移除執行個體

INFO

已將執行個體 [i-123456789a12b1234] 從您的環境中移除。

已建立負載平衡器

INFO

建立的負載平衡器名稱為:<LB Name>

已刪除負載平衡器

INFO

已刪除的負載平衡器名稱為:<LB Name>

運作狀態變更

環境運作狀態變更

資訊/警告

環境運作狀態已轉換為 <healthStatus>.

環境運作狀態變更

資訊/警告

環境運作狀態已從 <healthStatus> 轉換至 <healthStatus>。

受管更新狀態變更

已啟動受管更新

INFO

受管平台更新正在進行中。

受管更新失敗

INFO

受管更新失敗,請在 %s 分鐘內重試。