教學課程 4:定義要平行執行的多個工作 - AWS Step Functions

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

教學課程 4:定義要平行執行的多個工作

到目前為止,您已經學會瞭如何以連續的方式執行工作流程。但是,您可以使用Parallel狀態並行執行兩個或多個步驟。狀Parallel態會導致解釋器同時執行每個分支。

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

在本教學課程中,您會使用「平行」狀態來同時檢查申請人的身分和地址。

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

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

若要建立檢查身分識別和檢查地址 Lambda 函數
  1. 在新索引標籤或視窗中,開啟 Lambda 主控台,並建立兩個標題為check-identitycheck-addressNode.js 16.x Lambda 函數。如需使用主控台建立 Lambda 函數的詳細資訊,請參閱AWS Lambda開發人員指南中的主控台中的建立 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),並將它們儲存在文字檔中。在為驗證申請人的身份和地址狀態指定服務集成時,您將需要功能 ARN。以下是 ARN 的示例:

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

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

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

若要在工作流程中新增平行工作
  1. 開啟包含您在中建立之工作流程原型的「步驟函數」主控台視窗教學 1:建立狀態機的原型

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

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

      注意

      使用 Step Functions,您可以與其他功能整合,AWS 服務並在工作流程中協調它們。如需服務整合及其類型的詳細資訊,請參閱 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. 選擇 下一步