EventBridge (CloudWatch 事件) 用於 Step Functions 執行狀態變更 - AWS Step Functions

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

EventBridge (CloudWatch 事件) 用於 Step Functions 執行狀態變更

Amazon EventBridge 是一項 AWS 服務,可讓您回應資 AWS 源中的狀態變更。例如,您可以 EventBridge 使用下列兩種方式來回應「Step Functions 標準工作流程」的執行狀態變更:

  • 您可以設定 EventBridge 規則來回應 Step Functions 狀態機器的執行狀態變更時所發出的事件。這可讓您監控工作流程,而不需使用 DescribeExecution API 來持續輪詢。根據狀態機器執行的變更,您可以使用 EventBridge 目標來啟動新的狀態機執行、呼叫 AWS Lambda 函數、將訊息發佈到 Amazon Simple Notification Service (Amazon SNS) 主題等。

  • 您也可以將「Step Functions」狀態機器設定為中的目標 EventBridge。這可讓您觸發「Step Functions」工作流程的執行,以回應來自其他 AWS 服務的事件。

    如需詳細資訊,請參閱 Amazon EventBridge 使用者指南

但是,Express 工作流程不會向其發出事件 EventBridge。若要監視「快速工作流程」的執行,您可以使用「 CloudWatch 記錄檔」。若要這樣做,請在狀態機器執行詳細資訊頁面上,選擇監視記錄標籤。在視索引標籤上,您可以檢視事件的 CloudWatch 指標,例如執行持續時間執行錯誤計費記憶體。在 [記] 索引標籤上,您可以檢視最近的記錄和記錄設定。

提示

若要將 Express 工作流程的範例部署到您的, AWS 帳戶 並瞭解如何監視 Express 工作流程,請參閱 AWS Step Functions 工作坊監視 Express 工作流程模組。

EventBridge 有效載荷

EventBridge 事件可以在其定義中包含 input 屬性。對於某些事件, EventBridge事件也可以在其定義中包含輸出屬性。

  • 如果發送的組合轉義輸入和轉義輸出 EventBridge 超過 248KB,則輸入將被排除。同樣地,如果逸出輸出超過 248KB,則會排除輸出。這是 EventBridge事件配額的結果。

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

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

  • DescribeExecution不適用於快速工作流程。如果您想查看完整的輸入/輸出,可以使用「標準工作流程」來包裝「快速工作流程」。另一種選擇是使用 Amazon S3 ARN。如需有關使用 ARN 的資訊,請參閱使用 Amazon S3 ARN 而不是傳遞大型有效載荷

Step Functions 事件範例

以下是將事件傳送至的 Step Functions 的範例 EventBridge:

在每個案例中,在事件資料中的 detail 區段會提供與 DescribeExecution API 相同的資訊。status 欄位指出事件傳送時的執行狀態,根據發出的事件,狀態為以下其中之一:RUNNINGSUCCEEDEDFAILEDTIMED_OUTABORTED

已開始執行

{ "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 } }

將 Step Functions 事件路由至 EventBridge 主 EventBridge 控台

使用下列指示,瞭解如何在特定 Step Functions 狀態機器成功完成執行時觸發 Step Functions 狀態機器的執行。您可以使用 Amazon EventBridge 主控台指定要觸發其執行的狀態機器。

  1. 在狀態機器的 [詳細資料] 頁面上,選擇 [動作],然後選擇 [建立 EventBridge (CloudWatch 事件) 規則]。

    
            建立 EventBridge 事件規則

    或者,您也可以在 https://console.aws.amazon.com/events/ 開啟 EventBridge 主控台。在導覽窗格中,選擇「匯流排」下的「規則」。

  2. 選擇 Create rule (建立規則)。這會開啟 [定義規則詳細資訊] 頁面。

  3. 輸入規則的「名稱」(例如,StepFunctionsEventRule),並選擇性地輸入規則的「摘要」。

  4. 對於事件匯流排規則類型,請保留預設選項。

  5. 選擇下一步。這會開啟 [建置事件模式] 頁面。

  6. 在「事件來源」下,保留事件或 EventBridge 合作夥伴事件的AWS 預設選項。

  7. 保留「範例」事件和「建立方法」區段的預設選取項。

  8. 事件模式下,執行下列操作:

    1. 在 [事件來源] 下拉式清單中,保留預設的AWS 服務選項。

    2. AWS 服務下拉式清單中,選擇 Step Functions

    3. 從 [事件類型] 下拉式清單中,選取 [Step Functions 執行狀態變更]。

    4. (選擇性) 設定特定狀態、狀態機器 Amazon 資源名稱 (ARN) 或執行 ARN。對於此程序,請選擇 [特定狀態],然後從下拉式清單中選擇 [成功]。

  9. 選擇下一步。這會開啟 [選取目標] 頁面。

  10. 在 [目標類型] 下,保留預設的AWS 服務選項。

  11. 從「選取目標」下拉式清單中,選擇 AWS 服務。例如,您可以啟動 Lambda 函數,或執行 Step Functions 數狀態機器。對於此程序,請選擇 Step Functions 狀態機

  12. 狀態機下拉式清單中,選擇狀態機器。

  13. 在 [執行角色] 下,保留 [為此特定資源建立新角色] 的預設選項。

  14. 選擇下一步。這會開啟 [設定標籤] 頁面。

  15. 再次選擇下一步。這會開啟 [檢閱並建立] 頁面。

  16. 檢閱規則的詳細資訊,然後選擇 Create rule (建立規則)。

    規則隨即建立並顯示「規則」頁面,列出您的所有 Amazon EventBridge 規則。