本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Step Functions 工作流程中定義 parallel 作業
在上一個主題中新增條件式邏輯,您可以設定條件以在工作流程中選擇不同的路徑。到目前為止,這些步驟已按順序運行。在本主題中,您將學習如何同時使用Parallel
狀態執行兩個或多個步驟。
Parallel
狀態下的兩個分支都接收相同的輸入,但是每個分支都處理特定於它的輸入部分。Step Functions 等待直到每個分支完成,然後再繼續下一步。
您將使用「平行」狀態同時檢查申請人的身份和地址。
步驟 1:建立 Lambda 函數以執行所需的檢查
此信用卡應用程式工作流程會呼叫「平行」狀態內的兩個 Lambda 函數,以檢查申請人的身分和地址。這些檢查是使用「平行」狀態同時執行的。狀態機只有在兩個 parallel 分支都完成執行之後才會完成執行。
若要建立檢查身分識別和檢查地址 Lambda 函數
-
在新索引標籤或視窗中,開啟 Lambda 主控台
並建立兩個名為 check-identity
和的 Node.js Lambda 函數check-address
。如需使用主控台建立 Lambda 函數的詳細資訊,請參閱在主控台中建立 Lambda 函數 AWS Lambda 開發人員指南。 -
開啟 [檢查識別功能] 頁面,並以下列程式碼取代 [程式碼原始碼] 區域中的現有程式碼:
const ssnRegex = /^\d{3}-?\d{2}-?\d{4}$/; const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; class ValidationError extends Error { constructor(message) { super(message); this.name = "CustomValidationError"; } } exports.handler = async (event) => { const { ssn, email } = event; console.log(`SSN: ${ssn} and email: ${email}`); const approved = ssnRegex.test(ssn) && emailRegex.test(email); if (!approved) { throw new ValidationError("Check Identity Validation Failed"); } return { statusCode: 200, body: JSON.stringify({ approved, message: `Identity validation ${approved ? 'passed' : 'failed'}` }) } };
-
開啟 [檢查位址功能] 頁面,並以下列程式碼取代 [程式碼原始碼] 區域中的現有程式碼:
class ValidationError extends Error { constructor(message) { super(message); this.name = "CustomAddressValidationError"; } } exports.handler = async event => { const { street, city, state, zip } = event; console.log(`Address information: ${street}, ${city}, ${state} - ${zip}`); const approved = [street, city, state, zip].every(i => i?.trim().length > 0); if (!approved) { throw new ValidationError("Check Address Validation Failed"); } return { statusCode: 200, body: JSON.stringify({ approved, message: `Address validation ${ approved ? 'passed' : 'failed'}` }) } };
-
對於這兩個 Lambda 函數,請從函數概觀部分複製各自的 Amazon 資源名稱 (ARN),並將它們儲存在文字檔中。在為驗證申請人的身份和地址狀態指定服務集成ARNs時,您將需要該功能。下面是一個例子ARN:
arn:aws:lambda:us-east-2:123456789012:function:
HelloWorld
步驟 2:更新工作流程 — 新增要執行的 parallel 工作
在 Step Functions 主控台中,您將更新工作流程,以指定服務整合,以及您在步驟 1 中建立的檢查身分識別和檢查地址 Lambda 函數。
若要在工作流程中新增 parallel 工作
-
開啟包含您在中建立之工作流程原型的「Step Functions」主控台
視窗在 Step Functions 中創建狀態機。 -
選擇 [驗證身分識別] 狀態,然後在 [組態] 索引標籤中執行下列動作:
-
對於「整合」類型,請保留預設選取「最佳化」。
注意
使用 Step Functions,您可以與其他集成 AWS 服務 並在您的工作流程中協調它們。如需服務整合及其類型的詳細資訊,請參閱 整合服務與 Step Functions
-
對於函數名稱,從下拉式清單中選擇檢查身分 Lambda 函數。
-
針對「承載」,選擇「輸入承載」,然後將範例承載取代為下列作為承載:
{ "email": "janedoe@example.com", "ssn": "012-00-0000" }
-
-
選擇 [驗證位址] 狀態,然後在 [組態] 索引標籤中執行下列動作:
-
對於「整合」類型,請保留預設選取「最佳化」。
-
對於函數名稱,從下拉式清單中選擇檢查地址 Lambda 函數。
-
針對「承載」,選擇「輸入承載」,然後將範例承載取代為下列作為承載:
{ "street": "123 Any St", "city": "Any Town", "state": "AT", "zip": "01000" }
-
-
選擇 Next (下一步)。
後續步驟
在下一步中迭代項目,您將學習如何迭代項目。