翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Athena クエリを開始し、結果通知を送信する
このサンプルプロジェクトでは、Step Functions と Amazon Athena を使用して Athena クエリを開始し、標準ワークフローを使用してクエリ結果を含む通知を送信する方法を示します。
このプロジェクトでは、Step Functions は Lambda 関数と AWS Glue クローラを使用して一連のサンプルデータを生成します。次に、Athena サービス統合を使用してクエリを実行し、 SNSトピックを使用して結果を返します。
Athena と Step Functions のサービス統合の詳細については、以下を参照してください。
注記
このサンプルプロジェクトでは、料金が発生する場合があります。
新規 AWS ユーザーは、無料利用枠を利用できます。この枠では、サービスを利用しても一定のレベル以下であれば無料です。 AWS コストと無料利用枠の詳細については、「Athena の料金
ステップ 1: ステートマシンを作成してリソースをプロビジョニングする
-
Step Functions コンソール
を開き、[ステートマシンの作成] を選択します。 -
検索ボックスに
Start an Athena query
と入力し、返された検索結果から [Athena クエリを開始する] を選択します。 -
[次へ] を選択して続行します。
-
Step Functions は、選択したサンプルプロジェクト AWS サービス で使用される を一覧表示します。サンプルプロジェクトのワークフローグラフも表示されます。このプロジェクトを にデプロイ AWS アカウント するか、独自のプロジェクトを構築するための出発点として使用します。進める方法に応じて、[デモの実行] または [その上に構築する] を選択します。
このサンプルプロジェクトは、以下のリソースをデプロイします。
-
Amazon Athena クエリ
-
AWS Glue クローラー
-
Amazon SNS トピック
-
AWS Step Functions ステートマシン
-
関連する AWS Identity and Access Management (IAM) ロール
以下のイメージは、[Athena クエリを開始する] サンプルプロジェクトのワークフローグラフを示しています。
-
-
[テンプレートの使用] を選択して選択を続行します。
-
次のいずれかを行います。
-
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: ステートマシンを実行する
-
[ステートマシン] ページで、サンプルプロジェクトを選択します。
-
サンプルプロジェクトページで、[実行を開始] を選択します。
-
[実行を開始] ダイアログボックスで、以下の操作を行います。
-
(オプション) 実行を識別するには、名前を指定するか、デフォルトで生成された実行名 を使用します。
注記
Step Functions は、 ASCII以外の文字を含むステートマシン、実行、アクティビティ、およびラベルの名前を受け入れます。文字ASCII以外の名前は Amazon では機能しないため CloudWatch、 ASCII でメトリクスを追跡できるように、文字のみを使用することをお勧めします CloudWatch。
-
(オプション) 入力ボックスに、ワークフローを実行するための入力値を JSON形式で入力します。
[デモの実行] を選択した場合、実行入力を入力する必要はありません。
注記
デプロイしたデモプロジェクトに事前入力された実行入力データが含まれている場合は、その入力を使用してステートマシンを実行します。
-
[実行のスタート] を選択します。
-
Step Functions コンソールから実行 ID のタイトルが付いたページが表示されます。このページは、[実行の詳細] ページと呼ばれます。このページでは、実行の進行中または完了後に実行結果を確認できます。
実行結果を確認するには、[グラフビュー] で個々の状態を選択し、ステップの詳細 ペインの個々のタブを選択すると、入力、出力、定義などの各状態の詳細がそれぞれ表示されます。[実行の詳細] ページに表示できる実行情報の詳細については、「[実行の詳細] ページ - インターフェイスの概要」を参照してください。
-
ステートマシンのコード例
このサンプルプロジェクトのステートマシンは、パラメータをそれらのリソースに直接渡す AWS Lambda ことで Athena および と統合し、 SNSトピックを使用してクエリの結果を返します。
このステートマシンの例を参照して、Step Functions が Lambda と Athena をどのように制御するかを確認します。
AWS Step Functions が他の AWS サービスをコントロールする方法の詳細については、「」を参照してください他の サービスと Step Functions の統合。
{
"StartAt": "Generate example log",
"States": {
"Generate example log": {
"Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athena-LambdaForDataGeneration-AKIAIOSFODNN7EXAMPLE",
"Type": "Task",
"Next": "Run Glue crawler"
},
"Run Glue crawler": {
"Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athen-LambdaForInvokingCrawler-AKIAI44QH8DHBEXAMPLE",
"Type": "Task",
"Next": "Start an Athena query"
},
"Start an Athena query": {
"Resource": "arn:aws:states:::athena:startQueryExecution.sync",
"Parameters": {
"QueryString": "SELECT * FROM \"athena-sample-project-db-wJalrXUtnFEMI\".\"log\" limit 1",
"WorkGroup": "stepfunctions-athena-sample-project-workgroup-wJalrXUtnFEMI"
},
"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": "arn:aws:sns:us-east-1:111122223333:StepFunctionsSample-AthenaDataQueryd1111-2222-3333-777788889999-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE",
"Message": {
"Input.$": "$.ResultSet.Rows"
}
},
"Type": "Task",
"End": true
}
}
}
他の AWS のサービスで Step Functions を使用するIAMときに を設定する方法については、「」を参照してくださいStep Functions が統合サービスのIAMポリシーを生成する方法。
IAM 例
サンプルプロジェクトによって生成されたこれらの例 AWS Identity and Access Management (IAM) ポリシーには、ステートマシンおよび関連リソースの実行に必要な最小権限が含まれています。IAM ポリシーに必要なアクセス許可のみを含めることをお勧めします。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athena-LambdaForDataGeneration-AKIAIOSFODNN7EXAMPLE",
"arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athen-LambdaForInvokingCrawler-AKIAI44QH8DHBEXAMPLE"
],
"Effect": "Allow"
},
{
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:us-east-1:111122223333:StepFunctionsSample-AthenaDataQueryd1111-2222-3333-777788889999-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE"
],
"Effect": "Allow"
},
{
"Action": [
"athena:getQueryResults",
"athena:startQueryExecution",
"athena:stopQueryExecution",
"athena:getQueryExecution",
"athena:getDataCatalog"
],
"Resource": [
"arn:aws:athena:us-east-1:111122223333:workgroup/stepfunctions-athena-sample-project-workgroup-wJalrXUtnFEMI",
"arn:aws:athena:us-east-1:111122223333: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-1:111122223333:database/*",
"arn:aws:glue:us-east-1:111122223333:table/*",
"arn:aws:glue:us-east-1:111122223333:catalog"
],
"Effect": "Allow"
}
]
}
他の AWS のサービスで Step Functions を使用するIAMときに を設定する方法については、「」を参照してくださいStep Functions が統合サービスのIAMポリシーを生成する方法。