本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
同時重複執行 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 作為分割索引鍵。在此表格中,儲存您要從中擷取申請人信用評分的所有信用機構的名稱。
登入 AWS Management Console 並開啟 DynamoDB 支援主控台,位於。 https://console.aws.amazon.com/dynamodb/
在主控台的導覽窗格中,選擇 [表格],然後選擇 [建立資料表]。
輸入資料表詳細資訊,如下所示:
針對資料表名稱,輸入
GetCreditBureau
。針對 Partition key (分割區索引鍵),輸入
Name
。保留預設選項,然後選擇「建立表格」。
建立表格後,在「表格」清單中選擇GetCreditBureau表格。
選擇「操作」,然后選擇「創建物件」。
在值中,輸入信用機構的名稱。例如:
CredTrack
。選擇建立項目。
重複此過程並為其他信用機構的名稱創建項目。例如,
KapFinn
和CapTrust
。
步驟 2:更新狀態機器 — 從 DynamoDB 表格擷取結果
在 Step Functions 主控台中,您將新增Task狀態並使用AWS SDK整合,從您在步驟 1 中建立的 DynamoDB 表格擷取信用機構的名稱。您將使用此步驟的輸出作為稍後在工作流程中新增之Map
狀態的輸入。
打開狀CreditCardWorkflow態機進行更新。
選擇 [取得信用機構狀態] 清單。
對於「API參數」,請將「表格名稱」值指定為
GetCreditBureau
。
步驟 3:建立 Lambda 函數,以傳回所有信用機構的信用評分
在此步驟中,您會建立 Lambda 函數,以接收所有信用機構的名稱作為輸入,並傳回每個信用機構的申請人的信用評分。此 Lambda 函數將從您將在工作流程中新增的Map
狀態叫用。
創建一個 Node.js 16.x Lambda 函數並將其
get-credit-score
命名。在標題為的頁面上 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 + "."); };
部署 Lambda 函數。
第 4 步:更新狀態機-添加地圖狀態以迭代獲取信用評分
在「Step Functions 數」主控台中,您可以新增一個Map
狀態,以呼叫 get-credit-scoreLambda 函數,以檢查申請人的信用評分,以檢查由「取得信用機構」狀態傳回的所有信用機構的信用評分。
打開狀CreditCardWorkflow態機進行更新。
選擇取得來自所有信用機構州的分數。
在 [組態] 索引標籤中,選擇 [提供項目陣列的路徑],然後輸入
$.Items
。選擇「獲取所有分數」進入
Map
狀態。在「組態」索引標籤中,確定已選取「整合類型」「最佳化」。
對於函數名稱,請開始輸入 get-credit-scoreLambda 函數的名稱,然後從出現的下拉式清單中選擇它。
對於「承載」,選擇「無承載」。
後續步驟
在下一個步驟中執行工作流程 ,您將學習如何執行工作流程。