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

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

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

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

このサンプルプロジェクトには、分散 S3 コピーデータと P という名前の 2 つの分散マップ状態 が含まれています。 S3 NOA rocessNOAAData 分散 S3 コピー NOA という名前のパブリック Amazon S3 バケット内のCSVファイルを繰り返し処理noaa-gsod-pdsし、 の Amazon S3 バケットにコピーします AWS アカウント。P rocessNOAADataはコピーされたファイルを反復処理し、温度分析を実行する 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 関数の呼び出しアクションなどの他の https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html 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. 次のいずれかを行います。

    • Build on it を選択した場合、Step Functions はワークフロープロトタイプを作成しますが、ワークフロー定義にリソースをデプロイしないため、ワークフロープロトタイプの構築を継続できます。

      Workflow Studio の ではデザインモード、ワークフロープロトタイプに状態を追加できます。または、 に切り替えコードモードて、統合されたコードエディタを使用して、Step Functions コンソールからステートマシンの Amazon ステートメント言語 (ASL) 定義を編集することもできます。

      重要

      ワークフロー を実行する前に、サンプルプロジェクトで使用されるリソースのプレースホルダー Amazon リソースネーム (ARN) を更新する必要がある場合があります。 ワークフローを実行

    • デモの実行 を選択した場合、Step Functions は、 AWS CloudFormation テンプレートを使用してそのテンプレート内の AWS リソースを にデプロイする読み取り専用プロジェクトを作成します AWS アカウント。コードモード を選択すると、ステートマシンの定義を表示できます。

      デプロイと実行を選択してプロジェクトをデプロイし、リソースを作成します。

      デプロイには、リソースとIAMアクセス許可が作成されるまでに最大 10 分かかる場合があることに注意してください。リソースのデプロイ中に、 AWS CloudFormation スタック ID リンクを開いて、プロビジョニングされているリソースを確認できます。

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

      重要

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

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

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

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

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

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

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

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

      注記

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

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

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

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

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