Connecteur Amazon Athena pour Redis OSS
Le connecteur Amazon Athena pour Redis OSS permet à Amazon Athena de communiquer avec vos instances Redis OSS afin que vous puissiez interroger vos données Redis OSS avec SQL. Vous pouvez utiliser le AWS Glue Data Catalog pour mapper vos paires clé-valeur Redis OSS dans des tables virtuelles.
Contrairement aux magasins de données relationnels classiques, Redis OSS n’utilise pas le concept de table ou de colonne. Redis OSS propose plutôt des modèles d’accès clé-valeur où la clé est essentiellement de type string et où la valeur est de type string, z-set ou hmap.
Vous pouvez utiliser le plugin AWS Glue Data Catalog pour créer un schéma et configurer des tables virtuelles. Des propriétés de table spéciales indiquent au connecteur Athena pour Redis OSS comment mapper vos clés et valeurs Redis OSS dans une table. Pour plus d'informations, consultez Configuration de bases de données et de tables dans AWS Glue dans la suite de ce document.
Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.
Si Lake Formation est activé sur votre compte, le rôle IAM de votre connecteur Lambda fédéré Athena que vous avez déployé dans le AWS Serverless Application Repository doit avoir un accès en lecture au AWS Glue Data Catalog dans Lake Formation.
Le connecteur Amazon Athena pour Redis OSS prend en charge Amazon MemoryDB et Amazon ElastiCache (Redis OSS).
Prérequis
Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez Création d’une connexion à une source de données ou Utilisation d’AWS Serverless Application Repository pour déployer un connecteur de source de données.
Avant d’utiliser ce connecteur, configurez un VPC et un groupe de sécurité. Pour plus d’informations, consultez Création d’un VPC pour un connecteur de source de données ou une connexion AWS Glue.
Paramètres
Utilisez les paramètres de cette section pour configurer le connecteur Redis.
-
spill_bucket – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
-
spill_prefix – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le
spill_bucketspécifié appeléathena-federation-spill. Nous vous recommandons de configurer un cycle de vie de stockage Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé. -
spill_put_request_headers – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande
putObjectAmazon S3 utilisée pour le déversement (par exemple,{"x-amz-server-side-encryption" : "AES256"}). Pour les autres en-têtes possibles, veuillez consulter PutObject dans la Référence d’API Amazon Simple Storage Service. -
kms_key_id – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331, vous pouvez spécifier l’ID d’une clé KMS. -
disable_spill_encryption – (Facultatif) Lorsque la valeur est définie sur
True, le chiffrement des déversements est désactivé. La valeur par défaut estFalseafin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le chiffrement côté serveur. -
glue_catalog – (Facultatif) Utilisez cette option pour spécifier un catalogue AWS Glue entre compte. Par défaut, le connecteur tente d’obtenir des métadonnées depuis son propre compte AWS Glue.
Configuration de bases de données et de tables dans AWS Glue
Pour activer une table AWS Glue à utiliser avec Redis OSS, vous pouvez définir les propriétés de table suivantes sur la table : redis-endpoint, redis-value-type et soit redis-keys-zset, soit redis-key-prefix.
En outre, toute base de données AWS Glue qui contient des tables Redis OSS doit comporter un élément redis-db-flag dans la propriété URI de la base de données. Pour définir la propriété d’URI redis-db-flag, utilisez la console AWS Glue pour modifier la base de données.
La liste suivante décrit les propriétés de la table.
-
redis-endpoint – (Obligatoire)
nom d’hôte:port:mot de passedu serveur Redis OSS qui contient les données pour cette table (par exemple,athena-federation-demo.cache.amazonaws.com:6379). Vous pouvez également stocker le point de terminaison (ou une partie du point de terminaison) dans AWS Secrets Manager en utilisant ${Secret_Name} comme valeur de propriété de la table.
Note
Pour utiliser la fonctionnalité de requête fédérée d’Athena avec AWS Secrets Manager, le VPC connecté à votre fonction Lambda doit avoir un accès internet
-
redis-keys-zset – (Obligatoire si
redis-key-prefixn’est pas utilisé) Une liste de clés séparées par des virgules dont la valeur est a zset(par exemple, active-orders,pending-orders). Chacune des valeurs du zset est considérée comme une clé faisant partie de la table. La propriétéredis-keys-zsetouredis-key-prefixdoit être définie. -
redis-key-prefix – (Obligatoire si
redis-keys-zsetn’est pas utilisé) Une liste de préfixes clés séparés par des virgules pour analyser des valeurs dans le tableau (par exemple,accounts-*,acct-). La propriétéredis-key-prefixouredis-keys-zsetdoit être définie. -
redis-value-type – (Obligatoire) Définit la façon dont les valeurs des clés définies par
redis-key-prefixouredis-keys-zsetsont mappés à votre table. Un littéral mappe à une seule colonne. Un zset mappe également à une seule colonne, mais chaque clé peut stocker de nombreuses lignes. Un hachage permet à chaque clé de constituer une ligne avec plusieurs colonnes (par exemple, un hachage, un littéral ou un zset). -
redis-ssl-flag – (Facultatif) Quand la valeur est
True, une connexion Redis qui utilise SSL/TLS est créée. La valeur par défaut estFalse. -
redis-cluster-flag – (Facultatif) Quand la valeur est
True, la prise en charge des instances Redis en cluster est autorisée. La valeur par défaut estFalse. -
redis-db-number – (Facultatif) S’applique uniquement aux instances autonomes qui ne sont pas en cluster. Définissez ce nombre (par exemple 1, 2 ou 3) pour lire à partir d’une base de données Redis personnalisée. La base de données logique Redis par défaut est 0. Ce numéro ne fait pas référence à une base de données dans Athena ou AWS Glue, mais à une base de données logique Redis. Pour plus d’informations, consultez l’index SELECT
dans la documentation Redis.
Types de données
Le connecteur Redis OSS prend en charge les types de données suivants. Les flux Redis OSS ne sont pas pris en charge.
Toutes les valeurs Redis OSS sont récupérées en tant que type de données string. Elles sont ensuite converties vers l’un des types de données Apache Arrow suivants en fonction de la façon dont vos tables sont définies dans le AWS Glue Data Catalog.
| AWS GlueType de données | Type de données Apache Arrow |
|---|---|
| int | INT |
| chaîne | VARCHAR |
| bigint | BIGINT |
| double | FLOAT8 |
| float | FLOAT4 |
| smallint | SMALLINT |
| tinyint | TINYINT |
| boolean | BIT |
| binary | VARBINARY |
Autorisations nécessaires
Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section Policies du fichier athena-redis.yaml
-
Amazon S3 write access (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
-
Athena GetQueryExecution – Le connecteur utilise cette autorisation pour aboutir à un échec rapide lorsque la requête Athena en amont est terminée.
-
AWS Glue Data Catalog – Le connecteur Redis nécessite un accès en lecture seule au AWS Glue Data Catalog pour obtenir des informations sur le schéma.
-
CloudWatch Logs – Le connecteur nécessite un accès à CloudWatch Logs pour stocker les journaux.
-
Accès en lecture à AWS Secrets Manager— Si vous choisissez de stocker les détails du point de terminaison Redis dans Secrets Manager, vous devez autoriser le connecteur à accéder à ces secrets.
-
Accès VPC – Le connecteur nécessite la possibilité d’attacher des interfaces à votre VPC et de les détacher afin qu’il puisse s’y connecter et communiquer avec vos instances Redis.
Performances
Le connecteur Athena pour Redis OSS tente de paralléliser les requêtes par rapport à votre instance Redis OSS en fonction du type de table que vous avez défini (par exemple, des clés zset ou des clés prefix).
Le connecteur Athena Redis effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Cependant, les requêtes contenant un prédicat en opposition avec la clé primaire échouent en fonction d’un délai d’expiration. Les clauses LIMIT réduisent la quantité de données analysées, mais si vous ne fournissez pas de prédicat, vous devez vous attendre à ce que les requêtes SELECT avec une clause LIMIT analysent au moins 16 Mo de données. Le connecteur Redis résiste à la limitation due à la simultanéité.
Requêtes de transmission
Le connecteur Redis prend en charge les requêtes de transmission. Vous pouvez utiliser cette fonctionnalité pour exécuter des requêtes utilisant le script Lua sur les bases de données Redis.
Pour créer des requêtes de transmission avec Redis, utilisez la syntaxe suivante :
SELECT * FROM TABLE( system.script( script => 'return redis.[call|pcall](query_script)', keys => '[key_pattern]', argv => '[script_arguments]' ))
L’exemple suivant exécute un script Lua pour obtenir la valeur au niveau de la clé l:a.
SELECT * FROM TABLE( system.script( script => 'return redis.call("GET", KEYS[1])', keys => '[l:a]', argv => '[]' ))
Informations de licence
Le projet de connecteur Redis Amazon Athena est concédé sous licence dans le cadre de la licence Apache-2.0
Ressources supplémentaires
Pour plus d'informations sur ce connecteur, consultez le site correspondant