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 でのデータベースとテーブルのセットアップ」を参照してください。

前提条件

パラメータ

このセクションの 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 S3 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 で使用するには、Lambda 関数に接続されている VPC に、Secrets Manager に接続するためのインターネットアクセスまたは 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 値は string データ型として取得されます。次に、テーブルが AWS Glue Data Catalog でどのように定義されているかに基づいて、次の Apache Arrow データ型のいずれかに変換されます。

AWS Glue データ型 Apache Arrow データ型
int INT
string 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 インスタンスに対するクエリを並列化しようとします。述語のプッシュダウンは Lambda 関数内で実行されます。

ライセンス情報

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

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

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