分散マップで CSV ファイルを処理する - AWS Step Functions

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

分散マップで CSV ファイルを処理する

このサンプルプロジェクトでは、分散マップ状態を使用して、Lambda 関数を使用して生成された CSV ファイルの 10,000 行以上を反復処理する方法を示しています。CSV ファイルにはカスタマーの注文の配送情報が含まれ、Amazon S3 バケットに保存されます。分散マップは CSV ファイル内の 10 行のバッチを繰り返し処理してデータ分析を行います。

分散マップには、遅延した注文を検出する Lambda 関数が組み込まれています。分散マップには、遅延した注文を一括処理し、遅延した注文を配列で返すインラインマップも含まれています。遅延した注文ごとに、インラインマップは Amazon SQS キューにメッセージを送信します。最後に、このサンプルプロジェクトは、マップ実行の結果を AWS アカウント 内の別の Amazon S3 バケットに保存します。

分散マップを使用すると、同時に最大 10,000 件の子ワークフローを並列実行できます。このサンプルプロジェクトでは、分散マップの最大同時実行数は 1000 に設定されており、子ワークフローの並列実行数は 1000 に制限されています。

このサンプルプロジェクトでは、ステートマシンとサポート AWS リソースを作成し、関連する IAM アクセス許可を設定します。このサンプルプロジェクトについて調べ、分散マップを使用して大規模な並列ワークロードをオーケストレーションしたり、独自のプロジェクトの出発点として使用したりする方法について説明します。

AWS CloudFormation テンプレートと追加リソース

CloudFormation テンプレートを使用して、このサンプルプロジェクトをデプロイします。このテンプレートは、 に次のリソースを作成します AWS アカウント。

  • Step Functions ステートマシン

  • ステートマシンの実行ロール。このロールは、ステートマシンが Lambda 関数の呼び出しアクションなどの他の AWS のサービス およびリソースにアクセスするために必要なアクセス許可を付与します。

  • 顧客の注文の詳細を含む CSV ファイルを生成する CSVGeneratorFunction という名前の Lambda 関数。

  • CSV ジェネレーター Lambda 関数の実行ロール このロールは、他の にアクセスするアクセス許可を関数に付与します AWS のサービス。

  • 生成された CSV ファイルを保存する Amazon S3 入力バケット。

  • CSV ファイルのデータを分析し、遅延注文を検出する遅延注文検出 Lambda 関数。

  • 注文の遅延 Lambda 関数の実行ロール。このロールは、他の にアクセスするアクセス許可を関数に付与します AWS のサービス。

  • 顧客の注文の分析結果を保存する Amazon S3 出力バケット。

  • Step Functions が遅延した注文ごとにメッセージを送信する Amazon SQS キュー。これらのメッセージには、顧客と注文の ID が含まれます。

  • ステートマシンの実行履歴に関連する情報を保存する CloudWatch ロググループ。

重要

各サービスには標準料金が適用されます。

ステップ 1: ステートマシンを作成してリソースをプロビジョニングする

  1. Step Functions コンソールを開き、[ステートマシンの作成] を選択します。

  2. 検索ボックスに Distributed Map to process a CSV file in S3 と入力し、返された検索結果から [S3 の CSV ファイルを処理する分散マップ] を選択します。

  3. [次へ] を選択して続行します。

  4. Step Functions は、選択したサンプルプロジェクトで AWS のサービス 使用されている を一覧表示します。サンプルプロジェクトのワークフローグラフも表示されます。このプロジェクトを にデプロイ AWS アカウント するか、独自のプロジェクトを構築するための出発点として使用します。進める方法に応じて、[デモの実行] または [その上に構築する] を選択します。

    このサンプルプロジェクト用に作成されるリソースについては、「AWS CloudFormation テンプレートと追加リソース」を参照してください。

    以下のイメージは、[S3 の CSV ファイルを処理する分散マップ] のワークフローグラフを示しています。

    [S3 の CSV ファイルを処理する分散マップ] のワークフローグラフ。
  5. [テンプレートの使用] を選択して選択を続行します。

  6. 次のいずれかを行います。

    • [その上に構築する] を選択した場合、Step Functions は選択したサンプルプロジェクトのワークフロープロトタイプを作成します。Step Functions は、ワークフロー定義にリストされているリソースをデプロイしません。

      Workflow Studio の デザインモード では、[State browser] (状態ブラウザ) から状態をドラッグアンドドロップして、ワークフロープロトタイプの構築を続行できます。または、VS Code と同様の統合コードエディタを提供する コードモード に切り替えて、Step Functions コンソール内のステートマシンの Amazon ステートメント言語 (ASL) 定義を更新してください。Workflow Studio を使用してステートマシンを構築する方法の詳細については、「Workflow Studio を使用する」を参照してください。

      重要

      ワークフローを実行する前に、サンプルプロジェクトで使用されているリソースのプレースホルダー Amazon リソースネーム (ARN) を必ず更新してください。

    • デモの実行を選択した場合、Step Functions は、 AWS CloudFormation テンプレートを使用して、そのテンプレートにリストされている AWS リソースを にデプロイする読み取り専用サンプルプロジェクトを作成します AWS アカウント。

      ヒント

      サンプルプロジェクトのステートマシン定義を表示するには、[コード] を選択します。

      準備できたら、[デプロイと実行] を選択してサンプルプロジェクトをデプロイし、リソースを作成します。

      これらのリソースおよび関連する IAM 許可が作成されるまで、最大 10 分かかることがあります。リソースのデプロイ中に、 CloudFormation スタック ID リンクを開いて、プロビジョニングされているリソースを確認できます。

      サンプルプロジェクトのすべてのリソースが作成されると、新しいサンプルプロジェクトが [ステートマシン] ページに表示されます。

      重要

      CloudFormation テンプレートで使用されるサービスごとに、標準料金が適用される場合があります。

ステップ 2: ステートマシンを実行する

すべてのリソースをプロビジョニングしてデプロイしたら、ステートマシンを実行できます。

  1. [ステートマシン] ページで、サンプルプロジェクトを選択します。

  2. サンプルプロジェクトページで、[実行を開始] を選択します。

  3. [実行を開始] ダイアログボックスで、以下の操作を行います。

    1. (オプション) JSON 形式で入力値を入力して、サンプルプロジェクトを実行します。

      [デモの実行] を選択した場合、実行入力を入力する必要はありません。

      注記

      デプロイしたデモプロジェクトに事前入力された実行入力データが含まれている場合は、その入力を使用してステートマシンを実行します。

    2. [実行のスタート] を選択します。

    3. (オプション) Step Functions コンソールから実行 ID のタイトルが付いたページが表示されます。このページは、[実行の詳細] ページと呼ばれます。このページでは、実行の進行中または完了後に実行結果を確認できます。

      実行が完了したら、[グラフビュー] で個々のステートを選択し、ステップの詳細 ペインの個々のタブを選択すると、入力、出力、定義などの各ステートの詳細がそれぞれ表示されます。

    4. (オプション) Amazon S3 バケットにエクスポートされた実行結果を確認します。これらの結果には、実行の入力と出力、ARN、実行ステータスなどのデータが含まれます。詳細については、「ResultWriter」を参照してください。