Step Functions ワークフロー内の項目を同時に反復処理する - AWS Step Functions

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

Step Functions ワークフロー内の項目を同時に反復処理する

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

Map 状態をワークフローに含めることにより、インラインモードと分散モードの 2 つの マップステート処理モード のどちらかを使用して、データ処理などのタスクを実行できます。Map 状態を設定するには、状態Map処理モードとその定義を指定するJSONオブジェクトItemProcessorを含む を定義します。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 関数は、ワークフローに追加する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 コンソールで、Lambda get-credit-score 関数を呼び出して、信用調査機関Mapの状態のリストを取得によって返されるすべての信用調査機関の申請者の信用スコアを確認する状態を追加します。

  1. CreditCardWorkflow ステートマシンを開いて更新します。

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

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

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

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

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

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

次のステップ

次のステップである ではワークフローを実行 、ワークフローの実行方法について説明します。