Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Connecteur Amazon Athena pour DocumentDB
Le connecteur Amazon Athena DocumentDB permet à Athena de communiquer avec vos instances DocumentDB afin que vous puissiez interroger vos données DocumentDB. SQL Le connecteur fonctionne également avec n'importe quel point de terminaison compatible avec MongoDB.
Contrairement aux magasins de données relatives traditionnels, les collections Amazon DocumentDB n’ont pas de schéma défini. DocumentDB n’a pas de magasin de métadonnées. Chaque entrée d’une collection DocumentDB peut comporter des champs et des types de données différents.
Le connecteur DocumentDB prend en charge deux mécanismes pour générer des informations de schéma de table : l'inférence de schéma de base et les métadonnées. AWS Glue Data Catalog
L’inférence de schéma est la valeur par défaut. Cette option analyse un petit nombre de documents de votre collection, réunit tous les champs et impose des champs dont les types de données ne se chevauchent pas. Cette option fonctionne bien pour les collections dont les entrées sont généralement uniformes.
Pour les collections comportant une plus grande variété de types de données, le connecteur prend en charge la récupération de métadonnées à partir du AWS Glue Data Catalog. Si le connecteur détecte une AWS Glue base de données et une table qui correspondent aux noms de votre base de données et de collection DocumentDB, il obtient ses informations de schéma dans la table correspondante AWS Glue . Lorsque vous créez votre AWS Glue table, nous vous recommandons d'en faire un sur-ensemble de tous les champs auxquels vous souhaitez accéder depuis votre collection DocumentDB.
Si Lake Formation est activé sur votre compte, le IAM rôle de votre connecteur Lambda fédéré Athena que vous avez déployé dans AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog
Ce connecteur ne peut pas être enregistré auprès de Glue Data Catalog en tant que catalogue fédéré. Ce connecteur ne prend pas en charge les contrôles d'accès aux données définis dans Lake Formation au niveau du catalogue, de la base de données, de la table, des colonnes, des lignes et des balises. Ce connecteur utilise Glue Connections pour centraliser les propriétés de configuration dans Glue.
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 Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données.
Paramètres
Utilisez les paramètres de cette section pour configurer le connecteur DocumentDB.
Note
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.
Les noms et définitions des paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Elles peuvent être différentes de leurs propriétés de AWS Glue connexion correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous déployez manuellement une version antérieure d'un connecteur de source de données Athena.
-
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_bucket
spé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) Carte JSON codée des en-têtes de demande et des valeurs pour la
putObject
demande Amazon S3 utilisée pour le spilling (par exemple,).{"x-amz-server-side-encryption" : "AES256"}
Pour les autres en-têtes possibles, consultez PutObjectle Amazon Simple Storage Service API Reference. -
kms_key_id — (Facultatif) Par défaut, toutes les données transmises à Amazon S3 sont chiffrées à l'aide AES du mode de chiffrement authentifié et d'une clé GCM générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus fortes générées par KMS like
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331
, vous pouvez spécifier un identifiant de KMS clé. -
disable_spill_encryption – (Facultatif) Lorsque la valeur est définie sur
True
, le chiffrement des déversements est désactivé. Par défaut, les donnéesFalse
transmises à S3 sont chiffrées à l'aide de AES GCM -, soit à l'aide d'une clé générée de manière aléatoire, soit 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. -
disable_glue — (Facultatif) S'il est présent et défini sur true, le connecteur ne tente pas de récupérer des métadonnées supplémentaires à partir de. AWS Glue
-
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 à partir de son propre AWS Glue compte.
-
default_docdb – S’il est présent, il spécifie une chaîne de connexion DocumentDB à utiliser lorsqu’aucune variable d’environnement spécifique au catalogue n’existe.
-
disable_projection_and_casing – (Facultatif) Désactive la projection et la casse. À utiliser si vous souhaitez interroger des tables Amazon DocumentDB qui utilisent des noms de colonnes sensibles à la casse. Le paramètre
disable_projection_and_casing
utilise les valeurs suivantes pour spécifier le comportement de la casse et du mappage des colonnes :-
false (faux) : il s'agit du paramètre par défaut. La projection est activée et le connecteur s'attend à ce que tous les noms de colonnes soient en minuscules.
-
true (vrai) : désactive la projection et la casse. Lorsque vous utilisez le paramètre
disable_projection_and_casing
, gardez à l'esprit les points suivants :-
L'utilisation de ce paramètre peut augmenter l'utilisation de la bande passante. En outre, si votre fonction Lambda ne se trouve pas dans la même Région AWS que votre source de données, vous devrez supporter des coûts de transfert interrégionaux AWS standard plus élevés en raison de l'utilisation plus importante de la bande passante. Pour plus d'informations sur les coûts de transfert entre régions, consultez la section Frais de transfert de AWS données pour les architectures serveur et sans
serveur sur le blog du réseau AWS partenaire. -
Étant donné qu'un plus grand nombre d'octets est transféré et qu'un plus grand nombre d'octets nécessite un délai de désérialisation plus long, la latence globale peut augmenter.
-
-
-
enable_case_insensitive_match — (Facultatif) Lorsque
true
, effectue des recherches sans distinction majuscules/minuscules sur les noms de schéma et de table dans Amazon DocumentDB. L’argument par défaut estfalse
. À utiliser si votre requête contient des noms de schéma ou de table en majuscules.
Définition des chaînes de connexion
Vous pouvez fournir une ou plusieurs propriétés qui définissent les détails de connexion DocumentDB pour les instances de DocumentDB que vous utilisez avec le connecteur. Pour ce faire, définissez une variable d’environnement Lambda qui correspond au nom du catalogue que vous souhaitez utiliser dans Athena. Supposons, par exemple, que vous souhaitiez utiliser les requêtes suivantes pour interroger deux instances DocumentDB différentes depuis Athena :
SELECT * FROM "docdb_instance_1".database.table
SELECT * FROM "docdb_instance_2".database.table
Avant de pouvoir utiliser ces deux SQL instructions, vous devez ajouter deux variables d'environnement à votre fonction Lambda : docdb_instance_1
et. docdb_instance_2
La valeur pour chacune d’elles doit être une chaîne de connexion DocumentDB au format suivant :
mongodb://:@:/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0
Utilisation de secrets
Vous pouvez éventuellement utiliser AWS Secrets Manager une partie ou la totalité de la valeur pour les détails de votre chaîne de connexion. Pour utiliser la fonctionnalité Athena Federated Query avec Secrets Manager, la fonction VPC connectée à votre Lambda doit disposer d'un accès Internet
Si vous utilisez la syntaxe ${my_secret}
pour indiquer le nom d'un secret provenant de Secrets Manager dans votre chaîne de connexion, le connecteur remplace exactement ${my_secret}
par sa valeur en texte brut provenant de Secrets Manager. Les secrets doivent être stockés sous forme de texte brut avec la valeur
. Les secrets stockés sous la forme <username>
:<password>
{username:
ne seront pas transmis correctement à la chaîne de connexion.<username>
,password:<password>
}
Les secrets peuvent également être utilisés pour l'ensemble de la chaîne de connexion, le nom d'utilisateur et le mot de passe pouvant être définis dans le secret.
Supposons, par exemple, que vous définissiez la variable d’environnement Lambda pour docdb_instance_1
sur la valeur suivante :
mongodb://${docdb_instance_1_creds}@myhostname.com:123/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0
L'Athena Query Federation tente SDK automatiquement de récupérer un secret nommé dans Secrets Manager et docdb_instance_1_creds
d'injecter cette valeur à la place de. ${docdb_instance_1_creds}
Toute partie de la chaîne de connexion qui est entourée par la combinaison de caractères ${
}
est interprétée comme un secret de Secrets Manager. Si vous spécifiez un nom de secret que le connecteur ne trouve pas dans Secrets Manager, le connecteur ne remplace pas le texte.
Configuration de bases de données et de tables dans AWS Glue
Étant donné que la fonctionnalité d'inférence de schéma intégrée du connecteur scanne un nombre limité de documents et ne prend en charge qu'un sous-ensemble de types de données, vous pouvez préférer l'utiliser AWS Glue pour les métadonnées.
Pour activer une AWS Glue table à utiliser avec Amazon DocumentDB, vous devez disposer d'une base de AWS Glue données et d'une table pour la base de données et la collection DocumentDB pour lesquelles vous souhaitez fournir des métadonnées supplémentaires.
Pour utiliser une AWS Glue table pour des métadonnées supplémentaires
-
Utilisez la AWS Glue console pour créer une AWS Glue base de données portant le même nom que le nom de votre base de données Amazon DocumentDB.
-
Définissez la URI propriété de la base de données à inclure docdb-metadata-flag.
-
(Facultatif) Ajoutez la propriété de la sourceTabletable. Cette propriété définit le nom de la table source dans Amazon DocumentDB. Utilisez cette propriété si le nom de votre AWS Glue table est différent de celui de la table dans Amazon DocumentDB. Les différences dans les règles de dénomination entre Amazon DocumentDB AWS Glue et Amazon DocumentDB peuvent rendre cela nécessaire. Par exemple, les majuscules ne sont pas autorisées dans les noms de AWS Glue table, mais elles le sont dans les noms de table Amazon DocumentDB.
-
(Facultatif) Ajoutez la propriété de la columnMappingtable. Cette propriété définit les mappages de noms de colonnes. Utilisez cette propriété si les règles de dénomination des AWS Glue colonnes vous empêchent de créer une AWS Glue table portant les mêmes noms de colonne que ceux de votre table Amazon DocumentDB. Cela peut être utile, car les majuscules sont autorisées dans les noms de colonnes Amazon DocumentDB, mais elles ne le sont pas dans les noms de colonnes AWS Glue .
La valeur de la propriété
columnMapping
est censée être un ensemble de mappages au formatcol1=Col1,col2=Col2
.Note
Le mappage des colonnes s'applique uniquement aux noms de colonnes de niveau supérieur et non aux champs imbriqués.
Après avoir ajouté la propriété AWS Glue
columnMapping
table, vous pouvez supprimer la variable d'environnementdisable_projection_and_casing
Lambda. -
Assurez-vous d'utiliser les types de données appropriés AWS Glue tels que listés dans ce document.
Prise en charge du type de données
Cette section répertorie les types de données que le connecteur DocumentDB utilise pour l'inférence de schéma, ainsi que les types de données lorsque des AWS Glue métadonnées sont utilisées.
Types de données d’inférence de schéma
La fonction d’inférence de schéma du connecteur DocumentDB tente de déduire des valeurs comme appartenant à l’un des types de données suivants. Le tableau indique les types de données correspondants pour Amazon DocumentDB, Java et Apache Arrow.
Apache | Java ou DocDB |
---|---|
VARCHAR | Chaîne |
INT | Entier |
BIGINT | Long |
BIT | Booléen |
FLOAT4 | Float |
FLOAT8 | Double |
TIMESTAMPSEC | Date |
VARCHAR | ObjectId |
LIST | Liste |
STRUCT | Document |
AWS Glue types de données
Si vous utilisez AWS Glue des métadonnées supplémentaires, vous pouvez configurer les types de données suivants. Le tableau indique les types de données correspondants pour AWS Glue et Apache Arrow.
AWS Glue | Apache |
---|---|
int | INT |
bigint | BIGINT |
double | FLOAT8 |
float | FLOAT4 |
boolean | BIT |
binary | VARBINARY |
chaîne | VARCHAR |
Liste | LIST |
Struct | STRUCT |
Autorisations nécessaires
Pour plus de détails sur les IAM politiques requises par ce connecteur, consultez la Policies
section du fichier athena-docdb.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 échouer rapidement lorsque la requête Athena en amont est terminée.
-
AWS Glue Data Catalog— Le connecteur DocumentDB nécessite un accès en lecture seule au pour AWS Glue Data Catalog obtenir des informations sur le schéma.
-
CloudWatch Journaux : le connecteur a besoin d'accéder aux CloudWatch journaux pour stocker les journaux.
-
AWS Secrets Manager accès en lecture — Si vous choisissez de stocker les détails du point de terminaison DocumentDB dans Secrets Manager, vous devez autoriser le connecteur à accéder à ces secrets.
-
VPCaccès — Le connecteur doit être capable d'attacher et de détacher des interfaces à vos interfaces VPC afin de pouvoir s'y connecter et communiquer avec vos instances DocumentDB.
Performance
Le connecteur Amazon DocumentDB d'Athena ne prend pas actuellement en charge les analyses parallèles, mais tente de pousser les prédicats vers le bas dans le cadre de ses requêtes DocumentDB, et les prédicats contre les index de votre collection DocumentDB entraînent une réduction significative des données analysées.
La fonction Lambda effectue une poussée vers le bas de projection pour réduire les données analysées par la requête. Cependant, la sélection d'un sous-ensemble de colonnes entraîne parfois un temps d'exécution plus long de la requête. 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.
Requêtes directes
Le connecteur Athena Amazon DocumentDB prend en charge les requêtes passthrough et est basé sur le Non. SQL Pour plus d'informations sur l'interrogation d'Amazon DocumentDB, consultez la section Requête dans le manuel du développeur Amazon DocumentDB.
Pour utiliser des requêtes directes avec Amazon DocumentDB, utilisez la syntaxe suivante :
SELECT * FROM TABLE( system.query( database => '
database_name
', collection => 'collection_name
', filter => '{query_syntax
}' ))
L'exemple suivant interroge la example
base de données de la TPCDS
collection, en filtrant tous les livres portant le titre Bill of Rights.
SELECT * FROM TABLE( system.query( database => 'example', collection => 'tpcds', filter => '{title: "Bill of Rights"}' ))
Ressources supplémentaires
-
Pour un article sur l'utilisation d'Amazon Athena Federated Query pour connecter une base de données MongoDB à QuickSightAmazon
afin de créer des tableaux de bord et des visualisations, consultez Visualiser les données MongoDB d'Amazon à l' QuickSight aide d'Amazon Athena Federated Query sur le blog Big Data .AWS Pour plus d'informations sur ce connecteur, rendez-vous sur le site correspondant
sur GitHub .com.