翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
大規模なデータセット (Amazon Athena、Amazon S3 AWS Glue、Amazon SNS) へのクエリ
このサンプルプロジェクトは、Amazon S3 に大量のデータセットを取り込み、 AWS Glue クローラーを使用してパーティション化し、そのパーティションに対して Amazon Athena クエリを実行する方法を示しています。
このプロジェクトでは、Step Functions ステートマシンが Amazon S3 AWS Glue の大きなデータセットを分割するクローラーを呼び出します。 AWS Glue クローラーが成功メッセージを返すと、ワークフローはそのパーティションに対して Athena クエリを実行します。クエリの実行が正常に完了すると、Amazon SNS 通知が Amazon SNS トピックに送信されます。
ステップ 1: ステートマシンを作成してリソースをプロビジョニングする
-
Step Functions コンソール
を開き、[ステートマシンの作成] を選択します。 -
検索ボックスに
Query large datasets
と入力し、返された検索結果から [大規模なデータセットをクエリ] を選択します。 -
[次へ] を選択して続行します。
-
Step Functions には、 AWS サービス 選択したサンプルプロジェクトで使用されているものが一覧表示されます。サンプルプロジェクトのワークフローグラフも表示されます。 AWS アカウント このプロジェクトを自分のプロジェクトにデプロイするか、独自のプロジェクトを構築するための出発点として使用してください。進める方法に応じて、[デモの実行] または [その上に構築する] を選択します。
このサンプルプロジェクトは、以下のリソースをデプロイします。
-
Amazon S3 バケット
-
AWS Glue クローラー
-
Amazon SNS トピック
-
AWS Step Functions ステートマシン
-
関連する AWS Identity and Access Management (IAM) ロール
以下のイメージは、[大規模なデータセットをクエリ] サンプルプロジェクトのワークフローグラフを示しています。
-
-
[テンプレートの使用] を選択して選択を続行します。
-
次のいずれかを行います。
-
[その上に構築する] を選択した場合、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 Stack ID リンクを開いて、どのリソースがプロビジョニングされているかを確認できます。
サンプルプロジェクトのすべてのリソースが作成されると、新しいサンプルプロジェクトが [ステートマシン] ページに表示されます。
重要
CloudFormation テンプレートで使用される各サービスには標準料金が適用される場合があります。
-
ステップ 2: ステートマシンを実行する
-
[ステートマシン] ページで、サンプルプロジェクトを選択します。
-
サンプルプロジェクトページで、[実行を開始] を選択します。
-
[実行を開始] ダイアログボックスで、以下の操作を行います。
-
(オプション) 実行を識別するには、[名前] ボックスに名前を指定します。デフォルトでは、Step Functions は自動的に一意の実行名を生成します。
注記
Step Functions では、ステートマシン、実行、アクティビティ、ラベルに、ASCII 以外の文字を含む名前を作成できます。これらの非ASCII名は、Amazonでは機能しません。 CloudWatch CloudWatch メトリクスを追跡できるようにするには、ASCII 文字のみを使用する名前を選択してください。
-
(オプション) [入力] ボックスに、JSON 形式の入力値を入力してワークフローを実行します。
[デモの実行] を選択した場合、実行入力を入力する必要はありません。
-
[実行のスタート] を選択します。
-
Step Functions コンソールから実行 ID のタイトルが付いたページが表示されます。このページは、[実行の詳細] ページと呼ばれます。このページでは、実行の進行中または完了後に実行結果を確認できます。
実行結果を確認するには、[グラフビュー] で個々の状態を選択し、ステップの詳細 ペインの個々のタブを選択すると、入力、出力、定義などの各状態の詳細がそれぞれ表示されます。[実行の詳細] ページに表示できる実行情報の詳細については、「[実行の詳細] ページ - インターフェイスの概要」を参照してください。
-
ステートマシンのコード例
このサンプルプロジェクトのステートマシンは、パラメータをこれらのリソースに直接渡すことにより AWS Glue、Amazon S3、Amazon Athena、および Amazon SNS と統合されます。
このステートマシンの例を見て、Step Functions Resource
がフィールドの Amazon リソースネーム (ARN) に接続し AWS Glue、サービス API Parameters
に渡すことによって Amazon S3、Amazon Athena、および Amazon SNS を制御する方法を確認してください。
AWS 他のサービスを制御する方法の詳細については AWS Step Functions 、「」を参照してください。AWS Step Functions 他のサービスとの併用
{
"Comment": "An example demonstrates how to ingest a large data set in Amazon S3 and partition it through aws Glue Crawlers, then execute Amazon Athena queries against that partition.",
"StartAt": "Start Crawler",
"States": {
"Start Crawler": {
"Type": "Task",
"Next": "Get Crawler status",
"Parameters": {
"Name": "<GLUE_CRAWLER_NAME>"
},
"Resource": "arn:aws:states:::aws-sdk:glue:startCrawler"
},
"Get Crawler status": {
"Type": "Task",
"Parameters": {
"Name": "<GLUE_CRAWLER_NAME>"
},
"Resource": "arn:aws:arn:aws:states:::aws-sdk:glue:getCrawler",
"Next": "Check Crawler status"
},
"Check Crawler status": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.Crawler.State",
"StringEquals": "RUNNING",
"Next": "Wait"
}
],
"Default": "Start an Athena query"
},
"Wait": {
"Type": "Wait",
"Seconds": 30,
"Next": "Get Crawler status"
},
"Start an Athena query": {
"Resource": "arn:aws:states:::athena:startQueryExecution.sync",
"Parameters": {
"QueryString": "<ATHENA_QUERYSTRING>",
"WorkGroup": "<ATHENA_WORKGROUP>"
},
"Type": "Task",
"Next": "Get query results"
},
"Get query results": {
"Resource": "arn:aws:states:::athena:getQueryResults",
"Parameters": {
"QueryExecutionId.$": "$.QueryExecution.QueryExecutionId"
},
"Type": "Task",
"Next": "Send query results"
},
"Send query results": {
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "<SNS_TOPIC_ARN>",
"Message": {
"Input.$": "$.ResultSet.Rows"
}
},
"Type": "Task",
"End": true
}
}
}
IAM の例
サンプルプロジェクトによって生成されたこれらのサンプル AWS Identity and Access Management (IAM) ポリシーには、ステートマシンと関連リソースを実行するのに必要な最小限の権限が含まれています。IAM ポリシーで必要なアクセス許可のみを含めることをお勧めします。
AthenaGetQueryResults
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"athena:getQueryResults"
],
"Resource": [
"arn:aws:athena:us-east-2:123456789012:workgroup/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
AthenaStartQueryExecution
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"athena:startQueryExecution",
"athena:stopQueryExecution",
"athena:getQueryExecution",
"athena:getDataCatalog"
],
"Resource": [
"arn:aws:athena:us-east-2:123456789012:workgroup/stepfunctions-athena-sample-project-workgroup-8v7bshiv70",
"arn:aws:athena:us-east-2:123456789012:datacatalog/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload",
"s3:CreateBucket",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Action": [
"glue:CreateDatabase",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:UpdateDatabase",
"glue:DeleteDatabase",
"glue:CreateTable",
"glue:UpdateTable",
"glue:GetTable",
"glue:GetTables",
"glue:DeleteTable",
"glue:BatchDeleteTable",
"glue:BatchCreatePartition",
"glue:CreatePartition",
"glue:UpdatePartition",
"glue:GetPartition",
"glue:GetPartitions",
"glue:BatchGetPartition",
"glue:DeletePartition",
"glue:BatchDeletePartition"
],
"Resource": [
"arn:aws:glue:us-east-2:123456789012:catalog",
"arn:aws:glue:us-east-2:123456789012:database/*",
"arn:aws:glue:us-east-2:123456789012:table/*",
"arn:aws:glue:us-east-2:123456789012:userDefinedFunction/*"
]
},
{
"Effect": "Allow",
"Action": [
"lakeformation:GetDataAccess"
],
"Resource": [
"*"
]
}
]
}
SNSPublish
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:us-east-2:123456789012:StepFunctionsSample-AthenaIngestLargeDataset92bc4949-abf8-4a1e-9236-5b7c81b3efa3-SNSTopic-8Y5ZLI5AASXV"
]
}
]
}
Step Functions AWS を他のサービスで使用する場合の IAM の設定方法については、を参照してください統合サービスの IAM ポリシー。