Step Functions ワークフローで並列タスクを定義する - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Step Functions ワークフローで並列タスクを定義する

前のトピックの では条件付きロジックを追加する、ワークフローで異なるパスを選択する条件を設定します。これまでのところ、ステップは順番に実行されています。このトピックでは、 Parallel状態を使用して 2 つ以上のステップを同時に実行する方法について説明します。

Parallel 状態の両方のブランチは同じ入力を受け取りますが、各ブランチはその入力の部分を処理します。Step Functions は、各ブランチが完了するまで待ってから、次のステップに進みます。

並列状態を使用して、申請者の身元と住所を同時に確認します。

ステップ 1: Lambda 関数を作成して必要な確認を行う

このクレジットカード申請ワークフローでは、並列状態内で 2 つの Lambda 関数を呼び出して、申請者の ID と住所を確認します。これらの確認は、並列状態を使用して同時に実行します。ステートマシンが実行を完了するのは、並列分岐の両方が実行を完了した後に限ります。

[check-identity] と [check-address] の確認の Lambda 関数を作成するには
  1. 新しいタブまたはウィンドウで、Lambda コンソールを開き、 と というタイトルの 2 つの Node.js Lambda check-identity 関数を作成しますcheck-address。コンソールを使用した Lambda 関数の作成については、「AWS Lambda デベロッパーガイド」の「コンソールで Lambda の関数の作成」を参照してください。

  2. [check-identity] 関数ページを開き、[コードソース] 領域の既存のコードを次のコードに置き換えます。

    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. [check-address] 関数ページを開き、[コードソース] 領域の既存のコードを次のコードに置き換えます。

    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) をコピーし、テキストファイルに保存します。申請者の ID と住所の検証状態のサービス統合を指定するARNsときに、 関数が必要です。 の例を次に示しますARN。

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

ステップ 2: ワークフローの更新 - 並列で実行するタスクを追加する

Step Functions コンソールで、ワークフローを更新して、ステップ 1 で作成した [check-identity] Lambda 関数と [check-address] Lambda 関数とのサービス統合を指定します。

ワークフローに並列タスクを追加するには
  1. Step Functions でステートマシンを作成する で作成したワークフロープロトタイプを含む、Step Functions コンソールウィンドウを開きます。

  2. [ID の検証] 状態を選択し、[構成]タブで次の操作を行います。

    1. [統合タイプ] は、デフォルトの [最適化] のままにします。

      注記

      Step Functions を使用すると、他の と統合し AWS サービス 、ワークフローでオーケストレーションできます。サービス統合とタイプの詳細については、「他の サービスと Step Functions の統合」を参照してください。

    2. [関数名] には、ドロップダウンリストから [check-identity] Lambda 関数を選択します。

    3. [ペイロード] には、[ペイロードを入力] を選択し、サンプルのペイロードを次のものに置き換えます。

      { "email": "janedoe@example.com", "ssn": "012-00-0000" }
  3. [住所の確認] 状態を選択し、[構成]タブで次の操作を行います。

    1. [統合タイプ] は、デフォルトの [最適化] のままにします。

    2. [関数名] には、ドロップダウンリストから [check-address] Lambda 関数を選択します。

    3. [ペイロード] には、[ペイロードを入力] を選択し、サンプルのペイロードを次のものに置き換えます。

      { "street": "123 Any St", "city": "Any Town", "state": "AT", "zip": "01000" }
  4. [Next (次へ)] を選択します。

次のステップ

次のステップである では項目を反復処理する、項目を反復処理する方法を学びます。