Amazon Athena Redis コネクタ - Amazon Athena

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

Amazon Athena Redis コネクタ

Amazon Athena Redis コネクタは、Amazon Athena が Redis インスタンスとやり取りすることを可能にして、Redis データを SQL でクエリできるようにします。AWS Glue Data Catalog を使用して、Redis のキーと値のペアを仮想テーブルにマッピングできます。

従来のリレーショナルデータストアとは異なり、Redis にはテーブルや列の概念がありません。代わりに、Redis にはキーと値のアクセスパターンが用意されています。キーは基本的に string で、値は stringz-set、または hmap です。

AWS Glue Data Catalog を使用して、スキーマを作成し、仮想テーブルを設定します。特別なテーブルプロパティによって、Redis のキーと値をテーブルにマッピングする方法が Athena Redis コネクタに伝えられます。詳細については、このドキュメントで後述する「AWS Glue でのデータベースとテーブルのセットアップ」を参照してください。

アカウントで Lake Formation を有効にしている場合、AWS Serverless Application Repository でデプロイした Athena フェデレーション Lambda コネクタの IAM ロールには、Lake Formation での AWS Glue Data Catalog への読み取りアクセス権が必要です。

Amazon Athena Redis コネクタは Amazon MemoryDB for Redis と Amazon ElastiCache for Redis をサポートしています。

前提条件

パラメータ

このセクションの Lambda 環境変数を使用して Redis コネクタを設定します。

  • spill_bucket – Lambda 関数の上限を超えたデータに対して、Amazon S3 バケットを指定します。

  • spill_prefix – (オプション) 指定された athena-federation-spill という spill_bucket の、デフォルトのサブフォルダに設定します。このロケーションで、Amazon S3 のストレージライフサイクルを設定し、あらかじめ決められた日数または時間数以上経過したスピルを削除することをお勧めします。

  • spill_put_request_headers – (オプション) スピリングに使用されるAmazon S3 の putObject リクエスト (例:{"x-amz-server-side-encryption" : "AES256"}) に関する、 JSON でエンコードされたリクエストヘッダーと値のマッピング。利用可能な他のヘッダーについては、「Amazon Simple Storage Service API リファレンス」の「PutObject」を参照してください。

  • kms_key_id – (オプション) デフォルトでは、Amazon S3 に送信されるすべてのデータは、AES-GCM で認証された暗号化モードとランダムに生成されたキーを使用して暗号化されます。KMS が生成したより強力な暗号化キー (たとえば a7e63k4b-8loc-40db-a2a1-4d0en2cd8331) を Lambda 関数に使用させる場合は、KMS キー ID を指定します。

  • disable_spill_encryption – (オプション) True に設定されている場合、スピルに対する暗号化を無効にします。デフォルト値は False です。この場合、S3 にスピルされたデータは、AES-GCM を使用して (ランダムに生成されたキー、または KMS により生成したキーにより) 暗号化されます。スピル暗号化を無効にすると、特にスピルされる先でサーバー側の暗号化を使用している場合に、パフォーマンスが向上します。

  • glue_catalog – (オプション) クロスアカウントの AWS Glue カタログを指定するために、このオプションを使用します。デフォルトでは、コネクタは自身の AWS Glue アカウントからメタデータを取得しようとします。

AWS Glue でのデータベースとテーブルのセットアップ

AWS Glue テーブルを Redis で使用できるようにするには、テーブルに redis-endpoint および redis-value-type、さらに redis-keys-zset または redis-key-prefix のテーブルプロパティを設定します。

さらに、Redis テーブルを含む AWS Glue データベースには、データベースの URI プロパティに redis-db-flag がある必要があります。redis-db-flag URI プロパティ設定するには、AWS Glue コンソールでデータベースを編集します。

次のリストは、テーブルプロパティについての説明です。

  • redis-endpoint – (必須) このテーブルのデータを含む Redis サーバーのホスト名:ポート:パスワード (例: athena-federation-demo.cache.amazonaws.com:6379)。または、${Secret_Name} をテーブルプロパティ値として使用して、エンドポイント、またはエンドポイントの一部を AWS Secrets Manager に保存することもできます。

注記

Athena 横串検索機能を AWS Secrets Manager で使用するには、Secrets Manager に接続するためのインターネットアクセスまたは VPC エンドポイントが、Lambda 関数に接続されている VPC に必要です。

  • redis-keys-zset – (redis-key-prefix が使用されていない場合は必須) 値が zset であるキーのカンマ区切りリスト (例: active-orders,pending-orders)。zset 内のそれぞれの値は、テーブルの一部であるキーとして扱われます。redis-keys-zset プロパティまたは redis-key-prefix プロパティのいずれかを設定する必要があります。

  • redis-key-prefix – (redis-keys-zset が使用されていない場合は必須) テーブル内の値をスキャンするキープレフィックスのカンマ区切りリスト (例: accounts-*,acct-)。redis-key-prefix プロパティまたは redis-keys-zset プロパティのいずれかを設定する必要があります。

  • redis-value-type – (必須) redis-key-prefix または redis-keys-zset のいずれかをテーブルにマッピングすることによって、キーの値がどのように定義されるかを定義します。リテラルは単一の列にマッピングされます。また、zset は単一の列にマッピングされますが、各キーには多数の行を格納できます。ハッシュを使用すると、各キーを複数の列 (ハッシュ、リテラル、zset など) から成る行にすることができます。

  • redis-ssl-flag – (オプション) True の場合、SSL/TLS を使用する Redis 接続を作成します。デフォルトは False です。

  • edis-cluster-flag – (オプション) True の場合、クラスター化された Redis インスタンスのサポートを有効にします。デフォルトは False です。

  • redis-db-number – (オプション) スタンドアロンのクラスター化されていないインスタンスにのみ適用されます。デフォルト以外の Redis データベースから読み込むには、この番号 (1、2、3 など) を設定します。デフォルトは Redis 論理データベース 0 です。この番号は、Athena や AWS Glue のデータベースではなく、Redis の論理データベースを示すものです。詳細については、Redis ドキュメントの「SELECT index」を参照してください。

データ型

Redis コネクタは、次のデータ型に対応しています。Redis ストリームはサポートされていません。

すべての Redis 値は string データ型として取得されます。次に、テーブルが AWS Glue Data Catalog でどのように定義されているかに基づいて、次の Apache Arrow データ型のいずれかに変換されます。

AWS Glue データ型 Apache Arrow データ型
整数 INT
文字列 VARCHAR
bigint BIGINT
double FLOAT8
フロート FLOAT4
smallint SMALLINT
tinyint TINYINT
boolean BIT
バイナリ VARBINARY

必要な許可

このコネクタが必要とする IAM ポリシーの完全な詳細については、athena-redis.yaml ファイルの Policies セクションを参照してください。次のリストは、必要なアクセス権限をまとめたものです。

  • Amazon S3 への書き込みアクセス – 大規模なクエリからの結果をスピルするために、コネクタは Amazon S3 内のロケーションへの書き込みアクセス権限を必要とします。

  • Athena GetQueryExecution – コネクタはこの権限を使用して、アップストリームの Athena クエリが終了した際に fast-fail を実行します。

  • AWS Glue Data Catalog – Redis コネクタには、スキーマ情報を取得するために AWS Glue Data Catalog への読み込み専用アクセス権が必要です。

  • CloudWatch Logs – コネクタは、ログを保存するために CloudWatch Logs にアクセスする必要があります。

  • AWS Secrets Manager 読み込みアクセス – Redis エンドポイントの詳細を Secrets Manager に保存する場合は、それらのシークレットへのアクセスをコネクタに許可する必要があります。

  • VPC アクセス – コネクタには、VPC に接続して Redis インスタンスと通信できるように、VPC にインターフェイスをアタッチおよびデタッチできることが必要です。

パフォーマンス

Athena Redis コネクタは、定義したテーブルのタイプ (zset キーやプレフィックスキーなど) に従って、Redis インスタンスに対するクエリを並列化しようとします。

Athena Redis コネクタは、述語のプッシュダウンを実行して、クエリによってスキャンされるデータを減少させます。ただし、プライマリキーに対する述語を含むクエリはタイムアウトで失敗します。LIMIT 句はスキャンされるデータ量を減らしますが、述語を提供しない場合、LIMIT 句を含む SELECT クエリは少なくとも 16 MB のデータをスキャンすることを想定する必要があります。Redis コネクタは同時実行によるスロットリングに強いです。

ライセンス情報

Amazon Athena Redis コネクタプロジェクトは、Apache-2.0 License でライセンスされています。

以下も参照してください。

このコネクタに関するその他の情報については、GitHub.com で対応するサイトを参照してください。