Amazon S3 バケットのデータを分散マップで処理する - AWS Step Functions

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

Amazon S3 バケットのデータを分散マップで処理する

このサンプルプロジェクトでは、分散マップ状態を使用して大規模なデータを処理する方法を示しています。例えば、過去の気象データを分析し、地球上で毎月の平均気温が最も高い気象観測所を特定します。気象データは 12,000 を超える CSV ファイルに記録され、Amazon S3 バケットに保存されています。

このサンプルプロジェクトには、[分散 S3 コピー NOA データ][ProcessNOAAData] という名前の 2 つの分散マップ状態が含まれています。分散 S3 コピー NOA データは、 という名前のパブリック Amazon S3 バケット内の CSV ファイルを反復処理noaa-gsod-pdsし、 の Amazon S3 バケットにコピーします AWS アカウント。[ProcessNOAAData] はコピーされたファイルを繰り返し処理し、温度分析を実行する Lambda 関数を含めます。

サンプルプロジェクトは、まず ListObjectsV2 API アクションを呼び出して Amazon S3 バケットの内容を確認します。この呼び出しに応答して返されたキーの数に基づいて、サンプルプロジェクトでは以下のいずれかの判断を行います。

  • キー数が 1 以上の場合、プロジェクトは [ProcessNOAAData] ステートに移行します。この分散マップ状態には、毎月平均温度TemperatureFunctionが最も高い気象ステーションを検索する という名前のLambda関数が含まれています。この関数は、キーとして year-month を含む辞書と、値として気象観測所に関する情報を含む辞書を返します。

  • 返されたキー数が 1 を超えない場合、分散 S3 コピー NOA データ状態は、パブリックバケットのすべてのオブジェクトを一覧表示noaa-gsod-pdsし、個々のオブジェクトを 100 のバッチでアカウント内の別のバケットに繰り返しコピーします。インラインマップはオブジェクトの反復コピーを実行します。

    すべてのオブジェクトがコピーされると、プロジェクトは [ProcessNOAAData] ステートに移行して気象データを処理します。

サンプルプロジェクトは最後に、Lambda関数によって返された結果の最終集計を実行し、結果を Amazon DynamoDBテーブルに書き込むリデューサーTemperatureFunction関数に移行します。

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

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

重要

このサンプルプロジェクトは米国東部 (バージニア北部) リージョン限定で利用できます。

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

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

  • Step Functions ステートマシン

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

  • NOAADataBucket という名前の Amazon S3 バケット。このバケットには、気象データを含む CSV ファイルが含まれています。

  • 気象データの最終的な集計を実行し、その結果を Amazon DynamoDB テーブルに書き込む ReducerFunction という名前の Lambda 関数。

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

  • 気象分析の結果を保存するように ResultsBucket と名付けられた Amazon S3 出力バケット。

  • ReducerFunction によって返された結果が格納されている ResultsDynamoDBTable という名前の DynamoDB テーブル。

  • 月間平均気温の最高値を求める TemperatureFunction という名前の Lambda 関数。

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

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

重要

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

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

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

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

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

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

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

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

    [S3 のファイルを処理する分散マップ] のワークフローグラフ。
  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」を参照してください。