本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立使用 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 區域 作為你的狀態機。
-
開啟 Lambda 主控台
,然後選擇建立函數。 -
在 Create function (建立函數) 頁面上,選擇 Author from scratch (從頭開始撰寫)。
-
針對 函數名稱 ,請輸入
HelloFunction
。 -
保留所有其他選項的預設選取項,然後選擇 [建立函數]。
-
建立 Lambda 函數後,複製頁面右上角顯示的函數的 Amazon 資源名稱 (ARN)。下面是一個例子ARN:
arn:aws:lambda:us-east-1:123456789012:function:
HelloFunction
-
將 Lambda 函數的下列程式碼複製到
HelloFunction
頁面。export const handler = async(event, context, callback) => { callback(null, "Hello from " + event.who + "!"); };
此程式碼會使用輸入資料的
who
欄位來組合問候語,該欄位由傳送到您函數的event
物件提供。稍後您會在開始新的執行時,為此函數新增輸入資料。callback
方法會傳回函數中的組合問候語。 -
選擇部署。
步驟 2:測試 Lambda 函數
測試您的 Lambda 函數以查看它在運作中。
-
選擇 測試。
-
事件名稱輸入
HelloEvent
。 -
以下列項目取代事件JSON資料。
{ "who": "AWS Step Functions" }
"who"
項目對應於 Lambda 函數中的event.who
欄位,完成問候語。運行狀態機時,您將輸入相同的輸入數據。 -
選擇保存,然後選擇測試。
-
若要檢閱測試結果,在 Execution result (執行結果) 下,展開 Details (詳細資訊)。
步驟 3:建立狀態機
使用 Step Functions 數主控台建立狀態機器,以呼叫您在步驟 1 中建立的 Lambda 函數。
-
開啟 Step Functions 主控台
,然後選擇建立狀態機器。 重要
確保您的狀態機處於相同狀態 AWS 帳戶和區域做為您先前建立的 Lambda 函數。
-
在「選擇範本」對話方塊中,選取「空白」。
-
選擇選取以在中開啟工作流程工作室設計模式。
-
在左側的「狀態」瀏覽器中,確定您已選取「動作」索引標籤。然後,拖放 AWS Lambda 調用API到這裡標記為拖動第一個狀態的空白狀態。
-
在右側的「Inspector」面板中,設定 Lambda 函數:
-
在 [API參數] 區段中,選擇您先前在 [函數名稱] 下拉式清單中建立的 Lambda 函數。
-
將預設選取項保留在裝載下拉式清單中。
-
-
(選擇性) 選擇「定義」以檢視狀態機器的 Amazon States Language (ASL) 定義,該定義會根據您在「動作」標籤和「Inspector 查程式」面板中的選擇自動產生。
-
指定狀態機的名稱。若要執行此操作,請選擇的預設狀態機器名稱旁邊的編輯圖示MyStateMachine。然後,在 [狀態機器組態] 中,在 [狀態機器名稱] 方塊中指定名稱。
例如,輸入名稱
LambdaStateMachine
。注意
狀態機器、執行項目和活動工作的名稱長度不得超過 80 個字元。這些名稱對於您的帳戶而言必須是唯一的, AWS 區域,且不得包含下列任何一項:
-
空白
-
萬用字元 (
? *
) -
括號字元 (
< > { } [ ]
) -
特殊字元 (
" # % \ ^ | ~ ` $ & , ; : /
) -
控制字符(
\\u0000
-\\u001f
或\\u007f
-\\u009f
)。
Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。
-
-
(選擇性) 在狀態機器組態中,指定其他工作流程設定,例如狀態機器類型及其執行角色。
在本教學課程中,請保留狀態機器設定中的所有預設選項。
-
選擇 Create (建立)。
-
在 [確認角色建立] 對話方塊中,選擇 [確認] 以繼續。
您也可以選擇 [檢視角色設定] 以返回 [狀態機器組態]。
注意
如果刪除 Step Functions 所建立的IAM角色,則 Step Functions 稍後無法重新建立。同樣地,如果您修改角色 (例如,從原則中的主參與者中移除 Step Functions),IAM則 Step Functions 稍後無法還原其原始設定。
步驟 4:運行狀態機
建立狀態機之後,您可以執行它。
-
在 [狀態電腦] 頁面上,選擇LambdaStateMachine。
-
選擇 Start execution (開始執行)。
此時會顯示「開始執行」對話方塊。
-
(選擇性) 輸入自訂執行名稱,以覆寫產生的預設值。
非ASCII名稱和記錄
Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。
-
在「輸入」區域中,以下列項目取代範例執行資料。
{ "who" : "AWS Step Functions" }
"who"
是您的 Lambda 函數用來獲取問候人員姓名的密鑰名稱。 -
選擇 Start Execution (開始執行)。
您的狀態機的執行開始,並顯示一個顯示正在運行執行的新頁面。
-
「Step Functions」主控台會將您引導至標題為執行 ID 的頁面。此頁面稱為「執行詳細資訊」頁面。在此頁面上,您可以在執行進行時或完成之後複查執行結果。
若要複查執行結果,請在「圖形」檢視中選擇個別狀態,然後選擇步驟詳情窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。如需有關可在「執行詳細資訊」頁面檢視之執行資訊的詳細資訊,請參閱執行細節概述。
注意
您也可以在從狀態機器叫用 Lambda 時傳遞承載。如需透過在Parameters
欄位中傳遞承載來叫用 Lambda 的詳細資訊和範例,請參閱調用 AWS Lambda 具有 Step Functions 的功能。