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

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

建立使用 Lambda 的 Step Functions 狀態機器

在本教學課程中,您將使用 AWS Step Functions 來叫用 AWS Lambda 函數來建立單一步驟工作流程。

注意

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

如需詳細資訊,請參閱:

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,請按一下 copy Amazon Resource Name 。以下是 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 主控台,然後選擇建立狀態機器

    重要

    請確定您的狀態機與先前建立的 Lambda 函數位於相同的 AWS 帳戶和區域。

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

  3. 選擇選取。這會在設計模式中開啟工作流程工作室

  4. 在左側的「狀態」瀏覽器中,確定您已選取「動作」索引標籤。然後,執行下列動作:

    1. 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)。

    如果您的狀態機器的類型為 Express,則可以為狀態機器的多個執行提供相同的名稱。即使多個執行具有相同的名稱,Step Functions 也會為每個 Express 狀態機器執行產生唯一的執行 ARN。

    Step Functions 可讓您建立狀態機器、執行項目和活動的名稱,以及包含非 ASCII 字元的標籤。這些非 ASCII 名稱不適用於 Amazon CloudWatch。若要確保您可以追蹤 CloudWatch 量度,請選擇僅使用 ASCII 字元的名稱。

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

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

  9. 選擇建立

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

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

    注意

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

步驟 4:運行狀態機

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

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

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

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

  3. (選擇性) 若要識別您的執行項目,您可以在「名稱」(Name) 方塊中指定執行項目的名稱。默認情況下,Step Functions 自動生成一個唯一的執行名稱。

    注意

    Step Functions 可讓您建立狀態機器、執行項目和活動的名稱,以及包含非 ASCII 字元的標籤。這些非 ASCII 名稱不適用於 Amazon CloudWatch。若要確保您可以追蹤 CloudWatch 量度,請選擇僅使用 ASCII 字元的名稱。

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

    { "who" : "AWS Step Functions" }

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

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

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

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

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

    [步驟] 詳細資料窗格的 [輸出] 索引標籤,顯示從狀態機器執行傳回的輸出。
注意

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