跳至內容

如何設定 Lambda 函式,以在 AWS Step Functions 中的狀態變更時調用?

2 分的閱讀內容
0

我想在 AWS Step Functions 中的狀態變更時調用 AWS Lambda 函式。我該怎麼做?

解決方法

注意事項: 這些指示說明如何使用 Amazon EventBridge 事件規則,以在 Step Functions 中狀態變更時調用 Lambda 函式。當您依照步驟操作時,請確認您執行以下事項:

  • 確認您用來調用 Lambda 函式的事件變更屬於支援的 API 動作
  • 在相同的 AWS 區域中建立 Step Functions 狀態機、Lambda 函式與 EventBridge 事件規則。

為 Step Functions 與 Lambda 建立 IAM 角色

1.    為 Step Functions 建立 AWS Identity and Access Management (IAM) 角色。當您建立 IAM 角色時,請執行以下事項:
授予 IAM 角色執行您使用案例所需各項動作的權限。
允許動作 lambda:InvokeFunction,讓您的狀態機調用 Lambda 函式。
**注意事項:**受管政策 AWSLambdaRole 包含調用 Lambda 函式所需的權限。

2.    建立 Lambda 執行角色,授予函式將日誌上傳至 Amazon CloudWatch 的權限。
**注意事項:**受管政策 AWSLambdaBasicExecutionRole 授予函式將日誌上傳至 CloudWatch 的基本權限。

建立 Step Functions 狀態機

在 Step Functions 主控台中建立狀態機。在 IAM role for executions (IAM 執行角色),選擇您為 Step Functions 建立的既有角色。

如需更多資訊,請參閱什麼是 AWS Step Functions?

建立已設定為列印所接收事件的 Lambda 函式

1.    在 Lambda 主控台中建立函式。在 Execution role (執行角色),選擇您為 Lambda 建立的既有角色。

2.    在 Lambda 主控台 中,使用程式碼編輯器更新函式程式碼,使函式在執行時列印所接收的事件。

範例 Python 程式碼,指示 Lambda 函式列印所接收的事件

import json

def lambda_handler(event, context):
print("Received event: " + json.dumps(event)) return {
'statusCode': 200,
'body': json.dumps("Hello")
}

如需更多資訊,請參閱使用 Python 建置 Lambda 函式

建立 EventBridge 事件規則,以在 Step Functions 中狀態變更時調用 Lambda 函式

1.    開啟 EventBridge console (EventBridge 主控台)。

2.    在左側導覽窗格的 Events (事件) 下,選擇 Rules (規則)。

3.    選擇 Create rule (建立規則)。

4.    在 Name (名稱),輸入規則名稱。

5.    在 Define pattern (定義模式),選擇 Event Pattern (事件模式)。

6.    在 Event matching pattern (事件比對模式),選擇 Pre-defined pattern by service (依服務預先定義的模式)。

7.    在 Service provider (服務提供者),選擇 AWS

8.    在 Service Name (服務名稱),選擇 Step Functions

9.    在 Event Type (事件類型),選擇 Step Functions Execution Status Change (Step Functions 執行狀態變更)。

**注意事項:**您也可以選擇 All Events (所有事件),讓所有 Step Functions 事件啟動規則。或者,您可以選擇 AWS API Call through CloudTrail (透過 CloudTrail 的 AWS API 呼叫),讓特定 Step Functions API 呼叫事件 (例如 StartExecution) 啟動規則。如需更多資訊,請參閱來自 AWS 服務的事件

10.    選擇您要啟動事件的狀態、狀態機 Amazon Resource Names (ARNs),以及執行 ARN。您可以為每種類型的觸發條件選擇 Any (任何),或為每個觸發條件指定 Specific (特定) 狀態或 ARN。

11.    在 Select targets (選取目標) 下,確認 Lambda 函式為目標類型。

12.    在 Function (函式),選擇您建立的 Lambda 函式

13.    選擇 Create rule (建立規則)。

如需更多資訊,請參閱 Amazon EventBridge 事件以及 Step Functions 執行狀態變更的 EventBridge

測試您的設定

1.    在 Step Functions 主控台中,啟動狀態機的新執行

2.    在 CloudWatch 主控台中,於左側導覽窗格的 Logs (日誌) 下,選擇 Log groups (日誌群組)。

3.    選擇由 Lambda 函式建立的日誌串流。

4.    在日誌串流中確認事件詳細資訊。

**注意事項:**新的執行開始後,日誌串流可能需要數分鐘才會出現。


相關資訊

使用 CloudWatch 監控 Step Functions

建立使用 Lambda 的 Step Functions 狀態機

AWS 官方已更新 5 年前