翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ターゲットテーブル内のデータを で更新する AWS Glue と Athena
このサンプルプロジェクトでは、ターゲットテーブルをクエリして で現在のデータを取得する方法を示します。 AWS Glue カタログを作成し、Amazon Athena を使用して他のソースからの新しいデータで更新します。
このプロジェクトでは、Step Functions ステートマシンは を呼び出します。 AWS Glue ターゲットテーブルが Amazon S3 バケットに存在するかどうかを確認するカタログ。テーブルが見つからない場合は、新しいテーブルが作成されます。次に、Step Functions は Athena クエリを実行して、別のデータソースからターゲットテーブルに行を追加します。まずターゲットテーブルにクエリを実行して最新の日付を取得し、次にソーステーブルにクエリを実行して最新のデータを取得し、ターゲットテーブルに挿入します。
ステップ 1: ステートマシンを作成する
-
Step Functions コンソール
を開き、[ステートマシンの作成] を選択します。 -
検索ボックスに
Keep data up to date
と入力し、返された検索結果から [データを最新の状態に保つ] を選択します。 -
[次へ] を選択して続行します。
-
デモを実行して読み取り専用と ready-to-deploy ワークフローを作成するか、ビルドを選択して編集可能なステートマシン定義を作成し、後でデプロイできます。
このサンプルプロジェクトは、以下のリソースをデプロイします。
-
An Amazon S3 bucket (バケット)
-
Amazon Athena クエリ
-
An AWS Glue Data Catalog call
-
An AWS Step Functions ステートマシン
-
関連 AWS Identity and Access Management (IAM) ロール
以下のイメージは、[データを最新の状態に保つ] サンプルプロジェクトのワークフローグラフを示しています。
-
-
[テンプレートの使用] を選択して選択を続行します。
次のステップは、前の選択肢によって異なります。
-
デモの実行 – によってデプロイされたリソースを使用して読み取り専用プロジェクトを作成する前に、ステートマシンを確認できます。 AWS CloudFormation を に AWS アカウント.
ステートマシンの定義を表示でき、準備ができたら、デプロイと実行を選択してプロジェクトをデプロイし、リソースを作成します。
デプロイでは、リソースとアクセス許可の作成に最大 10 分かかる場合があります。スタック ID リンクを使用して、 の進行状況をモニタリングできます。 AWS CloudFormation.
デプロイが完了すると、コンソールに新しいステートマシンが表示されます。
-
構築 – ワークフロー定義を確認して編集できます。カスタムワークフローの実行を試みる前に、サンプルプロジェクトのプレースホルダーの値を設定する必要がある場合があります。
注記
アカウントにデプロイされたサービスには、標準料金が適用される場合があります。
ステップ 2: ステートマシンを実行する
-
[ステートマシン] ページで、サンプルプロジェクトを選択します。
-
サンプルプロジェクトページで、[実行を開始] を選択します。
-
[実行を開始] ダイアログボックスで、以下の操作を行います。
-
(オプション) 生成されたデフォルトを上書きするカスタム実行名を入力します。
非ASCII名前とログ記録
Step Functions は、 以外のASCII文字を含むステートマシン、実行、アクティビティ、およびラベルの名前を受け入れます。このような文字は Amazon では機能しないため CloudWatch、 でメトリクスを追跡できるようにASCII、文字のみを使用することをお勧めします CloudWatch。
-
(オプション) 入力ボックスに、入力値を として入力しますJSON。デモを実行している場合は、このステップをスキップできます。
-
[実行のスタート] を選択します。
Step Functions コンソールで実行の詳細ページに移動し、グラフビューで状態を選択して、ステップの詳細ペインの関連情報を確認できます。
-
ステートマシンのコード例
このサンプルプロジェクトのステートマシンは Amazon S3 と統合されています。 AWS Glueパラメータをそれらのリソースに直接渡すことで、、、および Amazon Athena。
このステートマシンの例を参照して、Step Functions が Amazon S3 を制御する方法を確認してください。 AWS Glue、、および Amazon Athena は、 Resource
フィールドの Amazon リソースネーム (ARN) に接続し、 をサービス Parameters
に渡しますAPI。
方法の詳細については、 AWS Step Functions は他の を制御できます AWS サービスについては、「」を参照してくださいサービスと Step Functions の統合。
{
"Comment": "An example demonstrates how to use Athena to query a target table to get current data, then update it with new data from other sources.",
"StartAt": "Get Target Table",
"States": {
"Get Target Table": {
"Type": "Task",
"Parameters": {
"DatabaseName": "<GLUE_DATABASE_NAME>",
"Name": "target"
},
"Catch": [
{
"ErrorEquals": [
"Glue.EntityNotFoundException"
],
"Next": "Create Target Table"
}
],
"Resource": "arn:aws:states:::aws-sdk:glue:getTable",
"Next": "Update Target Table"
},
"Create Target Table": {
"Resource": "arn:aws:states:::athena:startQueryExecution.sync",
"Parameters": {
"QueryString": "<ATHENA_QUERYSTRING>",
"WorkGroup": "<ATHENA_WORKGROUP>"
},
"Type": "Task",
"Next": "Update Target Table"
},
"Update Target Table": {
"Resource": "arn:aws:states:::athena:startQueryExecution.sync",
"Parameters": {
"QueryString": "<ATHENA_QUERYSTRING>",
"WorkGroup": "<ATHENA_WORKGROUP>"
},
"Type": "Task",
"End": true
}
}
}
IAM 例
この例では AWS Identity and Access Management サンプルプロジェクトによって生成された (IAM) ポリシーには、ステートマシンおよび関連リソースの実行に必要な最小権限が含まれています。IAM ポリシーに必要なアクセス許可のみを含めることをお勧めします。
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-26ujlyawxg",
"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": [
"*"
]
}
]
}
他の で Step Functions を使用するIAMときに を設定する方法の詳細については、「」を参照してください。 AWS サービスについては、「」を参照してくださいStep Functions が統合サービスのIAMポリシーを生成する方法。