Amazon Athena を使用して SQLで Amazon DynamoDB テーブルをクエリする - AWS 規範ガイダンス

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

Amazon Athena を使用して SQLで Amazon DynamoDB テーブルをクエリする

作成者: Gavin Perrie (AWS)、Ajit Ambike (AWS)、Brad Yates (AWS)

環境:PoC またはパイロット

テクノロジー: 分析、データベース、サーバーレス

AWS サービス: Amazon AthenaAmazon DynamoDBAWSLambda、Amazon S3

[概要]

データに Amazon Simple Storage Service (Amazon S3) 以外のソースが含まれている場合は、フェデレーティッドクエリを使用して、それらのリレーショナルデータソース、非リレーショナルデータソース、オブジェクトデータソース、カスタムデータソースにアクセスできます。このパターンは、SQLデータソースコネクタを使用して Amazon Athena から Amazon DynamoDB へのフェデレーティッドクエリアクセスを設定する方法を示しています。

このパターンを使用すると、以下を実行できます。

  • を使用して DynamoDB テーブルをクエリしますSQL。

  • Athena でフェデレーティッドSQLクエリを実行し、DynamoDB テーブルをサポートされている他のデータソースに結合します。

前提条件と制限

前提条件

  • DynamoDB 表。

  • Athena エンジンバージョン 2 を使用するように設定された Athena ワークグループ。手順については、Athena ドキュメント を参照してください。

  • AthenaDynamoDBConnector AWS Lambda 関数がデータをこぼすことができる S3 バケット。S3 バケットと Lambda 関数は同じAWSリージョンにある必要があります。

Athena に初めてアクセスする場合は、クエリ結果の場所として使用する追加の S3 バケットが必要です。手順については、Athena ドキュメント を参照してください。

制約事項

  • などの書き込みオペレーションINSERTINTOはサポートされていません。

製品バージョン

アーキテクチャ

ターゲット アーキテクチャ

次の図は、パターンが確立された後の接続フローを示しています。ユーザーは Amazon Athena に接続してクエリを提供します。Athena はクエリとターゲットを DynamoDB データソースコネクタ Lambda 関数に渡します。Lambda 関数はデータを取得して Athena に返します。大量のデータが返された場合、Athena は一時結果を流出バケットに保存してから、完全なデータセットをパッケージ化して返します。

ユーザーから Athena から Lambda へのワークフロー。このワークフローは S3 バケットと DynamoDB テーブルに接続します。

ツール

AWS のサービス

コードリポジトリ

このパターンのコードは、 GitHub Athena クエリフェデレーションリポジトリで使用できます。

エピック

タスク説明必要なスキル

アプリケーションをデプロイします AthenaDynamoDBConnector。

をデプロイするには AthenaDynamoDBConnecter、以下を実行します。

  1. にサインインし AWS Management Console、DynamoDB テーブルと流出バケット AWS リージョン に使用する を選択します。

  2. サーバーレスアプリケーションリポジトリを開きます https://console.aws.amazon.com/serverlessrepo/。

  3. ナビゲーションペインで、利用可能なアプリケーション を選択します。

  4. AWS Identity and Access Management (IAM) アクセスの場合は、検索バーで、カスタムIAMロールまたはリソースポリシーを作成するアプリを表示するチェックボックスをオンにします。

  5. を検索して選択しAthenaDynamoDBConnector、リストされている作成者が Amazon Athena フェデレーション であることを確認します。

  6. アプリケーション設定 で、次の値を入力します。

    • SpillBucket ‒ 関数がデータをこぼすことができる場所。

    • AthenaCatalogName ‒ 作成される Lambda 関数の名前。この名前は、Athena のデータソース名としても使用されます。

  7. チェックボックスをオンにして、IAMロールとポリシーの作成を確認します。

  8. [デプロイ] を選択します。

AWS DevOps

Athena のデータソースを作成します。

データソースを作成するには、以下を実行します。

  1. で Athena コンソールを開きます。

    https://console.aws.amazon.com/athena/.

  2. ナビゲーションペインを展開し、データソース を選択します。

  3. [データソースを作成] を選択します。

  4. Amazon DynamoDB を選択します。

  5. データソース名 を入力します。

  6. 作成した Lambda 関数を選択します。

  7. 詳細を確認し、データソースの作成 を選択します。

AWS DevOps

Athena を使用して DynamoDB テーブルをクエリします。

DynamoDB テーブルをクエリするには、以下を実行します。

  1. Athena コンソールで、ナビゲーションペインを展開し、クエリエディタ を選択します。

  2. データソースドロップダウンリストで、作成したデータソースを選択します。

  3. DynamoDB テーブルがテーブル にリストされていることを確認します。

  4. クエリを実行します。

アプリ開発者

トラブルシューティング

問題ソリューション

クエリは で失敗しますGENERIC_INTERNAL_ERROR: The bucket is in this region: <region>

Athena スピルバケットと Lambda 関数が同じ に作成されていることを確認します AWS リージョン。

新しく作成されたデータソースは Athena コンソールに表示されません。

Athena データカタログはリージョン別です。Athena を使用しようとしているリージョンに がデプロイAthenaDynamoDBConnectorされていることを確認します。

新しく作成されたデータソースに対してクエリを実行することはできません。

クエリ結果の場所が設定されていることを確認します。

関連リソース