使用 自動化 Step Functions 事件交付 EventBridge - AWS Step Functions

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

使用 自動化 Step Functions 事件交付 EventBridge

使用 EventBridge,您可以從 Step Functions 標準工作流程中選取事件,以傳送至其他服務進行額外處理。此技術提供彈性的方式,可鬆散連接元件並監控您的 資源。

Amazon EventBridge 是一種無伺服器服務,可將應用程式元件連接在一起,以建置可擴展的事件驅動型應用程式。事件驅動架構是一種建置鬆耦合軟體系統的方式,透過發射和回應事件來共同運作。事件代表狀態變更或更新。

透過使用 EventBridge 將 Step Functions 事件交付至其他服務,您可以監控標準工作流程,而無需持續呼叫 DescribeExecutionAPI以取得 狀態。狀態機器執行中的狀態變更會自動傳送至 EventBridge 。您可以使用這些事件來鎖定服務。例如,事件可能會叫用 AWS Lambda 函數、發佈訊息至 Amazon Simple Notification Service (AmazonSNS) 主題,甚至執行另一個SFN工作流程。

事件交付的運作方式

Step Functions 會產生事件,並將事件傳送至預設 EventBridge 事件匯流排,該匯流排會自動佈建在每個 AWS 帳戶中。事件匯流排是接收事件,並將事件傳遞至零個或多個目的地或目標的路由器。目標是其他服務 AWS 。您可以指定事件匯流排的規則,以比較事件與規則的事件模式。當事件符合模式時,事件匯流排會將事件傳送至指定的目標 (s)。下圖顯示此程序:

AWS 服務會將事件傳送至 EventBridge ,其中規則會比對事件並將其傳送至目標。
標準與快速工作流程

只有標準工作流程會向 發出事件 EventBridge。若要監控快速工作流程的執行,您可以使用 CloudWatch Logs。請參閱 登入 CloudWatch 日誌

Step Functions 事件

Step Functions 會自動將下列事件傳送至預設 EventBridge 事件匯流排。符合規則事件模式的事件會盡最大努力交付至指定的目標。事件可能未依順序交付。

如需詳細資訊,請參閱《Amazon 使用者指南》中的EventBridge 事件 EventBridge

事件詳細資訊類型 描述

執行狀態變更

代表狀態機器執行狀態的變更。

使用 傳遞 Step Functions 事件 EventBridge

若要讓 EventBridge 預設事件匯流排將 Step Functions 事件傳送至目標,您必須建立規則。每個規則都包含一個事件模式,與事件匯流排上收到的每個事件 EventBridge 相符。如果事件資料符合指定的事件模式, 會將該事件 EventBridge 傳遞至規則的目標 (s)。

如需建立事件匯流排規則的完整說明,請參閱EventBridge 《 使用者指南》中的建立對事件做出反應的規則

您也可以從 Step Functions 主控台為特定狀態機器建立事件匯流排規則:

  • 在狀態機器的詳細資訊頁面上,選擇動作,然後選擇建立EventBridge規則

    EventBridge 主控台會開啟建立規則頁面,並選取狀態機器做為規則的事件來源。

  • 請遵循 EventBridge 使用者指南建立對事件做出反應的規則中詳述的程序。

建立符合 Step Functions 事件的事件模式

每個事件模式都是一個JSON物件,其中包含:

  • 識別傳送事件之服務的 source 屬性。對於 Step Functions 事件,來源為 aws.states

  • (選擇性):包含要比對之事件類型陣列的 detail-type 屬性。

  • (選擇性):包含要比對的任何其他事件資料的 detail 屬性。

例如,下列事件模式會比對來自 Step Functions 的所有執行狀態變更事件:

{ "source": ["aws.states"], "detail-type": ["Step Functions Execution Status Change"] }

雖然下列範例符合與特定狀態機器相關聯的特定執行,但當該執行失敗或逾時時:

{ "source": ["aws.states"], "detail-type": ["Step Functions Execution Status Change"], "detail": { "status": ["FAILED", "TIMED_OUT"], "stateMachineArn": ["arn:aws:states:us-east-1:123456789012:stateMachine:state-machine"], "executionArn": ["arn:aws:states:us-east-1:123456789012:execution:state-machine-name:execution-name"] } }

如需撰寫事件模式的詳細資訊,請參閱 EventBridge 使用者指南中的事件模式

使用 事件觸發 Step Functions 狀態機器

您也可以指定 Step Functions 狀態機器做為 EventBridge 事件匯流排規則的目標。這可讓您觸發 Step Functions 工作流程的執行,以回應來自其他服務的事件 AWS 。

如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的 Amazon 目標 EventBridge

Step Functions 事件詳細資訊參考

AWS 服務中的所有事件都有一組常見的欄位,其中包含事件相關中繼資料,例如事件來源 AWS 的服務、事件產生的時間、事件發生的帳戶和區域,以及其他。如需這些一般欄位的定義,請參閱《Amazon EventBridge 使用者指南》中的事件結構參考

此外,每個事件都有一個 detail 欄位,其中包含該特定事件的特定資料。

使用 EventBridge 選取和管理 Step Functions 事件時,請記住下列事項:

  • Step Functions 中所有事件source的欄位都設定為 aws.states

  • detail-type 欄位指定事件類型。

    例如:Step Functions Execution Status Change

  • detail 欄位包含該特定事件的特定資料。

如需建構事件模式以讓規則符合 Step Functions 事件的相關資訊,請參閱《Amazon EventBridge 使用者指南》中的事件模式

如需事件及其 EventBridge 處理方式的詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的 Amazon 事件 EventBridge

執行狀態變更

代表狀態機器執行狀態的變更。

以下包含 sourcedetail-type 欄位,因為其中包含 Step Functions 事件的特定值。如需所有事件中包含的其他中繼資料欄位的定義,請參閱《Amazon EventBridge 使用者指南》中的事件結構參考

事件結構

{ . . ., "detail-type": "Step Functions Execution Status Change", "source"": "aws.states", . . ., "detail"": { "executionArn"" : "string", "input" : "string", "inputDetails" : { "included" : "boolean" }, "name" : "string", "output" : "string", "outputDetails" : { "included" : "boolean" }, "startDate" : "integer", "stateMachineArn" : "string", "stopDate" : "integer", "status" : "RUNNING | SUCCEEDED | FAILED | TIMED_OUT | ABORTED | PENDING_REDRIVE" } }

備註

執行狀態變更事件的定義中可以包含輸入屬性。對於某些事件,執行狀態變更事件的定義中也可以包含輸出屬性。

  • 如果傳送至 的合併逸出輸入和逸出輸出 EventBridge 超過 248 KiB,則會排除輸入。同樣地,如果逸出輸出超過 248 KiB,則輸出將被排除。這是事件配額的結果。

  • 您可以判斷承載是否已使用 inputDetailsoutputDetails 屬性截斷。如需詳細資訊,請參閱 CloudWatchEventsExecutionDataDetails 資料類型

  • 對於標準工作流程,請使用 DescribeExecution 查看完整的輸入和輸出。

    DescribeExecution 不適用於 Express Workflows。如果您想要查看完整的輸入/輸出,您可以:

範例

範例 執行狀態變更:執行已開始
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws::states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "RUNNING", "startDate": 1551225271984, "stopDate": null, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }
範例 執行狀態變更:執行成功
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "SUCCEEDED", "startDate": 1547148840101, "stopDate": 1547148840122, "input": "{}", "inputDetails": { "included": true }, "output": "\"Hello World!\"", "outputDetails": { "included": true } } }
範例 執行狀態變更:執行失敗
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "FAILED", "startDate": 1551225146847, "stopDate": 1551225151881, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }
範例 執行狀態變更:逾時
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "TIMED_OUT", "startDate": 1551224926156, "stopDate": 1551224927157, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null
範例 執行狀態變更:已中止
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "ABORTED", "startDate": 1551225014968, "stopDate": 1551225017576, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }