同時重複執行 Step Functions 工作流程中的項目 - AWS Step Functions

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

同時重複執行 Step Functions 工作流程中的項目

在上一個主題中定義 parallel 工作,您學習瞭如何使用Parallel狀態並行執 parallel 不同的步驟分支。使用狀Map態,您可以針對資料集中的每個項目執行一組工作流程步驟。Map狀態的反覆項目會 parallel 執行,因此可以快速處理資料集。

透過在工作流程中包含Map狀態,您可以使用以下兩種方式之一來執行工作,例如資料處理對映狀態處理模式:內嵌模式和分散式模式。若要配置Map狀態,您可以定義ItemProcessor,其中包含指定Map狀態處理模式及其定義的JSON物件。您將在默認的內聯模式下運行Map狀態,該模式最多支持 40 個並發迭代。當您以分散式模式執行Map狀態時,它最多支援 10,000 個 parallel 子工作流程執行。

當您的工作流程執行進入Map狀態時,它會重複執行狀態輸入中指定的JSON陣列。對於每個陣列項目,其對應的版序會在包含Map狀態的工作流程前後關聯中執行。當所有迭代完成時,Map狀態將返回一個數組,其中包含由處理的每個項目的輸出ItemProcessor

您將使用內聯模式下的Map狀態,通過迭代一組信用機構來獲取申請人的信用評分。若要這麼做,您首先擷取 Amazon DynamoDB 表格中存放的所有信用機構名稱,然後使用Map州/省循環檢視信用機構清單,以擷取每個機構報告的申請人的信用評分。

步驟 1:建立 DynamoDB 表格以儲存所有信用機構的名稱

在此步驟中,您可以GetCreditBureau使用 DynamoDB 主控台建立名為的資料表。此資料表使用字串屬性 Name 作為分索引鍵。在此表格中,儲存您要從中擷取申請人信用評分的所有信用機構的名稱。

  1. 登入 AWS Management Console 並開啟 DynamoDB 支援主控台,位於。 https://console.aws.amazon.com/dynamodb/

  2. 在主控台的導覽窗格中,選擇 [格],然後選擇 [建立資料表]。

  3. 輸入資料表詳細資訊,如下所示:

    1. 針對資料表名稱,輸入 GetCreditBureau

    2. 針對 Partition key (分割區索引鍵),輸入 Name

    3. 保留預設選項,然後選擇「建立表格」。

  4. 建立表格後,在「格」清單中選擇GetCreditBureau表格。

  5. 選擇「操作」,然后選擇「創建物件」。

  6. 中,輸入信用機構的名稱。例如:CredTrack

  7. 選擇建立項目

  8. 重複此過程並為其他信用機構的名稱創建項目。例如,KapFinnCapTrust

步驟 2:更新狀態機器 — 從 DynamoDB 表格擷取結果

在 Step Functions 主控台中,您將新增Task狀態並使用AWS SDK整合,從您在步驟 1 中建立的 DynamoDB 表格擷取信用機構的名稱。您將使用此步驟的輸出作為稍後在工作流程中新增之Map狀態的輸入。

  1. 打開狀CreditCardWorkflow態機進行更新。

  2. 選擇 [取得信用機構狀態] 清單

  3. 對於「API參數」,請將「表格名稱」值指定為GetCreditBureau

步驟 3:建立 Lambda 函數,以傳回所有信用機構的信用評分

在此步驟中,您會建立 Lambda 函數,以接收所有信用機構的名稱作為輸入,並傳回每個信用機構的申請人的信用評分。此 Lambda 函數將從您將在工作流程中新增的Map狀態叫用。

  1. 創建一個 Node.js 16.x Lambda 函數並將其get-credit-score命名。

  2. 在標題為的頁面上 get-credit-score,將以下代碼粘貼到「代碼源代碼」區域中。

    function getScore(arr) { let temp; let i = Math.floor((Math.random() * arr.length)); temp = arr[i]; console.log(i); console.log(temp); return temp; } const arrScores = [700, 820, 640, 460, 726, 850, 694, 721, 556]; exports.handler = (event, context, callback) => { let creditScore = getScore(arrScores); callback(null, "Credit score pulled is: " + creditScore + "."); };
  3. 部署 Lambda 函數。

第 4 步:更新狀態機-添加地圖狀態以迭代獲取信用評分

在「Step Functions 數」主控台中,您可以新增一個Map狀態,以呼叫 get-credit-scoreLambda 函數,以檢查申請人的信用評分,以檢查由「取得信用機構」狀態傳回的所有信用機構的信用評分。

  1. 打開狀CreditCardWorkflow態機進行更新。

  2. 選擇取得來自所有信用機構州的分數。

  3. 在 [組態] 索引標籤中,選擇 [提供項目陣列的路徑],然後輸入$.Items

  4. 選擇「獲取所有分數」進入Map狀態。

  5. 在「組態」索引標籤中,確定已選取「整合類型」「最佳化」。

  6. 對於函數名稱,請開始輸入 get-credit-scoreLambda 函數的名稱,然後從出現的下拉式清單中選擇它。

  7. 對於「承載」,選擇「無承載」。

後續步驟

在下一個步驟中執行工作流程 ,您將學習如何執行工作流程。