在 Step Functions 工作流程中定義 parallel 作業 - AWS Step Functions

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

在 Step Functions 工作流程中定義 parallel 作業

在上一個主題中新增條件式邏輯,您可以設定條件以在工作流程中選擇不同的路徑。到目前為止,這些步驟已按順序運行。在本主題中,您將學習如何同時使用Parallel狀態執行兩個或多個步驟。

Parallel狀態下的兩個分支都接收相同的輸入,但是每個分支都處理特定於它的輸入部分。Step Functions 等待直到每個分支完成,然後再繼續下一步。

您將使用「平行」狀態同時檢查申請人的身份和地址。

步驟 1:建立 Lambda 函數以執行所需的檢查

此信用卡應用程式工作流程會呼叫「平行」狀態內的兩個 Lambda 函數,以檢查申請人的身分和地址。這些檢查是使用「平行」狀態同時執行的。狀態機只有在兩個 parallel 分支都完成執行之後才會完成執行。

若要建立檢查身分識別和檢查地址 Lambda 函數
  1. 在新索引標籤或視窗中,開啟 Lambda 主控台並建立兩個名為check-identity和的 Node.js Lambda 函數check-address。如需使用主控台建立 Lambda 函數的詳細資訊,請參閱在主控台中建立 Lambda 函數 AWS Lambda 開發人員指南

  2. 開啟 [檢查識別功能] 頁面,並以下列程式碼取代 [程式碼原始碼] 區域中的現有程式碼:

    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'}` }) } };
  3. 開啟 [檢查位址功能] 頁面,並以下列程式碼取代 [程式碼原始碼] 區域中的現有程式碼:

    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'}` }) } };
  4. 對於這兩個 Lambda 函數,請從函數概觀部分複製各自的 Amazon 資源名稱 (ARN),並將它們儲存在文字檔中。在為驗證申請人的身份和地址狀態指定服務集成ARNs時,您將需要該功能。下面是一個例子ARN:

    arn:aws:lambda:us-east-2:123456789012:function:HelloWorld

步驟 2:更新工作流程 — 新增要執行的 parallel 工作

在 Step Functions 主控台中,您將更新工作流程,以指定服務整合,以及您在步驟 1 中建立的檢查身分識別和檢查地址 Lambda 函數。

若要在工作流程中新增 parallel 工作
  1. 開啟包含您在中建立之工作流程原型的「Step Functions」主控台視窗在 Step Functions 中創建狀態機

  2. 選擇 [驗證身分識別] 狀態,然後在 [組態] 索引標籤中執行下列動作:

    1. 對於「整合」類型,請保留預設選取「最佳化」。

      注意

      使用 Step Functions,您可以與其他集成 AWS 服務 並在您的工作流程中協調它們。如需服務整合及其類型的詳細資訊,請參閱 整合服務與 Step Functions

    2. 對於函數名稱,從下拉式清單中選擇檢查身分 Lambda 函數。

    3. 針對「承載」,選擇「輸入承載」,然後將範例承載取代為下列作為承載:

      { "email": "janedoe@example.com", "ssn": "012-00-0000" }
  3. 選擇 [驗證位址] 狀態,然後在 [組態] 索引標籤中執行下列動作:

    1. 對於「整合」類型,請保留預設選取「最佳化」。

    2. 對於函數名稱,從下拉式清單中選擇檢查地址 Lambda 函數。

    3. 針對「承載」,選擇「輸入承載」,然後將範例承載取代為下列作為承載:

      { "street": "123 Any St", "city": "Any Town", "state": "AT", "zip": "01000" }
  4. 選擇 Next (下一步)

後續步驟

在下一步中迭代項目,您將學習如何迭代項目。