建立使用 Lambda 的 Step Functions 狀態機 - AWS Step Functions

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

建立使用 Lambda 的 Step Functions 狀態機

在本自學課程中,您將使用建立單一步驟工作流程 AWS Step Functions 調用 AWS Lambda 功能。

注意

Step Functions 是基於狀態機任務。在 Step Functions 中,狀態機器稱為工作流程,這是一系列事件驅動的步驟。工作流程中的每個步驟稱為狀態。例如,「任務」狀態表示另一個工作單位 AWS 服務執行,例如呼叫另一個 AWS 服務 或API。執行工作流程執行工作的執行個體稱為「Step Functions」中的行。

如需詳細資訊,請參閱:

Lambda 非常適合Task各州,因為 Lambda 函數是無伺服器且容易撰寫的。您可以撰寫程式碼 AWS Management Console 或您最喜歡的編輯器。 AWS 處理為您的功能和運行它提供計算環境的詳細信息。

步驟 1:建立 Lambda 函數

您的 Lambda 函數會接收事件資料並傳回問候訊息。

重要

確保您的 Lambda 函數處於相同 AWS 帳戶和 AWS 區域 作為你的狀態機。

  1. 開啟 Lambda 主控台,然後選擇建立函數

  2. Create function (建立函數) 頁面上,選擇 Author from scratch (從頭開始撰寫)

  3. 針對 函數名稱 ,請輸入 HelloFunction

  4. 保留所有其他選項的預設選取項,然後選擇 [建立函數]。

  5. 建立 Lambda 函數後,複製頁面右上角顯示的函數的 Amazon 資源名稱 (ARN)。下面是一個例子ARN:

    arn:aws:lambda:us-east-1:123456789012:function:HelloFunction
  6. 將 Lambda 函數的下列程式碼複製到 HelloFunction頁面。

    export const handler = async(event, context, callback) => { callback(null, "Hello from " + event.who + "!"); };

    此程式碼會使用輸入資料的 who 欄位來組合問候語,該欄位由傳送到您函數的 event 物件提供。稍後您會在開始新的執行時,為此函數新增輸入資料。callback 方法會傳回函數中的組合問候語。

  7. 選擇部署

步驟 2:測試 Lambda 函數

測試您的 Lambda 函數以查看它在運作中。

  1. 選擇 測試

  2. 事件名稱輸入 HelloEvent

  3. 以下列項目取代事件JSON資料。

    { "who": "AWS Step Functions" }

    "who"項目對應於 Lambda 函數中的event.who欄位,完成問候語。運行狀態機時,您將輸入相同的輸入數據。

  4. 選擇保存,然後選擇測試

  5. 若要檢閱測試結果,在 Execution result (執行結果) 下,展開 Details (詳細資訊)。

步驟 3:建立狀態機

使用 Step Functions 數主控台建立狀態機器,以呼叫您在步驟 1 中建立的 Lambda 函數。

  1. 開啟 Step Functions 主控台,然後選擇建立狀態機器

    重要

    確保您的狀態機處於相同狀態 AWS 帳戶和區域做為您先前建立的 Lambda 函數。

  2. 在「選擇範本」對話方塊中,選取「空白」。

  3. 選擇選以在中開啟工作流程工作室設計模式

  4. 在左側的「狀態」瀏覽器中,確定您已選取「動作」索引標籤。然後,拖放 AWS Lambda 調用API到這裡標記為拖動第一個狀態的空白狀態

  5. 在右側的「Inspector」面板中,設定 Lambda 函數:

    1. 在 [API參數] 區段中,選擇您先前在 [函數名稱] 下拉式清單中建立的 Lambda 數。

    2. 將預設選取項保留在裝載下拉式清單中。

  6. (選擇性) 選擇「定義」以檢視狀態機器的 Amazon States Language (ASL) 定義,該定義會根據您在「動」標籤和「Inspector 查程式」面板中的選擇自動產生。

  7. 指定狀態機的名稱。若要執行此操作,請選擇的預設狀態機器名稱旁邊的編輯圖示MyStateMachine。然後,在 [狀態機器組態] 中,在 [狀態機器名稱] 方塊中指定名稱

    例如,輸入名稱 LambdaStateMachine

    注意

    狀態機器、執行項目和活動工作的名稱長度不得超過 80 個字元。這些名稱對於您的帳戶而言必須是唯一的, AWS 區域,且不得包含下列任何一項:

    • 空白

    • 萬用字元 (? *)

    • 括號字元 (< > { } [ ])

    • 特殊字元 (" # % \ ^ | ~ ` $ & , ; : /)

    • 控制字符(\\u0000-\\u001f\\u007f-\\u009f)。

    Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。

  8. (選擇性) 在狀態機器組態中,指定其他工作流程設定,例如狀態機器類型及其執行角色。

    在本教學課程中,請保留狀態機器設定中的所有預設選項。

  9. 選擇 Create (建立)。

  10. 在 [確認角色建立] 對話方塊中,選擇 [確認] 以繼續。

    您也可以選擇 [檢視角色設定] 以返回 [狀態機器組態]。

    注意

    如果刪除 Step Functions 所建立的IAM角色,則 Step Functions 稍後無法重新建立。同樣地,如果您修改角色 (例如,從原則中的主參與者中移除 Step Functions),IAM則 Step Functions 稍後無法還原其原始設定。

步驟 4:運行狀態機

建立狀態機之後,您可以執行它。

  1. 在 [狀態電腦] 頁面上,選擇LambdaStateMachine

  2. 選擇 Start execution (開始執行)

    此時會顯示「開始執行」對話方塊。

  3. (選擇性) 輸入自訂執行名稱,以覆寫產生的預設值。

    非ASCII名稱和記錄

    Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。

  4. 在「入」區域中,以下列項目取代範例執行資料。

    { "who" : "AWS Step Functions" }

    "who"是您的 Lambda 函數用來獲取問候人員姓名的密鑰名稱。

  5. 選擇 Start Execution (開始執行)

    您的狀態機的執行開始,並顯示一個顯示正在運行執行的新頁面。

  6. 「Step Functions」主控台會將您引導至標題為執行 ID 的頁面。此頁面稱為「執行詳細資訊」頁面。在此頁面上,您可以在執行進行時或完成之後複查執行結果。

    若要複查執行結果,請在「圖形」檢視中選擇個別狀態,然後選擇步驟詳情窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。如需有關可在「執行詳細資訊」頁面檢視之執行資訊的詳細資訊,請參閱執行細節概述

注意

您也可以在從狀態機器叫用 Lambda 時傳遞承載。如需透過在Parameters欄位中傳遞承載來叫用 Lambda 的詳細資訊和範例,請參閱調用 AWS Lambda 具有 Step Functions 的功能