チュートリアル 5: 項目のコレクションを同時に反復処理する - AWS Step Functions

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

チュートリアル 5: 項目のコレクションを同時に反復処理する

前回のチュートリアルでは、Parallel 状態を使用して、ステップの個別の分岐を並行して実行する方法を学習しました。Map 状態を使用すると、データセット内の各項目に対して一連のワークフローステップを実行できます。Map 状態の反復は並列で実行されるため、データセットを迅速に処理できます。

Map 状態をワークフローに含めることにより、インラインモードと分散モードの 2 つの マップステート処理モード のどちらかを使用して、データ処理などのタスクを実行できます。Map 状態を設定するには、ItemProcessor を定義します。これには Map 状態の処理モードと、その定義を指定する JSON オブジェクトが含まれます。このチュートリアルでは、Map 状態をデフォルトのインラインモードで実行します。このモードでは、最大 40 回の同時反復がサポートされています。分散モードMap 状態を実行すると、最大 10,000 の並列の子ワークフローの実行がサポートされます。

ワークフロー実行が Map 状態に入力されると、ステート入力で指定された JSON 配列を反復処理します。各配列項目に対し、その Map 状態を含むワークフローのコンテキストで、対応する反復処理が実行されます。すべての反復が完了すると、Map 状態は ItemProcessor によって処理された各項目の出力を含む配列を返します。

このチュートリアルでは、Map 状態をインラインモードで使用し、一連の信用調査機関を反復処理して、申請者のクレジットスコアを取得する方法を学習します。これを行うには、まず Amazon DynamoDB のテーブルに保存されているすべての信用調査機関の名前を取得し、次に Map 状態を使用して信用調査機関のリストをループ処理して、各機関から報告された申請者のクレジットスコアを取得します。

ステップ 1: すべての信用調査機関の名前を保存する DynamoDB テーブルを作成する

このステップでは、DynamoDB コンソールを使用して GetCreditBureau という名前のテーブルを作成します。このテーブルでは、文字列属性の Nameパーティションキーとして使用します。このテーブルには、申請者のクレジットスコアを取得するすべての信用調査機関の名前を格納します。

  1. AWS Management Console にサインインして DynamoDB コンソール (https://console.aws.amazon.com/dynamodb/) を開きます。

  2. コンソールのナビゲーションペインで、[テーブル] を選択し、次に [テーブルを作成] を選択します。

  3. テーブルの詳細を次のように入力します。

    1. [Table name] (テーブル名) に「GetCreditBureau」と入力します。

    2. [パーティションキー] に「Name」と入力します。

    3. デフォルトの選択を維持して、[テーブルを作成] を選択します。

  4. テーブルを作成したら、[テーブル]リストで [GetCreditBureau] テーブルを選択します。

  5. [アクション] を選択し、次に [項目を作成] を選択します。

  6. [値] には、信用調査機関の名前を入力します。例えば、CredTrack です。

  7. [項目を作成] を選択します。

  8. このプロセスを繰り返して、他の信用調査機関の名前の項目を作成します。例えば、KapFinnCapTrust です。

ステップ 2: ステートマシンの更新 - DynamoDB テーブルから結果を取得する

Step Functions コンソールで Task 状態を追加し、AWS SDK 統合を使用して、ステップ 1 で作成した DynamoDB テーブルから信用調査機関の名前を取得します。このステップの出力は、このチュートリアルのワークフローに追加する Map の入力として使用します。

  1. [CreditCardWorkflow] ステートマシンを開き、これを更新します。

  2. [信用調査機関のリストを取得] を選択します。

  3. API パラメータには、[テーブル名] の値に GetCreditBureau を指定します。

ステップ 3: すべての信用調査機関のクレジットスコアを返す Lambda 関数を作成する

このステップでは、すべての信用調査機関の名前を入力として受け取り、これらの各信用調査機関の申請者のクレジットスコアを返す Lambda 関数を作成します。この Lambda 関数は、このチュートリアルのステップ 4 でワークフローに追加する Map 状態から呼び出されます。

  1. Node.js 16.x Lambda 関数を作成し、これに get-credit-score という名前を付けます。

  2. [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 + "."); };
  3. Lambda 関数をデプロイします。

ステップ 4: ステートマシンの更新 - マップステートを追加してクレジットスコアを反復取得する

Step Functions コンソールで、[get-credit-score] Lambda 関数を呼び出して、[信用調査機関のリストを取得] 状態によって返されたすべての信用調査機関の申請者のクレジットスコアを確認する Map 状態を追加します。

  1. [CreditCardWorkflow] ステートマシンを開き、これを更新します。

  2. [すべての信用調査機関からスコアを取得] 状態を選択します。

  3. [設定] タブで、[項目配列へのパスを指定] を選択し、[$.Items] と入力します。

  4. Map 状態内のステップで、[すべてのスコアを取得] を選択します。

  5. [設定] タブで、[統合タイプ][最適化] が選択されていることを確認します。

  6. [関数] 名に [get-credit-score] Lambda 関数の名前を入力し始め、表示されるドロップダウンリストから選択します。

  7. [ペイロード] には、[ペイロードなし] を選択します。