

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.

# Utilisation de la requête fédérée Amazon Athena
<a name="federated-queries"></a>

Si vos données proviennent d'autres sources que Simple Storage Service (Amazon S3), vous pouvez utiliser la requête fédérée d'Athena pour interroger les données sur place ou créer des pipelines qui extraient les données de plusieurs sources et les stockent dans Simple Storage Service (Amazon S3). La requête fédérée d'Athena vous permet d'exécuter des requêtes SQL sur des données stockées dans des sources de données relationnelles, non relationnelles, objets et personnalisées.

Athena utilise des *connecteurs de source de données* qui s'exécutent AWS Lambda pour exécuter des requêtes fédérées. Un connecteur de source de données est un morceau de code qui peut traduire des données entre votre source de données cible et Athena. Vous pouvez vous représenter un connecteur comme une extension du moteur de requêtes Athena. Des connecteurs de source de données Athena prédéfinis existent pour les sources de données telles qu'Amazon Logs, CloudWatch Amazon DynamoDB, Amazon DocumentDB et Amazon RDS, ainsi que pour les sources de données relationnelles compatibles JDBC telles que MySQL et PostgreSQL sous licence Apache 2.0. Vous pouvez également utiliser le kit Athena Query Federation SDK pour écrire des connecteurs personnalisés. Pour choisir, configurer et déployer un connecteur de source de données sur votre compte, vous pouvez utiliser les consoles Athena et Lambda ou le AWS Serverless Application Repository. Une fois que vous avez déployé des connecteurs de source de données, le connecteur est associé à un catalogue que vous pouvez spécifier dans les requêtes SQL. Vous pouvez combiner des instructions SQL de plusieurs catalogues et couvrir plusieurs sources de données à l'aide d'une seule requête.

Lorsqu'une requête est envoyée à une source de données, Athena invoque le connecteur correspondant pour identifier les parties des tables qui doivent être lues, gère le parallélisme et réduit les prédicats de filtre. En fonction de l'utilisateur qui soumet la requête, les connecteurs peuvent autoriser ou restreindre l'accès à des éléments de données spécifiques. Les connecteurs utilisent Apache Arrow comme format pour renvoyer les données demandées dans une requête, ce qui permet d'implémenter des connecteurs dans des langages tels que C, C\$1\$1, Java, Python et Rust. Étant donné que les connecteurs sont traités dans Lambda, ils peuvent être utilisés pour accéder aux données de n'importe quelle source de données du cloud ou sur site accessible depuis Lambda.

Pour écrire votre propre connecteur de source de données, vous pouvez utiliser le kit Athena Query Federation SDK pour personnaliser l'un des connecteurs prédéfinis fournis et gérés par Amazon Athena. Vous pouvez modifier une copie du code source depuis le [GitHub référentiel](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors), puis utiliser l'[outil de publication Connector](https://github.com/awslabs/aws-athena-query-federation/wiki/Connector_Publish_Tool) pour créer votre propre AWS Serverless Application Repository package. 

**Note**  
Il est possible que des développeurs tiers aient utilisé le kit Athena Query Federation SDK pour écrire des connecteurs de sources de données. Pour tout problème de support ou de licence concernant ces connecteurs de sources de données, veuillez vous adresser à votre fournisseur de connecteurs. Ces connecteurs ne sont ni testés ni pris en charge par AWS. 

Pour une liste des connecteurs de sources de données écrits et testés par Athena, voir [Connecteurs de source de données disponibles](connectors-available.md).

Pour plus d'informations sur l'écriture de votre propre connecteur de source de données, voir [Exemple de connecteur Athena activé](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-example). GitHub

## Considérations et restrictions
<a name="connect-to-a-data-source-considerations"></a>
+ **Versions du moteur** : la requête fédérée Athena est uniquement prise en charge sur la version 2 du moteur Athena et les versions ultérieures. Pour plus d'informations sur les versions du moteur Athena, voir [Gestion des versions du moteur Athena](engine-versions.md).
+ **Vues** : vous pouvez désormais créer et interroger des vues sur des sources de données fédérées. Les vues fédérées sont stockées dans la source de données sous-jacente AWS Glue, et non dans celle-ci. Pour de plus amples informations, veuillez consulter [Interrogation de vues fédérées](running-federated-queries.md#running-federated-queries-federated-views).
+ **Identificateurs délimités** : les identificateurs délimités (aussi appelés identificateurs entre guillemets) commencent et se terminent par des guillemets doubles ("). À l’heure actuelle, les identificateurs délimités ne sont pas pris en charge dans le cadre des requêtes fédérées dans Athena.
+ **Opérations d'écriture** : les opérations d'écriture telles que [INSERT INTO](insert-into.md) ne sont pas pris en charge. Si vous tentez de le faire, le message d'erreur suivant peut s'afficher : This operation is currently not supported for external catalogs (Cette opération n'est actuellement pas prise en charge pour les catalogues externes).
+  **Tarification** : pour des informations sur la tarification, consultez la rubrique [Tarification Amazon Athena](https://aws.amazon.com/athena/pricing/).
+ **Pilote JDBC** : pour utiliser le pilote JDBC avec des requêtes fédérées ou un [métastore Hive externe](connect-to-data-source-hive.md), incluez `MetadataRetrievalMethod=ProxyAPI` dans votre chaîne de connexion JDBC. Pour plus d'informations sur le pilote JDBC, voir [Connexion à Amazon Athena avec JDBC](connect-with-jdbc.md). 
+ **Secrets Manager** : pour utiliser la fonction de requête fédérée d’Athena avec AWS Secrets Manager, vous devez configurer un point de terminaison privé Amazon VPC pour Secrets Manager. Pour plus d'informations, consultez la rubrique [Création d'un point de terminaison privé VPC Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint-create) du *Guide de l'utilisateur AWS Secrets Manager *.

## Autorisations nécessaires
<a name="connect-to-a-data-source-permissions"></a>

Les connecteurs de source de données peuvent nécessiter l'accès aux ressources suivantes pour fonctionner correctement. Si vous utilisez un connecteur prédéfini, vérifiez les informations relatives au connecteur pour vous assurer que vous avez correctement configuré votre VPC. Assurez-vous également que les principals IAM exécutant des requêtes et créant des connecteurs disposent de privilèges sur les actions requises. Pour de plus amples informations, veuillez consulter [Autorisation d’accès aux requêtes fédérées Athena : exemples de politiques](federated-query-iam-access.md).
+ **Simple Storage Service (Amazon S3)** : outre l'écriture des résultats des requêtes dans l'emplacement des résultats des requêtes Athena dans Simple Storage Service (Amazon S3), les connecteurs de données écrivent également dans un compartiment de déversement dans Simple Storage Service (Amazon S3). Une connectivité et des autorisations d'accès à cet emplacement Simple Storage Service (Amazon S3) sont requises. Nous vous recommandons d’utiliser un chiffrement de type « déversement sur le disque » pour chaque connecteur et une [configuration du cycle de vie S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) visant à faire expirer les données déversées qui ne sont plus nécessaires.
+ **Athena** : les sources de données ont besoin d'une connectivité vers Athena et vice versa pour vérifier l'état des requêtes et empêcher le surbalayage.
+ **AWS Glue Data Catalog** : la connectivité et des autorisations sont nécessaires si votre connecteur utilise le catalogue de données pour les métadonnées supplémentaires ou principales.
+ **Amazon ECR** : les fonctions Lambda de connecteur de source de données utilisent une image Amazon ECR issue d’un référentiel Amazon ECR. L’utilisateur qui déploie le connecteur doit disposer des autorisations `ecr:BatchGetImage` et `ecr:GetDownloadUrlForLayer`. Pour plus d’informations, consultez [Amazon ECR permissions](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#gettingstarted-images-permissions) dans le *Guide de développement d’AWS Lambda *.

## Vidéos
<a name="connect-to-a-data-source-videos"></a>

Regardez les vidéos suivantes pour en savoir plus sur l'utilisation de la requête fédérée d’Athena.

**Vidéo : Analyser les résultats d'une requête fédérée dans Amazon Athena dans Quick**  
La vidéo suivante montre comment analyser les résultats d'une requête fédérée Athena dans Quick.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/HyM5d0TmwAQ/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/HyM5d0TmwAQ)


**Vidéo : Gaming Analytics Pipeline**  
La vidéo suivante montre comment déployer un pipeline de données (Data Pipeline) évolutif sans serveur pour intégrer, stocker et analyser des données de télémétrie provenant de jeux et de services à l'aide de requêtes fédérées Amazon Athena.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/xcS-flUMVbs/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/xcS-flUMVbs)


# Connecteurs de source de données disponibles
<a name="connectors-available"></a>

Cette section répertorie les connecteurs de source de données Athena préconstruits que vous pouvez utiliser pour interroger une variété de sources de données externes à Simple Storage Service (Amazon S3). Pour utiliser un connecteur dans vos requêtes Athena, configurez-le et déployez-le sur votre compte. 

## Considérations et restrictions
<a name="connectors-available-considerations"></a>
+ Certains connecteurs prédéfinis nécessitent de créer un VPC et un groupe de sécurité avant de pouvoir utiliser le connecteur. Pour plus d'informations sur la création VPCs, consultez[Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md). 
+ Pour utiliser la fonctionnalité Athena Federated Query avec AWS Secrets Manager, vous devez configurer un point de terminaison privé Amazon VPC pour Secrets Manager. Pour plus d'informations, consultez la rubrique [Création d'un point de terminaison privé VPC Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint-create) du *Guide de l'utilisateur AWS Secrets Manager *. 
+ L’exécution des requêtes incluant un prédicat prend plus de temps sur les connecteurs qui ne prennent pas en charge la transmission des prédicats. Pour les petits jeux de données, très peu de données sont analysées et les requêtes prennent environ deux minutes en moyenne. Toutefois, pour les jeux de données volumineux, de nombreuses requêtes peuvent expirer.
+ Certaines sources de données fédérées utilisent une terminologie différente de celle d'Athena pour désigner des objets de données. Pour de plus amples informations, veuillez consulter [Présentation des qualificateurs de noms de table fédérés](tables-qualifiers.md).
+ Nous mettons régulièrement à jour nos connecteurs en fonction des mises à niveau effectuées par le fournisseur de bases de données ou de sources de données. Nous ne prenons pas en charge les sources de données fournies à end-of-life titre d'assistance.
+ Pour les connecteurs qui ne prennent pas en charge la pagination lorsque vous répertoriez des tables, le service web peut expirer si votre base de données comporte de nombreuses tables et métadonnées. Les connecteurs suivants fournissent une prise en charge de la pagination pour répertorier les tables :
  + DocumentDB
  + DynamoDB
  + MySQL
  + OpenSearch
  + Oracle
  + PostgreSQL
  + Redshift
  + SQL Server

## Modes du résolveur de casse dans le kit SDK Federation
<a name="case-resolver-modes"></a>

Le kit SDK Federation prend en charge les modes normalisés suivants du résolveur de casse dans les noms de schéma et de table :
+ `NONE` : aucune modification de la casse dans les noms de schéma et de table indiqués.
+ `LOWER` : mise en minuscules de tous les noms de schéma et de table indiqués.
+ `UPPER` : mise en majuscules de tous les noms de schéma et de table indiqués.
+ `ANNOTATION` : ce mode est maintenu à des fins de rétrocompatibilité uniquement, et il est exclusivement pris en charge par les connecteurs Snowflake et SAP HANA existants.
+ `CASE_INSENSITIVE_SEARCH` : réalisation de recherches non sensibles à la casse sur les noms de schéma et de table.

## Prise en charge des connecteurs dans le cadre des modes du résolveur de casse
<a name="connector-support-matrix"></a>

### Prise en charge des mode de base
<a name="basic-mode-support"></a>

Tous les connecteurs JDBC prennent en charge les modes de base suivants :
+ `NONE`
+ `LOWER`
+ `UPPER`

### Prise en charge du mode Annotation
<a name="annotation-mode-support"></a>

Seuls les connecteurs suivants prennent en charge le mode `ANNOTATION` :
+ Snowflake
+ SAP HANA

**Note**  
Il est recommandé d’utiliser le mode CASE\$1INSENSITIVE\$1SEARCH plutôt que le mode ANNOTATION.

### Prise en charge du mode de recherche non sensible à la casse
<a name="case-insensitive-search-support"></a>

Seuls les connecteurs suivants prennent en charge le mode `CASE_INSENSITIVE_SEARCH` :
+ DataLake 2e génération
+ Snowflake
+ Oracle
+ Synapse
+ MySQL
+ PostgreSQL
+ Redshift
+ ClickHouse
+ SQL Server
+ DB2

## Limitations associées au résolveur de casse
<a name="case-resolver-limitations"></a>

Tenez compte des limitations suivantes lors de l’utilisation des modes du résolveur de casse :
+ Lorsque vous utilisez le mode `LOWER`, le nom du schéma et toutes les tables dans le schéma doivent figurer en minuscules.
+ Lorsque vous utilisez le mode `UPPER`, le nom du schéma et toutes les tables dans le schéma doivent figurer en majuscules.
+ Lors de l’utilisation de `CASE_INSENSITIVE_SEARCH` :
  + Les noms de schéma doivent être uniques.
  + Les noms de table dans un schéma doivent être uniques (par exemple, vous ne pouvez pas avoir à la fois « Apple » et « APPLE »).
+ Limitations associées à l’intégration dans Glue :
  + Glue prend uniquement en charge les noms en minuscules.
  + Seuls `LOWER` les modes `NONE` OR fonctionneront lors de l'enregistrement de votre fonction Lambda avec/ GlueDataCatalogLakeFormation

## Informations supplémentaires
<a name="connectors-available-additional-resources"></a>
+ Pour plus d'informations sur le déploiement d'un connecteur de source de données Athena, voir [Utilisation de la requête fédérée Amazon Athena](federated-queries.md). 
+ Pour plus d'informations sur les requêtes qui utilisent les connecteurs de source de données Athena, consultez [Exécution de requêtes fédérées](running-federated-queries.md).

**Topics**
+ [Considérations et restrictions](#connectors-available-considerations)
+ [Modes du résolveur de casse dans le kit SDK Federation](#case-resolver-modes)
+ [Prise en charge des connecteurs dans le cadre des modes du résolveur de casse](#connector-support-matrix)
+ [Limitations associées au résolveur de casse](#case-resolver-limitations)
+ [Informations supplémentaires](#connectors-available-additional-resources)
+ [Stockage Azure Data Lake](connectors-adls-gen2.md)
+ [Azure Synapse](connectors-azure-synapse.md)
+ [Cloudera Hive](connectors-cloudera-hive.md)
+ [Cloudera Impala](connectors-cloudera-impala.md)
+ [CloudWatch](connectors-cloudwatch.md)
+ [CloudWatch métriques](connectors-cwmetrics.md)
+ [CMDB](connectors-cmdb.md)
+ [Db2](connectors-ibm-db2.md)
+ [Db2 iSeries](connectors-ibm-db2-as400.md)
+ [DocumentDB](connectors-docdb.md)
+ [DynamoDB](connectors-dynamodb.md)
+ [Google BigQuery](connectors-bigquery.md)
+ [Google Cloud Storage](connectors-gcs.md)
+ [HBase](connectors-hbase.md)
+ [Hortonworks](connectors-hortonworks.md)
+ [Kafka](connectors-kafka.md)
+ [MSK](connectors-msk.md)
+ [MySQL](connectors-mysql.md)
+ [Neptune](connectors-neptune.md)
+ [OpenSearch](connectors-opensearch.md)
+ [Oracle](connectors-oracle.md)
+ [PostgreSQL](connectors-postgresql.md)
+ [Redis OSS](connectors-redis.md)
+ [Redshift](connectors-redshift.md)
+ [SAP HANA](connectors-sap-hana.md)
+ [Snowflake](connectors-snowflake.md)
+ [SQL Server](connectors-microsoft-sql-server.md)
+ [Teradata](connectors-teradata.md)
+ [Timestream](connectors-timestream.md)
+ [TPC-DS](connectors-tpcds.md)
+ [Vertica](connectors-vertica.md)

**Note**  
La [AthenaJdbcConnector](https://serverlessrepo.aws.amazon.com/applications/us-east-1/292517598671/AthenaJdbcConnector)(dernière version 2022.4.1) est obsolète. Utilisez plutôt un connecteur spécifique à la base de données, comme ceux de [MySQL](connectors-mysql.md), [Redshift](connectors-redshift.md) ou [PostgreSQL](connectors-postgresql.md).

# Connecteur Amazon Athena pour Azure Data Lake Storage (ADLS) Gen2
<a name="connectors-adls-gen2"></a>

Le connecteur Amazon Athena pour [Azure Data Lake Storage (ADLS) Gen2 ](https://docs.microsoft.com/en-us/azure/databricks/data/data-sources/azure/adls-gen2/)permet à Amazon Athena d'exécuter des requêtes SQL sur des données stockées sur ADLS. Athena ne peut pas accéder directement aux fichiers stockés dans le lac de données. 

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.
+ **Flux de travail** : le connecteur implémente l'interface JDBC, qui utilise le pilote `com.microsoft.sqlserver.jdbc.SQLServerDriver`. Le connecteur transmet les requêtes au moteur Azure Synapse, qui accède ensuite au lac de données. 
+ **Gestion des données et S3** : normalement, le connecteur Lambda interroge les données directement sans les transférer vers Amazon S3. Toutefois, lorsque les données renvoyées par la fonction Lambda dépassent les limites Lambda, elles sont écrites dans le compartiment de déversement Amazon S3 que vous spécifiez afin qu'Athena puisse lire l'excédent.
+ **Authentification AAD** : AAD peut être utilisé comme méthode d'authentification pour le connecteur Azure Synapse. Pour utiliser AAD, la chaîne de connexion JDBC utilisée par le connecteur doit contenir les paramètres d'URL `authentication=ActiveDirectoryServicePrincipal`, `AADSecurePrincipalId` et `AADSecurePrincipalSecret`. Ces paramètres peuvent y être transmis directement ou par Secrets Manager.

## Conditions préalables
<a name="connectors-datalakegentwo-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-adls-gen2-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d’informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Les types de données de date et d’horodatage dans des conditions de filtre doivent être convertis en types de données appropriés.

## Conditions
<a name="connectors-adls-gen2-terms"></a>

Les termes suivants se rapportent au connecteur Azure Data Lake Storage Gen2.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-adls-gen2-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Azure Data Lake Storage Gen2.

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="adls-gen2-gc"></a>

Nous vous recommandons de configurer un connecteur Azure Data Lake Storage Gen2 en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Azure Data Lake Storage Gen2 Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type DATALAKEGEN2
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Azure Data Lake Storage Gen2 créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Azure Data Lake Storage Gen2 créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="adls-gen2-legacy"></a>

#### Chaîne de connexion
<a name="connectors-adls-gen2-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
datalakegentwo://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-adls-gen2-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | DataLakeGen2MuxCompositeHandler | 
| Gestionnaire de métadonnées | DataLakeGen2MuxMetadataHandler | 
| Gestionnaire d’enregistrements | DataLakeGen2MuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-adls-gen2-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mydatalakegentwocatalog, le nom de la variable d’environnement est alors mydatalakegentwocatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Lambda MUX à DataLakeGen 2 niveaux qui prend en charge deux instances de base de données `datalakegentwo1` : (par défaut) et. `datalakegentwo2`


****  

| Propriété | Value | 
| --- | --- | 
| default | datalakegentwo://jdbc:sqlserver://adlsgentwo1.hostname:port;databaseName=database\$1name;\$1\$1secret1\$1name\$1 | 
| datalakegentwo\$1catalog1\$1connection\$1string | datalakegentwo://jdbc:sqlserver://adlsgentwo1.hostname:port;databaseName=database\$1name;\$1\$1secret1\$1name\$1 | 
| datalakegentwo\$1catalog2\$1connection\$1string | datalakegentwo://jdbc:sqlserver://adlsgentwo2.hostname:port;databaseName=database\$1name;\$1\$1secret2\$1name\$1 | 

##### Fourniture des informations d’identification
<a name="connectors-adls-gen2-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${secret1_name}`.

```
datalakegentwo://jdbc:sqlserver://hostname:port;databaseName=database_name;${secret1_name}
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
datalakegentwo://jdbc:sqlserver://hostname:port;databaseName=database_name;user=user_name;password=password
```

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-adls-gen2-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d'enregistrements suivants pour vous connecter à une seule instance Azure Data Lake Storage Gen2.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | DataLakeGen2CompositeHandler | 
| Gestionnaire de métadonnées | DataLakeGen2MetadataHandler | 
| Gestionnaire d’enregistrements | DataLakeGen2RecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-adls-gen2-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L'exemple de propriété suivant concerne une instance Azure Data Lake Storage Gen2 unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | datalakegentwo://jdbc:sqlserver://hostname:port;databaseName=;\$1\$1secret\$1name\$1 | 

#### Paramètres de déversement
<a name="connectors-adls-gen2-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-adls-gen2-data-type-support"></a>

Le tableau suivant indique les types de données correspondants pour ADLS Gen2 et Arrow.


****  

| ADLS Gen2 | Flèche | 
| --- | --- | 
| bit | TINYINT | 
| tinyint | SMALLINT | 
| smallint | SMALLINT | 
| int | INT | 
| bigint | BIGINT | 
| decimal | DECIMAL | 
| numeric | FLOAT8 | 
| smallmoney | FLOAT8 | 
| money | DECIMAL | 
| float[24] | FLOAT4 | 
| float[53] | FLOAT8 | 
| real | FLOAT4 | 
| datetime | Date(MILLISECOND) | 
| datetime2 | Date(MILLISECOND) | 
| smalldatetime | Date(MILLISECOND) | 
| date | Date(DAY) | 
| time | VARCHAR | 
| datetimeoffset | Date(MILLISECOND) | 
| char[n] | VARCHAR | 
| varchar[n/max] | VARCHAR | 

## Partitions et déversements
<a name="connectors-adls-gen2-partitions-and-splits"></a>

Azure Data Lake Storage Gen2 utilise un stockage blob Gen2 compatible avec Hadoop pour stocker des fichiers de données. Les données de ces fichiers sont interrogées à partir du moteur Azure Synapse. Le moteur Azure Synapse traite les données Gen2 stockées dans les systèmes de fichiers comme des tables externes. Les partitions sont mises en œuvre en fonction du type de données. Si les données ont déjà été partitionnées et distribuées au sein du système de stockage Gen2, le connecteur extrait les données sous forme de division unique.

## Performance
<a name="connectors-adls-gen2-performance"></a>

Le connecteur Azure Data Lake Storage Gen2 présente des performances plus lentes lors de l'exécution de plusieurs requêtes à la fois et fait l'objet d'une limitation.

Le connecteur Athena Azure Data Lake Storage Gen2 effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Des prédicats simples et des expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution de la requête.

### Prédicats
<a name="connectors-datalakegentwo-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Azure Data Lake Storage Gen2 peut combiner ces expressions et les pousser directement vers Azure Data Lake Storage Gen2 pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Azure Data Lake Storage Gen2 suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN\$1OR\$1EQUAL, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-datalakegentwo-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Requêtes de transmission
<a name="connectors-datalakegentwo-passthrough-queries"></a>

Le connecteur Azure Data Lake Storage Gen2 prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Azure Data Lake Storage Gen2, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Azure Data Lake Storage Gen2. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-datalakegentwo-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-datalakegen2/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-datalakegen2/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-datalakegentwo-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-datalakegen2/pom.xml) du connecteur Azure Data Lake Storage Gen2 sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-datalakegen2) sur GitHub .com.

# Connecteur Amazon Athena pour Azure Synapse
<a name="connectors-azure-synapse"></a>

Le connecteur Amazon Athena pour [Azure Synapse Analytics](https://docs.microsoft.com/en-us/azure/synapse-analytics/overview-what-is) permet à Amazon Athena d’exécuter des requêtes SQL sur vos bases de données Azure Synapse à l’aide de JDBC.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-synapse-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-azure-synapse-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Dans des conditions de filtre, vous devez lancer les types de données `Date`et`Timestamp` vers le type de données approprié.
+ Pour rechercher des valeurs négatives de type `Real` et `Float`, utilisez l’opérateur `<=` ou `>=`.
+ Les types de données `binary`, `varbinary`, `image` et `rowversion` ne sont pas pris en charge.

## Conditions
<a name="connectors-azure-synapse-terms"></a>

Les termes suivants se rapportent au connecteur Synapse.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-azure-synapse-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Synapse.

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-azure-synapse-gc"></a>

Nous vous recommandons de configurer un connecteur Synapse en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Synapse Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type SYNAPSE
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Synapse créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Synapse créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées (recommandé)
<a name="connectors-azure-synapse-legacy"></a>

#### Chaîne de connexion
<a name="connectors-azure-synapse-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
synapse://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-azure-synapse-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | SynapseMuxCompositeHandler | 
| Gestionnaire de métadonnées | SynapseMuxMetadataHandler | 
| Gestionnaire d’enregistrements | SynapseMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-azure-synapse-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mysynapsecatalog, le nom de la variable d’environnement est alors mysynapsecatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Synapse MUX Lambda qui prend en charge deux instances de base de données :`synapse1` (par défaut) et `synapse2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | synapse://jdbc:synapse://synapse1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| synapse\$1catalog1\$1connection\$1string | synapse://jdbc:synapse://synapse1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| synapse\$1catalog2\$1connection\$1string | synapse://jdbc:synapse://synapse2.hostname:port;databaseName=<database\$1name>;\$1\$1secret2\$1name\$1 | 

##### Fourniture des informations d’identification
<a name="connectors-azure-synapse-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret \$1 \$1secret\$1name\$1.

```
synapse://jdbc:synapse://hostname:port;databaseName=<database_name>;${secret_name}
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
synapse://jdbc:synapse://hostname:port;databaseName=<database_name>;user=<user>;password=<password>
```

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-azure-synapse-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Synapse.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | SynapseCompositeHandler | 
| Gestionnaire de métadonnées | SynapseMetadataHandler | 
| Gestionnaire d’enregistrements | SynapseRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-azure-synapse-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance Synapse unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | synapse://jdbc:sqlserver://hostname:port;databaseName=<database\$1name>;\$1\$1secret\$1name\$1 | 

#### Configuration de l'authentification Active Directory
<a name="connectors-azure-synapse-configuring-active-directory-authentication"></a>

Le connecteur Amazon Athena Azure Synapse prend en charge l'authentification Microsoft Active Directory. Avant de commencer, vous devez configurer un utilisateur administratif sur le portail Microsoft Azure, puis l'utiliser AWS Secrets Manager pour créer un secret.

**Pour configurer l'utilisateur administratif Active Directory**

1. À l'aide d'un compte doté de privilèges administratifs, connectez-vous au portail Microsoft Azure à l'adresse [https://portal.azure.com/](https://portal.azure.com/).

1. Dans le champ de recherche, saisissez **Azure Synapse Analytics**, puis choisissez **Azure Synapse Analytics**.  
![\[Choisissez Azure Synapse Analytics.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-azure-synapse-1.png)

1. Ouvrez le menu de gauche.  
![\[Choisissez le menu du portail Azure.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-azure-synapse-2.png)

1. Dans le panneau de navigation, choisissez **Azure Active Directory**.

1. Dans l'onglet **Définir l'administrateur**, définissez l'**administrateur Active Directory** sur un utilisateur nouveau ou existant.  
![\[Utilisez l'onglet Définir l'administrateur\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-azure-synapse-3.png)

1. Dans AWS Secrets Manager, stockez le nom d'utilisateur et le mot de passe de l'administrateur. Pour plus d'informations sur la création d'un secret dans Secrets Manager, voir la rubrique [Créer un secret AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

**Visualisation de votre secret dans Secrets Manager**

1. Ouvrez la console Secrets Manager à l'adresse [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Dans le volet de navigation, sélectionnez **Secrets**.

1. Sur la page **Secrets**, choisissez le lien vers votre secret.

1. Sur la page de détails de votre secret, sélectionnez **Retrieve secret value** (Récupérer la valeur du secret).  
![\[Afficher des secrets dans AWS Secrets Manager.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-azure-synapse-4.png)

##### Modification de la chaîne de connexion
<a name="connectors-azure-synapse-modifying-the-connection-string"></a>

Pour activer l'authentification Active Directory pour le connecteur, modifiez la chaîne de connexion en utilisant la syntaxe suivante :

```
synapse://jdbc:synapse://hostname:port;databaseName=database_name;authentication=ActiveDirectoryPassword;{secret_name}
```

##### En utilisant ActiveDirectoryServicePrincipal
<a name="connectors-azure-synapse-using-activedirectoryserviceprincipal"></a>

Le connecteur Amazon Athena Azure Synapse prend également en charge `ActiveDirectoryServicePrincipal`. Pour activer celui-ci, modifiez la chaîne de connexion comme suit.

```
synapse://jdbc:synapse://hostname:port;databaseName=database_name;authentication=ActiveDirectoryServicePrincipal;{secret_name}
```

Comme `secret_name`, spécifiez l'identifiant de l'application ou du client comme nom d'utilisateur et le secret de l'identité principale du service dans le mot de passe.

#### Paramètres de déversement
<a name="connectors-azure-synapse-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-azure-synapse-data-type-support"></a>

Le tableau suivant indique les types de données correspondants pour Synapse et Apache Arrow.


****  

| Synapse | Flèche | 
| --- | --- | 
| bit | TINYINT | 
| tinyint | SMALLINT | 
| smallint | SMALLINT | 
| int | INT | 
| bigint | BIGINT | 
| decimal | DECIMAL | 
| numeric | FLOAT8 | 
| smallmoney | FLOAT8 | 
| money | DECIMAL | 
| float[24] | FLOAT4 | 
| float[53] | FLOAT8 | 
| real | FLOAT4 | 
| datetime | Date(MILLISECOND) | 
| datetime2 | Date(MILLISECOND) | 
| smalldatetime | Date(MILLISECOND) | 
| date | Date(DAY) | 
| time | VARCHAR | 
| datetimeoffset | Date(MILLISECOND) | 
| char[n] | VARCHAR | 
| varchar[n/max] | VARCHAR | 
| nchar [n] | VARCHAR | 
| nvarchar[n/max] | VARCHAR | 

## Partitions et déversements
<a name="connectors-azure-synapse-partitions-and-splits"></a>

Une partition est représentée par une seule colonne de partition de type `varchar`. Synapse prend en charge le partitionnement par plages. Le partitionnement est donc implémenté en extrayant la colonne de partition et la plage de partitions des tables de métadonnées Synapse. Ces valeurs de plage sont utilisées pour créer les divisions.

## Performance
<a name="connectors-azure-synapse-performance"></a>

La sélection d'un sous-ensemble de colonnes ralentit considérablement l'exécution de la requête. Le connecteur présente une limitation importante due à la simultanéité.

Le connecteur Athena Synapse effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Des prédicats simples et des expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution de la requête.

### Prédicats
<a name="connectors-synapse-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Synapse peut combiner ces expressions et les pousser directement vers Synapse pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Synapse suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN\$1OR\$1EQUAL, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-synapse-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Requêtes de transmission
<a name="connectors-synapse-passthrough-queries"></a>

Le connecteur Synapse prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Synapse, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Synapse. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-synapse-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-synapse/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-synapse/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-synapse-additional-resources"></a>
+ *Pour consulter un article expliquant comment utiliser Quick et Amazon Athena Federated Query pour créer des tableaux de bord et des visualisations à partir des données stockées dans les bases de données Microsoft Azure Synapse, voir [Effectuer des analyses multicloud à l'aide de Quick, Amazon Athena Federated Query et Microsoft Azure Synapse sur le blog Big](https://aws.amazon.com/blogs/business-intelligence/perform-multi-cloud-analytics-using-amazon-quicksight-amazon-athena-federated-query-and-microsoft-azure-synapse/) Data.AWS *
+ Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-synapse/pom.xml) du connecteur Synapse sur .com. GitHub
+ Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-synapse) sur GitHub .com.

# Connecteur Amazon Athena pour Cloudera Hive
<a name="connectors-cloudera-hive"></a>

Le connecteur Amazon Athena pour Cloudera Hive permet à Athena d'exécuter des requêtes SQL sur la distribution Hadoop [Cloudera Hive](https://www.cloudera.com/products/open-source/apache-hadoop/apache-hive.html). Le connecteur transforme vos requêtes Athena SQL en syntaxe HiveQL équivalente. 

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.

## Conditions préalables
<a name="connectors-hive-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ 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 ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

## Limitations
<a name="connectors-cloudera-hive-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.

## Conditions
<a name="connectors-cloudera-hive-terms"></a>

Les termes suivants se rapportent au connecteur Cloudera Hive.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-cloudera-hive-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Cloudera Hive.

### Connexions Glue (recommandé)
<a name="connectors-cloudera-hive-gc"></a>

Nous vous recommandons de configurer un connecteur Cloudera Hive en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Cloudera Hive Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type CLOUDERAHIVE
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Cloudera Hive créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Cloudera Hive créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-cloudera-hive-legacy"></a>

#### Chaîne de connexion
<a name="connectors-cloudera-hive-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
hive://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-cloudera-hive-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | HiveMuxCompositeHandler | 
| Gestionnaire de métadonnées | HiveMuxMetadataHandler | 
| Gestionnaire d’enregistrements | HiveMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-cloudera-hive-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myhivecatalog, le nom de la variable d’environnement est alors myhivecatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Hive MUX Lambda qui prend en charge deux instances de base de données :`hive1` (par défaut) et `hive2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | hive://jdbc:hive2://hive1:10000/default;\$1\$1Test/RDS/hive1\$1 | 
| hive2\$1catalog1\$1connection\$1string | hive://jdbc:hive2://hive1:10000/default;\$1\$1Test/RDS/hive1\$1 | 
| hive2\$1catalog2\$1connection\$1string | hive://jdbc:hive2://hive2:10000/default;UID=sample&PWD=sample | 

##### Fourniture des informations d’identification
<a name="connectors-cloudera-hive-credentials"></a>

Pour fournir un nom d'utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, le connecteur Cloudera Hive nécessite un code secret de. AWS Secrets Manager[Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

Entrez le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/hive1}`.

```
hive://jdbc:hive2://hive1:10000/default;...&${Test/RDS/hive1}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
hive://jdbc:hive2://hive1:10000/default;...&UID=sample2&PWD=sample2&...
```

Actuellement, le connecteur Cloudera Hive reconnaît les propriétés JDBC `UID` et `PWD`.

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-cloudera-hive-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Cloudera Hive.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | HiveCompositeHandler | 
| Gestionnaire de métadonnées | HiveMetadataHandler | 
| Gestionnaire d’enregistrements | HiveRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-cloudera-hive-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance Cloudera Hive unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | hive://jdbc:hive2://hive1:10000/default;secret=\$1\$1Test/RDS/hive1\$1 | 

#### Paramètres de déversement
<a name="connectors-cloudera-hive-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-cloudera-hive-data-type-support"></a>

Le tableau suivant indique les types de données correspondants pour JDBC, Cloudera Hive et Arrow.


****  

| JDBC | Cloudera Hive | Flèche | 
| --- | --- | --- | 
| Booléen | Booléen | Bit | 
| Entier | TINYINT | Tiny | 
| Court | SMALLINT | Smallint | 
| Entier | INT | Int | 
| Long | BIGINT | Bigint | 
| float | float4 | Float4 | 
| Double | float8 | Float8 | 
| Date | date | DateDay | 
| Horodatage | timestamp | DateMilli | 
| String | VARCHAR | Varchar | 
| Octets | octets | Varbinary | 
| BigDecimal | Décimal | Décimal | 
| ARRAY | N/A (voir la remarque) | List | 

**Note**  
Hortonworks Cloudera Hive ne prend actuellement pas en charge les types d’agrégat `ARRAY`, `MAP`, `STRUCT` ou `UNIONTYPE`. Les colonnes de types d'agrégats sont traitées comme des colonnes `VARCHAR` dans SQL.

## Partitions et déversements
<a name="connectors-cloudera-hive-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

## Performance
<a name="connectors-cloudera-hive-performance"></a>

Cloudera Hive prend en charge les partitions statiques. Le connecteur Athena Cloudera Hive peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement statique est fortement recommandé. Le connecteur Cloudera Hive résiste à la limitation due à la simultanéité.

Le connecteur Athena Cloudera Hive effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes.

### Clauses LIMIT
<a name="connectors-hive-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-hive-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Cloudera Hive peut combiner ces expressions et les pousser directement vers Cloudera Hive pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Cloudera Hive suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-hive-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Requêtes de transmission
<a name="connectors-hive-passthrough-queries"></a>

Le connecteur Cloudera Hive prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Cloudera Hive, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Cloudera Hive. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-hive-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-hive/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-hive/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-hive-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-hive/pom.xml) du connecteur Cloudera Hive sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudera-hive) sur GitHub .com.

# Connecteur Amazon Athena pour Cloudera Impala
<a name="connectors-cloudera-impala"></a>

Le connecteur Amazon Athena pour Cloudera Impala permet à Athena d’exécuter des requêtes SQL sur la distribution [Cloudera Impala](https://docs.cloudera.com/cdw-runtime/cloud/impala-overview/topics/impala-overview.html). Le connecteur transforme vos requêtes Athena SQL en syntaxe Impala équivalente.

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.

## Conditions préalables
<a name="connectors-impala-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ 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 ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

## Limitations
<a name="connectors-cloudera-impala-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.

## Conditions
<a name="connectors-cloudera-impala-terms"></a>

Les termes suivants se rapportent au connecteur Cloudera Impala.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-cloudera-impala-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Cloudera Impala.

### Connexions Glue (recommandé)
<a name="connectors-cloudera-impala-gc"></a>

Nous vous recommandons de configurer un connecteur Cloudera Impala en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Cloudera Impala Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type CLOUDERAIMPALA
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Cloudera Impala créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Cloudera Impala créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-cloudera-impala-legacy"></a>

#### Chaîne de connexion
<a name="connectors-cloudera-impala-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à un cluster Impala.

```
impala://${jdbc_connection_string}
```

#### Utilisation d'un gestionnaire de multiplexage
<a name="connectors-cloudera-impala-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | ImpalaMuxCompositeHandler | 
| Gestionnaire de métadonnées | ImpalaMuxMetadataHandler | 
| Gestionnaire d’enregistrements | ImpalaMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-cloudera-impala-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion à un cluster Impala pour un catalogue Athena. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myimpalacatalog, le nom de la variable d’environnement est alors myimpalacatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Impala MUX Lambda qui prend en charge deux instances de base de données :`impala1` (par défaut) et `impala2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | impala://jdbc:impala://some.impala.host.name:21050/?\$1\$1Test/impala1\$1 | 
| impala\$1catalog1\$1connection\$1string | impala://jdbc:impala://someother.impala.host.name:21050/?\$1\$1Test/impala1\$1 | 
| impala\$1catalog2\$1connection\$1string | impala://jdbc:impala://another.impala.host.name:21050/?UID=sample&PWD=sample | 

##### Fourniture des informations d’identification
<a name="connectors-cloudera-impala-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/impala1host}`.

```
impala://jdbc:impala://Impala1host:21050/?...&${Test/impala1host}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
impala://jdbc:impala://Impala1host:21050/?...&UID=sample2&PWD=sample2&...
```

Actuellement, Cloudera Impala reconnaît les propriétés JDBC `UID` et `PWD`.

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-cloudera-impala-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Cloudera Impala.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | ImpalaCompositeHandler | 
| Gestionnaire de métadonnées | ImpalaMetadataHandler | 
| Gestionnaire d’enregistrements | ImpalaRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-cloudera-impala-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance Cloudera Impala unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | impala://jdbc:impala://Impala1host:21050/?secret=\$1\$1Test/impala1host\$1 | 

#### Paramètres de déversement
<a name="connectors-cloudera-impala-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-cloudera-impala-data-type-support"></a>

Le tableau suivant indique les types de données correspondants pour JDBC, Cloudera Impala et Arrow.


****  

| JDBC | Cloudera Impala | Flèche | 
| --- | --- | --- | 
| Booléen | Booléen | Bit | 
| Entier | TINYINT | Tiny | 
| Court | SMALLINT | Smallint | 
| Entier | INT | Int | 
| Long | BIGINT | Bigint | 
| float | float4 | Float4 | 
| Double | float8 | Float8 | 
| Date | date | DateDay | 
| Horodatage | timestamp | DateMilli | 
| String | VARCHAR | Varchar | 
| Octets | octets | Varbinary | 
| BigDecimal | Décimal | Décimal | 
| ARRAY | N/A (voir la remarque) | List | 

**Note**  
Actuellement, Cloudera Impala ne prend pas en charge les types d’agrégats `ARRAY`, `MAP`, `STRUCT` ou `UNIONTYPE`. Les colonnes de types d'agrégats sont traitées comme des colonnes `VARCHAR` dans SQL.

## Partitions et déversements
<a name="connectors-cloudera-impala-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

## Performance
<a name="connectors-cloudera-impala-performance"></a>

Cloudera Impala prend en charge les partitions statiques. Le connecteur Athena Cloudera Impala peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement statique est fortement recommandé. Le connecteur Cloudera Impala résiste à la limitation due à la simultanéité.

Le connecteur Athena Cloudera Impala effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes.

### Clauses LIMIT
<a name="connectors-impala-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-impala-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Cloudera Impala peut combiner ces expressions et les pousser directement vers Cloudera Impala pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Cloudera Impala suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-impala-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Requêtes de transmission
<a name="connectors-impala-passthrough-queries"></a>

Le connecteur Cloudera Impala prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Cloudera Impala, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Cloudera Impala. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-impala-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-impala/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-impala/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-impala-additional-resources"></a>

Pour obtenir les informations les plus récentes sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-impala/pom.xml) du connecteur Cloudera Impala sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudera-impala) sur GitHub .com.

# Connecteur Amazon Athena CloudWatch
<a name="connectors-cloudwatch"></a>

Le CloudWatch connecteur Amazon Athena permet à Amazon Athena de communiquer CloudWatch avec vous afin que vous puissiez interroger les données de vos journaux avec SQL.

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.

Le connecteur vous met LogGroups en correspondance sous forme de schémas et chacun d'entre eux LogStream sous forme de table. Le connecteur mappe également une `all_log_streams` vue spéciale qui contient tout ce qui LogStreams se trouve dans le LogGroup. Cette vue vous permet d'interroger tous les journaux en une seule fois LogGroup au lieu de les parcourir LogStream individuellement.

## Conditions préalables
<a name="connectors-cloudwatch-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-cloudwatch-parameters"></a>

Utilisez les paramètres de cette section pour configurer le CloudWatch connecteur.

### Connexions Glue (recommandé)
<a name="connectors-cloudwatch-gc"></a>

Nous vous recommandons de configurer un CloudWatch connecteur à l'aide d'un objet de connexions Glue. Pour ce faire, définissez la variable d'`glue_connection`environnement du CloudWatch connecteur Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type CLOUDWATCH
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le CloudWatch connecteur créé à l'aide des connexions Glue ne prend pas en charge l'utilisation d'un gestionnaire de multiplexage.
Le CloudWatch connecteur créé à l'aide des connexions Glue ne prend en charge que `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-cloudwatch-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

Le connecteur prend également en charge le [contrôle de congestion AIMD](https://en.wikipedia.org/wiki/Additive_increase/multiplicative_decrease) pour gérer les événements de régulation CloudWatch via la construction du SDK [Amazon Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk). `ThrottlingInvoker` Vous pouvez modifier le comportement de limitation par défaut en définissant l’une des variables d’environnement facultatives suivantes :
+ **throttle\$1initial\$1delay\$1ms** – Le délai d’appel initial appliqué après le premier événement de congestion. La valeur par défaut est de 10 millisecondes.
+ **throttle\$1max\$1delay\$1ms** – Le délai maximal entre les appels. Vous pouvez obtenir le TPS en le divisant en 1 000 ms. La valeur par défaut est de 1 000 millisecondes.
+ **throttle\$1dimine\$1factor** – Le facteur par lequel Athena réduit le taux d’appels. La valeur par défaut est 0,5.
+ **throttle\$1increase\$1ms** – La vitesse à laquelle Athena réduit le délai d’appel. La valeur par défaut est de 10 millisecondes.

## Bases de données et tables
<a name="connectors-cloudwatch-databases-and-tables"></a>

Le CloudWatch connecteur Athena vous met en correspondance LogGroups sous forme de schémas (c'est-à-dire de bases de données) et chacun d'entre eux LogStream sous forme de table. Le connecteur mappe également une `all_log_streams` vue spéciale qui contient tout ce qui LogStreams se trouve dans le LogGroup. Cette vue vous permet d'interroger tous les journaux en une seule fois LogGroup au lieu de les parcourir LogStream individuellement.

Chaque table mappée par le connecteur CloudWatch Athena possède le schéma suivant. Ce schéma correspond aux champs fournis par CloudWatch Logs.
+ **log\$1stream** — Un `VARCHAR` qui contient le nom de la ligne d' LogStream où provient la ligne.
+ **time** (temps) – Un `INT64` qui contient l’heure à laquelle la ligne de journal a été générée.
+ **message** – Un `VARCHAR` qui contient le message du journal.

**Exemples**  
L'exemple suivant montre comment exécuter une `SELECT` requête sur un objet spécifique LogStream.

```
SELECT * 
FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."log_stream_name" 
LIMIT 100
```

L'exemple suivant montre comment utiliser la `all_log_streams` vue pour exécuter une requête sur tous les éléments LogStreams d'une valeur spécifiée LogGroup. 

```
SELECT * 
FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."all_log_streams" 
LIMIT 100
```

## Autorisations nécessaires
<a name="connectors-cloudwatch-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-cloudwatch.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudwatch/athena-cloudwatch.yaml). La liste suivante résume les autorisations requises.
+ **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.
+ **CloudWatch Lecture/écriture des journaux** : le connecteur utilise cette autorisation pour lire les données de vos journaux et écrire ses journaux de diagnostic.

## Performance
<a name="connectors-cloudwatch-performance"></a>

Le CloudWatch connecteur Athena tente d'optimiser les requêtes CloudWatch en parallélisant les analyses des flux de log requis pour votre requête. Pour certains filtres temporels, le transfert des prédicats est effectué à la fois dans la fonction Lambda et dans Logs. CloudWatch 

Pour des performances optimales, n'utilisez que des minuscules pour vos noms de groupes de journaux et de flux de journaux. L'utilisation d'une casse mixte oblige le connecteur à effectuer une recherche insensible à la casse, ce qui demande plus de temps de calcul.

**Note**  
 Le CloudWatch connecteur ne prend pas en charge les noms de base de données en majuscules. 

## Requêtes de transmission
<a name="connectors-cloudwatch-passthrough-queries"></a>

Le CloudWatch connecteur prend en charge les [requêtes passthrough](federated-query-passthrough.md) qui utilisent la [syntaxe de requête CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html). Pour plus d'informations sur CloudWatch Logs Insights, consultez [Analyser les données des CloudWatch journaux avec Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) dans le *guide de l'utilisateur Amazon CloudWatch Logs*.

Pour créer des requêtes directes avec CloudWatch, utilisez la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            STARTTIME => 'start_time',
            ENDTIME => 'end_time',
            QUERYSTRING => 'query_string',
            LOGGROUPNAMES => 'log_group-names',
            LIMIT => 'max_number_of_results'
        ))
```

L'exemple de requête CloudWatch directe suivant filtre le `duration` champ lorsqu'il n'est pas égal à 1000.

```
SELECT * FROM TABLE(
        system.query(
            STARTTIME => '1710918615308',
            ENDTIME => '1710918615972',
            QUERYSTRING => 'fields @duration | filter @duration != 1000',
            LOGGROUPNAMES => '/aws/lambda/cloudwatch-test-1',
            LIMIT => '2'
            ))
```

## Informations de licence
<a name="connectors-cloudwatch-license-information"></a>

Le projet de CloudWatch connecteur Amazon Athena est concédé sous licence [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Ressources supplémentaires
<a name="connectors-cloudwatch-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudwatch) sur GitHub .com.

# Connecteur Amazon Athena Metrics CloudWatch
<a name="connectors-cwmetrics"></a>

Le connecteur Amazon Athena CloudWatch Metrics permet à Amazon Athena d' CloudWatch interroger les données de métriques avec SQL.

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.

Pour plus d'informations sur la publication de métriques de requêtes CloudWatch depuis Athena elle-même, consultez. [Utiliser CloudWatch et EventBridge surveiller les requêtes et contrôler les coûts](workgroups-control-limits.md)

## Conditions préalables
<a name="connectors-cwmetrics-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-cwmetrics-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur CloudWatch Metrics.

### Connexions Glue (recommandé)
<a name="connectors-cwmetrics-gc"></a>

Nous vous recommandons de configurer un connecteur CloudWatch Metrics à l'aide d'un objet de connexions Glue. Pour ce faire, définissez la variable d'`glue_connection`environnement du connecteur CloudWatch Metrics Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type CLOUDWATCHMETRICS
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur CloudWatch Metrics créé à l'aide de connexions Glue ne prend pas en charge l'utilisation d'un gestionnaire de multiplexage.
Le connecteur CloudWatch Metrics créé à l'aide des connexions Glue n'en prend en charge que `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-cwmetrics-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

Le connecteur prend également en charge le [contrôle de congestion AIMD](https://en.wikipedia.org/wiki/Additive_increase/multiplicative_decrease) pour gérer les événements de régulation CloudWatch via la construction du SDK [Amazon Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk). `ThrottlingInvoker` Vous pouvez modifier le comportement de limitation par défaut en définissant l’une des variables d’environnement facultatives suivantes :
+ **throttle\$1initial\$1delay\$1ms** – Le délai d’appel initial appliqué après le premier événement de congestion. La valeur par défaut est de 10 millisecondes.
+ **throttle\$1max\$1delay\$1ms** – Le délai maximal entre les appels. Vous pouvez obtenir le TPS en le divisant en 1 000 ms. La valeur par défaut est de 1 000 millisecondes.
+ **throttle\$1dimine\$1factor** – Le facteur par lequel Athena réduit le taux d’appels. La valeur par défaut est 0,5.
+ **throttle\$1increase\$1ms** – La vitesse à laquelle Athena réduit le délai d’appel. La valeur par défaut est de 10 millisecondes.

## Bases de données et tables
<a name="connectors-cwmetrics-databases-and-tables"></a>

Le connecteur Athena CloudWatch Metrics mappe vos espaces de noms, dimensions, métriques et valeurs métriques dans deux tables dans un schéma unique appelé. `default`

### Le tableau des métriques
<a name="connectors-cwmetrics-the-metrics-table"></a>

La table `metrics` contient les métriques disponibles telles que définies de manière unique par une combinaison d’espace de noms, d’ensemble et de nom. La table `metrics` contient les colonnes suivantes.
+ **namespace** (espace de noms) – Un `VARCHAR` contenant l’espace de noms.
+ **metric\$1name**– Un `VARCHAR` contenant le nom de la métrique.
+ **dimensions** – Un `LIST` des objets `STRUCT` composés de `dim_name (VARCHAR)` et de `dim_value (VARCHAR)`.
+ **statistic** (statistique) – Un `LIST` de statistiques `VARCH` (par exemple, `p90`, `AVERAGE`, ...) disponible pour la métrique.

### La table metric\$1samples
<a name="connectors-cwmetrics-the-metric_samples-table"></a>

La table `metric_samples` contient les échantillons de métriques disponibles pour chaque métrique de la table `metrics`. La table `metric_samples` contient les colonnes suivantes.
+ **namespace** (espace de noms) – Un `VARCHAR` qui contient l’espace de noms.
+ **metric\$1name**– Un `VARCHAR` qui contient le nom de la métrique.
+ **dimensions** – Un `LIST` des objets `STRUCT` composés de `dim_name (VARCHAR)` et de `dim_value (VARCHAR)`.
+ **dim\$1name**– Un champ pratique `VARCHAR` que vous pouvez utiliser pour filtrer facilement en fonction du nom d’une dimension unique.
+ **dim\$1value**– Un champ pratique `VARCHAR` que vous pouvez utiliser pour filtrer facilement en fonction du nom d’une valeur unique.
+ **period** (période) – Un champ `INT` qui représente la « période » de la métrique en secondes (par exemple, une métrique de 60 secondes).
+ **timestamp** (horodatage) – Un champ `BIGINT` qui représente l’époque en secondes à laquelle se rapporte l’exemple de métrique.
+ **value** (valeur) – Un champ `FLOAT8` qui contient la valeur de l’exemple.
+ **statistic** (statistique) – Un `VARCHAR` qui contient le type statistique de l’exemple (par exemple, `AVERAGE` ou `p90`).

## Autorisations nécessaires
<a name="connectors-cwmetrics-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, consultez la `Policies` section du [athena-cloudwatch-metricsfichier .yaml.](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudwatch-metrics/athena-cloudwatch-metrics.yaml) La liste suivante résume les autorisations requises.
+ **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.
+ **CloudWatch Métriques ReadOnly** — Le connecteur utilise cette autorisation pour interroger les données de vos métriques.
+ **CloudWatch Enregistrement des journaux** : le connecteur utilise cet accès pour écrire ses journaux de diagnostic.

## Performance
<a name="connectors-cwmetrics-performance"></a>

Le connecteur Athena CloudWatch Metrics tente d'optimiser les requêtes par rapport aux CloudWatch métriques en parallélisant les analyses des flux de log requis pour votre requête. Pour certains filtres de période, de métrique, d'espace de noms et de dimension, le transfert des prédicats est effectué à la fois dans la fonction Lambda et dans Logs. CloudWatch 

## Informations de licence
<a name="connectors-cwmetrics-license-information"></a>

Le projet de connecteur Amazon Athena CloudWatch Metrics est concédé sous licence [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Ressources supplémentaires
<a name="connectors-cwmetrics-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudwatch-metrics) sur GitHub .com.

# Connecteur CMDB Amazon Athena AWS
<a name="connectors-cmdb"></a>

Le AWS connecteur Amazon Athena CMDB permet à Athena de communiquer avec différents AWS services afin que vous puissiez les interroger avec SQL.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-cmdb-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-cmdb-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur AWS CMDB.

### Connexions Glue (recommandé)
<a name="connectors-cmdb-gc"></a>

Nous vous recommandons de configurer un connecteur AWS CMDB à l'aide d'un objet de connexions Glue. Pour ce faire, définissez la variable d'`glue_connection`environnement du connecteur AWS CMDB Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type CMDB
```

**Propriétés d’environnement Lambda**

**glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur AWS CMDB créé à l'aide des connexions Glue ne prend pas en charge l'utilisation d'un gestionnaire de multiplexage.
Le connecteur AWS CMDB créé à l'aide des connexions Glue ne prend en charge `ConnectionSchemaVersion` que 2.

### Connexions héritées
<a name="connectors-cmdb-legacy"></a>

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

**Propriétés d’environnement Lambda**
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **default\$1ec2\$1image\$1owner — (Facultatif) Lorsque cette option est définie, elle contrôle le propriétaire** [de l'image Amazon par défaut qui filtre les Amazon Machine EC2 Images (AMI).](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) Si vous ne définissez pas cette valeur et que votre requête par rapport à la table EC2 des images n'inclut pas de filtre pour le propriétaire, vos résultats incluront toutes les images publiques.

## Bases de données et tables
<a name="connectors-cmdb-databases-and-tables"></a>

Le connecteur Athena AWS CMDB met à disposition les bases de données et tables suivantes pour interroger votre inventaire de ressources. AWS Pour plus d’informations sur les colonnes disponibles dans chaque table, exécutez une instruction `DESCRIBE database.table`à l’aide de la console Athena ou de l’API.
+ **ec2** — Cette base de données contient des ressources EC2 liées à Amazon, notamment les suivantes.
+ **ebs\$1volumes** – Contient les détails de vos volumes Amazon EBS.
+ **ec2\$1instances** — Contient les détails de vos EC2 instances.
+ **ec2\$1images** — Contient les détails des images de votre EC2 instance.
+ **routing\$1tables** – Contient les détails de vos tables de routage VPC.
+ **security\$1groups** – Contient les détails de vos groupes de sécurité.
+ **sous-réseaux** – Contient les détails de vos sous-réseaux VPC.
+ **vpcs** — Contient les détails de votre. VPCs
+ **mr** – Cette base de données contient des ressources relatives à Amazon EMR, notamment les suivantes.
+ **emr\$1clusters** – Contient les détails de vos clusters EMR.
+ **rds** – Cette base de données contient des ressources relatives à Amazon RDS, notamment les suivantes.
+ **rds\$1instances** – Contient les détails de vos instances RDS.
+ **s3** – Cette base de données contient des ressources relatives à RDS, notamment les suivantes.
+ **buckets** (compartiment)s – Contient les détails de vos compartiments Amazon S3.
+ **objects** (objets) – Contient les détails de vos objets Amazon S3, à l’exception de leur contenu.

## Autorisations nécessaires
<a name="connectors-cmdb-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, consultez la `Policies` section du [athena-aws-cmdbfichier .yaml.](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-aws-cmdb/athena-aws-cmdb.yaml) La liste suivante résume les autorisations requises.
+ **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.
+ **S3 List** (Liste S3) – Le connecteur utilise cette autorisation pour répertorier vos compartiments et vos objets Amazon S3.
+ **EC2 Décrire** — Le connecteur utilise cette autorisation pour décrire des ressources telles que vos EC2 instances Amazon, vos groupes de sécurité et vos volumes Amazon EBS. VPCs
+ **EMR Descrire/Liste** (Description EMR/Liste) – Le connecteur utilise cette autorisation pour décrire vos clusters EMR.
+ **RDS Describe** (Description RDS) – Le connecteur utilise cette autorisation pour décrire vos instances RDS.

## Performance
<a name="connectors-cmdb-performance"></a>

Actuellement, le connecteur Athena AWS CMDB ne prend pas en charge les scans parallèles. La poussée vers le bas de prédicat est effectuée au sein de la fonction Lambda. Dans la mesure du possible, des prédicats partiels sont transférés aux services interrogés. Par exemple, une requête concernant les détails d'une EC2 instance Amazon spécifique appelle l' EC2 API avec l'ID d'instance spécifique pour exécuter une opération de description ciblée.

## Informations de licence
<a name="connectors-cmdb-license-information"></a>

[Le projet de connecteur Amazon Athena AWS CMDB est concédé sous licence Apache-2.0.](https://www.apache.org/licenses/LICENSE-2.0.html)

## Ressources supplémentaires
<a name="connectors-cmdb-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-aws-cmdb) sur GitHub .com.

# Connecteur Amazon Athena pour Db2 IBM
<a name="connectors-ibm-db2"></a>

Le connecteur Amazon Athena pour Db2 permet à Amazon Athena d'exécuter des requêtes SQL sur vos bases de données Db2 IBM à l'aide de JDBC.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-dbtwo-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ 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 ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

## Limitations
<a name="connectors-ibm-db2-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d’informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Les types de données de date et d’horodatage dans des conditions de filtre doivent être convertis en types de données appropriés.

## Conditions
<a name="connectors-ibm-db2-terms"></a>

Les termes suivants concernent le connecteur Db2.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-ibm-db2-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Db2.

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-ibm-db2-gc"></a>

Nous vous recommandons de configurer un connecteur Db2 en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Db2 Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type DB2
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Db2 créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Db2 créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-ibm-db2-legacy"></a>

#### Chaîne de connexion
<a name="connectors-ibm-db2-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
dbtwo://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-ibm-db2-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | Db2MuxCompositeHandler | 
| Gestionnaire de métadonnées | Db2MuxMetadataHandler | 
| Gestionnaire d’enregistrements | Db2MuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-ibm-db2-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mydbtwocatalog, le nom de la variable d’environnement est alors mydbtwocatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Lambda Db2 MUX qui prend en charge deux instances de base de données : `dbtwo1` (par défaut) et `dbtwo2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | dbtwo://jdbc:db2://dbtwo1.hostname:port/database\$1name:\$1\$1secret1\$1name\$1 | 
| dbtwo\$1catalog1\$1connection\$1string | dbtwo://jdbc:db2://dbtwo1.hostname:port/database\$1name:\$1\$1secret1\$1name\$1 | 
| dbtwo\$1catalog2\$1connection\$1string | dbtwo://jdbc:db2://dbtwo2.hostname:port/database\$1name:\$1\$1secret2\$1name\$1 | 

##### Fourniture des informations d’identification
<a name="connectors-ibm-db2-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${secret_name}`.

```
dbtwo://jdbc:db2://hostname:port/database_name:${secret_name}
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
dbtwo://jdbc:db2://hostname:port/database_name:user=user_name;password=password;
```

#### Utilisation d'un gestionnaire de connexion unique
<a name="connectors-ibm-db2-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d'enregistrement suivants pour vous connecter à une seule instance Db2.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | Db2CompositeHandler | 
| Gestionnaire de métadonnées | Db2MetadataHandler | 
| Gestionnaire d’enregistrements | Db2RecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-ibm-db2-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L'exemple de propriété suivant concerne une seule instance Db2 prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | dbtwo : //jdbc:db2 : //hostname:port/ : \$1 \$1secret\$1name\$1 database\$1name  | 

#### Paramètres de déversement
<a name="connectors-ibm-db2-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-ibm-db2-data-type-support"></a>

Le tableau suivant affiche les types de données correspondants pour JDBC et Arrow.


****  

| Db2 | Flèche | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| DATE | DATEDAY | 
| TIME | VARCHAR | 
| TIMESTAMP | DATEMILLI | 
| DATETIME | DATEMILLI | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | DECIMAL | 
| REAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 
| DECFLOAT | FLOAT8 | 

## Partitions et déversements
<a name="connectors-ibm-db2-partitions-and-splits"></a>

Une partition est représentée par une ou plusieurs colonnes de partition de type `varchar`. Le connecteur Db2 crée des partitions en utilisant les schémas d'organisation suivants.
+ Distribution par hachage
+ Partition par gamme
+ Organisation par dimensions

Le connecteur récupère les détails des partitions, tels que le nombre de partitions et le nom des colonnes, à partir d'une ou plusieurs tables de métadonnées Db2. Les divisions sont créées en fonction du nombre de partitions identifiées. 

## Performance
<a name="connectors-ibm-db2-performance"></a>

Le connecteur Athena Db2 effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes.

### Clauses LIMIT
<a name="connectors-dbtwo-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-dbtwo-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Db2 peut combiner ces expressions et les pousser directement vers Db2 pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Db2 suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-dbtwo-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Requêtes de transmission
<a name="connectors-dbtwo-passthrough-queries"></a>

Le connecteur Db2 prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Db2, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Db2. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-dbtwo-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-dbtwo-additional-resources"></a>

Pour obtenir les informations les plus récentes sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2/pom.xml) du connecteur DB2 sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-db2) sur GitHub .com.

# Connecteur Amazon Athena pour Db2 AS/400 (Db2 iSeries) IBM
<a name="connectors-ibm-db2-as400"></a>

Le connecteur Amazon Athena pour Db2 AS/400 permet à Amazon Athena d’exécuter des requêtes SQL sur vos bases de données Db2 AS/400 (Db2 iSeries) IBM à l’aide de JDBC.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-db2as400-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ 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 ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

## Limitations
<a name="connectors-ibm-db2-as400-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d’informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Les types de données de date et d’horodatage dans des conditions de filtre doivent être convertis en types de données appropriés.

## Conditions
<a name="connectors-ibm-db2-as400-terms"></a>

Les termes suivants concernent le connecteur Db2 AS/400.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-ibm-db2-as400-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Db2 AS/400.

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-ibm-db2-as400-gc"></a>

Nous vous recommandons de configurer un connecteur Db2 AS/400 en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Db2 AS/400 Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type DB2AS400
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Db2 AS/400 créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Db2 AS/400 créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-ibm-db2-as400-legacy"></a>

#### Chaîne de connexion
<a name="connectors-ibm-db2-as400-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
db2as400://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-ibm-db2-as400-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | Db2MuxCompositeHandler | 
| Gestionnaire de métadonnées | Db2MuxMetadataHandler | 
| Gestionnaire d’enregistrements | Db2MuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-ibm-db2-as400-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mydb2as400catalog, le nom de la variable d’environnement est alors mydb2as400catalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Lambda Db2 MUX qui prend en charge deux instances de base de données : `db2as4001` (par défaut) et `db2as4002`.


****  

| Propriété | Value | 
| --- | --- | 
| default | db2as400://jdbc:as400://<ip\$1address>;<properties>;:\$1\$1<secret name>\$1; | 
| db2as400\$1catalog1\$1connection\$1string | db2as400://jdbc:as400://db2as4001.hostname/:\$1\$1secret1\$1name\$1 | 
| db2as400\$1catalog2\$1connection\$1string | db2as400://jdbc:as400://db2as4002.hostname/:\$1\$1secret2\$1name\$1 | 
| db2as400\$1catalog3\$1connection\$1string | db2as400://jdbc:as400://<ip\$1address>;user=<username>;password=<password>;<properties>; | 

##### Fourniture des informations d’identification
<a name="connectors-ibm-db2-as400-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${secret_name}`.

```
db2as400://jdbc:as400://<ip_address>;<properties>;:${<secret_name>};
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
db2as400://jdbc:as400://<ip_address>;user=<username>;password=<password>;<properties>;
```

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-ibm-db2-as400-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrement suivants pour vous connecter à une seule instance Db2 AS/400.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | Db2CompositeHandler | 
| Gestionnaire de métadonnées | Db2MetadataHandler | 
| Gestionnaire d’enregistrements | Db2RecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-ibm-db2-as400-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une seule instance Db2 AS/400 prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | db2as400://jdbc:as400://<ip\$1address>;<properties>;:\$1\$1<secret\$1name>\$1; | 

#### Paramètres de déversement
<a name="connectors-ibm-db2-as400-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-ibm-db2-as400-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour JDBC et Apache Arrow.


****  

| Db2 AS/400 | Flèche | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| DATE | DATEDAY | 
| TIME | VARCHAR | 
| TIMESTAMP | DATEMILLI | 
| DATETIME | DATEMILLI | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | DECIMAL | 
| REAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 
| DECFLOAT | FLOAT8 | 

## Partitions et déversements
<a name="connectors-ibm-db2-as400-partitions-and-splits"></a>

Une partition est représentée par une ou plusieurs colonnes de partition de type `varchar`. Le connecteur Db2 AS/400 crée des partitions en utilisant les schémas d’organisation suivants.
+ Distribution par hachage
+ Partition par gamme
+ Organisation par dimensions

Le connecteur récupère les détails des partitions, tels que le nombre de partitions et le nom des colonnes, à partir d’une ou de plusieurs tables de métadonnées Db2 AS/400. Les divisions sont créées en fonction du nombre de partitions identifiées. 

## Performance
<a name="connectors-db2-as400-performance"></a>

Pour de meilleures performances, utilisez la transmission des prédicats pour interroger les données depuis Athena, comme dans les exemples suivants.

```
SELECT * FROM "lambda:<LAMBDA_NAME>"."<SCHEMA_NAME>"."<TABLE_NAME>" 
 WHERE integercol = 2147483647
```

```
SELECT * FROM "lambda: <LAMBDA_NAME>"."<SCHEMA_NAME>"."<TABLE_NAME>" 
 WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Requêtes de transmission
<a name="connectors-db2as400-passthrough-queries"></a>

Le connecteur Db2 AS/400 prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Db2 AS/400, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant permet de transmettre une requête à une source de données dans Db2 AS/400. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-db2as400-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2-as400/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2-as400/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-db2as400-additional-resources"></a>

Pour obtenir les informations les plus récentes sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2-as400/pom.xml) du connecteur DB2 AS/400 sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-db2-as400) sur GitHub .com.

# Connecteur Amazon Athena pour DocumentDB
<a name="connectors-docdb"></a>

Le connecteur Amazon Athena DocumentDB permet à Amazon Athena de communiquer avec vos instances DocumentDB afin que vous puissiez interroger vos données DocumentDB avec 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 rôle IAM 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 peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-docdb-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-docdb-parameters"></a>

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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-docdb-gc"></a>

Nous vous recommandons de configurer un connecteur DocumentDB en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur DocumentDB Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type DOCUMENTDB
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur DocumentDB créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur DocumentDB créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-docdb-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **disable\$1glue** — (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\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.
+ **default\$1docdb** – 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\$1projection\$1and\$1casing** – (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](https://aws.amazon.com/blogs/apn/aws-data-transfer-charges-for-server-and-serverless-architectures/) 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\$1case\$1insensitive\$1match** (facultatif) : lorsqu’elle est définie sur `true`, cette option réalise des recherches non sensibles à la casse sur les noms de schéma et de table dans Amazon DocumentDB. La valeur par défaut est `false`. À utiliser si votre requête contient des noms de schéma ou de table en majuscules.

#### Définition des chaînes de connexion
<a name="connectors-docdb-specifying-connection-strings"></a>

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 instructions SQL, 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
<a name="connectors-docdb-using-secrets"></a>

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é de requête fédérée d’Athena avec Secrets Manager, le VPC connecté à votre fonction Lambda doit avoir un [accès internet](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) ou un [point de terminaison de VPC](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) pour vous connecter à Secrets Manager.

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 `<username>:<password>`. Les secrets stockés sous la forme `{username:<username>,password:<password>}` ne seront pas transmis correctement à la chaîne de connexion.

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         
```

Le SDK Athena Query Federation tente automatiquement de récupérer un secret nommé `docdb_instance_1_creds` à partir de Secrets Manager et d’injecte 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.

## Récupération de métadonnées supplémentaires
<a name="supplemental-metadata"></a>

Pour récupérer des métadonnées supplémentaires, procédez comme suit afin de configurer la base de données et la table Glue.

### Configuration de la base de données Glue
<a name="setup-glue-database"></a>

1. Créez une base de données Glue portant le même nom que votre collection DocumentDB.

1. Dans le champ URI de l’emplacement, saisissez `docdb-metadata-flag`.

### Configuration de la table Glue
<a name="setup-glue-table"></a>

Ajoutez les paramètres suivants à votre table Glue :
+ `docdb-metadata-flag = true`
+ `columnMapping = apple=APPLE`

  Dans cet exemple, `apple` représente le nom de colonne en minuscules dans Glue et `APPLE` représente le nom de colonne sensible à la casse réel dans votre collection DocumentDB.

### Vérification de la récupération des métadonnées
<a name="verify-metadata-retrieval"></a>

1. Exécutez votre requête.

1. Consultez les CloudWatch journaux de la fonction Lambda pour vérifier si la récupération des métadonnées est réussie. Une récupération réussie présentera l’entrée de journal suivante :

   ```
   doGetTable: Retrieved schema for table[TableName{schemaName=test, tableName=profiles}] from AWS Glue.
   ```

**Note**  
Si un champ `columnMapping` est déjà configuré dans votre table, il vous suffit d’ajouter le paramètre `docdb-metadata-flag = true` aux propriétés de la table.

## Configuration de bases de données et de tables dans AWS Glue
<a name="connectors-docdb-setting-up-databases-and-tables-in-aws-glue"></a>

É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**

1. 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.

1. Définissez la propriété URI de la base de données à inclure **docdb-metadata-flag**.

1. (Facultatif) Ajoutez la propriété de table **sourceTable**. 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 entre les règles de dénomination 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.

1. (Facultatif) Ajoutez la propriété de table **columnMapping**. 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 format `col1=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'environnement `disable_projection_and_casing` Lambda.

1. 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
<a name="connectors-docdb-data-type-support"></a>

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
<a name="connectors-docdb-schema-inference-data-types"></a>

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 | String | 
| INT | Entier | 
| BIGINT | Long | 
| BIT | Booléen | 
| FLOAT4 | Float | 
| FLOAT8 | Double | 
| TIMESTAMPSEC | Date | 
| VARCHAR | ObjectId | 
| LIST | List | 
| STRUCT | Document | 

### AWS Glue types de données
<a name="connectors-docdb-glue-data-types"></a>

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 | 
| List | LIST | 
| Struct | STRUCT | 

## Autorisations nécessaires
<a name="connectors-docdb-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-docdb.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-docdb/athena-docdb.yaml). La liste suivante résume les autorisations requises.
+ **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.
+ **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 DocumentDB.

## Performance
<a name="connectors-docdb-performance"></a>

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 de transmission
<a name="connectors-docdb-passthrough-queries"></a>

Basé sur NoSQL, le connecteur Athena pour Amazon DocumentDB prend en charge les [requêtes de transmission](federated-query-passthrough.md). Pour plus d’informations sur les interrogations avec Amazon DocumentDB, consultez [Querying](https://docs.aws.amazon.com/documentdb/latest/developerguide/querying.html) dans le *Guide de développement d’Amazon DocumentDB*.

Pour utiliser les requêtes de transmission 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 base de données `example` dans la collection `TPCDS`, 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
<a name="connectors-docdb-additional-resources"></a>
+ *Pour un article sur l'utilisation d'[Amazon Athena Federated Query pour connecter une base de données MongoDB à [Quick](https://aws.amazon.com/quicksight/)](federated-queries.md) afin de créer des tableaux de bord et des visualisations, consultez Visualiser les données [MongoDB depuis Quick à l'aide d'Amazon Athena Federated Query sur le blog Big Data](https://aws.amazon.com/blogs/big-data/visualize-mongodb-data-from-amazon-quicksight-using-amazon-athena-federated-query/).AWS *
+ Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-docdb) sur GitHub .com.

# Connecteur Amazon Athena pour DynamoDB
<a name="connectors-dynamodb"></a>

Le connecteur Amazon Athena DynamoDB permet à Amazon Athena de communiquer avec DynamoDB afin que vous puissiez requêter vos tables avec SQL. Les opérations d'écriture telles que [INSERT INTO](insert-into.md) ne sont pas prises en charge.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

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 AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

## Conditions préalables
<a name="connectors-dynamodb-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-dynamodb-limitations"></a>

Si vous migrez vos connexions DynamoDB vers le Catalogue Glue et Lake Formation, seuls les noms de table et de colonne en minuscules seront reconnus. 

## Parameters
<a name="connectors-dynamodb-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur DynamoDB.

### Connexions Glue (recommandé)
<a name="ddb-gc"></a>

Nous vous recommandons de configurer un connecteur DynamoDB en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur DynamoDB Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type DYNAMODB
```

**Propriétés d’environnement Lambda**

**glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur DynamoDB créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur DynamoDB créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="ddb-legacy"></a>

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

**Propriétés d’environnement Lambda**
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **disable\$1glue** — (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\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.
+ **disable\$1projection\$1and\$1casing** – (Facultatif) Désactive la projection et la casse. À utiliser si vous souhaitez interroger des tables DynamoDB dont le nom de colonne est sensible à la casse et que vous ne souhaitez pas spécifier de propriété `columnMapping` sur votre table AWS Glue .

  Le paramètre `disable_projection_and_casing` utilise les valeurs suivantes pour spécifier le comportement de la casse et du mappage des colonnes :
  + **auto** – Désactive la projection et la casse lorsqu’un type précédemment non pris en charge est détecté et que le mappage des noms de colonnes n’est pas défini sur la table. Il s’agit du paramètre par défaut.
  + **always** (toujours) – Désactive la projection et la casse de manière inconditionnelle. Cela est utile lorsque vous avez des noms de vos colonnes DynamoDB sensibles à la casse, mais que vous ne souhaitez pas spécifier de mappage de noms de colonnes.

  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](https://aws.amazon.com/blogs/apn/aws-data-transfer-charges-for-server-and-serverless-architectures/) 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. 

## Configuration de bases de données et de tables dans AWS Glue
<a name="connectors-dynamodb-setting-up-databases-and-tables-in-aws-glue"></a>

La capacité d'inférence de schéma intégrée du connecteur étant limitée, vous souhaiterez peut-être l'utiliser AWS Glue pour les métadonnées. Pour ce faire, vous devez disposer d'une base de données et d'une table AWS Glue. Pour les utiliser avec DynamoDB, vous devez modifier leurs propriétés.

**Pour modifier les propriétés de la base de données dans la AWS Glue console**

1. Connectez-vous à la AWS Glue console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Dans le panneau de navigation, développez **Catalogue de données**, puis sélectionnez **Bases de données**.

   Sur la page **Databases** (Bases de données), vous pouvez modifier une base de données existante ou sélectionner **Add database** (Ajouter une base de données) pour en créer une.

1. Dans la liste des bases de données, sélectionnez le lien de la base de données à modifier.

1. Choisissez **Modifier**.

1. Sur la page **Mettre à jour une base de données**, sous **Paramètres de la base de données**, dans **Emplacement**, ajoutez la chaîne **dynamo-db-flag**. Ce mot clé indique que la base de données contient des tables que le connecteur Athena DynamoDB utilise pour des métadonnées supplémentaires et qu'elle est requise pour les bases de données autres que. AWS Glue `default` La propriété `dynamo-db-flag` permet de filtrer les bases de données des comptes comprenant de nombreuses bases de données.

1. Choisissez **Update Database** (Mettre à jour la base de données).

**Pour modifier les propriétés d'un tableau dans la AWS Glue console**

1. Connectez-vous à la AWS Glue console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Dans le panneau de navigation, développez **Catalogue de données**, puis sélectionnez **Tables**.

1. Sur la page **Tables**, dans la liste des tables, choisissez le nom lié de la table que vous souhaitez modifier.

1. Sélectionnez **Actions**, puis **Edit table** (Modifier la table).

1. Sur la page **Edit table** (Modifier la table), dans la section **Table properties** (Propriétés de la table), ajoutez les propriétés de table suivantes, selon les besoins. Si vous utilisez le robot AWS Glue DynamoDB, ces propriétés sont définies automatiquement.
   + **dynamoDB**— Chaîne indiquant au connecteur Athena DynamoDB que la table peut être utilisée pour des métadonnées supplémentaires. Saisissez la chaîne `dynamodb` dans les propriétés de la table, dans un champ nommé **classification** (correspondance exacte).
**Note**  
La page **Définir les propriétés de la table** qui fait partie du processus de création de table dans la AWS Glue console comporte une section **Format de données** avec un champ **Classification**. Vous ne pouvez pas saisir ou choisir `dynamodb` ici. Après avoir créé votre table, suivez plutôt les étapes pour modifier la table et pour saisir `classification` et `dynamodb` sous forme de paire clé-valeur dans la section **Propriétés de la table**.
   + **sourceTable** – Propriété de table facultative qui définit le nom de la table source dans DynamoDB. Utilisez cette option si les règles de dénomination des AWS Glue tables vous empêchent de créer une AWS Glue table portant le même nom que votre table DynamoDB. Par exemple, les majuscules ne sont pas autorisées dans les noms de AWS Glue tables, mais elles le sont dans les noms de tables DynamoDB.
   + **columnMapping** – Propriété de table facultative qui définit les mappages de noms de colonnes. Utilisez cette option 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 votre table DynamoDB. Par exemple, les majuscules ne sont pas autorisées dans les noms de AWS Glue colonnes, mais le sont dans les noms de colonne DynamoDB. La valeur de la propriété devrait être au format col1=Col1,col2=Col2. Notez que le mappage des colonnes s'applique uniquement aux noms de colonnes de niveau supérieur et non aux champs imbriqués.
   + **defaultTimeZone**— Propriété de table facultative appliquée à `date` ou à `datetime` des valeurs n'ayant pas de fuseau horaire explicite. La définition de cette valeur est recommandée pour éviter tout écart entre le fuseau horaire par défaut de la source de données et le fuseau horaire de la session Athena.
   + **datetimeFormatMapping**— Propriété de table facultative qui spécifie le `datetime` format `date` ou à utiliser lors de l'analyse des données d'une colonne de type AWS Glue `date` or`timestamp`. Si cette propriété n’est pas spécifiée, le connecteur tente de [déduire](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateFormatUtils.html) un format ISO-8601. Si le connecteur ne peut pas déduire le format `date` ou `datetime` ni analyser la chaîne brute, la valeur est alors omise du résultat. 

     La valeur `datetimeFormatMapping` doit être au format `col1=someformat1,col2=someformat2`. Voici quelques exemples de formats :

     ```
     yyyyMMdd'T'HHmmss 
     ddMMyyyy'T'HH:mm:ss
     ```

     Si votre colonne contient des valeurs `date` ou `datetime` sans fuseau horaire et que vous souhaitez utiliser la colonne dans la clause `WHERE`, définissez la propriété `datetimeFormatMapping` pour la colonne.

1. Si vous définissez manuellement vos colonnes, assurez-vous que vous utilisez les types de données appropriés. Si vous avez utilisé un crawler, validez les colonnes et les types qu’il a découverts.

1. Choisissez **Enregistrer**.

## Autorisations nécessaires
<a name="connectors-dynamodb-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-dynamodb.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-dynamodb/athena-dynamodb.yaml). La liste suivante résume les autorisations requises.
+ **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 DynamoDB nécessite un accès en lecture seule au pour obtenir des informations sur AWS Glue Data Catalog le schéma.
+ **CloudWatch Journaux** : le connecteur a besoin d'accéder aux CloudWatch journaux pour stocker les journaux.
+ **Accès en lecture DynamoDB** – Le connecteur utilise les opérations d’API `DescribeTable`, `ListSchemas`, `ListTables`, `Query` et `Scan`.

## Performance
<a name="connectors-dynamodb-performance"></a>

Le connecteur Athena DynamoDB prend en charge les examens parallèles et les tentatives de transfert de prédicats dans le cadre de ses requêtes DynamoDB. Un prédicat de clé de hachage avec des valeurs distinctes `X` se traduit par des appels de requête `X` à DynamoDB. Tous les autres scénarios de prédicat se traduisent par un nombre `Y` d’appels d’analyse, où `Y` est déterminé de manière heuristique en fonction de la taille de votre table et de son débit alloué. Cependant, la sélection d'un sous-ensemble de colonnes entraîne parfois un délai d'exécution plus long des requêtes.

Les clauses `LIMIT` et les prédicats simples sont poussés vers le bas, ce qui peut réduire la quantité de données analysées et entraîner une diminution du délai d'exécution des requêtes. 

### Clauses LIMIT
<a name="connectors-dynamodb-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-dynamodb-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena DynamoDB peut combiner ces expressions et les pousser directement vers DynamoDB pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena DynamoDB suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1NULL

### Exemple de poussée combinée vers le bas
<a name="connectors-dynamodb-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT *
FROM my_table
WHERE col_a > 10 and col_b < 10
LIMIT 10
```

Pour un article sur l'utilisation de la poussée vers le bas de prédicats pour améliorer les performances des requêtes fédérées, y compris DynamoDB, consultez [Améliorer les requêtes fédérées avec la poussée vers le bas de prédicats dans Amazon Athena](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) sur le *blog AWS Big Data*.

## Requêtes de transmission
<a name="connectors-dynamodb-passthrough-queries"></a>

Le connecteur DynamoDB prend en charge les [requêtes de transmission](federated-query-passthrough.md) et utilise la syntaxe PartiQL. L'opération d'API [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)DynamoDB n'est pas prise en charge. Pour plus d’informations sur les interrogations avec DynamoDB à l’aide de PartiQL, consultez [PartiQL select statements for DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.select.html) dans le *Guide de développement d’Amazon DynamoDB.*

Pour utiliser les requêtes de transmission avec DynamoDB, utilisez la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query_string'
        ))
```

L’exemple de requête de transmission DynamoDB suivant utilise PartiQL pour renvoyer la liste des appareils Fire TV Stick dont la propriété `DateWatched` est postérieure au 24/12/22.

```
SELECT * FROM TABLE(
        system.query(
           query => 'SELECT Devices 
                       FROM WatchList 
                       WHERE Devices.FireStick.DateWatched[0] > '12/24/22''
        ))
```

## Résolution des problèmes
<a name="connectors-dynamodb-troubleshooting"></a>

### Plusieurs filtres sur une colonne de clé de tri
<a name="connectors-dynamodb-troubleshooting-sort-key-filters"></a>

**Message d'erreur** : ne KeyConditionExpressions doit contenir qu'une seule condition par clé

**Cause** : ce problème peut se produire dans la version 3 du moteur Athena dans les requêtes comportant à la fois un filtre de limite inférieure et supérieure sur une colonne de clé de tri DynamoDB. DynamoDB ne prenant en charge qu'une seule condition de filtre sur une clé de tri, une erreur est générée lorsque le connecteur tente de pousser vers le bas une requête sur laquelle les deux conditions sont appliquées.

**Solution** : mettre à jour le connecteur vers la version 2023.11.1 ou ultérieure. Pour obtenir des instructions sur la mise à jour d'un connecteur, consultez [Mise à jour d’un connecteur de source de données](connectors-updating.md).

## Coûts
<a name="connectors-dynamodb-costs"></a>

Les coûts d'utilisation du connecteur dépendent des AWS ressources sous-jacentes utilisées. Étant donné que les requêtes utilisant des scans peuvent consommer un grand nombre d'[unités de capacité de lecture (RCUs)](https://aws.amazon.com/dynamodb/pricing/provisioned/), examinez attentivement les informations relatives à la tarification d'[Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing/).

## Ressources supplémentaires
<a name="connectors-dynamodb-additional-resources"></a>
+ Pour une introduction à l'utilisation du connecteur Amazon Athena DynamoDB, consultez [Accéder aux tables Amazon DynamoDB, les interroger et les joindre à l'aide d'Athena](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) dans le guide *Modèles de recommandations AWS *. 
+ Pour un article expliquant comment utiliser le connecteur Athena DynamoDB pour interroger des données dans DynamoDB avec SQL et visualiser des informations dans Quick, consultez le *billet de AWS blog* sur le Big Data Visualize Amazon DynamoDB insights in Quick à l'aide du connecteur Amazon [Athena DynamoDB](https://aws.amazon.com/blogs/big-data/visualize-amazon-dynamodb-insights-in-amazon-quicksight-using-the-amazon-athena-dynamodb-connector-and-aws-glue/) et. AWS Glue
+ [Pour lire un article sur l'utilisation du connecteur Amazon Athena DynamoDB avec Amazon DynamoDB, Athena et Quick afin de créer un tableau de bord de gouvernance simple, consultez le billet du blog Big *AWS Data Query cross-account Amazon DynamoDB tables using Amazon Athena Federated Query*.](https://aws.amazon.com/blogs/big-data/query-cross-account-amazon-dynamodb-tables-using-amazon-athena-federated-query/)
+ Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) sur GitHub .com.

# Connecteur Amazon Athena pour Google BigQuery
<a name="connectors-bigquery"></a>

Le connecteur Amazon Athena pour Google [BigQuery](https://cloud.google.com/bigquery/)permet à Amazon Athena d'exécuter des requêtes SQL sur vos données Google. BigQuery

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-bigquery-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-bigquery-limitations"></a>
+ Les fonctions Lambda ont un délai d’expiration maximal de 15 minutes. Chaque division exécute une requête BigQuery et doit se terminer avec suffisamment de temps pour stocker les résultats afin qu'Athéna puisse les lire. Si le délai imparti à la fonction Lambda expire, la requête échoue.
+ Google BigQuery fait la distinction majuscules/minuscules. Le connecteur tente de corriger le cas des noms de jeux de données, des noms de tables et des projets IDs. Cette opération est nécessaire, car Athena met en minuscules toutes les métadonnées. Ces corrections font passer de nombreux appels supplémentaires à Google BigQuery.
+ Les types de données binaires ne sont pas pris en charge.
+ En raison de la BigQuery simultanéité de Google et des limites de quotas, le connecteur peut rencontrer des problèmes liés aux limites de quotas Google. Pour éviter ces problèmes, soumettez autant de contraintes BigQuery que possible à Google. Pour plus d'informations sur BigQuery les quotas, consultez la section [Quotas et limites](https://cloud.google.com/bigquery/quotas) dans la BigQuery documentation de Google.

## Parameters
<a name="connectors-bigquery-parameters"></a>

Utilisez les paramètres de cette section pour configurer le BigQuery connecteur Google.

### Connexions Glue (recommandé)
<a name="bigquery-gc"></a>

Nous vous recommandons de configurer un BigQuery connecteur Google à l'aide d'un objet de connexions Glue. Pour ce faire, définissez la variable d'`glue_connection`environnement du BigQuery connecteur Lambda de Google sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type BIGQUERY
```

**Propriétés d’environnement Lambda**

**glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le BigQuery connecteur Google créé à l'aide des connexions Glue ne prend pas en charge l'utilisation d'un gestionnaire de multiplexage.
Le BigQuery connecteur Google créé à l'aide des connexions Glue ne prend en charge que `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="bigquery-legacy"></a>

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

**Propriétés d’environnement Lambda**
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **gcp\$1project\$1id** – L’ID du projet (et non le nom du projet) qui contient les jeux de données à partir desquels le connecteur doit lire (par exemple, `semiotic-primer-1234567`).
+ **secret\$1manager\$1gcp\$1creds\$1name — Le nom du** secret AWS Secrets Manager qui contient vos informations d'identification au format JSON (par exemple,). BigQuery `GoogleCloudPlatformCredentials`
+ **big\$1query\$1endpoint** — (Facultatif) L'URL d'un point de terminaison privé. BigQuery Utilisez ce paramètre lorsque vous souhaitez accéder BigQuery via un point de terminaison privé.

## Divisions et vues
<a name="connectors-bigquery-splits-and-views"></a>

Étant donné que le BigQuery connecteur utilise l'API BigQuery Storage Read pour interroger les tables et que l'API BigQuery Storage ne prend pas en charge les vues, le connecteur utilise le BigQuery client avec une seule division pour les vues.

## Performance
<a name="connectors-bigquery-performance"></a>

Pour interroger les tables, le BigQuery connecteur utilise l'API BigQuery Storage Read, qui utilise un protocole basé sur le RPC qui fournit un accès rapide au stockage BigQuery géré. Pour plus d'informations sur l'API BigQuery Storage Read, consultez la section [Utiliser l'API BigQuery Storage Read pour lire les données des tables](https://cloud.google.com/bigquery/docs/reference/storage) dans la documentation de Google Cloud.

La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur est sujet à des échecs de requête lorsque la simultanéité augmente, et est généralement un connecteur lent.

Le BigQuery connecteur Google Athena effectue le transfert des prédicats vers le bas pour réduire le nombre de données scannées par la requête. `LIMIT`les `ORDER BY` clauses, les prédicats simples et les expressions complexes sont transférés vers le connecteur afin de réduire la quantité de données numérisées et le temps d'exécution des requêtes. 

### Clauses LIMIT
<a name="connectors-bigquery-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Requêtes Top N
<a name="connectors-bigquery-performance-top-n-queries"></a>

Une requête Top `N` spécifie le classement du jeu de résultats et la limite du nombre de lignes renvoyées. Vous pouvez utiliser ce type de requête pour déterminer les valeurs Top `N` maximales ou Top `N` minimales pour vos jeux de données. Grâce à la poussée vers le bas Top `N`, le connecteur renvoie uniquement des lignes `N` classées à Athena.

### Prédicats
<a name="connectors-bigquery-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le BigQuery connecteur Athena Google peut combiner ces expressions et les envoyer directement à Google BigQuery pour améliorer les fonctionnalités et réduire la quantité de données numérisées.

Les opérateurs de BigQuery connecteurs Athena Google suivants prennent en charge le transfert de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-bigquery-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
ORDER BY col_a DESC 
LIMIT 10;
```

## Requêtes de transmission
<a name="connectors-bigquery-passthrough-queries"></a>

Le BigQuery connecteur Google prend en charge [les requêtes directes](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser des requêtes directes avec Google BigQuery, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L'exemple de requête suivant permet de transférer une requête vers une source de données dans Google BigQuery. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-bigquery-license-information"></a>

Le projet Amazon Athena Google BigQuery Connector est concédé sous licence [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-bigquery-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-google-bigquery) sur GitHub .com.

# Connecteur Amazon Athena Google Cloud Storage
<a name="connectors-gcs"></a>

Le connecteur Amazon Athena Google Cloud Storage permet à Amazon Athena d’exécuter des requêtes sur des fichiers Parquet et CSV stockés dans un compartiment Google Cloud Storage (GCS). Après avoir regroupé un ou plusieurs fichiers Parquet ou CSV dans un dossier partitionné ou non partitionné dans un compartiment GCS, vous pouvez les organiser dans une table de base de données [AWS Glue](https://aws.amazon.com/glue/).

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

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 AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

Pour consulter un article expliquant comment utiliser Athena pour exécuter des requêtes sur des fichiers Parquet ou CSV dans un bucket GCS, consultez le billet de blog consacré aux AWS mégadonnées Utiliser [Amazon Athena pour interroger les données stockées dans](https://aws.amazon.com/blogs/big-data/use-amazon-athena-to-query-data-stored-in-google-cloud-platform/) Google Cloud Platform.

## Conditions préalables
<a name="connectors-gcs-prerequisites"></a>
+ Configurez une AWS Glue base de données et une table correspondant à votre bucket et à vos dossiers dans Google Cloud Storage. Pour consulter les étapes à suivre, reportez-vous à [Configuration de bases de données et de tables dans AWS Glue](#connectors-gcs-setting-up-databases-and-tables-in-glue) plus loin dans ce document.
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-gcs-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Actuellement, le connecteur ne prend en charge que le `VARCHAR` type pour les colonnes de partition (`string`ou `varchar` dans un schéma de AWS Glue table). Les autres types de champs de partition génèrent des erreurs lorsque vous les interrogez dans Athena.

## Conditions
<a name="connectors-gcs-terms"></a>

Les termes suivants se rapportent au connecteur GCS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre compartiment GCS. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre compartiment GCS.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre compartiment GCS.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre compartiment GCS.

## Types de fichiers pris en charge
<a name="connectors-gcs-supported-file-types"></a>

Le connecteur GCS prend en charge les types de fichiers Parquet et CSV.

**Note**  
Assurez-vous de ne pas placer les fichiers CSV et Parquet dans le même compartiment ou chemin GCS. Cela peut générer une erreur d’exécution lors d’une tentative de lecture des fichiers Parquet au format CSV ou vice versa. 

## Parameters
<a name="connectors-gcs-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur GCS.

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-gcs-gc"></a>

Nous vous recommandons de configurer un connecteur GCS en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur GCS Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type GOOGLECLOUDSTORAGE
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur GCS créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur GCS créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-gcs-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **secret\$1manager\$1gcp\$1creds\$1name — Le nom du** secret AWS Secrets Manager qui contient vos informations d'identification GCS au format JSON (par exemple,). `GoogleCloudPlatformCredentials`

## Configuration de bases de données et de tables dans AWS Glue
<a name="connectors-gcs-setting-up-databases-and-tables-in-glue"></a>

La capacité d'inférence de schéma intégrée du connecteur GCS étant limitée, nous vous recommandons de l'utiliser AWS Glue pour vos métadonnées. Les procédures suivantes montrent comment créer une base de données et une table AWS Glue auxquelles vous pouvez accéder depuis Athena.

### Création d'une base de données dans AWS Glue
<a name="connectors-gcs-creating-a-database-in-glue"></a>

Vous pouvez utiliser la AWS Glue console pour créer une base de données à utiliser avec le connecteur GCS.

**Pour créer une base de données dans AWS Glue**

1. Connectez-vous à la AWS Glue console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Dans le volet de navigation, sélectionnez **Databases** (Bases de données).

1. Choisissez **Ajouter une base de données**.

1. Dans le champ **Name** (Nom), saisissez le nom de la base de données que vous souhaitez utiliser avec le connecteur GCS.

1. Dans **Emplacement**, spécifiez `google-cloud-storage-flag`. Cet emplacement indique au connecteur GCS que la AWS Glue base de données contient des tables pour les données GCS à interroger dans Athena. Le connecteur reconnaît les bases de données qui présentent cet indicateur dans Athena et ignore les bases de données qui ne le présentent pas.

1. Choisissez **Créer une base de données**.

### Création d'une table dans AWS Glue
<a name="connectors-gcs-creating-a-table-in-glue"></a>

Vous pouvez maintenant créer une table pour la base de données. Lorsque vous créez une AWS Glue table à utiliser avec le connecteur GCS, vous devez spécifier des métadonnées supplémentaires.

**Pour créer une table dans la AWS Glue console**

1. Dans le volet de navigation de la AWS Glue console, sélectionnez **Tables**.

1. Sur la page **Tables**, sélectionnez **Add table** (Ajouter une table).

1. Sur la page **Set table properties** (Définir les propriétés de la table), saisissez les informations suivantes.
   + **Name** (Nom) – Un nom unique pour la table.
   + **Database** (Base de données) – Sélectionnez la base de données AWS Glue que vous avez créée pour le connecteur GCS.
   + **Include path** (Inclure le chemin) – Dans la section **Data store** (Magasin de données), pour **Include path** (Inclure le chemin), saisissez l’emplacement d’URI pour GCS dont le préfixe est `gs://` (par exemple, `gs://gcs_table/data/`). Si vous disposez d’un ou de plusieurs dossiers de partition, ne les incluez pas dans le chemin.
**Note**  
Lorsque vous saisissez le chemin de table non `s3://`, la console AWS Glue affiche une erreur. Vous pouvez ignorer cette erreur. La création de la table réussira.
   + **Data format** (Format de données) – Pour **Classification**, sélectionnez **CSV** ou **Parquet**.

1. Choisissez **Suivant**.

1. Sur la page **Choose or define schema** (Choisir ou définir un schéma), il est vivement recommandé de définir un schéma de table, mais cela n’est pas obligatoire. Si vous ne définissez pas de schéma, le connecteur GCS tente d’en déduire un pour vous.

   Effectuez l’une des actions suivantes :
   + Si vous souhaitez que le connecteur GCS tente de déduire un schéma pour vous, sélectionnez **Next** (Suivant), puis **Create** (Créer).
   + Pour définir vous-même un schéma, suivez les étapes décrites dans la section suivante.

### Définition d'un schéma de table dans AWS Glue
<a name="connectors-gcs-defining-a-table-schema-in-glue"></a>

La définition d'un schéma de table dans AWS Glue nécessite davantage d'étapes, mais vous permet de mieux contrôler le processus de création de table.

**Pour définir un schéma pour votre table dans AWS Glue**

1. Sur la page **Choose or define schema** (Choisir ou définir un schéma), sélectionnez **Add** (Ajouter).

1. Dans la boîte de dialogue **Add schema entry** (Ajouter une entrée de schéma), saisissez un nom de colonne et un type de données.

1. Pour désigner la colonne en tant que colonne de partition, sélectionnez l’option **Set as partition key** (Définir en tant que clé de partition).

1. Sélectionnez **Save** (Enregistrer) pour enregistrer la colonne.

1. Sélectionnez **Add** (Ajouter) pour ajouter une autre colonne.

1. Lorsque vous avez terminé d’ajouter des colonnes, sélectionnez **Next** (Suivant).

1. Sur la page **Review and create** (Examiner et créer), examinez la table, puis sélectionnez **Create** (Créer).

1. Si votre schéma contient des informations de partition, suivez les étapes de la section suivante pour ajouter un modèle de partition aux propriétés de la table dans AWS Glue.

### Ajout d'un modèle de partition aux propriétés d'une table dans AWS Glue
<a name="connectors-gcs-adding-a-partition-pattern-to-table-properties-in-glue"></a>

Si vos compartiments GCS comportent des partitions, vous devez ajouter le modèle de partition aux propriétés de la table dans AWS Glue.

**Pour ajouter des informations de partition aux propriétés de la table AWS Glue**

1. Sur la page de détails de la table que vous avez créée AWS Glue, choisissez **Actions**, **Modifier la table**.

1. Sur la page **Edit table** (Modifier le table), faites défiler l’écran vers le bas jusqu’à la section **Table properties** (Propriétés de la table).

1. Sélectionnez **Add** (Ajouter) pour ajouter une clé de partition.

1. Pour **Key** (Clé), saisissez **partition.pattern**. Cette clé définit le modèle de chemin de dossier.

1. Dans le champ **Value** (Valeur), saisissez un modèle de chemin de dossier tel que **StateName=\$1\$1statename\$1/ZipCode=\$1\$1zipcode\$1/**, **statename** et **zipcode** entourés par **\$1\$1\$1** étant des noms de colonne de partition. Le connecteur GCS prend en charge les schémas de partition Hive et non Hive.

1. Lorsque vous avez terminé, choisissez **Save**.

1. Pour afficher les propriétés de la table que vous venez de créer, sélectionnez l’onglet **Advanced properties** (Propriétés avancées).

À ce stade, vous pouvez accéder à la console Athena. La base de données et la table que vous avez créées peuvent être consultées dans Athena. AWS Glue 

## Prise en charge du type de données
<a name="connectors-gcs-data-type-support"></a>

Les tables suivantes indiquent les types de données pris en charge pour les fichiers CSV et Parquet.

### CSV
<a name="connectors-gcs-csv"></a>


****  

| **Nature des données** | **Type de données inféré** | 
| --- | --- | 
| Les données ressemblent à un nombre | BIGINT | 
| Les données ressemblent à une chaîne | VARCHAR | 
| Les données ressemblent à une virgule flottante (flottante, double ou décimale) | DOUBLE | 
| Les données ressemblent à une date | Horodatage | 
| Données contenant des true/false valeurs | BOOL | 

### Parquet
<a name="connectors-gcs-parquet"></a>


****  

| **PARQUET** | **Athena (flèche)** | 
| --- | --- | 
| BINAIRE | VARCHAR | 
| BOOLEAN | BOOL | 
| DOUBLE | DOUBLE | 
| ENUM | VARCHAR | 
| FIXED\$1LEN\$1BYTE\$1ARRAY | DECIMAL | 
| FLOAT | FLOAT (32 bits) | 
| INT32 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-gcs.html)  | 
| INT64 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-gcs.html)  | 
| INT96 | Horodatage | 
| MAP | MAP | 
| STRUCT | STRUCT | 
| LIST | LIST | 

## Autorisations nécessaires
<a name="connectors-gcs-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-gcs.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-gcs/athena-gcs.yaml). La liste suivante résume les autorisations requises.
+ **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 GCS 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.

## Performance
<a name="connectors-gcs-performance"></a>

Lorsque le schéma de la table contient des champs de partition et que la propriété de la table `partition.pattern` est correctement configurée, vous pouvez inclure le champ de partition dans la clause `WHERE` de vos requêtes. Pour de telles requêtes, le connecteur GCS utilise les colonnes de partition pour affiner le chemin du dossier GCS et éviter d’analyser des fichiers inutiles dans les dossiers GCS.

Pour les jeux de données Parquet, la sélection d’un sous-ensemble de colonnes permet de réduire la quantité de données analysées. Cela se traduit généralement par un temps d’exécution des requêtes plus court lorsque la projection de colonnes est appliquée. 

Pour les jeux de données CSV, la projection de colonnes n’est pas prise en charge et ne réduit pas la quantité de données analysées. 

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 GCS analyse une plus grande quantité de données pour les jeux de données plus volumineux que pour les jeux de données plus petits, indépendamment de la clause `LIMIT` appliquée. Par exemple, la requête `SELECT * LIMIT 10000` analyse une plus grande quantité de données pour un jeu de données sous-jacent plus volumineux que pour un jeu de données sous-jacent plus petit.

### Informations de licence
<a name="connectors-gcs-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-gcs/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-gcs/LICENSE.txt) sur GitHub .com.

### Ressources supplémentaires
<a name="connectors-gcs-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-gcs) sur GitHub .com.

# Connecteur Amazon Athena HBase
<a name="connectors-hbase"></a>

Le HBase connecteur Amazon Athena permet à Amazon Athena de communiquer avec vos instances HBase Apache afin que vous puissiez interroger HBase vos données avec SQL.

Contrairement aux magasins de données relationnels traditionnels, les HBase collections n'ont pas de schéma défini. HBasene possède pas de magasin de métadonnées. Chaque entrée d'une HBase collection peut comporter des champs et des types de données différents.

Le HBase connecteur 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 AWS Glue Data Catalog les métadonnées.

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 à votre HBase espace de noms et aux noms de collection, il obtient ses informations de schéma dans la AWS Glue table correspondante. 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 HBase collection.

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 AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-hbase-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-hbase-parameters"></a>

Utilisez les paramètres de cette section pour configurer le HBase connecteur.

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-hbase-gc"></a>

Nous vous recommandons de configurer un HBase connecteur à l'aide d'un objet de connexions Glue. Pour ce faire, définissez la variable d'`glue_connection`environnement du HBase connecteur Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type HBASE
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le HBase connecteur créé à l'aide des connexions Glue ne prend pas en charge l'utilisation d'un gestionnaire de multiplexage.
Le HBase connecteur créé à l'aide des connexions Glue ne prend en charge que `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-hbase-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **disable\$1glue** — (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\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.
+ **default\$1hbase** — Le cas échéant, spécifie une chaîne de HBase connexion à utiliser lorsqu'aucune variable d'environnement spécifique au catalogue n'existe.
+ **enable\$1case\$1insensitive\$1match** — (Facultatif) Lorsque`true`, effectue des recherches sans distinction majuscules/minuscules dans les noms de table dans. HBase La valeur par défaut est `false`. À utiliser si votre requête contient des noms de table en majuscules.

#### Définition des chaînes de connexion
<a name="connectors-hbase-specifying-connection-strings"></a>

Vous pouvez fournir une ou plusieurs propriétés qui définissent les détails de HBase connexion pour les HBase instances 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 HBase instances différentes provenant d'Athena :

```
SELECT * FROM "hbase_instance_1".database.table
```

```
SELECT * FROM "hbase_instance_2".database.table
```

Avant de pouvoir utiliser ces deux instructions SQL, vous devez ajouter deux variables d’environnement à votre fonction Lambda : `hbase_instance_1` et `hbase_instance_2`. La valeur de chacun doit être une chaîne de HBase connexion au format suivant :

```
master_hostname:hbase_port:zookeeper_port
```

##### Utilisation de secrets
<a name="connectors-hbase-using-secrets"></a>

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é de requête fédérée d’Athena avec Secrets Manager, le VPC connecté à votre fonction Lambda doit avoir un [accès internet](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) ou un [point de terminaison de VPC](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) pour vous connecter à Secrets Manager.

Si vous utilisez la syntaxe `${my_secret}` pour mettre le nom d’un secret provenant de Secrets Manager dans votre chaîne de connexion, le connecteur remplace le nom secret par vos valeurs de nom d’utilisateur et de mot de passe provenant de Secrets Manager.

Supposons, par exemple, que vous définissiez la variable d’environnement Lambda pour `hbase_instance_1` sur la valeur suivante :

```
${hbase_host_1}:${hbase_master_port_1}:${hbase_zookeeper_port_1}
```

Le SDK Athena Query Federation tente automatiquement de récupérer un secret nommé `hbase_instance_1_creds` à partir de Secrets Manager et d’injecte cette valeur à la place de `${hbase_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
<a name="connectors-hbase-setting-up-databases-and-tables-in-aws-glue"></a>

L'inférence de schéma intégrée du connecteur ne prend en charge que les valeurs sérialisées HBase sous forme de chaînes (par exemple,`String.valueOf(int)`). La capacité d’inférence de schéma intégrée du connecteur étant limitée, vous pouvez souhaiter utiliser plutôt AWS Glue pour les métadonnées. Pour activer l'utilisation d'une AWS Glue table HBase, vous devez disposer d'une AWS Glue base de données et d'une table dont les noms correspondent à l' HBase espace de noms et à la table pour lesquels vous souhaitez fournir des métadonnées supplémentaires. L'utilisation des conventions de dénomination des familles de HBase colonnes est facultative mais pas obligatoire.

**Pour utiliser une AWS Glue table pour des métadonnées supplémentaires**

1. Lorsque vous modifiez la table et la base de données dans la AWS Glue console, ajoutez les propriétés de table suivantes :
   + **hbase-metadata-flag**— Cette propriété indique au HBase connecteur qu'il peut utiliser la table pour des métadonnées supplémentaires. Vous pouvez fournir n’importe quelle valeur pour `hbase-metadata-flag` tant que la propriété `hbase-metadata-flag` est présente dans la liste des propriétés de la table.
   + **hbase-native-storage-flag**— Utilisez cet indicateur pour activer ou désactiver les deux modes de sérialisation de valeurs pris en charge par le connecteur. Par défaut, lorsque ce champ n'est pas présent, le connecteur suppose que toutes les valeurs sont stockées HBase sous forme de chaînes. En tant que tel, il tentera d'analyser les types de données tels que `INT``BIGINT`, et `DOUBLE` from HBase sous forme de chaînes. Si ce champ est défini avec une valeur quelconque de la table AWS Glue, le connecteur passe en mode de stockage « natif » et tente de lire`INT`, `BIGINT``BIT`, et `DOUBLE` sous forme d'octets à l'aide des fonctions suivantes :

     ```
     ByteBuffer.wrap(value).getInt() 
     ByteBuffer.wrap(value).getLong() 
     ByteBuffer.wrap(value).get() 
     ByteBuffer.wrap(value).getDouble()
     ```

1. Assurez-vous d'utiliser les types de données appropriés AWS Glue tels que listés dans ce document.

### Modélisation de familles de colonnes
<a name="connectors-hbase-modeling-column-families"></a>

Le HBase connecteur Athena permet de modéliser des familles de HBase colonnes de deux manières : en les nommant de manière complète (aplatie) ou en utilisant des objets`family:column`. `STRUCT`

Dans le modèle `STRUCT`, le nom du champ `STRUCT` doit correspondre à la famille de colonnes, tandis que les enfants de `STRUCT` doivent correspondre aux noms des colonnes de la famille. Cependant, étant donné que les lectures de prédicats poussés vers le bas et en colonnes ne sont pas encore totalement prises en charge pour les types complexes tels que `STRUCT`, l’utilisation de `STRUCT` n’est actuellement pas conseillée.

L'image suivante montre une table configurée dans AWS Glue qui utilise une combinaison des deux approches.

![\[Modélisation de familles de colonnes dans AWS Glue Apache Hbase.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-hbase-1.png)


## Prise en charge du type de données
<a name="connectors-hbase-data-type-support"></a>

Le connecteur récupère toutes les HBase valeurs sous forme de type d'octet de base. Ensuite, en fonction de la façon dont vous avez défini vos tables dans AWS Glue Data Catalog, il mappe les valeurs dans l'un des types de données Apache Arrow du tableau suivant.


****  

| AWS Glue type de données | Type de données Apache Arrow | 
| --- | --- | 
| int | INT | 
| bigint | BIGINT | 
| double | FLOAT8 | 
| float | FLOAT4 | 
| boolean | BIT | 
| binary | VARBINARY | 
| chaîne | VARCHAR | 

**Note**  
Si vous ne l'utilisez pas AWS Glue pour compléter vos métadonnées, l'inférence du schéma du connecteur utilise uniquement les types de données `BIGINT``FLOAT8`, et`VARCHAR`.

## Autorisations nécessaires
<a name="connectors-hbase-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-hbase.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hbase/athena-hbase.yaml). La liste suivante résume les autorisations requises.
+ **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 HBase connecteur 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 HBase point de terminaison dans Secrets Manager, vous devez autoriser le connecteur à accéder à ces secrets.
+ **Accès au VPC** : le connecteur doit être capable d'attacher et de détacher des interfaces à votre VPC afin qu'il puisse s'y connecter et communiquer avec vos instances. HBase 

## Performance
<a name="connectors-hbase-performance"></a>

Le HBase connecteur Athena tente de paralléliser les requêtes par rapport à votre HBase instance en lisant chaque serveur régional en parallèle. Le HBase connecteur Athena effectue un transfert de prédicat vers le bas pour réduire le nombre de données scannées par la requête.

La fonction Lambda effectue également 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.

HBase est sujet à des échecs de requêtes et à des temps d'exécution variables. Vous devrez peut-être réessayer vos requêtes plusieurs fois pour qu'elles aboutissent. Le HBase connecteur résiste à l'étranglement dû à la simultanéité.

## Requêtes de transmission
<a name="connectors-hbase-passthrough-queries"></a>

Le HBase connecteur prend en charge les [requêtes passthrough](federated-query-passthrough.md) et est basé sur NoSQL. Pour plus d'informations sur l'interrogation d'Apache HBase à l'aide du filtrage, consultez la section [Langage des filtres](https://hbase.apache.org/book.html#thrift.filter_language) dans la documentation d'Apache.

Pour utiliser des requêtes directes avec HBase, utilisez la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            database => 'database_name',
            collection => 'collection_name',
            filter => '{query_syntax}'
        ))
```

L'exemple suivant filtre les HBase requêtes directes pour les employés âgés de 24 ou 30 ans au sein de la `employee` collection de la `default` base de données.

```
SELECT * FROM TABLE(
        system.query(
            DATABASE => 'default',
            COLLECTION => 'employee',
            FILTER => 'SingleColumnValueFilter(''personaldata'', ''age'', =, ''binary:30'')' ||
                       ' OR SingleColumnValueFilter(''personaldata'', ''age'', =, ''binary:24'')'
        ))
```

## Informations de licence
<a name="connectors-hbase-license-information"></a>

Le projet de HBase connecteur Amazon Athena est concédé sous licence [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Ressources supplémentaires
<a name="connectors-hbase-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-hbase) sur GitHub .com.

# Connecteur Amazon Athena pour Hortonworks
<a name="connectors-hortonworks"></a>

Le connecteur Amazon Athena pour Hortonworks permet à Amazon Athena d'exécuter des requêtes SQL sur la plateforme de données Cloudera [Hortonworks](https://www.cloudera.com/products/hdp.html). Le connecteur transforme vos requêtes Athena SQL en syntaxe HiveQL équivalente.

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.

## Conditions préalables
<a name="connectors-hive-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-hortonworks-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.

## Conditions
<a name="connectors-hortonworks-terms"></a>

Les termes suivants se rapportent au connecteur Hortonworks Hive.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-hortonworks-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Hortonworks Hive.

### Chaîne de connexion
<a name="connectors-hortonworks-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
hive://${jdbc_connection_string}
```

### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-hortonworks-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | HiveMuxCompositeHandler | 
| Gestionnaire de métadonnées | HiveMuxMetadataHandler | 
| Gestionnaire d’enregistrements | HiveMuxRecordHandler | 

#### Paramètres du gestionnaire de multiplexage
<a name="connectors-hortonworks-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myhivecatalog, le nom de la variable d’environnement est alors myhivecatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Hive MUX Lambda qui prend en charge deux instances de base de données :`hive1` (par défaut) et `hive2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | hive://jdbc:hive2://hive1:10000/default?\$1\$1Test/RDS/hive1\$1 | 
| hive\$1catalog1\$1connection\$1string | hive://jdbc:hive2://hive1:10000/default?\$1\$1Test/RDS/hive1\$1 | 
| hive\$1catalog2\$1connection\$1string | hive://jdbc:hive2://hive2:10000/default?UID=sample&PWD=sample | 

#### Fourniture des informations d’identification
<a name="connectors-hortonworks-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/hive1host}`.

```
hive://jdbc:hive2://hive1host:10000/default?...&${Test/RDS/hive1host}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
hive://jdbc:hive2://hive1host:10000/default?...&UID=sample2&PWD=sample2&...
```

Actuellement, le connecteur Hortonworks Hive reconnaît les propriétés JDBC `UID` et `PWD`.

### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-hortonworks-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Hortonworks Hive.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | HiveCompositeHandler | 
| Gestionnaire de métadonnées | HiveMetadataHandler | 
| Gestionnaire d’enregistrements | HiveRecordHandler | 

#### Paramètres du gestionnaire de connexion unique
<a name="connectors-hortonworks-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance Hortonworks Hive unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | hive://jdbc:hive2://hive1host:10000/default?secret=\$1\$1Test/RDS/hive1host\$1 | 

### Paramètres de déversement
<a name="connectors-hortonworks-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-hortonworks-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour JDBC, Hortonworks Hive et Arrow.


****  

| JDBC | Hortonworks Hive | Flèche | 
| --- | --- | --- | 
| Booléen | Booléen | Bit | 
| Entier | TINYINT | Tiny | 
| Court | SMALLINT | Smallint | 
| Entier | INT | Int | 
| Long | BIGINT | Bigint | 
| float | float4 | Float4 | 
| Double | float8 | Float8 | 
| Date | date | DateDay | 
| Horodatage | timestamp | DateMilli | 
| String | VARCHAR | Varchar | 
| Octets | octets | Varbinary | 
| BigDecimal | Décimal | Décimal | 
| ARRAY | N/A (voir la remarque) | List | 

**Note**  
Hortonworks Hive ne prend actuellement pas en charge les types d’agrégat `ARRAY`, `MAP`, `STRUCT` ou `UNIONTYPE`. Les colonnes de types d’agrégats sont traitées comme des colonnes `VARCHAR` dans SQL.

## Partitions et déversements
<a name="connectors-hortonworks-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

## Performance
<a name="connectors-hortonworks-performance"></a>

Hortonworks Hive prend en charge les partitions statiques. Le connecteur Athena Hortonworks Hive peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement statique est fortement recommandé. La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur Hortonworks Hive résiste à la limitation due à la simultanéité.

Le connecteur Athena Hortonworkds Hive effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes. 

### Clauses LIMIT
<a name="connectors-hive-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-hive-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Hortonworks Hive peut combiner ces expressions et les pousser directement vers Cloudera Hive pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Hortonworks Hive suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-hive-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Requêtes de transmission
<a name="connectors-hive-passthrough-queries"></a>

Le connecteur Hortonworks Hive prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Hortonworks Hive, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Hortonworks Hive. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-hive-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-hive-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/pom.xml) du connecteur Hortonworks Hive sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-hortonworks-hive) sur GitHub .com.

# Connecteur Amazon Athena Apache Kafka
<a name="connectors-kafka"></a>

Le connecteur Amazon Athena pour Apache Kafka permet à Amazon Athena d'exécuter des requêtes SQL sur vos rubriques Apache Kafka. Utilisez ce connecteur pour afficher les rubriques [Apache Kafka](https://kafka.apache.org/) sous forme de tableaux et les messages sous forme de lignes dans Athena.

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.

## Conditions préalables
<a name="connectors-kafka-prerequisites"></a>

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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-kafka-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Toutes les limites Lambda pertinentes. Pour plus d’informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Les types de données de date et d’horodatage dans des conditions de filtre doivent être convertis en types de données appropriés.
+ Les types de données date et horodatage ne sont pas pris en charge pour le type de fichier CSV et sont traités comme des valeurs varchar.
+ Le mappage dans des champs JSON imbriqués n'est pas pris en charge. Le connecteur ne mappe que les champs de niveau supérieur.
+ Le connecteur ne prend pas en charge les types complexes. Les types complexes sont interprétés comme des chaînes.
+ Pour extraire ou travailler avec des valeurs JSON complexes, utilisez les fonctions relatives à JSON disponibles dans Athena. Pour plus d’informations, consultez [Extraction de données JSON à partir de chaînes](extracting-data-from-JSON.md).
+ Le connecteur ne prend pas en charge l’accès aux métadonnées des messages Kafka.

## Conditions
<a name="connectors-kafka-terms"></a>
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Point de terminaison Kafka** – Chaîne de texte qui établit une connexion à une instance Kafka.

## Compatibilité des clusters
<a name="connectors-kafka-cluster-compatibility"></a>

Le connecteur Kafka peut être utilisé avec les types de clusters suivants.
+ **Kafka autonome** – Connexion directe à Kafka (authentifiée ou non).
+ **Confluent** – Une connexion directe à Confluent Kafka. *Pour plus d'informations sur l'utilisation d'Athena avec les données Confluent Kafka, consultez [Visualiser les données Confluent dans Quick using Amazon Athena sur le blog Business](https://aws.amazon.com/blogs/business-intelligence/visualize-confluent-data-in-amazon-quicksight-using-amazon-athena/) Intelligence.AWS * 

### Connexion à Confluent
<a name="connectors-kafka-connecting-to-confluent"></a>

La connexion à Confluent nécessite les étapes suivantes :

1. Générer une clé d'API à partir de Confluent.

1. Enregistrer le nom d'utilisateur et le mot de passe de la clé API Confluent dans AWS Secrets Manager.

1. Indiquer le nom secret de la variable d'environnement `secrets_manager_secret` dans le connecteur Kafka.

1. Suivez les étapes décrites dans la section [Configuration du connecteur Kafka](#connectors-kafka-setup) de ce document.

## Méthodes d'authentification prises en charge
<a name="connectors-kafka-supported-authentication-methods"></a>

Le connecteur prend en charge les méthodes d'authentification suivantes.
+ [SSL](https://kafka.apache.org/documentation/#security_ssl)
+ [SASL/SCRAM](https://kafka.apache.org/documentation/#security_sasl_scram)
+ SASL/PLAIN
+ SASL/PLAINTEXT
+ NO\$1AUTH
+ **Plateforme Kafka et Confluent autogérée** — SSL, NO\$1AUTH SASL/SCRAM, SASL/PLAINTEXT
+ **Cloud Kafka et Confluent autogéré** – SASL/PLAIN

Pour de plus amples informations, veuillez consulter [Configuration de l'authentification pour le connecteur Athena Kafka](#connectors-kafka-setup-configuring-authentication).

## Formats de données d'entrée pris en charge
<a name="connectors-kafka-supported-input-data-formats"></a>

Le connecteur prend en charge les formats de données d'entrée suivants.
+ JSON
+ CSV
+ AVRO
+ PROTOBUF (PROTOCOL BUFFERS)

## Parameters
<a name="connectors-kafka-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Athena pour Kafka.
+ **auth\$1type** – Spécifie le type d'authentification du cluster. Le connecteur prend en charge les types d'authentification suivants :
  + **NO\$1AUTH** – Connectez-vous directement à Kafka (par exemple, à un cluster Kafka déployé sur une instance EC2 qui n'utilise pas l'authentification).
  + **SASL\$1SSL\$1PLAIN** — Cette méthode utilise le protocole `SASL_SSL` de sécurité et le mécanisme `PLAIN` SASL. Pour plus d'informations, consultez la page [Configuration SASL](https://kafka.apache.org/documentation/#security_sasl_config) dans la documentation Apache Kafka.
  + **SASL\$1PLAINTEXT\$1PLAIN** — Cette méthode utilise le protocole `SASL_PLAINTEXT` de sécurité et le mécanisme `PLAIN` SASL. Pour plus d'informations, consultez la page [Configuration SASL](https://kafka.apache.org/documentation/#security_sasl_config) dans la documentation Apache Kafka.
  + **SASL\$1SSL\$1SCRAM\$1 SHA512** — Vous pouvez utiliser ce type d'authentification pour contrôler l'accès à vos clusters Apache Kafka. Cette méthode enregistre le nom d'utilisateur et le mot de passe dans AWS Secrets Manager. Le secret doit être associé au cluster Kafka. Pour plus d'informations, consultez [Authentification à l'aide de SASL/SCRAM](https://kafka.apache.org/documentation/#security_sasl_scram) dans la documentation Apache Kafka.
  + **SASL\$1PLAINTEXT\$1SCRAM\$1 SHA512** — Cette méthode utilise le protocole de `SASL_PLAINTEXT` sécurité et le mécanisme. `SCRAM_SHA512 SASL` Cette méthode utilise votre nom d'utilisateur et votre mot de passe enregistrés dans AWS Secrets Manager. Pour plus d'informations, consultez la section [Configuration SASL](https://kafka.apache.org/documentation/#security_sasl_config) dans la documentation Apache Kafka.
  + **SSL** – L'authentification SSL utilise des fichiers keystore et truststore pour se connecter au cluster Apache Kafka. Vous devez générer les fichiers keystore et truststore, les charger dans un compartiment Amazon S3 et fournir la référence à Amazon S3 lorsque vous déployez le connecteur. Le magasin de clés, le magasin de confiance et la clé SSL sont stockés dans AWS Secrets Manager. Votre client doit fournir la clé AWS secrète lors du déploiement du connecteur. Pour plus d'informations, consultez [Chiffrement et authentification à l'aide de SSL](https://kafka.apache.org/documentation/#security_ssl) dans la documentation Apache Kafka.

    Pour de plus amples informations, veuillez consulter [Configuration de l'authentification pour le connecteur Athena Kafka](#connectors-kafka-setup-configuring-authentication).
+ **certificates\$1s3\$1reference** – L'emplacement Amazon S3 qui contient les certificats (les fichiers keystore et truststore).
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **kafka\$1endpoint** – Les détails du point de terminaison à fournir à Kafka.
+ **schema\$1registry\$1url** : adresse URL du registre de schémas (par exemple, `http://schema-registry.example.org:8081`). S’applique aux formats de données `AVRO` et `PROTOBUF`. Athena prend uniquement en charge le registre de schémas Confluent.
+ **secrets\$1manager\$1secret** – Le nom du secret AWS dans lequel sont enregistrées les informations d'identification.
+ **Paramètres de déversement** – Les fonctions Lambda stockent temporairement (« déversent ») les données qui ne tiennent pas en mémoire vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement. Utilisez les paramètres du tableau suivant pour spécifier l'emplacement de déversement.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)
+ **Sous-réseau IDs** : un ou plusieurs sous-réseaux correspondant au sous-réseau IDs que la fonction Lambda peut utiliser pour accéder à votre source de données.
  + **Cluster Kafka public ou cluster Confluent Cloud standard** – Associez le connecteur à un sous-réseau privé doté d'une passerelle NAT.
  + **Cluster Confluent Cloud avec connectivité privée** – Associez le connecteur à un sous-réseau privé qui possède une route vers le cluster Confluent Cloud.
    + Pour [AWS Transit Gateway](https://docs.confluent.io/cloud/current/networking/aws-transit-gateway.html), les sous-réseaux doivent se trouver dans un VPC attaché à la même passerelle de transit qu'utilise Confluent Cloud.
    + Pour l'[appairage de VPC, les](https://docs.confluent.io/cloud/current/networking/peering/aws-peering.html) sous-réseaux doivent se trouver dans un VPC appairé au VPC Confluent Cloud.
    + Pour [AWS PrivateLink](https://docs.confluent.io/cloud/current/networking/private-links/aws-privatelink.html), les sous-réseaux doivent se trouver dans un VPC qui possède une route vers les points de terminaison du VPC qui se connectent à Confluent Cloud.

**Note**  
Si vous déployez le connecteur dans un VPC afin d’accéder à des ressources privées et si vous souhaitez également vous connecter à un service accessible au public tel que Confluent, vous devez associer le connecteur à un sous-réseau privé doté d’une passerelle NAT. Pour plus d’informations, consultez [Passerelles NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) dans le Guide de l’utilisateur Amazon VPC.

## Prise en charge du type de données
<a name="connectors-kafka-data-type-support"></a>

Le tableau suivant indique les types de données correspondants pris en charge par Kafka et Apache Arrow.


****  

| Kafka | Flèche | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| TIMESTAMP | MILLISECOND | 
| DATE | DAY | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 

## Partitions et déversements
<a name="connectors-kafka-partitions-and-splits"></a>

Les rubriques Kafka sont divisées en partitions. Chaque partition est ordonnée. Chaque message dans une partition a un ID incrémentiel appelé *offset*. Chaque partition Kafka est ensuite divisée en plusieurs parties pour un traitement parallèle. Les données sont disponibles pour la période de rétention configurée dans les clusters Kafka.

## Bonnes pratiques
<a name="connectors-kafka-best-practices"></a>

Il est recommandé d'utiliser la poussée vers le bas des prédicats lorsque vous interrogez Athena, comme dans les exemples suivants.

```
SELECT * 
FROM "kafka_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE integercol = 2147483647
```

```
SELECT * 
FROM "kafka_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Configuration du connecteur Kafka
<a name="connectors-kafka-setup"></a>

Pour pouvoir utiliser le connecteur, vous devez configurer votre cluster Apache Kafka, utilisez le [Registre de schémas AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html) pour définir votre schéma et configurez l'authentification pour le connecteur.

Lorsque vous travaillez avec le registre des AWS Glue schémas, tenez compte des points suivants :
+ Assurez-vous que le texte du champ **Description** du registre de schémas AWS Glue inclut la chaîne `{AthenaFederationKafka}`. Cette chaîne de marquage est obligatoire pour les AWS Glue registres que vous utilisez avec le connecteur Amazon Athena Kafka.
+ Pour des performances optimales, n'utilisez que des minuscules pour vos noms de bases de données et de tables. L'utilisation d'une casse mixte oblige le connecteur à effectuer une recherche insensible à la casse, ce qui demande plus de temps de calcul.

**Pour configurer votre environnement Apache Kafka et votre registre de AWS Glue schémas**

1. Configurez votre environnement Apache Kafka.

1. Téléchargez le fichier de description de la rubrique Kafka (c'est-à-dire son schéma) au format JSON dans le registre des AWS Glue schémas. Pour plus d'informations, consultez la section [Intégration à AWS Glue Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-integrations.html) dans le guide du AWS Glue développeur.

1. Pour utiliser le format de données `AVRO` ou `PROTOBUF` lorsque vous définissez le schéma dans le registre de schémas AWS Glue :
   + Dans **Nom du schéma**, saisissez le nom de la rubrique Kafka en utilisant la même casse que celle d’origine.
   + Dans **Format de données**, sélectionnez **Apache Avro** ou **Protocol Buffers**.

    Pour des exemples de schémas, voir la rubrique suivante.

### Exemples de schémas pour le registre des AWS Glue schémas
<a name="connectors-kafka-setup-schema-examples"></a>

Utilisez le format des exemples de cette rubrique lorsque vous téléchargez votre schéma dans le [registre de schémas AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html).

#### Exemple de schéma de type JSON
<a name="connectors-kafka-setup-schema-examples-json"></a>

Dans l'exemple suivant, le schéma à créer dans le registre des AWS Glue `json` schémas indique la valeur pour `dataFormat` et les utilisations `datatypejson` pour`topicName`.

**Note**  
La valeur de `topicName` doit utiliser la même casse que le nom de la rubrique de Kafka. 

```
{
  "topicName": "datatypejson",
  "message": {
    "dataFormat": "json",
    "fields": [
      {
        "name": "intcol",
        "mapping": "intcol",
        "type": "INTEGER"
      },
      {
        "name": "varcharcol",
        "mapping": "varcharcol",
        "type": "VARCHAR"
      },
      {
        "name": "booleancol",
        "mapping": "booleancol",
        "type": "BOOLEAN"
      },
      {
        "name": "bigintcol",
        "mapping": "bigintcol",
        "type": "BIGINT"
      },
      {
        "name": "doublecol",
        "mapping": "doublecol",
        "type": "DOUBLE"
      },
      {
        "name": "smallintcol",
        "mapping": "smallintcol",
        "type": "SMALLINT"
      },
      {
        "name": "tinyintcol",
        "mapping": "tinyintcol",
        "type": "TINYINT"
      },
      {
        "name": "datecol",
        "mapping": "datecol",
        "type": "DATE",
        "formatHint": "yyyy-MM-dd"
      },
      {
        "name": "timestampcol",
        "mapping": "timestampcol",
        "type": "TIMESTAMP",
        "formatHint": "yyyy-MM-dd HH:mm:ss.SSS"
      }
    ]
  }
}
```

#### Exemple de schéma de type CSV
<a name="connectors-kafka-setup-schema-examples-csv"></a>

Dans l'exemple suivant, le schéma à créer dans le registre des AWS Glue `csv` schémas indique la valeur pour `dataFormat` et les utilisations `datatypecsvbulk` pour`topicName`. La valeur de `topicName` doit utiliser la même casse que le nom de la rubrique de Kafka.

```
{
  "topicName": "datatypecsvbulk",
  "message": {
    "dataFormat": "csv",
    "fields": [
      {
        "name": "intcol",
        "type": "INTEGER",
        "mapping": "0"
      },
      {
        "name": "varcharcol",
        "type": "VARCHAR",
        "mapping": "1"
      },
      {
        "name": "booleancol",
        "type": "BOOLEAN",
        "mapping": "2"
      },
      {
        "name": "bigintcol",
        "type": "BIGINT",
        "mapping": "3"
      },
      {
        "name": "doublecol",
        "type": "DOUBLE",
        "mapping": "4"
      },
      {
        "name": "smallintcol",
        "type": "SMALLINT",
        "mapping": "5"
      },
      {
        "name": "tinyintcol",
        "type": "TINYINT",
        "mapping": "6"
      },
      {
        "name": "floatcol",
        "type": "DOUBLE",
        "mapping": "7"
      }
    ]
  }
}
```

#### Exemple de schéma de type AVRO
<a name="connectors-kafka-setup-schema-examples-avro"></a>

L’exemple suivant est utilisé pour créer un schéma basé sur AVRO dans le registre de schémas AWS Glue . Lorsque vous définissez le schéma dans le registre des AWS Glue schémas, pour le **nom du schéma**, vous entrez le nom du sujet Kafka dans le même boîtier que l'original, et pour le **format des données**, vous choisissez **Apache Avro**. Étant donné que vous spécifiez ces informations directement dans le registre, les champs `dataformat` et `topicName` ne sont pas obligatoires.

```
{
    "type": "record",
    "name": "avrotest",
    "namespace": "example.com",
    "fields": [{
            "name": "id",
            "type": "int"
        },
        {
            "name": "name",
            "type": "string"
        }
    ]
}
```

#### Exemple de schéma de type PROTOBUF
<a name="connectors-kafka-setup-schema-examples-protobuf"></a>

L’exemple suivant est utilisé pour créer un schéma basé sur PROTOBUF dans le registre de schémas AWS Glue . Lorsque vous définissez le schéma dans le registre des AWS Glue schémas, pour le **nom du schéma**, vous entrez le nom du sujet Kafka dans le même boîtier que l'original, et pour le **format des données**, vous choisissez **Protocol Buffers**. Étant donné que vous spécifiez ces informations directement dans le registre, les champs `dataformat` et `topicName` ne sont pas obligatoires. La première ligne définit le schéma sur PROTOBUF.

```
syntax = "proto3";
message protobuftest {
string name = 1;
int64 calories = 2;
string colour = 3;
}
```

Pour plus d'informations sur l'ajout d'un registre et de schémas dans le registre des AWS Glue schémas, consultez la section [Getting started with Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-gs.html) dans la AWS Glue documentation.

### Configuration de l'authentification pour le connecteur Athena Kafka
<a name="connectors-kafka-setup-configuring-authentication"></a>

Vous pouvez utiliser différentes méthodes pour vous authentifier auprès de votre cluster Apache Kafka, notamment le protocole SSL. SASL/SCRAM, SASL/PLAIN, and SASL/PLAINTEXT

Le tableau suivant présente les types d'authentification pour le connecteur ainsi que le protocole de sécurité et le mécanisme SASL pour chacun d'entre eux. Pour de plus amples informations, consultez la section [Sécurité](https://kafka.apache.org/documentation/#security) de la documentation Apache Kafka.


****  

| auth\$1type | security.protocol | sasl.mechanism | Compatibilité avec les types de cluster | 
| --- | --- | --- | --- | 
| SASL\$1SSL\$1PLAIN | SASL\$1SSL | PLAIN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1PLAINTEXT\$1PLAIN | SASL\$1PLAINTEXT | PLAIN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1SSL\$1SCRAM\$1SHA512 | SASL\$1SSL | SCRAM-SHA-512 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1PLAINTEXT\$1SCRAM\$1SHA512 | SASL\$1PLAINTEXT | SCRAM-SHA-512 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)  | 
| SSL | SSL | N/A |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)  | 

#### SSL
<a name="connectors-kafka-setup-configuring-authentication-tls"></a>

Si le cluster est authentifié SSL, vous devez générer les fichiers truststore (magasin d'approbations) et keystore (magasin de clés) et les télécharger dans le compartiment Amazon S3. Vous devez fournir cette référence Amazon S3 lorsque vous déployez le connecteur. Les clés keystore, truststore et SSL sont stockées dans AWS Secrets Manager. Vous fournissez la clé AWS secrète lorsque vous déployez le connecteur.

Pour plus d'informations sur la création d'un secret dans Secrets Manager, voir la rubrique [Créer un secret AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

Pour utiliser ce type d'authentification, définissez les variables d'environnement comme indiqué dans le tableau suivant.


****  

| Paramètre | Value | 
| --- | --- | 
| auth\$1type | SSL | 
| certificates\$1s3\$1reference | L'emplacement Amazon S3 qui contient les certificats. | 
| secrets\$1manager\$1secret | Le nom de votre clé AWS secrète. | 

Après avoir créé un secret dans Secrets Manager, vous pouvez le consulter dans la console Secrets Manager.

**Visualisation de votre secret dans Secrets Manager**

1. Ouvrez la console Secrets Manager à l'adresse [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Dans le volet de navigation, sélectionnez **Secrets**.

1. Sur la page **Secrets**, choisissez le lien vers votre secret.

1. Sur la page de détails de votre secret, sélectionnez **Retrieve secret value** (Récupérer la valeur du secret).

   L'image suivante montre un exemple de secret avec trois paires clé/valeur : `keystore_password`, `truststore_password` et `ssl_key_password`.  
![\[Récupération d'un secret SSL dans Secrets Manager\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-kafka-setup-1.png)

Pour plus d'informations sur l'utilisation de SSL avec Kafka, consultez [Chiffrement et authentification à l'aide de SSL](https://kafka.apache.org/documentation/#security_ssl) dans la documentation Apache Kafka.

#### SASL/SCRAM
<a name="connectors-kafka-setup-configuring-authentication-sasl-scram"></a>

Si votre cluster utilise l'authentification SCRAM, fournissez la clé Secrets Manager qui est associée au cluster lorsque vous déployez le connecteur. Les informations d'identification AWS de l'utilisateur (clé secrète et clé d'accès) sont utilisées pour s'authentifier au cluster.

Définissez les variables d'environnement comme indiqué dans le tableau suivant.


****  

| Paramètre | Value | 
| --- | --- | 
| auth\$1type | SASL\$1SSL\$1SCRAM\$1SHA512 | 
| secrets\$1manager\$1secret | Le nom de votre clé AWS secrète. | 

L'image suivante montre un exemple de secret dans la console Secrets Manager avec deux key/value paires : une pour `username` et une pour`password`.

![\[Récupération d'un secret SCRAM dans Secrets Manager\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-kafka-setup-2.png)


Pour plus d'informations sur l'utilisation SASL/SCRAM avec Kafka, consultez la section [Authentification à l'aide de SASL/SCRAM](https://kafka.apache.org/documentation/#security_sasl_scram) dans la documentation d'Apache Kafka.

## Informations de licence
<a name="connectors-kafka-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-kafka/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-kafka/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-kafka-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-kafka) sur GitHub .com.

# Connecteur Amazon Athena pour MSK
<a name="connectors-msk"></a>

Le connecteur Amazon Athena pour [Amazon MSK](https://aws.amazon.com/msk/) permet à Amazon Athena d'exécuter des requêtes SQL sur vos rubriques Apache Kafka. Utilisez ce connecteur pour afficher les rubriques [Apache Kafka](https://kafka.apache.org/) sous forme de tableaux et les messages sous forme de lignes dans Athena. Pour plus d'informations, consultez [Analyser les données de streaming en temps réel dans Amazon MSK avec Amazon](https://aws.amazon.com/blogs/big-data/analyze-real-time-streaming-data-in-amazon-msk-with-amazon-athena/) Athena sur AWS le blog Big Data.

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.

## Conditions préalables
<a name="connectors-msk-prerequisites"></a>

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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-msk-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Toutes les limites Lambda pertinentes. Pour plus d’informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Les types de données de date et d’horodatage dans des conditions de filtre doivent être convertis en types de données appropriés.
+ Les types de données date et horodatage ne sont pas pris en charge pour le type de fichier CSV et sont traités comme des valeurs varchar.
+ Le mappage dans des champs JSON imbriqués n'est pas pris en charge. Le connecteur ne mappe que les champs de niveau supérieur.
+ Le connecteur ne prend pas en charge les types complexes. Les types complexes sont interprétés comme des chaînes.
+ Pour extraire ou travailler avec des valeurs JSON complexes, utilisez les fonctions relatives à JSON disponibles dans Athena. Pour plus d’informations, consultez [Extraction de données JSON à partir de chaînes](extracting-data-from-JSON.md).
+ Le connecteur ne prend pas en charge l’accès aux métadonnées des messages Kafka.

## Conditions
<a name="connectors-msk-terms"></a>
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Point de terminaison Kafka** – Chaîne de texte qui établit une connexion à une instance Kafka.

## Compatibilité des clusters
<a name="connectors-msk-cluster-compatibility"></a>

Le connecteur MSK peut être utilisé avec les types de clusters suivants.
+ **Cluster provisionné MSK** – Vous spécifiez, surveillez et adaptez manuellement la capacité du cluster.
+ **Cluster sans serveur MSK** : fournit une capacité à la demande qui évolue automatiquement à mesure que l'application I/O évolue.
+ **Kafka autonome** – Connexion directe à Kafka (authentifiée ou non).

## Méthodes d'authentification prises en charge
<a name="connectors-msk-supported-authentication-methods"></a>

Le connecteur prend en charge les méthodes d'authentification suivantes.
+ [SASL/IAM](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html) 
+ [SSL](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html)
+ [SASL/SCRAM](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html)
+ SASL/PLAIN
+ SASL/PLAINTEXT
+ NO\$1AUTH

  Pour plus d’informations, consultez [Configuration de l'authentification pour le connecteur Athena MSK](#connectors-msk-setup-configuring-authentication).

## Formats de données d'entrée pris en charge
<a name="connectors-msk-supported-input-data-formats"></a>

Le connecteur prend en charge les formats de données d'entrée suivants.
+ JSON
+ CSV

## Parameters
<a name="connectors-msk-parameters"></a>

Utilisez les paramètres de cette rubrique pour configurer le connecteur Athena pour MSK.
+ **auth\$1type** – Spécifie le type d'authentification du cluster. Le connecteur prend en charge les types d'authentification suivants :
  + **NO\$1AUTH** – Connectez-vous directement à Kafka sans authentification (par exemple, à un cluster Kafka déployé sur une instance EC2 qui n'utilise pas l'authentification).
  + **SASL\$1SSL\$1PLAIN** — Cette méthode utilise le protocole `SASL_SSL` de sécurité et le mécanisme `PLAIN` SASL.
  + **SASL\$1PLAINTEXT\$1PLAIN** — Cette méthode utilise le protocole `SASL_PLAINTEXT` de sécurité et le mécanisme `PLAIN` SASL.
**Note**  
Les types d'authentification `SASL_SSL_PLAIN` et `SASL_PLAINTEXT_PLAIN` sont pris en charge par Apache Kafka, mais pas par Amazon MSK.
  + **SASL\$1SSL\$1 AWS\$1MSK \$1IAM** — Le contrôle d'accès IAM pour Amazon MSK vous permet de gérer à la fois l'authentification et l'autorisation pour votre cluster MSK. Les informations d' AWS identification de votre utilisateur (clé secrète et clé d'accès) sont utilisées pour se connecter au cluster. Pour plus d'informations, voir la rubrique [Contrôle d'accès IAM](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html) du Guide du développeur Amazon Managed Streaming for Apache Kafka.
  + **SASL\$1SSL\$1SCRAM\$1 SHA512** — Vous pouvez utiliser ce type d'authentification pour contrôler l'accès à vos clusters Amazon MSK. Cette méthode enregistre le nom d'utilisateur et le mot de passe sur AWS Secrets Manager. Le secret doit être associé au cluster Amazon MSK. Pour plus d'informations, consultez la section [Configuration de SASL/SCRAM l'authentification pour un cluster Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html#msk-password-tutorial) dans le guide du développeur Amazon Managed Streaming for Apache Kafka.
  + **SSL** – L’authentification SSL utilise des fichiers keystore et truststore pour se connecter au cluster Amazon MSK. Vous devez générer les fichiers keystore et truststore, les charger dans un compartiment Amazon S3 et fournir la référence à Amazon S3 lorsque vous déployez le connecteur. Les clés keystore, truststore et SSL sont stockées dans AWS Secrets Manager. Votre client doit fournir la clé AWS secrète lors du déploiement du connecteur. Pour plus d'informations, voir la rubrique [Authentification TLS mutuelle](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) du Guide du développeur Amazon Managed Streaming for Apache Kafka.

    Pour plus d’informations, consultez [Configuration de l'authentification pour le connecteur Athena MSK](#connectors-msk-setup-configuring-authentication).
+ **certificates\$1s3\$1reference** – L'emplacement Amazon S3 qui contient les certificats (les fichiers keystore et truststore).
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **kafka\$1endpoint** – Les détails du point de terminaison à fournir à Kafka. Par exemple, pour un cluster Amazon MSK, vous fournissez une [URL d'amorçage](https://docs.aws.amazon.com/msk/latest/developerguide/msk-get-bootstrap-brokers.html) pour le cluster.
+ **secrets\$1manager\$1secret** – Le nom du secret AWS dans lequel sont enregistrées les informations d'identification. Ce paramètre n'est pas obligatoire pour l'authentification IAM.
+ **Paramètres de déversement** – Les fonctions Lambda stockent temporairement (« déversent ») les données qui ne tiennent pas en mémoire vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement. Utilisez les paramètres du tableau suivant pour spécifier l'emplacement de déversement.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-msk.html)

## Prise en charge du type de données
<a name="connectors-msk-data-type-support"></a>

Le tableau suivant indique les types de données correspondants pris en charge par Kafka et Apache Arrow.


****  

| Kafka | Flèche | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| TIMESTAMP | MILLISECOND | 
| DATE | DAY | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 

## Partitions et déversements
<a name="connectors-msk-partitions-and-splits"></a>

Les rubriques Kafka sont divisées en partitions. Chaque partition est ordonnée. Chaque message dans une partition a un ID incrémentiel appelé *offset*. Chaque partition Kafka est ensuite divisée en plusieurs parties pour un traitement parallèle. Les données sont disponibles pour la période de rétention configurée dans les clusters Kafka.

## Bonnes pratiques
<a name="connectors-msk-best-practices"></a>

Il est recommandé d'utiliser la poussée vers le bas des prédicats lorsque vous interrogez Athena, comme dans les exemples suivants.

```
SELECT * 
FROM "msk_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE integercol = 2147483647
```

```
SELECT * 
FROM "msk_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Configuration du connecteur MSK
<a name="connectors-msk-setup"></a>

Pour pouvoir utiliser le connecteur, vous devez configurer votre cluster Amazon MSK, utiliser le [Registre de schémas AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html) pour définir votre schéma et configurer l'authentification pour le connecteur.

**Note**  
Si vous déployez le connecteur dans un VPC afin d’accéder à des ressources privées et si vous souhaitez également vous connecter à un service accessible au public tel que Confluent, vous devez associer le connecteur à un sous-réseau privé doté d’une passerelle NAT. Pour plus d’informations, consultez [Passerelles NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) dans le Guide de l’utilisateur Amazon VPC.

Lorsque vous travaillez avec le registre des AWS Glue schémas, tenez compte des points suivants :
+ Assurez-vous que le texte du champ **Description** du registre de schémas AWS Glue inclut la chaîne `{AthenaFederationMSK}`. Cette chaîne de marqueur est obligatoire pour les AWS Glue registres que vous utilisez avec le connecteur Amazon Athena MSK.
+ Pour des performances optimales, n'utilisez que des minuscules pour vos noms de bases de données et de tables. L'utilisation d'une casse mixte oblige le connecteur à effectuer une recherche insensible à la casse, ce qui demande plus de temps de calcul.

**Pour configurer votre environnement Amazon MSK et votre registre de AWS Glue schémas**

1. Configurez votre environnement Amazon MSK. Pour plus d'informations et d'étapes, voir la rubrique [Configuration d'Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/before-you-begin.html) et Mise en route avec Amazon MSK dans le [Guide du développeur Amazon Managed Streaming for Apache Kafka](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

1. Téléchargez le fichier de description de la rubrique Kafka (c'est-à-dire son schéma) au format JSON dans le registre des AWS Glue schémas. Pour plus d'informations, consultez la section [Intégration au registre des AWS Glue schémas](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-integrations.html) dans le guide du AWS Glue développeur. Pour des exemples de schémas, voir la rubrique suivante.

### Exemples de schémas pour le registre des AWS Glue schémas
<a name="connectors-msk-setup-schema-examples"></a>

Utilisez le format des exemples de cette rubrique lorsque vous téléchargez votre schéma dans le [registre de schémas AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html).

#### Exemple de schéma de type JSON
<a name="connectors-msk-setup-schema-examples-json"></a>

Dans l'exemple suivant, le schéma à créer dans le registre des AWS Glue `json` schémas indique la valeur pour `dataFormat` et les utilisations `datatypejson` pour`topicName`.

**Note**  
La valeur de `topicName` doit utiliser la même casse que le nom de la rubrique de Kafka. 

```
{
  "topicName": "datatypejson",
  "message": {
    "dataFormat": "json",
    "fields": [
      {
        "name": "intcol",
        "mapping": "intcol",
        "type": "INTEGER"
      },
      {
        "name": "varcharcol",
        "mapping": "varcharcol",
        "type": "VARCHAR"
      },
      {
        "name": "booleancol",
        "mapping": "booleancol",
        "type": "BOOLEAN"
      },
      {
        "name": "bigintcol",
        "mapping": "bigintcol",
        "type": "BIGINT"
      },
      {
        "name": "doublecol",
        "mapping": "doublecol",
        "type": "DOUBLE"
      },
      {
        "name": "smallintcol",
        "mapping": "smallintcol",
        "type": "SMALLINT"
      },
      {
        "name": "tinyintcol",
        "mapping": "tinyintcol",
        "type": "TINYINT"
      },
      {
        "name": "datecol",
        "mapping": "datecol",
        "type": "DATE",
        "formatHint": "yyyy-MM-dd"
      },
      {
        "name": "timestampcol",
        "mapping": "timestampcol",
        "type": "TIMESTAMP",
        "formatHint": "yyyy-MM-dd HH:mm:ss.SSS"
      }
    ]
  }
}
```

#### Exemple de schéma de type CSV
<a name="connectors-msk-setup-schema-examples-csv"></a>

Dans l'exemple suivant, le schéma à créer dans le registre des AWS Glue `csv` schémas indique la valeur pour `dataFormat` et les utilisations `datatypecsvbulk` pour`topicName`. La valeur de `topicName` doit utiliser la même casse que le nom de la rubrique de Kafka.

```
{
  "topicName": "datatypecsvbulk",
  "message": {
    "dataFormat": "csv",
    "fields": [
      {
        "name": "intcol",
        "type": "INTEGER",
        "mapping": "0"
      },
      {
        "name": "varcharcol",
        "type": "VARCHAR",
        "mapping": "1"
      },
      {
        "name": "booleancol",
        "type": "BOOLEAN",
        "mapping": "2"
      },
      {
        "name": "bigintcol",
        "type": "BIGINT",
        "mapping": "3"
      },
      {
        "name": "doublecol",
        "type": "DOUBLE",
        "mapping": "4"
      },
      {
        "name": "smallintcol",
        "type": "SMALLINT",
        "mapping": "5"
      },
      {
        "name": "tinyintcol",
        "type": "TINYINT",
        "mapping": "6"
      },
      {
        "name": "floatcol",
        "type": "DOUBLE",
        "mapping": "7"
      }
    ]
  }
}
```

### Configuration de l'authentification pour le connecteur Athena MSK
<a name="connectors-msk-setup-configuring-authentication"></a>

Vous pouvez utiliser diverses méthodes pour vous authentifier dans votre cluster Amazon MSK, notamment IAM, SSL, SCRAM et Kafka autonome.

Le tableau suivant présente les types d'authentification pour le connecteur ainsi que le protocole de sécurité et le mécanisme SASL pour chacun d'entre eux. Pour plus d'informations, consultez [Authentification et autorisation pour Apache Kafka APIs](https://docs.aws.amazon.com/msk/latest/developerguide/kafka_apis_iam.html) dans le guide du développeur Amazon Managed Streaming for Apache Kafka.


****  

| auth\$1type | security.protocol | sasl.mechanism | 
| --- | --- | --- | 
| SASL\$1SSL\$1PLAIN | SASL\$1SSL | PLAIN | 
| SASL\$1PLAINTEXT\$1PLAIN | SASL\$1PLAINTEXT | PLAIN | 
| SASL\$1SSL\$1AWS\$1MSK\$1IAM | SASL\$1SSL | AWS\$1MSK\$1IAM | 
| SASL\$1SSL\$1SCRAM\$1SHA512 | SASL\$1SSL | SCRAM-SHA-512 | 
| SSL | SSL | N/A | 

**Note**  
Les types d'authentification `SASL_SSL_PLAIN` et `SASL_PLAINTEXT_PLAIN` sont pris en charge par Apache Kafka, mais pas par Amazon MSK.

#### SASL/IAM
<a name="connectors-msk-setup-configuring-authentication-sasl-iam"></a>

Si le cluster utilise l'authentification IAM, vous devez configurer la politique IAM pour l'utilisateur lorsque vous configurez le cluster. Pour plus d'informations, voir la rubrique [Contrôle d'accès IAM](https://docs.aws.amazon.com/msk/latest/developerguide/IAM-access-control.html) du Guide du développeur Amazon Managed Streaming for Apache Kafka.

Pour utiliser ce type d'authentification, définissez la variable d'environnement Lambda `auth_type` pour le connecteur sur `SASL_SSL_AWS_MSK_IAM`. 

#### SSL
<a name="connectors-msk-setup-configuring-authentication-tls"></a>

Si le cluster est authentifié SSL, vous devez générer les fichiers truststore (magasin d'approbations) et keystore (magasin de clés) et les télécharger dans le compartiment Amazon S3. Vous devez fournir cette référence Amazon S3 lorsque vous déployez le connecteur. Les clés keystore, truststore et SSL sont stockées dans AWS Secrets Manager. Vous fournissez la clé AWS secrète lorsque vous déployez le connecteur.

Pour plus d'informations sur la création d'un secret dans Secrets Manager, voir la rubrique [Créer un secret AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

Pour utiliser ce type d'authentification, définissez les variables d'environnement comme indiqué dans le tableau suivant.


****  

| Paramètre | Value | 
| --- | --- | 
| auth\$1type | SSL | 
| certificates\$1s3\$1reference | L'emplacement Amazon S3 qui contient les certificats. | 
| secrets\$1manager\$1secret | Le nom de votre clé AWS secrète. | 

Après avoir créé un secret dans Secrets Manager, vous pouvez le consulter dans la console Secrets Manager.

**Visualisation de votre secret dans Secrets Manager**

1. Ouvrez la console Secrets Manager à l'adresse [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Dans le volet de navigation, sélectionnez **Secrets**.

1. Sur la page **Secrets**, choisissez le lien vers votre secret.

1. Sur la page de détails de votre secret, sélectionnez **Retrieve secret value** (Récupérer la valeur du secret).

   L'image suivante montre un exemple de secret avec trois paires clé/valeur : `keystore_password`, `truststore_password` et `ssl_key_password`.  
![\[Récupération d'un secret SSL dans Secrets Manager\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-msk-setup-1.png)

#### SASL/SCRAM
<a name="connectors-msk-setup-configuring-authentication-sasl-scram"></a>

Si votre cluster utilise l'authentification SCRAM, fournissez la clé Secrets Manager qui est associée au cluster lorsque vous déployez le connecteur. Les informations d'identification AWS de l'utilisateur (clé secrète et clé d'accès) sont utilisées pour s'authentifier au cluster.

Définissez les variables d'environnement comme indiqué dans le tableau suivant.


****  

| Paramètre | Value | 
| --- | --- | 
| auth\$1type | SASL\$1SSL\$1SCRAM\$1SHA512 | 
| secrets\$1manager\$1secret | Le nom de votre clé AWS secrète. | 

L'image suivante montre un exemple de secret dans la console Secrets Manager avec deux key/value paires : une pour `username` et une pour`password`.

![\[Récupération d'un secret SCRAM dans Secrets Manager\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-msk-setup-2.png)


## Informations de licence
<a name="connectors-msk-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-msk/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-msk/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-msk-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-msk) sur GitHub .com.

# Connecteur Amazon Athena pour MySQL
<a name="connectors-mysql"></a>

Le connecteur Lambda MySQL Amazon Athena permet à Amazon Athena d'accéder à vos bases de données MySQL.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-mysql-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ 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 ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

## Limitations
<a name="connectors-mysql-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Comme Athena convertit les requêtes en minuscules, les noms des tables MySQL doivent être en minuscules. Par exemple, les requêtes Athena par rapport à une table nommée `myTable` échoue.
+ Si vous migrez vos connexions MySQL vers le Catalogue Glue et Lake Formation, seuls les noms de table et de colonne en minuscules seront reconnus. 

## Conditions
<a name="connectors-mysql-terms"></a>

Les termes suivants se rapportent au connecteur MySQ.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-mysql-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur MySQL.

**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.

### Connexions Glue (recommandé)
<a name="connectors-mysql-gc"></a>

Nous vous recommandons de configurer un connecteur MySQL en utilisant un objet des connexions Glue. 

Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur MySQL Lambda sur le nom de la connexion Glue à utiliser.

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type MYSQL
```

**Propriétés d’environnement Lambda**

**glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur MySQL créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur MySQL créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-mysql-connection-legacy"></a>

Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

#### Chaîne de connexion
<a name="connectors-mysql-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
mysql://${jdbc_connection_string}
```

**Note**  
Si vous recevez le message d'erreur java.sql. SQLException: valeur de date nulle interdite lorsque vous effectuez une `SELECT` requête sur une table MySQL, ajoutez le paramètre suivant à votre chaîne de connexion :  

```
zeroDateTimeBehavior=convertToNull
```
Pour plus d'informations, consultez [l'erreur « Valeur de date zéro interdite » lors de la tentative de sélection dans la table MySQL](https://github.com/awslabs/aws-athena-query-federation/issues/760) sur .com. GitHub

#### Utilisation d'un gestionnaire de multiplexage
<a name="connectors-mysql-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | MySqlMuxCompositeHandler | 
| Gestionnaire de métadonnées | MySqlMuxMetadataHandler | 
| Gestionnaire d’enregistrements | MySqlMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-mysql-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mymysqlcatalog, le nom de la variable d’environnement est alors mymysqlcatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Lambda MySql MUX qui prend en charge deux instances de base de données `mysql1` : (par défaut) et. `mysql2`


****  

| Propriété | Value | 
| --- | --- | 
| default | mysql://jdbc:mysql://mysql2.host:3333/default?user=sample2&password=sample2 | 
| mysql\$1catalog1\$1connection\$1string | mysql://jdbc:mysql://mysql1.host:3306/default?\$1\$1Test/RDS/MySql1\$1 | 
| mysql\$1catalog2\$1connection\$1string | mysql://jdbc:mysql://mysql2.host:3333/default?user=sample2&password=sample2 | 

##### Fourniture des informations d’identification
<a name="connectors-mysql-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/MySql1}`.

```
mysql://jdbc:mysql://mysql1.host:3306/default?...&${Test/RDS/MySql1}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
mysql://jdbc:mysql://mysql1host:3306/default?...&user=sample2&password=sample2&...
```

Actuellement, le connecteur MySQL reconnaît les propriétés JDBC `user` et `password`.

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-mysql-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance MySQL.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | MySqlCompositeHandler | 
| Gestionnaire de métadonnées | MySqlMetadataHandler | 
| Gestionnaire d’enregistrements | MySqlRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-mysql-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance MySQL unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | mysql://mysql1.host:3306/default?secret=Test/RDS/MySql1 | 

#### Paramètres de déversement
<a name="connectors-mysql-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-mysql-data-type-support"></a>

Le tableau suivant affiche les types de données correspondants pour JDBC et Arrow.


****  

| JDBC | Flèche | 
| --- | --- | 
| Booléen | Bit | 
| Entier | Tiny | 
| Court | Smallint | 
| Entier | Int | 
| Long | Bigint | 
| float | Float4 | 
| Double | Float8 | 
| Date | DateDay | 
| Horodatage | DateMilli | 
| String | Varchar | 
| Octets | Varbinary | 
| BigDecimal | Décimal | 
| ARRAY | List | 

## Partitions et déversements
<a name="connectors-mysql-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

## Performance
<a name="connectors-mysql-performance"></a>

MySQL prend en charge les partitions natives. Le connecteur Athena MySQL peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement natif est fortement recommandé.

Le connecteur Athena MySQL effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes. 

### Clauses LIMIT
<a name="connectors-mysql-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-mysql-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena MySQL peut combiner ces expressions et les pousser directement vers MySQL pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena MySQL suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-mysql-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

Pour un article sur l'utilisation de la poussée vers le bas de prédicats pour améliorer les performances des requêtes fédérées, y compris MySQL, consultez [Améliorer les requêtes fédérées avec la poussée vers le bas de prédicats dans Amazon Athena](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) sur le *blog AWS Big Data*.

## Requêtes de transmission
<a name="connectors-mysql-passthrough-queries"></a>

Le connecteur MySQL prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec MySQL, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans MySQL. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-mysql-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-mysql-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/pom.xml) du connecteur MySQL sur GitHub .com.

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-mysql) sur GitHub .com.

# Connecteur Amazon Athena pour Neptune
<a name="connectors-neptune"></a>

Amazon Neptune est un service de base de données orientée graphe entièrement géré et fiable, qui facilite la création et l'exécution d'applications fonctionnant avec des jeux de données hautement connectés. Neptune conçu spécialement, haute performance, le moteur de base de données graphique stocke des milliards de relations de manière optimale et des requêtes sur les graphiques avec une latence de seulement quelques millisecondes. Pour plus d'informations, consultez [Neptune Guide de l'utilisateur](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html).

Le connecteur Amazon Athena Neptune permet à Athena de communiquer avec votre instance de base de données orientée graphe Neptune, rendant vos données de graphe Neptune accessibles par des requêtes SQL.

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 AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

## Conditions préalables
<a name="connectors-neptune-prerequisites"></a>

L’utilisation du connecteur Neptune nécessite les trois étapes suivantes.
+ Configuration d’un cluster Neptune
+ Configuration d'un AWS Glue Data Catalog
+ Déploiement du connecteur sur votre Compte AWS. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md). Pour plus d'informations spécifiques au déploiement du connecteur Neptune, consultez la section [Déployer le connecteur Amazon Athena Neptune](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/neptune-connector-setup) sur .com. GitHub

## Limitations
<a name="connectors-neptune-limitations"></a>

Actuellement, le connecteur Neptune présente la limitation suivante.
+ La projection de colonnes, y compris la clé primaire (ID), n'est pas prise en charge. 

## Configuration d’un cluster Neptune
<a name="connectors-neptune-setting-up-a-neptune-cluster"></a>

Si vous ne disposez pas d’un cluster Amazon Neptune et d’un jeu de données de graphes de propriétés que vous souhaitez utiliser, vous devez en configurer un.

Assurez-vous de disposer d’une passerelle Internet et d’une passerelle NAT dans le VPC qui héberge votre cluster Neptune. Les sous-réseaux privés utilisés par la fonction Lambda du connecteur Neptune doivent avoir une route vers Internet via cette passerelle NAT. La fonction Lambda du connecteur Neptune utilise la passerelle NAT pour communiquer avec. AWS Glue

Pour obtenir des instructions sur la configuration d'un nouveau cluster Neptune et son chargement avec un exemple de jeu de données, consultez Sample [Neptune Cluster](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/neptune-cluster-setup) Setup sur .com. GitHub

## Configuration d'un AWS Glue Data Catalog
<a name="connectors-neptune-setting-up-an-aws-glue-data-catalog"></a>

Contrairement aux magasins de données relatives traditionnels, les nœuds et les périphéries de base de données de graphe Neptune n’utilisent pas de schéma défini. Chaque entrée peut comporter des champs et des types de données différents. Toutefois, étant donné que le connecteur Neptune extrait les métadonnées du AWS Glue Data Catalog, vous devez créer une AWS Glue base de données contenant des tables avec le schéma requis. Après avoir créé la base de données et les tables AWS Glue , le connecteur peut fournir la liste des tables disponibles pour effectuer des requêtes auprès d’Athena.

### Activation de la mise en correspondance non sensible à la casse des colonnes
<a name="connectors-neptune-glue-case-insensitive-column-matching"></a>

Pour résoudre les noms de colonnes de votre table Neptune avec le boitier correct, même si les noms de colonnes sont tous en minuscules AWS Glue, vous pouvez configurer le connecteur Neptune pour une correspondance insensible aux majuscules et minuscules.

Pour activer cette fonctionnalité, définissez la variable d'environnement de la fonction Lambda du connecteur Neptune de `enable_caseinsensitivematch` à `true`. 

### Spécification du paramètre de table AWS Glue glabel pour les noms de table en majuscules
<a name="connectors-neptune-glue-glabel-parameter-for-table-names"></a>

Étant donné que seuls AWS Glue les noms de table en minuscules sont pris en charge, il est important de spécifier le paramètre de `glabel` AWS Glue table lorsque vous créez une AWS Glue table pour Neptune et que le nom de votre table Neptune inclut le boîtier. 

Dans la définition de votre AWS Glue table, incluez le `glabel` paramètre et attribuez à sa valeur le nom de votre table avec son boîtier d'origine. Cela garantit que le boîtier correct est préservé lors de AWS Glue l'interaction avec votre table Neptune. L'exemple suivant définit la valeur de `glabel` sur le nom de la table `Airport`.

```
glabel = Airport
```

![\[Définition de la propriété de glabel AWS Glue table afin de préserver le cadre du nom de table pour une table Neptune\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-neptune-1.png)


Pour plus d'informations sur la configuration d'un AWS Glue Data Catalog pour qu'il fonctionne avec Neptune, voir [Configurer le AWS Glue catalogue sur GitHub .com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/aws-glue-sample-scripts).

## Performance
<a name="connectors-neptune-performance"></a>

Le connecteur Athena Neptune effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Cependant, les prédicats utilisant la clé primaire entraînent l’échec 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. Le connecteur Neptune résiste à la limitation due à la simultanéité.

## Requêtes de transmission
<a name="connectors-neptune-passthrough-queries"></a>

Le connecteur Neptune prend en charge les [requêtes de transmission](federated-query-passthrough.md). Vous pouvez utiliser cette fonctionnalité pour exécuter des requêtes Gremlin sur des graphes de propriétés et pour exécuter des requêtes SPARQL sur des données RDF.

Pour créer des requêtes de transmission avec Neptune, utilisez la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            DATABASE => 'database_name',
            COLLECTION => 'collection_name',
            QUERY => 'query_string'
        ))
```

L’exemple de requête de transmission Neptune ci-dessous filtre les aéroports utilisant le code `ATL`. Les guillemets simples doublés servent de guillemets d’échappement.

```
SELECT * FROM TABLE(
        system.query(
            DATABASE => 'graph-database',
            COLLECTION => 'airport',
            QUERY => 'g.V().has(''airport'', ''code'', ''ATL'').valueMap()' 
        ))
```

## Ressources supplémentaires
<a name="connectors-neptune-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune) sur GitHub .com.

# Connecteur Amazon Athena OpenSearch
<a name="connectors-opensearch"></a>

OpenSearch Service

Le OpenSearch connecteur Amazon Athena permet à Amazon Athena de communiquer avec OpenSearch vos instances afin que vous puissiez utiliser le SQL pour interroger vos données. OpenSearch 

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

**Note**  
En raison d'un problème connu, le OpenSearch connecteur ne peut pas être utilisé avec un VPC.

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 AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

## Conditions préalables
<a name="connectors-opensearch-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Conditions
<a name="connectors-opensearch-terms"></a>

Les termes suivants concernent le OpenSearch connecteur.
+ **Domaine** : nom que ce connecteur associe au point de terminaison de votre OpenSearch instance. Le domaine est également utilisé comme nom de base de données. Pour les OpenSearch instances définies au sein d'Amazon OpenSearch Service, le domaine est détectable automatiquement. Pour les autres cas, vous devez fournir un mappage entre le nom de domaine et le point de terminaison.
+ **Index** — Table de base de données définie dans votre OpenSearch instance.
+ **Mapping** (Mappage) – Si un index est une table de base de données, le mappage est son schéma (c’est-à-dire les définitions de ses champs et attributs).

  Ce connecteur prend en charge à la fois la récupération des métadonnées depuis l' OpenSearch instance et depuis le AWS Glue Data Catalog. Si le connecteur trouve une AWS Glue base de données et une table qui correspondent à vos noms de OpenSearch domaine et d'index, il tente de les utiliser pour définir le schéma. Nous vous recommandons de créer votre AWS Glue table de manière à ce qu'elle soit un sur-ensemble de tous les champs de votre OpenSearch index.
+ **Document** – Un enregistrement au sein d’une table de base de données.
+ **Flux de données** – Données temporelles composées de plusieurs index de support. Pour plus d'informations, consultez les [sections Flux de données](https://opensearch.org/docs/latest/dashboards/im-dashboards/datastream/) dans la OpenSearch documentation et [Getting started with data streams](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/data-streams.html#data-streams-example) dans le *Amazon OpenSearch Service Developer Guide*.
**Note**  
Les index de flux de données étant créés et gérés en interne par OpenSearch, le connecteur choisit le mappage de schéma à partir du premier index disponible. Pour cette raison, nous vous recommandons vivement de configurer une AWS Glue table comme source de métadonnées supplémentaire. Pour de plus amples informations, veuillez consulter [Configuration de bases de données et de tables dans AWS Glue](#connectors-opensearch-setting-up-databases-and-tables-in-aws-glue). 

## Parameters
<a name="connectors-opensearch-parameters"></a>

Utilisez les paramètres de cette section pour configurer le OpenSearch connecteur.

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="opensearch-gc"></a>

Nous vous recommandons de configurer un OpenSearch connecteur à l'aide d'un objet de connexions Glue. Pour ce faire, définissez la variable d'`glue_connection`environnement du OpenSearch connecteur Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type OPENSEARCH
```

**Propriétés d’environnement Lambda**
+  **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le OpenSearch connecteur créé à l'aide des connexions Glue ne prend pas en charge l'utilisation d'un gestionnaire de multiplexage.
Le OpenSearch connecteur créé à l'aide des connexions Glue ne prend en charge que `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="opensearch-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **disable\$1glue** — (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
+ **query\$1timeout\$1cluster** – Le délai d’expiration, en secondes, pour les requêtes d’intégrité du cluster utilisées dans la génération d’examens parallèles.
+ **query\$1timeout\$1search** – Le délai d’expiration, en secondes, des requêtes de recherche utilisées pour récupérer des documents à partir d’un index.
+ **auto\$1discover\$1endpoint** – Valeur booléenne. La valeur par défaut est `true`. Lorsque vous utilisez le OpenSearch service Amazon et que vous définissez ce paramètre sur true, le connecteur peut découvrir automatiquement vos domaines et points de terminaison en appelant les opérations d'API de description ou de liste appropriées sur le OpenSearch service. Pour tout autre type d' OpenSearch instance (par exemple, auto-hébergée), vous devez spécifier les points de terminaison de domaine associés dans la `domain_mapping` variable. Si`auto_discover_endpoint=true`, le connecteur utilise des AWS informations d'identification pour s'authentifier auprès du OpenSearch service. Dans le cas contraire, le connecteur récupère les informations d'identification du nom d'utilisateur et du mot de passe AWS Secrets Manager par le biais de la `domain_mapping` variable.
+ **domain\$1mapping** – Utilisé uniquement lorsque `auto_discover_endpoint` est défini sur false et définit le mappage entre les noms de domaine et leurs points de terminaison associés. La `domain_mapping` variable peut prendre en charge plusieurs OpenSearch points de terminaison au format suivant :

  ```
  domain1=endpoint1,domain2=endpoint2,domain3=endpoint3,...       
  ```

  Dans le but de s'authentifier auprès d'un OpenSearch point de terminaison, le connecteur prend en charge les chaînes de substitution injectées en utilisant le format dont le nom `${SecretName}` d'utilisateur et le mot de passe ont été extraits AWS Secrets Manager. Le secret doit être stocké au format JSON suivant :

  ```
  { "username": "your_username", "password": "your_password" }
  ```

  Le connecteur analysera automatiquement cette structure JSON pour récupérer les informations d’identification.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.

  L’exemple suivant utilise le secret `opensearch-creds`.

  ```
  movies=https://${opensearch-creds}:search-movies-ne...qu---us-east-1---es.amazonaws.com     
  ```

  Au moment de l’exécution, `${opensearch-creds}` est affiché sous la forme du nom d’utilisateur et du mot de passe, comme dans l’exemple suivant.

  ```
  movies=https://myusername@mypassword:search-movies-ne...qu---us-east-1---es.amazonaws.com
  ```

  Dans le paramètre `domain_mapping`, chaque paire domaine-point de terminaison peut utiliser un secret différent. Le secret lui-même doit être spécifié au format *user\$1name* @*password*. Bien que le mot de passe puisse contenir `@` des signes intégrés, le premier `@` sert de séparateur de*user\$1name*.

  Il est également important de noter que la virgule (,) et le signe égal (=) sont utilisés par ce connecteur comme séparateurs pour les paires domaine-point de terminaison. Pour cette raison, vous ne devez les utiliser nulle part dans le secret stocké.

## Configuration de bases de données et de tables dans AWS Glue
<a name="connectors-opensearch-setting-up-databases-and-tables-in-aws-glue"></a>

Le connecteur obtient des informations de métadonnées à l'aide de AWS Glue ou OpenSearch. Vous pouvez configurer une AWS Glue table comme source de définition de métadonnées supplémentaire. Pour activer cette fonctionnalité, définissez une AWS Glue base de données et une table correspondant au domaine et à l'index de la source que vous complétez. Le connecteur peut également tirer parti des définitions de métadonnées stockées dans l' OpenSearch instance en récupérant le mappage pour l'index spécifié.

### Définition des métadonnées pour les tableaux dans OpenSearch
<a name="connectors-opensearch-defining-metadata-for-arrays-in-opensearch"></a>

OpenSearch ne possède pas de type de données de tableau dédié. Chaque champ peut contenir zéro ou plusieurs valeurs, à condition qu’elles soient du même type de données. Si vous souhaitez l'utiliser OpenSearch comme source de définition de métadonnées, vous devez définir une `_meta` propriété pour tous les index utilisés avec Athena pour les champs qui doivent être considérés comme une liste ou un tableau. Si vous ne parvenez pas à effectuer cette étape, les requêtes renvoient uniquement le premier élément du champ de liste. Lorsque vous spécifiez la propriété `_meta`, les noms de champs doivent être entièrement qualifiés pour les structures JSON imbriquées (par exemple, `address.street`, où `street` est un champ imbriqué dans une structure `address`).

L’exemple suivant définit les listes `actor` et `genre` dans la table `movies`.

```
PUT movies/_mapping 
{ 
  "_meta": { 
    "actor": "list", 
    "genre": "list" 
  } 
}
```

### Types de données
<a name="connectors-opensearch-data-types"></a>

Le OpenSearch connecteur peut extraire les définitions de métadonnées de l'instance AWS Glue ou de l' OpenSearch instance. Le connecteur utilise le mappage du tableau suivant pour convertir les définitions en types de données Apache Arrow, y compris les points notés dans la section suivante.


****  

| OpenSearch | Apache | AWS Glue | 
| --- | --- | --- | 
| texte, mot clé, binaire | VARCHAR | chaîne | 
| long | BIGINT | bigint | 
| scaled\$1float | BIGINT | SCALED\$1FLOAT(...) | 
| entier | INT | int | 
| short | SMALLINT | smallint | 
|  octet | TINYINT | tinyint | 
| double | FLOAT8 | double | 
| float, half\$1float | FLOAT4 | float | 
| boolean | BIT | boolean | 
| date, date\$1nanos | DATEMILLI | timestamp | 
| Structure JSON | STRUCT | STRUCT | 
| \$1meta (pour plus d’informations, consultez la section [Définition des métadonnées pour les tableaux dans OpenSearch](#connectors-opensearch-defining-metadata-for-arrays-in-opensearch).) | LIST | ARRAY | 

#### Remarques sur les types de données
<a name="connectors-opensearch-data-type-considerations-and-limitations"></a>
+ Actuellement, le connecteur ne prend en charge que les AWS Glue types de données OpenSearch et répertoriés dans le tableau précédent.
+ Un`scaled_float` est un nombre à virgule flottante mis à l’échelle par un facteur de mise à l’échelle double fixe et représenté en tant que `BIGINT` dans Apache Arrow. Par exemple, 0,756 avec un facteur d’échelle de 100 est arrondi à 76.
+ Pour définir un `scaled_float` in AWS Glue, vous devez sélectionner le type de `array` colonne et déclarer le champ au format SCALED\$1FLOAT (). *scaling\$1factor*

  Les exemples suivants sont valides :

  ```
  SCALED_FLOAT(10.51) 
  SCALED_FLOAT(100) 
  SCALED_FLOAT(100.0)
  ```

  Les exemples suivants ne sont pas valides :

  ```
  SCALED_FLOAT(10.) 
  SCALED_FLOAT(.5)
  ```
+ Lors de la conversion de `date_nanos` vers `DATEMILLI`, les nanosecondes sont arrondies à la milliseconde la plus proche. Valeurs valides pour `date` et `date_nanos` incluent, sans s’y limiter, les formats suivants :

  ```
  "2020-05-18T10:15:30.123456789" 
  "2020-05-15T06:50:01.123Z" 
  "2020-05-15T06:49:30.123-05:00" 
  1589525370001 (epoch milliseconds)
  ```
+ An OpenSearch `binary` est une représentation sous forme de chaîne d'une valeur binaire codée en utilisant `Base64` et convertie en `VARCHAR` a.

## Exécution de requêtes SQL
<a name="connectors-opensearch-running-sql-queries"></a>

Vous trouverez ci-dessous des exemples de requêtes DDL que vous pouvez utiliser avec ce connecteur. Dans les exemples, *function\$1name* correspond au nom de votre fonction Lambda, *domain* au nom du domaine que vous souhaitez interroger et *index* au nom de votre index.

```
SHOW DATABASES in `lambda:function_name`
```

```
SHOW TABLES in `lambda:function_name`.domain
```

```
DESCRIBE `lambda:function_name`.domain.index
```

## Performance
<a name="connectors-opensearch-performance"></a>

Le OpenSearch connecteur Athena prend en charge les scans parallèles basés sur des partitions. Le connecteur utilise les informations relatives à l'état du cluster extraites de l' OpenSearch instance pour générer plusieurs demandes de recherche de documents. Les demandes sont réparties pour chaque partition et exécutées simultanément.

Le connecteur transfère également des prédicats dans le cadre de ses requêtes de recherche de documents. L’exemple de requête et de prédicat suivant montre comment le connecteur utilise le prédicat poussé vers le bas.

**Interrogation**

```
SELECT * FROM "lambda:elasticsearch".movies.movies 
WHERE year >= 1955 AND year <= 1962 OR year = 1996
```

**Prédicat**

```
(_exists_:year) AND year:([1955 TO 1962] OR 1996)
```

## Requêtes de transmission
<a name="connectors-opensearch-passthrough-queries"></a>

Le OpenSearch connecteur prend en charge [les requêtes directes](federated-query-passthrough.md) et utilise le langage Query DSL. Pour plus d'informations sur les requêtes avec Query DSL, consultez [Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html) dans la documentation Elasticsearch ou [Query](https://opensearch.org/docs/latest/query-dsl/) DSL dans la documentation. OpenSearch 

Pour utiliser des requêtes directes avec le OpenSearch connecteur, utilisez la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            schema => 'schema_name',
            index => 'index_name',
            query => "{query_string}"
        ))
```

L' OpenSearch exemple de requête directe suivant filtre les employés dont le statut professionnel est actif dans l'`employee`index du `default` schéma.

```
SELECT * FROM TABLE(
        system.query(
            schema => 'default',
            index => 'employee',
            query => "{ ''bool'':{''filter'':{''term'':{''status'': ''active''}}}}"
        ))
```

## Ressources supplémentaires
<a name="connectors-opensearch-additional-resources"></a>
+ Pour un article sur l'utilisation du OpenSearch connecteur Amazon Athena pour interroger des données dans Amazon OpenSearch Service et Amazon S3 en une seule requête, voir Interroger des [données dans Amazon OpenSearch Service à l'aide de SQL depuis Amazon Athena](https://aws.amazon.com/blogs/big-data/query-data-in-amazon-opensearch-service-using-sql-from-amazon-athena/) dans *AWS le* blog Big Data.
+ Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-elasticsearch) sur GitHub .com.

# Connecteur Amazon Athena pour Oracle
<a name="connectors-oracle"></a>

Le connecteur Amazon Athena pour Oracle permet à Amazon Athena d’exécuter des requêtes SQL sur des données stockées dans Oracle exécutées sur site ou sur Amazon EC2 ou Amazon RDS. Vous pouvez également utiliser le connecteur pour interroger des données sur [Oracle Exadata](https://www.oracle.com/engineered-systems/exadata/).

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-oracle-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-oracle-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Seules les bases de données Oracle dont la version est 12.1.0.2 sont prises en charge.
+ Si le connecteur Oracle n’utilise pas une connexion Glue, les noms de base de données, de table et de colonne seront convertis en majuscules par le connecteur. 

  Si le connecteur Oracle utilise une connexion Glue, les noms de base de données, de table et de colonne ne seront pas établis en majuscules par défaut par le connecteur. Pour modifier ce comportement relatif à la casse, remplacez l’élément Lambda par variable d’environnement `casing_mode` par `upper` ou `lower` selon les besoins.

   Un connecteur Oracle utilisant une connexion Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
+ Lorsque vous utilisez l’élément `NUMBER` Oracle sans définir la précision ni l’échelle, Athena le traite en tant que `BIGINT`. Pour obtenir les décimales requises dans Athena, spécifiez `default_scale=<number of decimal places>` dans vos variables d’environnement Lambda.

## Conditions
<a name="connectors-oracle-terms"></a>

Les termes suivants se rapportent au connecteur Oracle.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-oracle-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Oracle.

### Connexions Glue (recommandé)
<a name="oracle-gc"></a>

Nous vous recommandons de configurer un connecteur Oracle en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Oracle Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type ORACLE
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **is\$1fips\$1enabled** (facultatif) : défini sur true lorsque le mode FIPS est activé. La valeur par défaut est false.
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée.
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels aucune connexion Glue n’est associée.
  + **case\$1insensitive\$1search** : réalisation de recherches non sensibles à la casse sur les noms de schéma et de table dans Oracle. Utilisez cette valeur si votre requête contient des noms de schéma ou de table qui ne correspondent pas à la casse par défaut de votre connecteur.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Oracle créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Oracle créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="oracle-legacy"></a>

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

**Propriétés d’environnement Lambda**
+ **default** : chaîne de connexion JDBC à utiliser pour se connecter à l’instance de base de données Oracle. Par exemple, `oracle://${jdbc_connection_string}`
+ **catalog\$1connection\$1string** : utilisé par le gestionnaire de multiplexage (non pris en charge lors de l’utilisation d’une connexion Glue). Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myoraclecatalog, le nom de la variable d’environnement est alors myoraclecatalog\$1connection\$1string.
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **is\$1fips\$1enabled** (facultatif) : défini sur true lorsque le mode FIPS est activé. La valeur par défaut est false.
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée.
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels aucune connexion Glue n’est associée.
  + **case\$1insensitive\$1search** : réalisation de recherches non sensibles à la casse sur les noms de schéma et de table dans Oracle. Utilisez cette valeur si votre requête contient des noms de schéma ou de table qui ne correspondent pas à la casse par défaut de votre connecteur.

#### Chaîne de connexion
<a name="connectors-oracle-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
oracle://${jdbc_connection_string}
```

**Note**  
Si votre mot de passe contient des caractères spéciaux (par exemple,`some.password`), mettez-le entre guillemets lorsque vous le transmettez à la chaîne de connexion (par exemple,`"some.password"`). Si vous ne le faites pas, une erreur d'URL Oracle spécifiée invalide peut se produire.

#### Utilisation d'un gestionnaire de connexion unique
<a name="connectors-oracle-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Oracle.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | OracleCompositeHandler | 
| Gestionnaire de métadonnées | OracleMetadataHandler | 
| Gestionnaire d’enregistrements | OracleRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-oracle-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 
| IsFIPSEnabled | Facultatif. Défini sur true lorsque le mode FIPS est activé. La valeur par défaut est false.  | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

Le connecteur prend en charge les connexions basées sur SSL aux instances Amazon RDS. La prise en charge est limitée au protocole TLS (Transport Layer Security) et à l'authentification du serveur par le client. L’authentification mutuelle n’est pas prise en charge dans Amazon RDS. La deuxième ligne du tableau ci-dessous indique la syntaxe pour utiliser le protocole SSL.

L’exemple de propriété suivant concerne une instance Oracle unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle\$1@//hostname:port/servicename | 
|  | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle\$1@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS) (HOST=<HOST\$1NAME>)(PORT=))(CONNECT\$1DATA=(SID=))(SECURITY=(SSL\$1SERVER\$1CERT\$1DN=))) | 

#### Fourniture des informations d’identification
<a name="connectors-oracle-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Note**  
Si votre mot de passe contient des caractères spéciaux (par exemple,`some.password`), mettez-le entre guillemets lorsque vous l'enregistrez dans Secrets Manager (par exemple,`"some.password"`). Si vous ne le faites pas, une erreur d'URL Oracle spécifiée invalide peut se produire.

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/Oracle}`.

```
oracle://jdbc:oracle:thin:${Test/RDS/Oracle}@//hostname:port/servicename 
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
oracle://jdbc:oracle:thin:username/password@//hostname:port/servicename
```

Actuellement, le connecteur Oracle reconnaît les propriétés JDBC `UID` et `PWD`.

#### Utilisation d'un gestionnaire de multiplexage
<a name="connectors-oracle-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | OracleMuxCompositeHandler | 
| Gestionnaire de métadonnées | OracleMuxMetadataHandler | 
| Gestionnaire d’enregistrements | OracleMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-oracle-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myoraclecatalog, le nom de la variable d’environnement est alors myoraclecatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Oracle MUX Lambda qui prend en charge deux instances de base de données :`oracle1` (par défaut) et `oracle2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle1\$1@//oracle1.hostname:port/servicename | 
| oracle\$1catalog1\$1connection\$1string | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle1\$1@//oracle1.hostname:port/servicename | 
| oracle\$1catalog2\$1connection\$1string | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle2\$1@//oracle2.hostname:port/servicename | 

## Prise en charge du type de données
<a name="connectors-oracle-data-type-support"></a>

Le tableau suivant indique les types de données pour JDBC, Oracle et Arrow.


****  

| JDBC | Oracle | Flèche | 
| --- | --- | --- | 
| Booléen | boolean | Bit | 
| Entier | N/A | Tiny | 
| Court | smallint | Smallint | 
| Entier | entier | Int | 
| Long | bigint | Bigint | 
| float | float4 | Float4 | 
| Double | float8 | Float8 | 
| Date | date | DateDay | 
| Horodatage | timestamp | DateMilli | 
| String | text | Varchar | 
| Octets | octets | Varbinary | 
| BigDecimal | numeric(p,s) | Décimal | 
| ARRAY | N/A (voir la remarque) | List | 

## Partitions et déversements
<a name="connectors-oracle-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

## Performance
<a name="connectors-oracle-performance"></a>

Oracle prend en charge les partitions natives. Le connecteur Athena Oracle peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement natif est fortement recommandé. La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur Oracle résiste à la limitation due à la simultanéité. Cependant, les temps d'exécution des requêtes ont tendance à être longs.

Le connecteur Athena Oracle effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Des prédicats simples et des expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution de la requête. 

### Prédicats
<a name="connectors-oracle-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Oracle peut combiner ces expressions et les pousser directement vers Oracle pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Oracle suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-oracle-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Requêtes de transmission
<a name="connectors-oracle-passthrough-queries"></a>

Le connecteur Oracle prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Oracle, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Oracle. La requête sélectionne toutes les colonnes dans la table `customer`.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer'
        ))
```

## Informations de licence
<a name="connectors-oracle-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-oracle-additional-resources"></a>

Pour obtenir les informations les plus récentes sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/pom.xml) du connecteur Oracle sur GitHub .com.

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-oracle) sur GitHub .com.

# Connecteur Amazon Athena pour PostgreSQL
<a name="connectors-postgresql"></a>

Le connecteur PostgreSQL Amazon Athena permet à Athena d’accéder à vos bases de données PostgreSQL.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-postgres-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-postgresql-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ À l’instar de PostgreSQL, Athena considère les espaces de fin dans les types `CHAR` PostgreSQL comme étant sémantiquement non importants à des fins de longueur et de comparaison. Notez que cela s’applique uniquement aux types `CHAR`, mais pas aux types `VARCHAR`. Athena ignore les espaces de fin pour le type `CHAR`, mais les considère comme importants pour le type `VARCHAR`.
+ Lorsque vous utilisez le type de données chaîne de caractères non sensible à la casse [citext](https://www.postgresql.org/docs/current/citext.html), PostgreSQL utilise une comparaison de données non sensible à la casse qui est différente de celle d’Athena. Cette différence crée un écart entre les données lors des opérations SQL `JOIN`. Pour contourner ce problème, utilisez la fonctionnalité de requête de transmission du connecteur PostgreSQL. Pour plus d’informations, consultez [Requêtes de transmission](#connectors-postgres-passthrough-queries) plus bas dans ce document. 

## Conditions
<a name="connectors-postgresql-terms"></a>

Les termes suivants se rapportent au connecteur PostgreSQL.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-postgresql-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur PostgreSQL.

**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.

### Connexions Glue (recommandé)
<a name="connectors-postgresql-gc"></a>

Nous vous recommandons de configurer un connecteur PostgreSQL en utilisant un objet des connexions Glue. 

Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur PostgreSQL Lambda sur le nom de la connexion Glue à utiliser.

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type POSTGRESQL
```

**Propriétés d’environnement Lambda**

**glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur PostgreSQL créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur PostgreSQL créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-postgresql-connection-legacy"></a>

Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

#### Chaîne de connexion
<a name="connectors-postgresql-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
postgres://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-postgresql-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | PostGreSqlMuxCompositeHandler | 
| Gestionnaire de métadonnées | PostGreSqlMuxMetadataHandler | 
| Gestionnaire d’enregistrements | PostGreSqlMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-postgresql-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mypostgrescatalog, le nom de la variable d’environnement est alors mypostgrescatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Lambda PostGreSql MUX qui prend en charge deux instances de base de données `postgres1` : (par défaut) et. `postgres2`


****  

| Propriété | Value | 
| --- | --- | 
| default | postgres://jdbc:postgresql://postgres1.host:5432/default?\$1\$1Test/RDS/PostGres1\$1 | 
| postgres\$1catalog1\$1connection\$1string | postgres://jdbc:postgresql://postgres1.host:5432/default?\$1\$1Test/RDS/PostGres1\$1 | 
| postgres\$1catalog2\$1connection\$1string | postgres://jdbc:postgresql://postgres2.host:5432/default?user=sample&password=sample | 

##### Fourniture des informations d’identification
<a name="connectors-postgresql-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/PostGres1}`.

```
postgres://jdbc:postgresql://postgres1.host:5432/default?...&${Test/RDS/PostGres1}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
postgres://jdbc:postgresql://postgres1.host:5432/default?...&user=sample2&password=sample2&...
```

Actuellement, le connecteur PostgreSQL reconnaît les propriétés JDBC `user` et `password`.

##### Activation de SSL
<a name="connectors-postgresql-ssl"></a>

Pour prendre en charge le protocole SSL dans votre connexion PostgreSQL, ajoutez ce qui suit à votre chaîne de connexion :

```
&sslmode=verify-ca&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory
```

**Exemple**  
L'exemple de chaîne de connexion suivant n'utilise pas le protocole SSL.

```
postgres://jdbc:postgresql://example-asdf-aurora-postgres-endpoint:5432/asdf?user=someuser&password=somepassword
```

Pour activer le protocole SSL, modifiez la chaîne comme suit.

```
postgres://jdbc:postgresql://example-asdf-aurora-postgres-endpoint:5432/asdf?user=someuser&password=somepassword&sslmode=verify-ca&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory
```

#### Utilisation d'un gestionnaire de connexion unique
<a name="connectors-postgresql-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance PostgreSQL.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | PostGreSqlCompositeHandler | 
| Gestionnaire de métadonnées | PostGreSqlMetadataHandler | 
| Gestionnaire d’enregistrements | PostGreSqlRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-postgresql-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance PostgreSQL unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | postgres://jdbc:postgresql://postgres1.host:5432/default?secret=\$1\$1Test/RDS/PostgreSQL1\$1 | 

#### Paramètres de déversement
<a name="connectors-postgresql-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-postgresql-data-type-support"></a>

Le tableau suivant indique les types de données correspondants pour JDBC, PostGre SQL et Arrow.


****  

| JDBC | PostGreSQL | Flèche | 
| --- | --- | --- | 
| Booléen | Booléen | Bit | 
| Entier | N/A | Tiny | 
| Court | smallint | Smallint | 
| Entier | entier | Int | 
| Long | bigint | Bigint | 
| float | float4 | Float4 | 
| Double | float8 | Float8 | 
| Date | date | DateDay | 
| Horodatage | timestamp | DateMilli | 
| String | text | Varchar | 
| Octets | octets | Varbinary | 
| BigDecimal | numeric(p,s) | Décimal | 
| ARRAY | N/A (voir la remarque) | List | 

**Note**  
Le type `ARRAY` est pris en charge pour le connecteur PostgreSQL avec les contraintes suivantes : les tableaux multidimensionnels (`<data_type>[][]` ou tableaux imbriqués) ne sont pas pris en charge. Les colonnes avec des types de données `ARRAY` non pris en charge sont converties en un tableau d’éléments de chaîne (`array<varchar>`).

## Partitions et déversements
<a name="connectors-postgresql-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

## Performance
<a name="connectors-postgresql-performance"></a>

PostgreSQL prend en charge les partitions natives. Le connecteur Athena PostgreSQL peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement natif est fortement recommandé.

Le connecteur Athena PostgreSQL effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes. Cependant, la sélection d'un sous-ensemble de colonnes entraîne parfois un délai d'exécution plus long des requêtes.

### Clauses LIMIT
<a name="connectors-postgres-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-postgres-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena PostgreSQL peut combiner ces expressions et les pousser directement vers PistgreSQL pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena PostgreSQL suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-postgres-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Requêtes de transmission
<a name="connectors-postgres-passthrough-queries"></a>

Le connecteur PostgreSQL prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec PostgreSQL, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans PostgreSQL. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Ressources supplémentaires
<a name="connectors-postgresql-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-postgresql/pom.xml) du connecteur PostgreSQL sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-postgresql) sur GitHub .com.

# Connecteur Amazon Athena pour Redis OSS
<a name="connectors-redis"></a>

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 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](#connectors-redis-setting-up-databases-and-tables-in-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 AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

Le connecteur Amazon Athena Redis OSS prend en charge Amazon MemoryDB et ElastiCache Amazon (Redis OSS).

## Conditions préalables
<a name="connectors-redis-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ 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 ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

## Parameters
<a name="connectors-redis-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Redis.
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **glue\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.

## Configuration de bases de données et de tables dans AWS Glue
<a name="connectors-redis-setting-up-databases-and-tables-in-glue"></a>

Pour activer une AWS Glue table à utiliser avec Redis OSS, vous pouvez définir les propriétés de table suivantes sur la table :`redis-endpoint`,`redis-value-type`, et `redis-keys-zset` soit`redis-key-prefix`.

En outre, toute AWS Glue base de données contenant des tables Redis OSS doit avoir une propriété URI `redis-db-flag` dans la base de données. Pour définir la propriété `redis-db-flag` URI, utilisez la AWS Glue console pour modifier la base de données.

La liste suivante décrit les propriétés de la table.
+ **redis-endpoint** — (Obligatoire) Le serveur Redis OSS qui contient les données *hostname* `:` *port* `:` *password* de 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, en AWS Secrets Manager utilisant \$1 \$1*Secret\$1Name*\$1 comme valeur de propriété de table.

**Note**  
[Pour utiliser la fonctionnalité Athena Federated Query avec, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)
+ **redis-keys-zset**— (Obligatoire si elle n'`redis-key-prefix`est pas utilisée) Une liste de clés séparées par des virgules dont la valeur est un [zset](https://redis.com/ebook/part-2-core-concepts/chapter-3-commands-in-redis/3-5-sorted-sets/) (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-zset` ou `redis-key-prefix` doit être définie.
+ **redis-key-prefix**— (Obligatoire si elle n'`redis-keys-zset`est pas utilisée) Une liste de préfixes clés séparés par des virgules pour rechercher des valeurs dans le tableau (par exemple,`accounts-*,acct-`). La propriété `redis-key-prefix` ou `redis-keys-zset` doit être définie.
+ **redis-value-type**— (Obligatoire) Définit la façon dont les valeurs des clés définies par l'une `redis-key-prefix` ou l'autre `redis-keys-zset` sont mappées à 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`True`, crée une connexion Redis utilisant SSL/TLS. La valeur par défaut est `False`.
+ **redis-cluster-flag**— (Facultatif) Quand`True`, active la prise en charge des instances Redis en cluster. La valeur par défaut est `False`.
+ **redis-db-number**— (Facultatif) S'applique uniquement aux instances autonomes non clusterisées.) 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](https://redis.io/commands/select) dans la documentation Redis.

## Types de données
<a name="connectors-redis-data-types"></a>

Le connecteur Redis OSS prend en charge les types de données suivants. Les flux Redis OSS ne sont pas pris en charge.
+ [String](https://redis.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/1-2-1-strings-in-redis/)
+ [Hachage](https://redis.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/1-2-4-hashes-in-redis/)
+ Set trié ([ZSet](https://redis.com/ebook/part-2-core-concepts/chapter-3-commands-in-redis/3-5-sorted-sets/))

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 Glue type 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
<a name="connectors-redis-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-redis.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-redis/athena-redis.yaml). La liste suivante résume les autorisations requises.
+ **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 Redis 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 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.

## Performance
<a name="connectors-redis-performance"></a>

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
<a name="connectors-redis-passthrough-queries"></a>

Le connecteur Redis prend en charge les [requêtes de transmission](federated-query-passthrough.md). 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
<a name="connectors-redis-license-information"></a>

Le projet de connecteur Redis Amazon Athena est concédé sous licence dans le cadre de la [licence Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Ressources supplémentaires
<a name="connectors-redis-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-redis) sur GitHub .com.

# Connecteur Amazon Athena pour Redshift
<a name="connectors-redshift"></a>

Le connecteur Amazon Athena pour Redshift permet à Amazon Athena d’accéder à vos bases de données Amazon Redshift et Amazon Redshift sans serveur, y compris aux vues Redshift sans serveur. Vous pouvez vous connecter à l’un ou l’autre de ces service en utilisant les paramètres de configuration de la chaîne de connexion JDBC décrits sur cette page.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-redshift-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-redshift-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Comme Redshift ne prend pas en charge les partitions externes, toutes les données spécifiées par une requête sont récupérées à chaque fois.
+ À l’instar de Redshift, Athena considère les espaces de fin dans les types `CHAR` Redshift comme sémantiquement non importants à des fins de longueur et de comparaison. Notez que cela s’applique uniquement aux types `CHAR`, mais pas aux types `VARCHAR`. Athena ignore les espaces de fin pour le type `CHAR`, mais les considère comme importants pour le type `VARCHAR`.

## Conditions
<a name="connectors-redshift-terms"></a>

Les termes suivants se rapportent au connecteur Redshift :
+ **Instance de base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-redshift-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Redshift.

### Connexions Glue (recommandé)
<a name="redshift-gc"></a>

Nous vous recommandons de configurer un connecteur Redshift en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Amazon Redshift Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type REDSHIFT
```

**Propriétés d’environnement Lambda**

**glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Redshift créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Redshift créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="redshift-legacy"></a>

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

**Propriétés d’environnement Lambda**
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **disable\$1glue** — (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\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.

#### Chaîne de connexion
<a name="connectors-redshift-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
redshift://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-redshift-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | RedshiftMuxCompositeHandler | 
| Gestionnaire de métadonnées | RedshiftMuxMetadataHandler | 
| Gestionnaire d’enregistrements | RedshiftMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-redshift-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myredshiftcatalog, le nom de la variable d’environnement est alors myredshiftcatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Redshift MUX Lambda qui prend en charge deux instances de base de données : `redshift1` (par défaut) et `redshift2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | redshift://jdbc:redshift://redshift1.host:5439/dev?user=sample2&password=sample2 | 
| redshift\$1catalog1\$1connection\$1string | redshift://jdbc:redshift://redshift1.host:3306/default?\$1\$1Test/RDS/Redshift1\$1 | 
| redshift\$1catalog2\$1connection\$1string | redshift://jdbc:redshift://redshift2.host:3333/default?user=sample2&password=sample2 | 

##### Fourniture des informations d’identification
<a name="connectors-redshift-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret \$1\$1Test/RDS/ `Redshift1`\$1.

```
redshift://jdbc:redshift://redshift1.host:3306/default?...&${Test/RDS/Redshift1}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
redshift://jdbc:redshift://redshift1.host:3306/default?...&user=sample2&password=sample2&...
```

Actuellement, le connecteur Redshift reconnaît les propriétés JDBC `user` et `password`.

## Prise en charge du type de données
<a name="connectors-redshift-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour JDBC et Apache Arrow.


****  

| JDBC | Flèche | 
| --- | --- | 
| Booléen | Bit | 
| Entier | Tiny | 
| Court | Smallint | 
| Entier | Int | 
| Long | Bigint | 
| float | Float4 | 
| Double | Float8 | 
| Date | DateDay | 
| Horodatage | DateMilli | 
| String | Varchar | 
| Octets | Varbinary | 
| BigDecimal | Décimal | 
| ARRAY | List | 

## Partitions et déversements
<a name="connectors-redshift-partitions-and-splits"></a>

Redshift ne prend pas en charge les partitions externes. Pour plus d’informations sur les problèmes liés aux performances, veuillez consulter [Performance](#connectors-redshift-performance).

## Performance
<a name="connectors-redshift-performance"></a>

Le connecteur Athena Redshift effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les clauses `ORDER BY`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes. Cependant, la sélection d'un sous-ensemble de colonnes entraîne parfois un délai d'exécution plus long des requêtes. Amazon Redshift est particulièrement vulnérable au ralentissement de l’exécution des requêtes lorsque vous exécutez plusieurs requêtes en même temps.

### Clauses LIMIT
<a name="connectors-redshift-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Requêtes Top N
<a name="connectors-redshift-performance-top-n-queries"></a>

Une requête Top `N` spécifie le classement du jeu de résultats et la limite du nombre de lignes renvoyées. Vous pouvez utiliser ce type de requête pour déterminer les valeurs Top `N` maximales ou Top `N` minimales pour vos jeux de données. Grâce à la poussée vers le bas Top `N`, le connecteur renvoie uniquement des lignes `N` classées à Athena.

### Prédicats
<a name="connectors-redshift-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Redshift peut combiner ces expressions et les pousser directement vers Redshift pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Redshift suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-redshift-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
ORDER BY col_a DESC 
LIMIT 10;
```

Pour un article sur l'utilisation de la poussée vers le bas de prédicats pour améliorer les performances des requêtes fédérées, y compris Amazon Redshift, consultez [Améliorer les requêtes fédérées avec la poussée vers le bas de prédicats dans Amazon Athena](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) sur le *blog AWS Big Data*.

## Requêtes de transmission
<a name="connectors-redshift-passthrough-queries"></a>

Le connecteur Redshift prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Redshift, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Redshift. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Ressources supplémentaires
<a name="connectors-redshift-additional-resources"></a>

Pour obtenir les informations les plus récentes sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-redshift/pom.xml) du connecteur Redshift sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-redshift) sur GitHub .com.

# Connecteur Amazon Athena pour SAP HANA
<a name="connectors-sap-hana"></a>

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-saphana-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-sap-hana-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Dans SAP HANA, les noms d’objets sont convertis en majuscules lorsqu’ils sont stockés dans la base de données SAP HANA. Toutefois, comme les noms entre guillemets sont sensibles à la casse, il est possible que deux tables portent le même nom en minuscules et en majuscules (par exemple, `EMPLOYEE` et `employee`).

  Dans la requête fédérée d’Athena, les noms des tables de schéma sont fournis à la fonction Lambda en minuscules. Pour contourner ce problème, vous pouvez fournir des indicateurs de requête `@schemaCase` pour récupérer les données des tables dont les noms sont sensibles à la casse. Vous trouverez ci-dessous deux exemples de requêtes avec des indicateurs de requête.

  ```
  SELECT * 
  FROM "lambda:saphanaconnector".SYSTEM."MY_TABLE@schemaCase=upper&tableCase=upper"
  ```

  ```
  SELECT * 
  FROM "lambda:saphanaconnector".SYSTEM."MY_TABLE@schemaCase=upper&tableCase=lower"
  ```

## Conditions
<a name="connectors-sap-hana-terms"></a>

Les termes suivants se rapportent au connecteur SAP HANA :
+ **Instance de base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-sap-hana-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur SAP HANA.

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-sap-hana-gc"></a>

Nous vous recommandons de configurer un connecteur SAP HANA en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur SAP HANA Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type SAPHANA
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur SAP HANA créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur SAP HANA créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-sap-hana-legacy"></a>

#### Chaîne de connexion
<a name="connectors-sap-hana-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
saphana://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-sap-hana-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | SaphanaMuxCompositeHandler | 
| Gestionnaire de métadonnées | SaphanaMuxMetadataHandler | 
| Gestionnaire d’enregistrements | SaphanaMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-sap-hana-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mysaphanacatalog, le nom de la variable d’environnement est alors mysaphanacatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Saphana MUX Lambda qui prend en charge deux instances de base de données : `saphana1` (par défaut) et `saphana2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | saphana://jdbc:sap://saphana1.host:port/?\$1\$1Test/RDS/ Saphana1\$1 | 
| saphana\$1catalog1\$1connection\$1string | saphana://jdbc:sap://saphana1.host:port/?\$1\$1Test/RDS/ Saphana1\$1 | 
| saphana\$1catalog2\$1connection\$1string | saphana://jdbc:sap://saphana2.host:port/?user=sample2&password=sample2 | 

##### Fourniture des informations d’identification
<a name="connectors-sap-hana-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/Saphana1}`.

```
saphana://jdbc:sap://saphana1.host:port/?${Test/RDS/Saphana1}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
saphana://jdbc:sap://saphana1.host:port/?user=sample2&password=sample2&...
```

Actuellement, le connecteur SAP HANA reconnaît les propriétés JDBC `user` et `password`.

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-sap-hana-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance SAP HANA.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | SaphanaCompositeHandler | 
| Gestionnaire de métadonnées | SaphanaMetadataHandler | 
| Gestionnaire d’enregistrements | SaphanaRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-sap-hana-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance SAP HANA unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | saphana://jdbc:sap://saphana1.host:port/?secret=Test/RDS/Saphana1 | 

#### Paramètres de déversement
<a name="connectors-sap-hana-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-sap-hana-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour JDBC et Apache Arrow.


****  

| JDBC | Flèche | 
| --- | --- | 
| Booléen | Bit | 
| Entier | Tiny | 
| Court | Smallint | 
| Entier | Int | 
| Long | Bigint | 
| float | Float4 | 
| Double | Float8 | 
| Date | DateDay | 
| Horodatage | DateMilli | 
| String | Varchar | 
| Octets | Varbinary | 
| BigDecimal | Décimal | 
| ARRAY | List | 

## Conversions du type de données
<a name="connectors-sap-hana-data-type-conversions"></a>

Outre les conversions JDBC vers Arrow, le connecteur effectue certaines autres conversions pour que la source SAP HANA et les types de données Athena soient compatibles. Ces conversions permettent de garantir la réussite de l’exécution des requêtes. Le tableau suivant présente ces conversions.


****  

| Type de données source (SAP HANA) | Type de données converties (Athena) | 
| --- | --- | 
| DECIMAL | BIGINT | 
| INTEGER | INT | 
| DATE | DATEDAY | 
| TIMESTAMP | DATEMILLI | 

Tous les autres types de données non pris en charge sont convertis en `VARCHAR`.

## Partitions et déversements
<a name="connectors-sap-hana-partitions-and-splits"></a>

Une partition est représentée par une seule colonne de partition de type `Integer`. La colonne contient les noms des partitions définies dans une table SAP HANA. Pour une table qui ne possède pas de nom de partition, \$1 est renvoyé, ce qui équivaut à une partition unique. Une partition équivaut à une division.


****  

| Nom | Type | Description | 
| --- | --- | --- | 
| PART\$1ID | Entier | Partition nommée dans SAP HANA. | 

## Performance
<a name="connectors-sap-hana-performance"></a>

SAP HANA prend en charge les partitions natives. Le connecteur Athena SAP HANA peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement natif est fortement recommandé. La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur présente des limitations importantes et parfois des échecs de requêtes, en raison de la simultanéité.

Le connecteur Athena SAP HANA effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes. 

### Clauses LIMIT
<a name="connectors-saphana-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-saphana-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena SAP HANA peut combiner ces expressions et les pousser directement vers SAP HANA pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena SAP HANA suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-saphana-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Requêtes de transmission
<a name="connectors-saphana-passthrough-queries"></a>

Le connecteur SAP HANA prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec SAP HANA, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans SAP HANA. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-saphana-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-saphana-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/pom.xml) du connecteur SAP HANA sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-saphana) sur GitHub .com.

# Connecteur Amazon Athena pour Snowflake
<a name="connectors-snowflake"></a>

Le connecteur Amazon Athena pour [Snowflake](https://www.snowflake.com/) permet à Amazon Athena d’exécuter des requêtes SQL sur des données stockées dans vos bases de données Snowflake ou des instances RDS à l’aide de JDBC.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-snowflake-prerequisites"></a>

Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou de l’opération d’API `CreateDataCatalog`. Pour de plus amples informations, veuillez consulter [Création d’une connexion à une source de données](connect-to-a-data-source.md).

## Limitations
<a name="connectors-snowflake-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Seules les connexions existantes prennent en charge la configuration du multiplexeur. 
+ Pour l’instant, les affichages Snowflake à division unique sont pris en charge. 
+  Dans Snowflake, les noms d'objets distinguent les majuscules et minuscules. Athena accepte la combinaison de majuscules et de minuscules dans les requêtes DDL et DML, mais par défaut, les noms [des](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html#table-names-and-table-column-names-in-ate-must-be-lowercase) objets lorsqu'elle exécute la requête. Le connecteur Snowflake ne prend en charge que les minuscules lorsque Glue Catalog/Lake Formation est utilisée. Lorsque le catalogue Athena est utilisé, les clients peuvent contrôler le comportement du boîtier à l'aide de la variable d'environnement `casing_mode` Lambda dont les valeurs possibles sont répertoriées dans la [Parameters](#connectors-snowflake-parameters) section (par exemple,). `key=casing_mode, value = CASE_INSENSITIVE_SEARCH` 

## Conditions
<a name="connectors-snowflake-terms"></a>

Les termes suivants se rapportent au connecteur Snowflake.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-snowflake-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Snowflake.

### Connexions Glue (recommandé)
<a name="snowflake-gc"></a>

Nous vous recommandons de configurer un connecteur Snowflake en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Snowflake Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type SNOWFLAKE
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **NONE** — Ne changez pas la majuscule du schéma et des noms de table donnés (exécutez la requête telle quelle sur Snowflake). Il s'agit de la valeur par défaut lorsque **casing\$1mode n'est pas spécifié**. 
  + **MAJUSCULE** — Tous les noms de schéma et de table indiqués dans la requête sont en majuscules avant de l'exécuter sur Snowflake.
  + **MINUSCULE** — Tous les noms de schéma et de table donnés en minuscules dans la requête avant de l'exécuter sur Snowflake.
  + **CASE\$1INSENSITIVE\$1SEARCH — Effectuez des recherches sans distinction majuscules/minuscules** dans les noms de schéma et de table dans Snowflake. Par exemple, vous pouvez utiliser ce mode lorsque vous avez une requête telle que `SELECT * FROM EMPLOYEE` Snowflake contient une table appelée. `Employee` Cependant, en présence de collisions de noms, telles qu'une table appelée `EMPLOYEE` et une autre table appelée `Employee` dans Snowflake, la requête échouera.

**Note**  
Le connecteur Snowflake créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Snowflake créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

**Stockage des identifiants**

Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification. Pour de plus amples informations, veuillez consulter [Authentification auprès de Snowflake](connectors-snowflake-authentication.md).

### Connexions héritées
<a name="snowflake-legacy"></a>

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

**Propriétés d’environnement Lambda**
+ **default** : chaîne de connexion JDBC à utiliser pour se connecter à l’instance de base de données Snowflake. Par exemple, `snowflake://${jdbc_connection_string}`
+ **catalog\$1connection\$1string** : utilisé par le gestionnaire de multiplexage (non pris en charge lors de l’utilisation d’une connexion Glue). Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mysnowflakecatalog, le nom de la variable d’environnement est alors mysnowflakecatalog\$1connection\$1string.
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **NONE** — Ne changez pas la majuscule du schéma et des noms de table donnés (exécutez la requête telle quelle sur Snowflake). Il s'agit de la valeur par défaut lorsque **casing\$1mode n'est pas spécifié**. 
  + **MAJUSCULE** — Tous les noms de schéma et de table indiqués dans la requête sont en majuscules avant de l'exécuter sur Snowflake.
  + **MINUSCULE** — Tous les noms de schéma et de table donnés en minuscules dans la requête avant de l'exécuter sur Snowflake.
  + **CASE\$1INSENSITIVE\$1SEARCH — Effectuez des recherches sans distinction majuscules/minuscules** dans les noms de schéma et de table dans Snowflake. Par exemple, vous pouvez utiliser ce mode lorsque vous avez une requête telle que `SELECT * FROM EMPLOYEE` Snowflake contient une table appelée. `Employee` Cependant, en présence de collisions de noms, telles qu'une table appelée `EMPLOYEE` et une autre table appelée `Employee` dans Snowflake, la requête échouera.
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

#### Chaîne de connexion
<a name="connectors-snowflake-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
snowflake://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-snowflake-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | SnowflakeMuxCompositeHandler | 
| Gestionnaire de métadonnées | SnowflakeMuxMetadataHandler | 
| Gestionnaire d’enregistrements | SnowflakeMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-snowflake-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mysnowflakecatalog, le nom de la variable d’environnement est alors mysnowflakecatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Snowflake MUX Lambda qui prend en charge deux instances de base de données : `snowflake1` (par défaut) et `snowflake2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1&\$1\$1Test/RDS/Snowflake1\$1 | 
| snowflake\$1catalog1\$1connection\$1string | snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1\$1\$1Test/RDS/Snowflake1\$1 | 
| snowflake\$1catalog2\$1connection\$1string | snowflake://jdbc:snowflake://snowflake2.host:port/?warehouse=warehousename&db=db1&schema=schema1&user=sample2&password=sample2 | 

##### Fourniture des informations d’identification
<a name="connectors-snowflake-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/Snowflake1}`.

```
snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1${Test/RDS/Snowflake1}&... 
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
snowflake://jdbc:snowflake://snowflake1.host:port/warehouse=warehousename&db=db1&schema=schema1&user=sample2&password=sample2&... 
```

À l’heure actuelle, Snowflake reconnaît les propriétés JDBC `user` et `password`. Il accepte également le nom d'utilisateur et le mot de passe au format *username* `/` *password* sans les clés `user` ou`password`.

#### Utilisation d'un gestionnaire de connexion unique
<a name="connectors-snowflake-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Snowflake.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | SnowflakeCompositeHandler | 
| Gestionnaire de métadonnées | SnowflakeMetadataHandler | 
| Gestionnaire d’enregistrements | SnowflakeRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-snowflake-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance Snowflake unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | snowflake://jdbc:snowflake://snowflake1.host:port/?secret=Test/RDS/Snowflake1 | 

#### Paramètres de déversement
<a name="connectors-snowflake-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-snowflake-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour JDBC et Apache Arrow.


****  

| JDBC | Flèche | 
| --- | --- | 
| Booléen | Bit | 
| Entier | Tiny | 
| Court | Smallint | 
| Entier | Int | 
| Long | Bigint | 
| float | Float4 | 
| Double | Float8 | 
| Date | DateDay | 
| Horodatage | DateMilli | 
| String | Varchar | 
| Octets | Varbinary | 
| BigDecimal | Décimal | 
| ARRAY | List | 

## Conversions du type de données
<a name="connectors-snowflake-data-type-conversions"></a>

Outre les conversions JDBC vers Arrow, le connecteur effectue certaines autres conversions pour que la source Snowflake et les types de données Athena soient compatibles. Ces conversions permettent de garantir la réussite de l’exécution des requêtes. Le tableau suivant présente ces conversions.


****  

| Type de données source (Snowflake) | Type de données converties (Athena) | 
| --- | --- | 
| TIMESTAMP | TIMESTAMPMILLI | 
| DATE | TIMESTAMPMILLI | 
| INTEGER | INT | 
| DECIMAL | BIGINT | 
| TIMESTAMP\$1NTZ | TIMESTAMPMILLI | 

Tous les autres types de données non pris en charge sont convertis en `VARCHAR`.

## Partitions et déversements
<a name="connectors-snowflake-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

Pour créer cette colonne synthétique et les partitions, Athena nécessite la définition d’une clé primaire. Cependant, étant donné que Snowflake n’applique pas les contraintes de clé primaire, vous devez vous-même appliquer l’unicité. Si vous ne le faites pas, Athena optera par défaut pour une division unique.

## Performance
<a name="connectors-snowflake-performance"></a>

Pour des performances optimales, utilisez des filtres dans les requêtes dans la mesure du possible. En outre, nous recommandons vivement le partitionnement natif pour récupérer des jeux de données volumineux dont la distribution des partitions est uniforme. La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur Snowflake résiste à la limitation due à la simultanéité.

Le connecteur Athena Snowflake effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes.

### Clauses LIMIT
<a name="connectors-snowflake-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-snowflake-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Snowflake peut combiner ces expressions et les pousser directement vers Snowflake pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Snowflake suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-snowflake-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

# Authentification auprès de Snowflake
<a name="connectors-snowflake-authentication"></a>

Vous pouvez configurer le connecteur Amazon Athena Snowflake pour utiliser l'authentification par paire de clés ou la méthode d'authentification pour vous connecter à votre entrepôt de OAuth données Snowflake. Les deux méthodes fournissent un accès sécurisé à Snowflake et éliminent le besoin de stocker les mots de passe dans des chaînes de connexion.
+ **Authentification par paire de clés** : cette méthode utilise des paires de clés publiques ou privées RSA à des fins d’authentification auprès de Snowflake. La clé privée signe numériquement les demandes d’authentification tandis que la clé publique correspondante est enregistrée dans Snowflake pour vérification. Cette méthode supprime le stockage des mots de passe.
+ **OAuth authentification** — Cette méthode utilise un jeton d'autorisation et un jeton d'actualisation pour s'authentifier auprès de Snowflake. Elle prend en charge l’actualisation automatique des jetons, ce qui fait d’elle une méthode adaptée aux applications de longue durée.

Pour plus d'informations, consultez les sections [Authentification et [OAuth authentification](https://docs.snowflake.com/en/user-guide/oauth-custom) par paire de clés](https://docs.snowflake.com/en/user-guide/key-pair-auth) dans le guide de l'utilisateur de Snowflake.

## Conditions préalables
<a name="connectors-snowflake-authentication-prerequisites"></a>

Avant de commencer, effectuez les opérations obligatoires suivantes :
+ Vous devez accéder au compte Snowflake avec des privilèges administratifs.
+ Vous devez disposer d’un compte utilisateur Snowflake dédié pour le connecteur Athena.
+ Vous devez disposer d’OpenSSL ou d’outils de génération de clés équivalents pour l’authentification par paire de clés.
+ AWS Secrets Manager accès pour créer et gérer des secrets.
+ Navigateur Web pour terminer OAuth le processus d' OAuth authentification.

## Configuration de l’authentification par paire de clés
<a name="connectors-snowflake-keypair-authentication"></a>

Ce processus implique la génération d’une paire de clés RSA, la configuration de votre compte Snowflake avec la clé publique et le stockage sécurisé de la clé privée dans AWS Secrets Manager. Les étapes suivantes vous guideront dans la création des clés cryptographiques, la configuration des autorisations Snowflake nécessaires et la configuration des AWS informations d'identification pour une authentification fluide. 

1. **Génération d’une paire de clés RSA**

   Générez une paire de clés privées et publiques à l’aide d’OpenSSL.
   + Pour générer une version non chiffrée, utilisez la commande suivante dans votre application de ligne de commande locale.

     ```
     openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
     ```
   + Pour générer une version chiffrée, utilisez la commande suivante, qui omet `-nocrypt`.

     ```
     openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
     ```
   + Pour générer une clé publique à partir d’une clé privée, utilisez ce qui suit.

     ```
     openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
     # Set appropriate permissions (Unix/Linux)
     chmod 600 rsa_key.p8
     chmod 644 rsa_key.pub
     ```
**Note**  
Ne partagez pas votre clé privée. La clé privée doit uniquement être accessible à l’application qui doit s’authentifier auprès de Snowflake.

1. **Extraction du contenu de la clé publique sans délimiteurs pour Snowflake**

   ```
   # Extract public key content (remove BEGIN/END lines and newlines)
   cat rsa_key.pub | grep -v "BEGIN\|END" | tr -d '\n'
   ```

   Enregistrez cette sortie, dont vous aurez besoin à l’étape suivante.

1. **Configuration de l’utilisateur Snowflake**

   Suivez ces étapes pour configurer un utilisateur Snowflake.

   1. Créez un utilisateur dédié pour le connecteur Athena s’il n’existe pas déjà.

      ```
      -- Create user for Athena connector
      CREATE USER athena_connector_user;
      
      -- Grant necessary privileges
      GRANT USAGE ON WAREHOUSE your_warehouse TO ROLE athena_connector_role;
      GRANT USAGE ON DATABASE your_database TO ROLE athena_connector_role;
      GRANT SELECT ON ALL TABLES IN DATABASE your_database TO ROLE athena_connector_role;
      ```

   1. Accordez des privilèges d’authentification. Pour attribuer une clé publique à un utilisateur, l’un des rôles ou privilèges suivants doit être accordé.
      + Le privilège `MODIFY PROGRAMMATIC AUTHENTICATION METHODS` ou `OWNERSHIP` doit être accordé à l’utilisateur.
      + Le rôle `SECURITYADMIN` ou un rôle supérieur doit être accordé.

      Accordez les privilèges nécessaires pour attribuer des clés publiques à l’aide de la commande suivante.

      ```
      GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER athena_connector_user TO ROLE your_admin_role;
      ```

   1. Attribuez la clé publique à l’utilisateur Snowflake à l’aide de la commande suivante.

      ```
      ALTER USER athena_connector_user SET RSA_PUBLIC_KEY='RSAkey';
      ```

      Vérifiez que la clé publique a bien été attribuée à l’utilisateur à l’aide de la commande suivante.

      ```
      DESC USER athena_connector_user;
      ```

1. **Stocker la clé privée dans AWS Secrets Manager**

   1. Convertissez votre clé privée au format requis par le connecteur.

      ```
      # Read private key content
      cat rsa_key.p8
      ```

   1. Créez un secret AWS Secrets Manager avec la structure suivante.

      ```
      {
        "sfUser": "your_snowflake_user",
        "pem_private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
        "pem_private_key_passphrase": "passphrase_in_case_of_encrypted_private_key(optional)"
      }
      ```
**Note**  
L’en-tête et le pied de page sont facultatifs.
La clé privée doit être séparée par `\n`.

## Configuration de OAuth l'authentification
<a name="connectors-snowflake-oauth-authentication"></a>

Cette méthode d’authentification offre un accès sécurisé à Snowflake basé sur des jetons grâce à des fonctionnalités d’actualisation automatique des informations d’identification. Le processus de configuration consiste à créer une intégration de sécurité dans Snowflake, à récupérer les informations d'identification du OAuth client, à terminer le flux d'autorisation pour obtenir un code d'accès et à stocker les OAuth informations d'identification AWS Secrets Manager pour que le connecteur puisse les utiliser. 

1. **Création d’une intégration de sécurité dans Snowflake**

   Exécutez la commande SQL suivante dans Snowflake pour créer une intégration de sécurité OAuth Snowflake.

   ```
   CREATE SECURITY INTEGRATION my_snowflake_oauth_integration_a
     TYPE = OAUTH
     ENABLED = TRUE
     OAUTH_CLIENT = CUSTOM
     OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
     OAUTH_REDIRECT_URI = 'https://localhost:8080/oauth/callback'
     OAUTH_ISSUE_REFRESH_TOKENS = TRUE
     OAUTH_REFRESH_TOKEN_VALIDITY = 7776000;
   ```

   **Paramètres de configuration**
   + `TYPE = OAUTH`— Spécifie le type OAuth d'authentification.
   + `ENABLED = TRUE` : active l’intégration de sécurité.
   + `OAUTH_CLIENT = CUSTOM`— Utilise une configuration OAuth client personnalisée.
   + `OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'` : définit le type de client pour les applications sécurisées.
   + `OAUTH_REDIRECT_URI`— L'URL de rappel pour le OAuth flux. Il peut s’agir de localhost à des fins de test.
   + `OAUTH_ISSUE_REFRESH_TOKENS = TRUE` : active la génération de jetons d’actualisation.
   + `OAUTH_REFRESH_TOKEN_VALIDITY = 7776000` : définit la validité du jeton d’actualisation (90 jours en secondes).

1. **Récupérez les secrets des OAuth clients**

   1. Pour obtenir les informations d’identification du client, exécutez la commande suivante.

      ```
      DESC SECURITY INTEGRATION 'MY_SNOWFLAKE_OAUTH_INTEGRATION_A';
      ```

   1. Récupérez les secrets OAuth du client.

      ```
      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('MY_SNOWFLAKE_OAUTH_INTEGRATION_A');
      ```

      **Exemple de réponse**

      ```
      {
        "OAUTH_CLIENT_SECRET_2": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "OAUTH_CLIENT_SECRET": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY,
        "OAUTH_CLIENT_ID": "AIDACKCEVSQ6C2EXAMPLE"
      }
      ```
**Note**  
Conservez ces informations d’identification en lieu sûr et ne les partagez pas. Ils seront utilisés pour configurer le OAuth client.

1. **Autorisation de l’utilisateur et récupération du code d’autorisation**

   1. Ouvrez l’URL suivante dans un navigateur.

      ```
      https://<your_account>.snowflakecomputing.com/oauth/authorize?client_id=<OAUTH_CLIENT_ID>&response_type=code&redirect_uri=https://localhost:8080/oauth/callback
      ```

   1. Exécutez le flux d’autorisation.

      1. Connectez-vous à l’aide de vos informations d’identification Snowflake.

      1. Accordez les autorisations demandées. Vous serez redirigé vers l’URI de rappel avec un code d’autorisation.

   1. Extrayez le code d’autorisation en copiant le paramètre de code depuis l’URL de redirection.

      ```
      https://localhost:8080/oauth/callback?code=<authorizationcode>
      ```
**Note**  
Le code d’autorisation est valide pour une durée limitée et ne peut être utilisé qu’une seule fois.

1. **Stockez les OAuth informations d'identification dans AWS Secrets Manager**

   Créez un secret AWS Secrets Manager avec la structure suivante.

   ```
   {
     "redirect_uri": "https://localhost:8080/oauth/callback",
     "client_secret": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
     "token_url": "https://<your_account>.snowflakecomputing.com/oauth/token-request",
     "client_id": "AIDACKCEVSQ6C2EXAMPLE,
     "username": "your_snowflake_username",
     "auth_code": "authorizationcode"
   }
   ```

   **Champs obligatoires**
   + `redirect_uri`— OAuth redirige l'URI que vous avez obtenu à l'étape 1.
   + `client_secret`— secret OAuth client que vous avez obtenu à l'étape 2.
   + `token_url`— Snowflake Le point de terminaison du OAuth jeton.
   + `client_id`— L'ID OAuth client indiqué à l'étape 2.
   + `username` : nom d’utilisateur Snowflake pour le connecteur.
   + `auth_code` : code d’autorisation que vous avez obtenu à l’étape 3.

Après avoir créé un secret, vous obtenez un ARN de secret que vous pouvez utiliser dans votre connexion Glue lors de la [création d’une connexion à une source de données](connect-to-a-data-source.md). 

## Requêtes de transmission
<a name="connectors-snowflake-passthrough-queries"></a>

Le connecteur Snowflake prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Snowflake, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Snowflake. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-snowflake-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-snowflake-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/pom.xml) du connecteur Snowflake sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-snowflake) sur GitHub .com.

# Connecteur Amazon Athena pour Microsoft SQL Server
<a name="connectors-microsoft-sql-server"></a>

Le connecteur Amazon Athena pour [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/?view=sql-server-ver15) permet à Amazon Athena d’exécuter des requêtes SQL sur vos données stockées dans Microsoft SQL Server à l’aide de JDBC.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-sqlserver-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-microsoft-sql-server-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Dans des conditions de filtre, vous devez lancer les types de données `Date`et`Timestamp` vers le type de données approprié.
+ Pour rechercher des valeurs négatives de type `Real` et `Float`, utilisez l’opérateur `<=` ou `>=`.
+ Les types de données `binary`, `varbinary`, `image` et `rowversion` ne sont pas pris en charge.

## Conditions
<a name="connectors-microsoft-sql-server-terms"></a>

Les termes suivants se rapportent au connecteur SQL Server.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-microsoft-sql-server-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur SQL Server.

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-microsoft-sql-server-gc"></a>

Nous vous recommandons de configurer un connecteur SQL Server en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur SQL Server Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type SQLSERVER
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré.
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur SQL Server créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur SQL Server créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-microsoft-sql-server-legacy"></a>

#### Chaîne de connexion
<a name="connectors-microsoft-sql-server-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
sqlserver://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-microsoft-sql-server-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | SqlServerMuxCompositeHandler | 
| Gestionnaire de métadonnées | SqlServerMuxMetadataHandler | 
| Gestionnaire d’enregistrements | SqlServerMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-microsoft-sql-server-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mysqlservercatalog, le nom de la variable d’environnement est alors mysqlservercatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Lambda SqlServer MUX qui prend en charge deux instances de base de données `sqlserver1` : (par défaut) et. `sqlserver2`


****  

| Propriété | Value | 
| --- | --- | 
| default | sqlserver://jdbc:sqlserver://sqlserver1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| sqlserver\$1catalog1\$1connection\$1string | sqlserver://jdbc:sqlserver://sqlserver1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| sqlserver\$1catalog2\$1connection\$1string | sqlserver://jdbc:sqlserver://sqlserver2.hostname:port;databaseName=<database\$1name>;\$1\$1secret2\$1name\$1 | 

##### Fourniture des informations d’identification
<a name="connectors-microsoft-sql-server-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${secret_name}`.

```
sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database_name>;${secret_name}
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database_name>;user=<user>;password=<password>
```

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-microsoft-sql-server-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance SQL Server.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | SqlServerCompositeHandler | 
| Gestionnaire de métadonnées | SqlServerMetadataHandler | 
| Gestionnaire d’enregistrements | SqlServerRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-microsoft-sql-server-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance SQL Server unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database\$1name>;\$1\$1secret\$1name\$1 | 

#### Paramètres de déversement
<a name="connectors-microsoft-sql-server-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-microsoft-sql-server-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour SQL Server et Apache Arrow.


****  

| SQL Server | Flèche | 
| --- | --- | 
| bit | TINYINT | 
| tinyint | SMALLINT | 
| smallint | SMALLINT | 
| int | INT | 
| bigint | BIGINT | 
| decimal | DECIMAL | 
| numeric | FLOAT8 | 
| smallmoney | FLOAT8 | 
| money | DECIMAL | 
| float[24] | FLOAT4 | 
| float[53] | FLOAT8 | 
| real | FLOAT4 | 
| datetime | Date(MILLISECOND) | 
| datetime2 | Date(MILLISECOND) | 
| smalldatetime | Date(MILLISECOND) | 
| date | Date(DAY) | 
| time | VARCHAR | 
| datetimeoffset | Date(MILLISECOND) | 
| char[n] | VARCHAR | 
| varchar[n/max] | VARCHAR | 
| nchar [n] | VARCHAR | 
| nvarchar[n/max] | VARCHAR | 
| text | VARCHAR | 
| ntext | VARCHAR | 

## Partitions et déversements
<a name="connectors-microsoft-sql-server-partitions-and-splits"></a>

Une partition est représentée par une seule colonne de partition de type `varchar`. Dans le cas du connecteur SQL Server, une fonction de partition détermine la manière dont les partitions sont appliquées à la table. Les informations relatives à la fonction de partition et au nom de colonne sont extraites de la table de métadonnées de SQL Server. Une requête personnalisée obtient ensuite la partition. Les divisions sont créées en fonction du nombre de partitions distinctes reçues.

## Performance
<a name="connectors-microsoft-sql-server-performance"></a>

La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur SQL Server résiste à la limitation due à la simultanéité.

Le connecteur Athena SQL Server effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Des prédicats simples et des expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution de la requête. 

### Prédicats
<a name="connectors-sqlserver-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena SQL Server peut combiner ces expressions et les pousser directement vers SQL Server pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena SQL Server suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-sqlserver-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Requêtes de transmission
<a name="connectors-sqlserver-passthrough-queries"></a>

Le connecteur SQL Server prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec SQL Server, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans SQL Server. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-sqlserver-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-sqlserver-additional-resources"></a>

Pour obtenir les informations les plus récentes sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/pom.xml) du connecteur SQL Server sur GitHub .com.

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-sqlserver) sur GitHub .com.

# Connecteur Amazon Athena pour Teradata
<a name="connectors-teradata"></a>

 Le connecteur Amazon Athena pour Teradata permet à Athena d’exécuter des requêtes SQL sur des données stockées dans vos bases de données Teradata. 

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.

## Conditions préalables
<a name="connectors-teradata-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-teradata-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.

## Conditions
<a name="connectors-teradata-terms"></a>

Les termes suivants se rapportent au connecteur Teradata.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-teradata-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Teradata.

### Connexions Glue (recommandé)
<a name="connectors-teradata-gc"></a>

Nous vous recommandons de configurer un connecteur Teradata en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Teradata Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type TERADATA
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré.
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Teradata créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Teradata créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-teradata-legacy"></a>

#### Chaîne de connexion
<a name="connectors-teradata-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
teradata://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-teradata-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | TeradataMuxCompositeHandler | 
| Gestionnaire de métadonnées | TeradataMuxMetadataHandler | 
| Gestionnaire d’enregistrements | TeradataMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-teradata-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myteradatacatalog, le nom de la variable d’environnement est alors myteradatacatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Teradata MUX Lambda qui prend en charge deux instances de base de données :`teradata1` (par défaut) et `teradata2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | teradata://jdbc:teradata://teradata2.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,user=sample2&password=sample2 | 
| teradata\$1catalog1\$1connection\$1string | teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,\$1\$1Test/RDS/Teradata1\$1 | 
| teradata\$1catalog2\$1connection\$1string | teradata://jdbc:teradata://teradata2.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,user=sample2&password=sample2 | 

##### Fourniture des informations d’identification
<a name="connectors-teradata-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/Teradata1}`.

```
teradata://jdbc:teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,${Test/RDS/Teradata1}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,...&user=sample2&password=sample2&...
```

À l’heure actuelle, Teradata reconnaît les propriétés JDBC `user` et `password`. Il accepte également le nom d'utilisateur et le mot de passe au format *username* `/` *password* sans les clés `user` ou`password`.

#### Utilisation d'un gestionnaire de connexion unique
<a name="connectors-teradata-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Teradata.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | TeradataCompositeHandler | 
| Gestionnaire de métadonnées | TeradataMetadataHandler | 
| Gestionnaire d’enregistrements | TeradataRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-teradata-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance Teradata unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,secret=Test/RDS/Teradata1 | 

#### Paramètres de déversement
<a name="connectors-teradata-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-teradata-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour JDBC et Apache Arrow.


****  

| JDBC | Flèche | 
| --- | --- | 
| Booléen | Bit | 
| Entier | Tiny | 
| Court | Smallint | 
| Entier | Int | 
| Long | Bigint | 
| float | Float4 | 
| Double | Float8 | 
| Date | DateDay | 
| Horodatage | DateMilli | 
| String | Varchar | 
| Octets | Varbinary | 
| BigDecimal | Décimal | 
| ARRAY | List | 

## Partitions et déversements
<a name="connectors-teradata-partitions-and-splits"></a>

Une partition est représentée par une seule colonne de partition de type `Integer`. La colonne contient les noms des partitions définies dans une table Teradata. Pour une table qui ne possède pas de nom de partition, \$1 est renvoyé, ce qui équivaut à une partition unique. Une partition équivaut à une division.


****  

| Nom | Type | Description | 
| --- | --- | --- | 
| partition | Entier | Partition nommée dans Teradata. | 

## Performance
<a name="connectors-teradata-performance"></a>

Teradata prend en charge les partitions natives. Le connecteur Athena Teradata peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement natif est fortement recommandé. La sélection d'un sous-ensemble de colonnes ralentit considérablement l'exécution de la requête. Le connecteur présente une certaine limitation en raison de la simultanéité.

Le connecteur Athena Teradata effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Des prédicats simples et des expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution de la requête.

### Prédicats
<a name="connectors-teradata-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Teradata peut combiner ces expressions et les pousser directement vers Teradata pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Teradata suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN\$1OR\$1EQUAL, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-teradata-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Requêtes de transmission
<a name="connectors-teradata-passthrough-queries"></a>

Le connecteur Teradata prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Teradata, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Teradata. La requête sélectionne toutes les colonnes dans la table `customer`.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer'
        ))
```

## Informations de licence
<a name="connectors-teradata-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-teradata-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/pom.xml) du connecteur Teradata sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-teradata) sur GitHub .com.

# Connecteur Amazon Athena pour Timestream
<a name="connectors-timestream"></a>

Le connecteur Amazon Athena pour Timestream permet à Amazon Athena de communiquer avec [Amazon Timestream](https://aws.amazon.com/timestream/), ce qui rend os données de séries temporelles accessibles via Amazon Timestream. Vous pouvez éventuellement l'utiliser AWS Glue Data Catalog comme source de métadonnées supplémentaires.

Amazon Timestream est une base de données de séries temporelles rapide, évolutive, entièrement gérée et spécialement conçue pour faciliter le stockage et l'analyse de milliers de milliards de points de données en séries chronologiques par jour. Timestream vous fait gagner du temps et réduire les coûts de gestion du cycle de vie des données en séries chronologiques en conservant les données récentes en mémoire et en déplaçant les données historiques vers un niveau de stockage à coût optimisé en fonction des politiques définies par l'utilisateur.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

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 AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

## Conditions préalables
<a name="connectors-timestream-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-timestream-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Timestream.

### Connexions Glue (recommandé)
<a name="connectors-timestream-gc"></a>

Nous vous recommandons de configurer un connecteur Timestream en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Timestream Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type TIMESTREAM
```

**Propriétés d’environnement Lambda**

**glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Timestream créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Timestream créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-timestream-legacy"></a>

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

**Propriétés d’environnement Lambda**
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **glue\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.

## Configuration de bases de données et de tables dans AWS Glue
<a name="connectors-timestream-setting-up-databases-and-tables-in-aws-glue"></a>

Vous pouvez éventuellement utiliser le AWS Glue Data Catalog comme source de métadonnées supplémentaires. Pour activer une AWS Glue table à utiliser avec Timestream, vous devez disposer d'une AWS Glue base de données et d'une table dont les noms correspondent à la base de données Timestream et à la table pour laquelle vous souhaitez fournir des métadonnées supplémentaires.

**Note**  
Pour des performances optimales, n'utilisez que des minuscules pour vos noms de bases de données et de tables. L'utilisation d'une casse mixte oblige le connecteur à effectuer une recherche insensible à la casse, ce qui demande plus de temps de calcul.

Pour configurer AWS Glue une table à utiliser avec Timestream, vous devez définir ses propriétés dans. AWS Glue

**Pour utiliser une AWS Glue table pour des métadonnées supplémentaires**

1. Modifiez le tableau dans la AWS Glue console pour ajouter les propriétés de tableau suivantes :
   + **timestream-metadata-flag**— Cette propriété indique au connecteur Timestream que le connecteur peut utiliser la table pour des métadonnées supplémentaires. Vous pouvez fournir n’importe quelle valeur pour `timestream-metadata-flag` tant que la propriété `timestream-metadata-flag` est présente dans la liste des propriétés de la table.
   + **\$1view\$1template** – Lorsque vous utilisez AWS Glue pour des métadonnées supplémentaires, vous pouvez utiliser cette propriété de table et spécifier n’importe quel SQL Timestream en tant que vue. Le connecteur Athena Timestream utilise le SQL de la vue avec votre SQL d’Athena pour exécuter votre requête. Cela s’avère utile si vous souhaitez utiliser une fonctionnalité de Timestream SQL qui n’est pas disponible dans Athena.

1. Assurez-vous d'utiliser les types de données appropriés AWS Glue tels que listés dans ce document.

### Types de données
<a name="connectors-timestream-data-types"></a>

Actuellement, le connecteur Timestream ne prend en charge qu’un sous-ensemble des types de données disponibles dans Timestream, en particulier les valeurs scalaires `varchar`, `double` et `timestamp`.

Pour interroger le type de données `timeseries`, vous devez configurer une vue dans les propriétés de la table AWS Glue qui utilise la fonction `CREATE_TIME_SERIES` de Timestream. Vous devez également fournir un schéma pour la vue qui utilise la syntaxe `ARRAY<STRUCT<time:timestamp,measure_value::double:double>>` comme type pour n’importe laquelle de vos colonnes de séries chronologiques. Assurez-vous de remplacer `double` par le type scalaire approprié pour votre table.

L'image suivante montre un exemple de propriétés de AWS Glue table configurées pour configurer une vue sur une série chronologique.

![\[Configuration des propriétés de table AWS Glue pour configurer une vue sur une série chronologique.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-timestream-1.png)


## Autorisations nécessaires
<a name="connectors-timestream-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-timestream.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-timestream/athena-timestream.yaml). La liste suivante résume les autorisations requises.
+ **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 Timestream 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.
+ **Accès à Timestream** – Pour exécuter des requêtes Timestream.

## Performance
<a name="connectors-timestream-performance"></a>

Nous vous recommandons d'utiliser la clause `LIMIT` afin de limiter les données renvoyées (et non les données numérisées) à moins de 256 Mo afin de garantir les performances des requêtes interactives.

Le connecteur Athena pour Timestream procède à la transmission des prédicats pour réduire les données analysées par 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. La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur Timestream résiste à la limitation due à la simultanéité.

## Requêtes de transmission
<a name="connectors-timestream-passthrough-queries"></a>

Le connecteur Timestream prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Timestream, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Timestream. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-timestream-license-information"></a>

Le projet de connecteur Timestream Amazon Athena est concédé sous licence dans le cadre de la [licence Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Ressources supplémentaires
<a name="connectors-timestream-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-timestream) sur GitHub .com.

# Connecteur Amazon Athena pour TPC Benchmark DS (TPC-DS)
<a name="connectors-tpcds"></a>

Le connecteur Amazon Athena pour TPC-DS permet à Amazon Athena de communiquer avec une source de données TPC Benchmark DS générées de manière aléatoire et destinées à être utilisées pour la définition de points de référence et les tests fonctionnels d’Athena Federation. Le connecteur TPC-DS d'Athena génère une base de données conforme TPC-DS à l'un des quatre facteurs d'échelle. Nous ne recommandons pas l’utilisation de ce connecteur comme alternative aux tests de performance des lacs de données basés sur Amazon S3.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-tpcds-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-tpcds-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur TPC-DS.

**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 de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-tpcds-gc"></a>

Nous vous recommandons de configurer un connecteur TPC-DS en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur TPC-DS Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type TPCDS
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur TPC-DS créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur TPC-DS créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-tpcds-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (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\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

## Tester des bases de données et des tables
<a name="connectors-tpcds-test-databases-and-tables"></a>

Le connecteur TPC-DS d’Athena génère une base de données conforme TPC-DS à l’un des quatre facteurs d’échelle `tpcds1`, `tpcds10`, `tpcds100`, `tpcds250` ou `tpcds1000`.

### Résumé des tables
<a name="connectors-tpcds-table-summary"></a>

Pour obtenir une liste complète des tables et des colonnes de données de test, exécutez les requêtes `SHOW TABLES` ou `DESCRIBE TABLE`. Le résumé des tables suivant est fourni pour des raisons de commodité.

1. call\$1center

1. catalog\$1page

1. catalog\$1returns

1. catalog\$1sales

1. customer

1. customer\$1address

1. customer\$1demographics

1. date\$1dim

1. dbgen\$1version

1. household\$1demographics

1. income\$1band

1.  Inventory

1. item

1. promotion

1. raison

1. ship\$1mode

1. stocker

1. store\$1returns

1. store\$1sales

1. time\$1dim

1. warehouse

1. web\$1page

1. web\$1returns

1. web\$1sales

1. web\$1site

Pour les requêtes TPC-DS compatibles avec le schéma et les données générés, consultez le répertoire [athena-tpcds/src/main/resources/queries/](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds/src/main/resources/queries)sur. GitHub

### Exemple de requête
<a name="connectors-tpcds-example-query"></a>

Les exemples de requêtes `SELECT` suivants interrogent le catalogue `tpcds` pour la démographie des clients dans des comtés spécifiques.

```
SELECT
  cd_gender,
  cd_marital_status,
  cd_education_status,
  count(*) cnt1,
  cd_purchase_estimate,
  count(*) cnt2,
  cd_credit_rating,
  count(*) cnt3,
  cd_dep_count,
  count(*) cnt4,
  cd_dep_employed_count,
  count(*) cnt5,
  cd_dep_college_count,
  count(*) cnt6
FROM
  "lambda:tpcds".tpcds1.customer c, "lambda:tpcds".tpcds1.customer_address ca, "lambda:tpcds".tpcds1.customer_demographics
WHERE
  c.c_current_addr_sk = ca.ca_address_sk AND
    ca_county IN ('Rush County', 'Toole County', 'Jefferson County',
                  'Dona Ana County', 'La Porte County') AND
    cd_demo_sk = c.c_current_cdemo_sk AND
    exists(SELECT *
           FROM "lambda:tpcds".tpcds1.store_sales, "lambda:tpcds".tpcds1.date_dim
           WHERE c.c_customer_sk = ss_customer_sk AND
             ss_sold_date_sk = d_date_sk AND
             d_year = 2002 AND
             d_moy BETWEEN 1 AND 1 + 3) AND
    (exists(SELECT *
            FROM "lambda:tpcds".tpcds1.web_sales, "lambda:tpcds".tpcds1.date_dim
            WHERE c.c_customer_sk = ws_bill_customer_sk AND
              ws_sold_date_sk = d_date_sk AND
              d_year = 2002 AND
              d_moy BETWEEN 1 AND 1 + 3) OR
      exists(SELECT *
             FROM "lambda:tpcds".tpcds1.catalog_sales, "lambda:tpcds".tpcds1.date_dim
             WHERE c.c_customer_sk = cs_ship_customer_sk AND
               cs_sold_date_sk = d_date_sk AND
               d_year = 2002 AND
               d_moy BETWEEN 1 AND 1 + 3))
GROUP BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
ORDER BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
LIMIT 100
```

## Autorisations nécessaires
<a name="connectors-tpcds-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-tpcds.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-tpcds/athena-tpcds.yaml). La liste suivante résume les autorisations requises.
+ **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.

## Performance
<a name="connectors-tpcds-performance"></a>

Le connecteur Athena TPC-DS tente de paralléliser les requêtes en fonction du facteur d’échelle que vous choisissez. La poussée vers le bas de prédicat est effectuée au sein de la fonction Lambda.

## Informations de licence
<a name="connectors-tpcds-license-information"></a>

Le projet de connecteur TPC-DS Amazon Athena est concédé sous licence dans le cadre de la [licence Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Ressources supplémentaires
<a name="connectors-tpcds-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds) sur GitHub .com.

# Connecteur Amazon Athena pour Vertica
<a name="connectors-vertica"></a>

Vertica est une plateforme de base de données en colonnes qui peut être déployée dans le cloud ou sur site et qui prend en charge les entrepôts de données à l'échelle des exaoctets. Vous pouvez utiliser le connecteur Vertica d'Amazon Athena dans les requêtes fédérées pour interroger les sources de données Vertica depuis Athena. Par exemple, vous pouvez exécuter des requêtes analytiques sur un entrepôt de données sur Vertica et un lac de données sur Simple Storage Service (Amazon S3).

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.

## Conditions préalables
<a name="connectors-vertica-prerequisites"></a>
+ 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](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ 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 ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

## Limitations
<a name="connectors-vertica-limitations"></a>
+ Étant donné que le connecteur Athena pour Vertica lit les fichiers Parquet exportés depuis Amazon S3, les performances du connecteur peuvent être lentes. Lorsque vous interrogez des tables de grande taille, nous vous recommandons d’utiliser une requête [CREATE TABLE AS (SELECT ...)](ctas.md) et des prédicats SQL.
+ Actuellement, en raison d’un problème connu dans la requête fédérée d’Athena, le connecteur oblige Vertica à exporter toutes les colonnes de la table interrogée vers Amazon S3, mais seules les colonnes demandées sont visibles dans les résultats sur la console Athena.
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.

## Flux de travail
<a name="connectors-vertica-workflow"></a>

Le diagramme suivant montre le flux de travail d’une requête qui utilise le connecteur Vertica.

![\[Flux de travail d’une requête Vertica depuis Amazon Athena\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-vertica-1.png)


1. Une requête SQL est émise par rapport à une ou plusieurs tables dans Vertica.

1. Le connecteur analyse la requête SQL pour envoyer la partie appropriée à Vertica via la connexion JDBC.

1. Les chaînes de connexion utilisent le nom d'utilisateur et le mot de passe enregistrés AWS Secrets Manager pour accéder à Vertica.

1. Le connecteur enveloppe la requête SQL avec une commande `EXPORT` Vertica, comme dans l’exemple suivant.

   ```
   EXPORT TO PARQUET (directory = 's3://amzn-s3-demo-bucket/folder_name, 
      Compression='Snappy', fileSizeMB=64) OVER() as 
   SELECT
   PATH_ID,
   ...
   SOURCE_ITEMIZED,
   SOURCE_OVERRIDE
   FROM DELETED_OBJECT_SCHEMA.FORM_USAGE_DATA
   WHERE PATH_ID <= 5;
   ```

1. Vertica traite la requête SQL et envoie l’ensemble de résultats à un compartiment Amazon S3. Pour un meilleur débit, Vertica utilise l’option `EXPORT` pour paralléliser l’opération d’écriture de plusieurs fichiers Parquet.

1. Athena analyse le compartiment Amazon S3 afin de déterminer le nombre de fichiers à lire pour l’ensemble de résultats.

1. Athena effectue plusieurs appels à la fonction Lambda et utilise un `ArrowReader` Apache pour lire les fichiers Parquet à partir du jeu de données qui en résulte. Les appels multiples permettent à Athena de paralléliser la lecture des fichiers Amazon S3 et d’obtenir un débit pouvant atteindre 100 Go par seconde.

1. Athena traite les données renvoyées par Vertica avec les données analysées depuis le lac de données et renvoie le résultat.

## Conditions
<a name="connectors-vertica-terms"></a>

Les termes suivants se rapportent au connecteur Vertica.
+ **Base de données** – Toute instance d’une base de données Vertica déployée sur Amazon EC2.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`

## Parameters
<a name="connectors-vertica-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Vertica.

### Connexions Glue (recommandé)
<a name="connectors-vertica-gc"></a>

Nous vous recommandons de configurer un connecteur Vertica en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Vertica Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type VERTICA
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Vertica créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Vertica créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-vertica-legacy"></a>

Le connecteur Vertica d’Amazon Athena expose des options de configuration par le biais de variables d’environnement Lambda. Vous pouvez utiliser les variables d’environnement Lambda suivantes pour configurer le connecteur. 
+  **AthenaCatalogName**— Nom de la fonction Lambda 
+  **ExportBucket**— Le compartiment Amazon S3 dans lequel les résultats des requêtes Vertica sont exportés. 
+  **SpillBucket**— Le nom du compartiment Amazon S3 dans lequel cette fonction peut diffuser des données. 
+  **SpillPrefix**— Le préfixe de l'`SpillBucket`emplacement où cette fonction peut diffuser des données. 
+  **SecurityGroupIds**— Un ou plusieurs IDs éléments correspondant au groupe de sécurité qui doit être appliqué à la fonction Lambda (par exemple, `sg1``sg2`, ou`sg3`). 
+  **SubnetIds**— Un ou plusieurs sous-réseaux correspondant au sous-réseau IDs que la fonction Lambda peut utiliser pour accéder à votre source de données (par exemple, `subnet1` ou). `subnet2` 
+  **SecretNameOrPrefix**— Le nom ou le préfixe d'un ensemble de noms dans Secrets Manager auquel cette fonction a accès (par exemple,`vertica-*`) 
+  **VerticaConnectionString**— Les détails de connexion Vertica à utiliser par défaut si aucune connexion spécifique au catalogue n'est définie. La chaîne peut éventuellement utiliser AWS Secrets Manager la syntaxe (par exemple,`${secret_name}`). 
+  **ID de VPC** – L’ID de VPC à associer à la fonction Lambda. 

#### Chaîne de connexion
<a name="connectors-vertica-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
vertica://jdbc:vertica://host_name:
                        port/database?user=vertica-username&password=
                        vertica-password
```

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-vertica-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Vertica.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | VerticaCompositeHandler | 
| Gestionnaire de métadonnées | VerticaMetadataHandler | 
| Gestionnaire d’enregistrements | VerticaRecordHandler | 

#### Paramètres du gestionnaire de connexion unique
<a name="connectors-vertica-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

#### Fourniture des informations d’identification
<a name="connectors-vertica-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec des noms secrets**  
La chaîne suivante contient les noms secrets \$1\$1`vertica-username`\$1 et `${vertica-password}`. 

```
vertica://jdbc:vertica://
                        host_name:port/database?user=${vertica-username}&password=${vertica-password}
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
vertica://jdbc:vertica://
                        host_name:port/database?user=sample-user&password=sample-password
```

Actuellement, le connecteur Vertica reconnaît les propriétés JDBC `vertica-username` et `vertica-password`. 

#### Paramètres de déversement
<a name="connectors-vertica-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-vertica-data-type-support"></a>

Le tableau suivant indique les types de données pris en charge pour le connecteur Vertica.


****  

| Booléen | 
| --- | 
| BigInt | 
| Court | 
| Entier | 
| Long | 
| Float | 
| Double | 
| Date | 
| Varchar | 
| Octets | 
| BigDecimal | 
| TimeStamp Rôle : Varchar | 

## Performance
<a name="connectors-vertica-performance"></a>

La fonction Lambda procède à la transmission des projections pour réduire les données analysées par 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. Le connecteur Vertica résiste à la limitation de à la simultanéité.

## Requêtes de transmission
<a name="connectors-vertica-passthrough-queries"></a>

Le connecteur Vertica prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Vertica, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Vertica. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-vertica-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-vertica-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/pom.xml) du connecteur Vertica sur .com. GitHub

*Pour plus d'informations sur ce connecteur, consultez [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-vertica) sur GitHub .com et [Interrogation d'une source de données Vertica dans Amazon Athena à l'aide du SDK Athena Federated Query](https://aws.amazon.com/blogs/big-data/querying-a-vertica-data-source-in-amazon-athena-using-the-athena-federated-query-sdk/) sur le blog Big Data.AWS *

# Création d’une connexion à une source de données
<a name="connect-to-a-data-source"></a>

Pour utiliser un connecteur de source de données Athena, vous devez créer la AWS Glue connexion qui stocke les informations de connexion concernant le connecteur et votre source de données. Lorsque vous créez la connexion, vous devez attribuer à la source de données un nom que vous utiliserez pour référencer votre source de données dans vos requêtes SQL.

Vous pouvez créer et configurer une connexion à une source de données dans Athena à l'aide de la [console](connect-to-a-data-source-console-steps.md) ou des opérations de l'[CreateDataCatalogAPI](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateDataCatalog.html).

**Topics**
+ [Autorisations permettant de créer et d’utiliser une source de données dans Athena](connect-to-a-data-source-permissions.md)
+ [Utilisation de la console Athena pour se connecter à une source de données](connect-to-a-data-source-console-steps.md)
+ [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md)
+ [Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md)
+ [Transférez des images ECR vers votre compte AWS](pull-ecr-customer-account.md)
+ [Enregistrement de votre connexion en tant que Catalogue de données Glue](register-connection-as-gdc.md)
+ [Activation des requêtes fédérées entre comptes](xacct-fed-query-enable.md)
+ [Mise à jour d’un connecteur de source de données](connectors-updating.md)

# Autorisations permettant de créer et d’utiliser une source de données dans Athena
<a name="connect-to-a-data-source-permissions"></a>

Pour créer et utiliser une source de données, vous devez disposer des jeux d’autorisations suivants.
+ AmazonAthenaFullAccess qui fournit un accès complet à Amazon Athena et un accès étendu aux dépendances nécessaires pour permettre l'interrogation, la rédaction des résultats et la gestion des données. Pour plus d'informations, consultez [AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)le Guide de référence des politiques AWS gérées.
+ Autorisations pour appeler l' CreateDataCatalog API. Ces autorisations sont uniquement nécessaires lorsque vous créez une source de données qui s’intègre aux connexions Glue. Pour plus d’informations sur cet exemple de politique, consultez [Autorisations requises pour créer un connecteur et un catalogue Athena](athena-catalog-access.md).
+ Si vous souhaitez utiliser le contrôle d’accès précis de Lake Formation, outre les autorisations répertoriées ci-dessus, vous aurez également besoin des autorisations suivantes.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lakeformation:RegisterResource",
          "iam:ListRoles",
          "glue:CreateCatalog",
          "glue:GetCatalogs",
          "glue:GetCatalog"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

------

# Utilisation de la console Athena pour se connecter à une source de données
<a name="connect-to-a-data-source-console-steps"></a>

Vous pouvez utiliser la console Athena pour créer et configurer une connexion à une source de données.

**Pour créer une connexion à une source de données**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez **Créer une source de données**.

1. Pour **Choose a data source** (Sélectionnez une source de données), choisissez la source de données qu'Athena doit interroger, en tenant compte des directives suivantes :
   + Choisissez une option de connexion qui correspond à votre source de données. Athena dispose de connecteurs de source de données prédéfinis que vous pouvez configurer pour des sources comme MySQL, Amazon DocumentDB et PostgreSQL.
   + Choisissez **S3 - AWS Glue Data Catalog** si vous souhaitez interroger des données dans Simple Storage Service (Amazon S3) et que vous n'utilisez pas un métastore Apache Hive ou l'une des autres options de source de données de requête fédérée de cette page. Athena utilise le AWS Glue Data Catalog pour stocker les métadonnées et les informations de schéma pour les sources de données Simple Storage Service (Amazon S3). Il s'agit de l'option par défaut (non fédérée). Pour de plus amples informations, veuillez consulter [AWS Glue Data Catalog À utiliser pour vous connecter à vos données](data-sources-glue.md). Pour connaître les étapes associées à l’utilisation de ce flux de travail, consultez [Enregistrement et utilisation des catalogues de données dans Athena](gdc-register.md).
   + Choisissez **S3 - Apache Hive metastore (métastore Apache Hive)** pour interroger les jeux de données dans Simple Storage Service (Amazon S3) qui utilisent un métastore Apache Hive. Pour plus d’informations sur cette option, consultez [Connexion d’Athena à un metastore Apache Hive](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md).
   + Choisissez **Custom or shared connector** (Connecteur personnalisé ou partagé) si vous souhaitez créer votre propre connecteur de source de données à utiliser avec Athena. Pour plus d'informations sur l'écriture d'un connecteur de source de données , consultez [Développement d’un connecteur de source de données à l’aide du kit SDK Athena Query Federation](connect-data-source-federation-sdk.md).

1. Choisissez **Suivant**.

1. Sur la page **Saisir les détails de la source de données**, dans **Nom de la source de données**, utilisez le nom généré automatiquement ou saisissez un nom unique que vous souhaitez utiliser dans vos instructions SQL lorsque vous interrogez la source de données à partir d’Athena. Le nom peut contenir jusqu'à 127 caractères et doit être unique dans votre compte. Il ne peut pas être modifié après sa création. Les caractères valides sont a-z, A-Z, 0–9, \$1 (trait de soulignement), @ (arobase) et - (trait d'union). Les noms `awsdatacatalog`, `hive`, `jmx` et `system` sont réservés par Athena et ne peuvent pas être utilisés pour les noms de source de données. 

1. Si la source de données que vous choisissez s'intègre aux AWS Glue connexions.

   1. Dans **Informations de connexion àAWS Glue **, saisissez les informations requises. Une connexion contient les propriétés requises pour se connecter à une source de données particulière Les propriétés requises varient en fonction du type de connexion. Pour plus d’informations sur les propriétés associées à votre connecteur, consultez [Connecteurs de source de données disponibles](connectors-available.md). Pour plus d’informations sur les propriétés de connexion supplémentaires, consultez [AWS Glue connection properties](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) dans le *Guide d’utilisation d’AWS Glue *.
**Note**  
Lorsque vous mettez à jour les propriétés de connexion Glue, le connecteur Lambda doit être redémarré pour obtenir les propriétés mises à jour. Pour ce faire, modifiez les propriétés de l’environnement et enregistrez-le sans réellement apporter de changements. 
Lorsque vous mettez à jour une connexion Glue, les propriétés suivantes ne sont pas automatiquement mises à jour dans la fonction Lambda correspondante. Vous devez mettre à jour manuellement votre fonction Lambda pour ces propriétés.  
Configuration du VPC Lambda : `security_group_ids`, `subnet_ids`
Rôle d’exécution Lambda : `spill_bucket`, `secret_name`, `spill_kms_key_id`

   1. Dans **Rôle IAM d’exécution Lambda** choisissez l’une des options suivantes :
      + **Créer et utiliser un nouveau rôle d'exécution** — (par défaut) Athena crée un rôle d'exécution qu'elle utilisera ensuite pour accéder aux ressources en votre AWS Lambda nom. Athena a besoin de ce rôle pour créer votre source de données fédérée.
      + **Utiliser un rôle d’exécution existant** : utilisez cette option pour choisir un rôle d’exécution existant. Dans cette option, choisissez le rôle d’exécution que vous souhaitez utiliser dans la liste déroulante **Rôle d’exécution**.

1. Si la source de données que vous sélectionnez ne s’intègre pas aux connexions AWS Glue . 

   1. Pour **Lambda Function** (fonction Lambda), choisissez **Create Lambda Function** (Créer une fonction Lambda). La page de fonctions du connecteur que vous avez choisi s'ouvre dans la AWS Lambda console. La page contient des informations détaillées sur le connecteur.

   1. Sous **Application settings** (Paramètres d'application), lisez attentivement la description de chaque paramètre d'application, puis saisissez les valeurs qui correspondent à vos besoins.

      Les paramètres de l'application que vous voyez varient en fonction du connecteur de votre source de données. Les paramètres minimaux requis sont les suivants :
      + **AthenaCatalogName**— Nom, en minuscules, de la fonction Lambda qui indique la source de données qu'elle cible, par exemple. `cloudwatchlogs`
      + **SpillBucket**— Un compartiment Amazon S3 dans votre compte pour stocker les données qui dépassent les limites de taille de réponse de la fonction Lambda.
**Note**  
Les données déversées ne sont pas réutilisées lors des exécutions suivantes et peuvent être supprimées en toute sécurité. Athena ne supprime pas ces données pour vous. Pour gérer ces objets, envisagez d'ajouter une politique de cycle de vie des objets qui supprime les anciennes données de votre compartiment de déversement Simple Storage Service (Amazon S3). Pour plus d’informations, consultez [Managing your storage lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) dans le Guide d’utilisation d’Amazon S3.

   1. Sélectionnez **I acknowledge that this app creates custom IAM roles and resource policies** (Je reconnais que cette application crée des politiques de ressources et rôles IAM personnalisés). Pour de plus amples informations, veuillez cliquer sur le lien **Info**.

   1. Choisissez **Déployer**. Lorsque le déploiement est terminé, la fonction Lambda apparaît dans la section **Resources** (Ressources) dans la console Lambda.

      Une fois que vous avez déployé le connecteur de source de données sur votre compte, vous pouvez y connecter Athena.

   1. Revenez à la page **Enter data sources details** (Saisir les détails des sources de données) de la console Athena.

   1. Dans la section **Connection details** (Détails de connexion), choisissez l'icône actualiser à côté de la zone de recherche **Select or enter a Lambda function** (Sélectionner ou saisir une fonction Lambda.

   1. Choisissez le nom de la fonction que vous venez de créer dans la console Lambda. L'ARN de la fonction Lambda s'affiche.

1. (Facultatif) Pour **Tags** (Identifications), ajoutez des paires clé-valeur à associer à cette source de données. Pour en savoir plus sur les identifications, consultez [Balisage des ressources Athena](tags.md).

1. Choisissez **Suivant**.

1. Sur la page **Vérifier et créer**, vérifiez les détails de la source de données. Pour effectuer des changements, sélectionnez **Modifier**. 

1. Lisez les informations contenues dans **Athena créera des ressources dans votre compte**. Si vous êtes d’accord, sélectionnez **Je reconnais qu’Athena créera des ressources en mon nom**.

1. Choisissez **Create data source**. **Athena** créera les ressources suivantes pour vous.
   + Rôle IAM d’exécution Lambda
   + AWS Glue connexion (uniquement si la source de données est compatible avec AWS Glue Connections)
   + Fonction Lambda

La section **Data source details** (Détails de source de données) de la page de votre source de données affiche des informations sur votre nouveau connecteur. Vous pouvez maintenant utiliser le connecteur dans vos requêtes Athena. 

Pour de plus amples informations sur l'utilisation de connecteurs de données dans les requêtes, consultez [Exécution de requêtes fédérées](running-federated-queries.md).

# Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données
<a name="connect-data-source-serverless-app-repo"></a>

Pour déployer un connecteur de source de données, vous pouvez utiliser [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/)au lieu d’utiliser une connexion AWS Glue .

**Note**  
Nous vous recommandons d’utiliser SAR uniquement si vous possédez un connecteur personnalisé ou si vous avez besoin d’utiliser un connecteur plus ancien. Autrement, l’utilisation de la console Athena est recommandée. 

Vous pouvez utiliser le AWS Serverless Application Repository pour trouver le connecteur que vous souhaitez utiliser, fournir les paramètres requis par le connecteur, puis déployer le connecteur sur votre compte. Ensuite, après avoir déployé le connecteur, vous utilisez la console Athena pour rendre la source de données disponible pour Athena.

## Déploiement du connecteur sur votre compte
<a name="connect-data-source-serverless-app-repo-deploying"></a>

**Pour utiliser le connecteur de source de données AWS Serverless Application Repository pour déployer un connecteur de source de données sur votre compte**

1. Connectez-vous au **référentiel d'applications sans serveur AWS Management Console ** et ouvrez-le.

1. Dans le volet de navigation, choisissez **Applications**.

1. Sélectionnez l'option **Show apps that create custom IAM roles or resource policies** (Afficher les applications qui créent des rôles IAM ou des politiques de ressources personnalisés).

1. Dans la zone de recherche, saisissez le nom du connecteur. Pour obtenir la liste des connecteurs de données Athena prédéfinis, voir [Connecteurs de source de données disponibles](connectors-available.md).

1. Choisissez le nom du connecteur. Cliquer sur un connecteur ouvre la page **Application details** (Détails de l'application) de la fonction Lambda dans la console AWS Lambda .

1. Sur le côté droit de la page de détails, pour **Application settings** (Paramètres de l'application), fournissez les informations requises. Les paramètres minimaux requis sont les suivants. Pour plus d'informations sur les options configurables restantes pour les connecteurs de données créés par Athena, consultez la rubrique [Connecteurs disponibles correspondante sur](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors). GitHub
   + **AthenaCatalogName**— Nom de la fonction Lambda en minuscules qui indique la source de données qu'elle cible, par exemple. `cloudwatchlogs`
   + **SpillBucket**— Spécifiez un compartiment Amazon S3 dans votre compte pour recevoir les données de toute charge utile de réponse importante dépassant les limites de taille de réponse de la fonction Lambda.

1. Sélectionnez **I acknowledge that this app creates custom IAM roles and resource policies** (Je reconnais que cette application crée des politiques de ressources et rôles IAM personnalisés). Pour de plus amples informations, veuillez cliquer sur le lien **Info**.

1. En bas à droite de la section **Application settings** (Paramètres de l'application), choisissez **Deploy** (Déployer). Lorsque le déploiement est terminé, la fonction Lambda apparaît dans la section **Resources** (Ressources) dans la console Lambda.

## Mise à disposition du connecteur dans Athena
<a name="connect-data-source-serverless-app-repo-making-the-connector-available-in-athena"></a>

Maintenant vous pouvez utiliser la console Athena pour rendre le connecteur de source de données disponible pour Athena.

**Pour rendre le connecteur de source de données disponible pour Athena**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez **Créer une source de données**.

1. Pour **Choose a data source** (Choisisir une source de données), choisissez la source de données pour laquelle vous avez créé un connecteur dans le AWS Serverless Application Repository. Ce didacticiel utilise **Amazon CloudWatch Logs** comme source de données fédérée.

1. Choisissez **Suivant**.

1. À la page **Enter data source details** (Saisir les détails de la source de données), pour **Data source name** (Nom de la source de données), saisissez le nom que vous souhaitez utiliser dans vos instructions SQL lorsque vous interrogez la source de données à partir d'Athena (par exemple, `CloudWatchLogs`). Le nom peut contenir jusqu'à 127 caractères et doit être unique dans votre compte. Il ne peut pas être modifié après sa création. Les caractères valides sont a-z, A-Z, 0–9, \$1 (trait de soulignement), @ (arobase) et - (trait d'union). Les noms `awsdatacatalog`, `hive`, `jmx` et `system` sont réservés par Athena et ne peuvent pas être utilisés pour les noms de source de données. 

1. Dans la section **Connection details** (Détails de connexion), utilisez la zone **Select or enter a Lambda function** (Sélectionner ou saisir une fonction Lambda) pour choisir le nom de la fonction que vous venez de créer. L'ARN de la fonction Lambda s'affiche.

1. (Facultatif) Pour **Tags** (Identifications), ajoutez des paires clé-valeur à associer à cette source de données. Pour en savoir plus sur les identifications, consultez [Balisage des ressources Athena](tags.md).

1. Choisissez **Suivant**.

1. À la page **Review and create**, vérifiez les détails de la source de données, puis choisissez **Create data source** (Créer une source de données). 

1. La section **Data source details** (Détails de source de données) de la page de votre source de données affiche des informations sur votre nouveau connecteur. Vous pouvez maintenant utiliser le connecteur dans vos requêtes Athena. 

   Pour de plus amples informations sur l'utilisation de connecteurs de données dans les requêtes, consultez [Exécution de requêtes fédérées](running-federated-queries.md).

# Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue
<a name="athena-connectors-vpc-creation"></a>

Certains connecteurs et AWS Glue connexions de source de données Athena nécessitent un VPC et un groupe de sécurité. Cette rubrique explique comment créer un VPC avec un sous-réseau et un groupe de sécurité pour le VPC. Dans le cadre de ce processus, vous récupérez le IDs pour le VPC, le sous-réseau et le groupe de sécurité que vous créez. Ils IDs sont nécessaires lorsque vous configurez votre AWS Glue connexion ou votre connecteur de source de données pour une utilisation avec Athena.

**Pour créer un VPC pour un connecteur de source de données Athena**

1. Connectez-vous à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Sélectionnez **Create VPC** (Créer un VPC).

1. Sur la page **Créer un VPC**, sous **Paramètres de VPC**, dans **Ressources à créer**, sélectionnez **VPC et plus encore**.

1. Sous **Génération automatique d’identifications de noms**, dans **Génération automatique**, saisissez une valeur qui sera utilisée pour générer des identifications de nom pour toutes les ressources de votre VPC.

1. Sélectionnez **Create VPC** (Créer un VPC).

1. Une fois le processus terminé, sélectionnez **Afficher le VPC**.

1. Dans la section **Details** (Détails), pour **VPC ID** (ID du VPC), copiez votre ID VPC pour référence ultérieure.

Vous pouvez maintenant récupérer l'ID de sous-réseau du VPC que vous venez de créer.

**Pour récupérer votre ID de sous-réseau de VPC**

1. Dans le panneau de navigation de la console VPC, choisissez **Subnets** (Sous-réseaux).

1. Sélectionnez le nom d’un sous-réseau dont la colonne **VPC** présente l’ID de VPC que vous avez noté.

1. Dans la section **Details** (Détails), pour **Subnet ID** (ID du sous-réseau), copiez votre ID de sous-réseau pour référence ultérieure.

Ensuite, créez un groupe de sécurité pour votre VPC.

**Pour créer un groupe de sécurité pour votre VPC**

1. Dans le panneau de navigation de la console VPC, choisissez **Security** (Sécurité), **Security Groups** (Groupes de sécurité).

1. Sélectionnez **Create security group** (Créer un groupe de sécurité).

1. Sur la page **Create Security Group** (Créer un groupe de sécurité), saisissez les informations suivantes :
   + Pour **Security group name** (Nom du groupe de sécurité), saisissez un nom pour votre groupe de sécurité.
   + Pour **Description**, saisissez une description du groupe de sécurité. Une description est requise.
   + Dans **VPC**, sélectionnez l’ID du VPC que vous avez créé pour votre connecteur de source de données.
   + Pour **Inbound rules** (Règles entrantes) et **Outbound rules** (Règles sortantes), ajoutez toutes les règles entrantes et sortantes dont vous avez besoin.

1. Sélectionnez **Create security group** (Créer un groupe de sécurité).

1. Sur la page **Details** (Details) du groupe de sécurité, copiez le **Security group ID** (ID du groupe de sécurité) pour référence ultérieure.

## Éléments importants à prendre en compte concernant l’utilisation d’un VPC avec les connecteurs Athena
<a name="vpc-warning-instructions"></a>

Les instructions suivantes s’appliquent à tous les connecteurs Athena, puisque tous les connecteurs peuvent utiliser un VPC.

**Note**  
Lorsque vous utilisez un VPC avec des connexions AWS Glue, vous devez configurer les points de terminaison suivants : PrivateLink   
Amazon S3
AWS Glue
AWS Secrets Manager

Vous pouvez également utiliser l’accès public à Internet, bien que cela ne soit pas recommandé pour des raisons de sécurité.

**Avertissement**  
L’utilisation de l’accès public à Internet peut exposer vos ressources à des risques de sécurité supplémentaires. Il est vivement recommandé d'utiliser des PrivateLink points de terminaison pour renforcer la sécurité de votre configuration VPC.

# Transférez des images ECR vers votre compte AWS
<a name="pull-ecr-customer-account"></a>

Les fonctions Lambda du connecteur de fédération Athena utilisent des images de conteneur stockées dans des référentiels Amazon ECR gérés par Athena. Pour effectuer des analyses de sécurité sur ces images de conteneur, vous devez d’abord les copier dans un référentiel Amazon ECR de votre compte. Cette section fournit des step-by-step instructions sur la façon de copier une image dans votre référentiel et de configurer votre fonction Lambda pour utiliser l'image.

## Conditions préalables
<a name="pull-ecr-customer-account-prereq"></a>
+ Vous devez disposer d’un connecteur de fédération Athena : le connecteur peut être créé via n’importe quelle source, sous réserve qu’elle utilise une image de conteneur.
**Note**  
Pour vérifier le déploiement de l’image, consultez l’onglet Image de votre connecteur de fédération Athena Lambda.
+ Docker doit être installé et en cours d’exécution.
+ AWS CLI installé
+ Vous devez disposer des informations d’identification du compte ainsi que des autorisations d’extraction appropriées.

## Méthode pour transférer une image
<a name="image-transfer-procedure"></a>

1. Localisation de l’URI de l’image depuis votre connecteur de fédération Athena Lambda  
**Example**  

   ```
   account_id_1.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.15.1
   ```

1. Générez un jeton d’authentification Docker pour le compte géré par Athena :

   ```
   aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin athena-managed-registry
   ```

   Où :
   + *regionID*est votre région de déploiement (par exemple, us-east-1)
   + *athena-managed-registry*est la partie registre de l'URI de l'image (par exemple, account\$1id\$11.dkr. ecr.us-east-1.amazonaws.com)

1. Extrayez l’image du compte géré par Athena :

   ```
   docker pull athenaImageURI
   ```

1. Authentifiez Docker auprès de votre registre :

   ```
   aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin customer-registry
   ```

   Où se *customer-registry* trouve votre registre ECR (par exemple, account\$1id\$12.dkr. ecr.us-east-1.amazonaws.com)

1. Balisez l’image extraite pour votre référentiel :

   ```
   docker tag athenaImageURI yourImageURI
   ```

1. Envoyez l’image vers votre référentiel :

   ```
   docker push yourImageURI
   ```

1. Mettez à jour votre connecteur de fédération Athena :

   1. Accédez à votre fonction Lambda.

   1. Sélectionnez **Déployer une nouvelle image**.

   1. Saisissez votre nouvel URI d’image.

   L’image du connecteur fédéré Athena se trouve désormais dans votre compte, ce qui vous permet d’effectuer des analyses CVE sur l’image.

# Enregistrement de votre connexion en tant que Catalogue de données Glue
<a name="register-connection-as-gdc"></a>

Après avoir créé votre source de données, vous pouvez utiliser la console Athena pour enregistrer votre connexion en tant que Catalogue de données Glue. Une fois enregistré, vous pouvez gérer votre catalogue de données fédéré et activer le contrôle d’accès précis à l’aide de Lake Formation. Pour plus d’informations, consultez [Creating a federated catalog](https://docs.aws.amazon.com/lake-formation/latest/dg/create-fed-catalog-data-source.html).

Vous pouvez enregistrer les connecteurs suivants à intégrer AWS Glue pour un contrôle d'accès précis.
+ Redshift
+ BigQuery
+ DynamoDB (version préliminaire)
+ Snowflake (version préliminaire)
+ MySQL
+ PostgreSQL
+ AWS CMDB
+ Timestream
+ Stockage Azure Data Lake
+ Azure Synapse
+ IBM Db2
+ IBM Db2 AS/400 (Db2 iSeries)
+ DocumentDB
+ Google Cloud Storage
+ HBase
+ OpenSearch
+ Oracle
+ SAP HANA
+ SQL Server
+ TPC-DS
+ Cloudera Hive
+ Cloudwatch
+ Cloudwatch Metrics
+ Teradata
+ Vertica

## Conditions préalables
<a name="register-connection-as-gdc-pre"></a>

Avant de commencer, vous devez remplir les conditions préalables suivantes.
+ Assurez-vous de disposer des rôles et autorisations nécessaires pour enregistrer des emplacements. Pour plus d'informations, consultez les [exigences relatives aux rôles](https://docs.aws.amazon.com/lake-formation/latest/dg/registration-role.html) dans le guide du AWS Lake Formation développeur.
+ Assurez-vous de disposer des rôles Lake Formation requis. Pour plus d'informations, consultez la section [Conditions préalables à la connexion du catalogue de données à des sources de données externes](https://docs.aws.amazon.com/lake-formation/latest/dg/federated-catalog-data-connection.html) dans le Guide du AWS Lake Formation développeur.
+ Le rôle que vous enregistrez dans Glue doit disposer des autorisations répertoriées dans l’exemple suivant.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket",
                  "s3:GetObject"
              ],
              "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket/spill-prefix/*",
      "arn:aws:s3:::amzn-s3-demo-bucket/spill-prefix"
              ]
          },
          {
              "Sid": "lambdainvoke",
              "Effect": "Allow",
              "Action": "lambda:InvokeFunction",
              "Resource": "arn:aws:lambda:us-east-1:111122223333:function:lambda_function_name"
          },
          {
              "Sid": "gluepolicy",
              "Effect": "Allow",
              "Action": "glue:*",
              "Resource": [
              "arn:aws:glue:us-east-1:111122223333:connection/<connection_name>",
      "arn:aws:glue:us-east-1:111122223333:catalog"
              ]
          }
      ]
  }
  ```

------
+ Vous êtes responsable de la détermination et de la gestion de l’accès approprié aux données. Dans le cas de contrôles d'accès précis sur les requêtes fédérées, il est recommandé d'utiliser la politique [AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)gérée. Si vous souhaitez utiliser votre propre politique, vous devez vous assurer que les utilisateurs exécutant des requêtes fédérées n’ont pas accès aux ressources suivantes.
  + `lambda:InvokeFunction` sur le connecteur Lambda spécifié dans la connexion Glue
  + Accès à l’emplacement du compartiment de déversement dans IAM
  + Accès à la connexion Glue associée à votre catalogue fédéré
  + Rôle Lake Formation dans IAM

## Enregistrement de votre connexion à l’aide de la console
<a name="register-connection-as-gdc-steps"></a>

**Pour enregistrer votre connexion en tant que Catalogue de données Glue**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Dans la liste **Sources de données**, choisissez la source de données que vous avez créée pour ouvrir la page **Détails de la source de données**. 

1. Choisissez **Commencer avec AWS Lake Formation**.
**Note**  
Après avoir choisi cette option, vous devrez gérer vous-même votre fonction Lambda. Athena ne supprimera pas votre fonction Lambda.

1. Dans **Nom du catalogue de données**, indiquez un nom unique pour votre catalogue.

1. Choisissez le **Rôle IAM de Lake Formation** qui accorde à Lake Formation l’autorisation d’invoquer la fonction Lambda. Assurez-vous que le rôle dispose des autorisations illustrées dans [l’exemple](#register-connection-as-gdc-pre).

1. Dans la zone de texte, tapez **confirm** pour supprimer la source de données Athena et remplacez-la par un enregistrement du Catalogue de données Glue.
**Note**  
Cette action supprimera votre source de données Athena et créera un nouveau Catalogue de données Glue à la place. Une fois ce processus terminé, vous devrez peut-être mettre à jour les requêtes qui accèdent à la source de données afin qu’elles se réfèrent plutôt au Catalogue de données Glue que vous venez de créer.

1. Sélectionnez **Créer un catalogue et accéder à Lake Formation**. Cette action ouvre la console Lake Formation, dans laquelle vous pouvez gérer le catalogue et accorder des autorisations aux utilisateurs sur les catalogues, les bases de données et les tables.

# Activation des requêtes fédérées entre comptes
<a name="xacct-fed-query-enable"></a>

La requête fédérée vous permet d'interroger des sources de données autres qu'Amazon S3 à l'aide de connecteurs de source de données déployés sur AWS Lambda. La fonction de requête fédérée entre comptes permet à la fonction Lambda et aux sources de données à interroger d'être localisées dans différents comptes.

**Note**  
Utilisez cette méthode uniquement si vous n’avez pas enregistré votre source de données fédérée auprès du AWS Glue Data Catalog. Si vous avez enregistré votre source de données auprès du AWS Glue Data Catalog, utilisez les fonctionnalités AWS Glue Data Catalog multi-comptes et le modèle d'autorisations. Pour plus d’informations, consultez [Granting cross-account access](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html) dans le *Guide d’utilisation d’AWS Glue *.

En tant qu'administrateur de données, vous pouvez activer les requêtes fédérées entre comptes en partageant votre connecteur de données avec le compte d'un analyste de données ou, en tant qu'analyste de données, en utilisant un ARN Lambda partagé d'un administrateur de données pour l'ajouter à votre compte. Lorsque des modifications de configuration sont apportées à un connecteur du compte d'origine, la configuration mise à jour est automatiquement appliquée aux instances partagées du connecteur dans les comptes d'autres utilisateurs.

## Considérations et restrictions
<a name="xacct-fed-query-enable-considerations-and-limitations"></a>
+ La fonction de requête fédérée entre comptes est disponible pour les connecteurs de données de métastores non Hive qui utilisent une source de données Lambda.
+ La fonctionnalité n'est pas disponible pour le type de source de AWS Glue Data Catalog données. Pour plus d'informations sur l'accès entre comptes à AWS Glue Data Catalog s, consultez[Configuration de l'accès entre comptes aux catalogues de AWS Glue données](security-iam-cross-account-glue-catalog-access.md).
+ Si la réponse de la fonction Lambda de votre connecteur dépasse la limite de taille de réponse Lambda de 6 Mo, Athena chiffre, regroupe et déverse automatiquement la réponse dans un compartiment Amazon S3 que vous configurez. L'entité qui exécute la requête Athena doit avoir accès à l'emplacement du déversement pour qu'Athéna puisse lire les données déversées. Nous vous recommandons de définir une politique de cycle de vie Amazon S3 afin de supprimer les objets présents sur le lieu du déversement, car les données ne sont plus nécessaires une fois la requête terminée. 
+ L'utilisation de requêtes fédérées n' Régions AWS est pas prise en charge. 

## Autorisations requises
<a name="xacct-fed-query-enable-required-permissions"></a>

Pour configurer les autorisations requises, des actions doivent être effectuées à la fois dans le compte A (*444455556666*) et dans le compte B (*111122223333*).

### Actions relatives au compte A
<a name="xacct-fed-query-enable-required-permissions-account-a"></a>

Pour que le compte administrateur de données A partage une fonction Lambda avec le compte d'analyste de données B, le compte B nécessite la fonction d'invocation Lambda et l'accès au compartiment de déversement. Par conséquent, le compte A devrait ajouter une [politique basée sur les ressources](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) à la fonction Lambda et l'accès [principal](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html) à son compartiment de déversement dans Amazon S3.

1. La politique suivante accorde des autorisations de fonction d'invocation Lambda au compte B sur une fonction Lambda dans le compte A.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CrossAccountInvocationStatement",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:user/username"
                   ]
               },
               "Action": "lambda:InvokeFunction",
               "Resource": "arn:aws:lambda:us-east-1:444455556666:function:lambda-function-name"
           }
       ]
   }
   ```

------

1. La politique suivante permet d'accéder au compartiment de déversement au principal dans le compte B.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
               "AWS": ["arn:aws:iam::111122223333:user/username"]
               },
               "Action": [
                   "s3:GetObject",
                   "s3:ListBucket"
                ],
               "Resource": [
                   "arn:aws:s3:::spill-bucket",
                   "arn:aws:s3:::spill-bucket/*"
               ]
           }
        ]
    }
   ```

------

1. Si la fonction Lambda chiffre le bucket de spill avec une AWS KMS clé au lieu du chiffrement par défaut proposé par le SDK de fédération, la politique de AWS KMS clés du compte A doit accorder l'accès à l'utilisateur du compte B, comme dans l'exemple suivant.

   ```
   { 
       "Sid": "Allow use of the key", 
       "Effect": "Allow", 
       "Principal": 
       { 
          "AWS": ["arn:aws:iam::account-B-id:user/username"] 
       }, 
       "Action": [ "kms:Decrypt" ], 
       "Resource": "*" // Resource policy that gets placed on the KMS key. 
    }
   ```

### Actions relatives au compte B
<a name="xacct-fed-query-enable-required-permissions-account-b"></a>

Pour que le compte A partage son connecteur avec le compte B, le compte B doit créer un rôle appelé `AthenaCrossAccountCreate-account-A-id` que le compte A assume en appelant l'action [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API AWS Security Token Service.

1. Utilisez la console IAM ou le AWS CLI pour créer le `AthenaCrossAccountCreate-account-A-id` rôle en tant que rôle de politique de confiance personnalisé. Une politique de confiance personnalisée délègue l'accès et permet à d'autres personnes d'effectuer des actions sur votre AWS compte. Pour connaître les étapes à suivre, consultez [Create a role using custom trust policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) dans le *Guide d’utilisation d’IAM*.

   La relation de confiance doit comporter un objet principal, dans lequel la clé est `AWS` et la valeur est l’ARN du compte A, comme illustré dans l’exemple suivant.

   ```
   ...
   "Principal": 
   { 
      "AWS": ["arn:aws:iam::account-A-id:user/username"]
   }, 
   ...
   ```

1. Créez également dans le compte B une politique semblable à la suivante qui autorise l’action `CreateDataCatalog`. 

   ```
   {
    "Effect": "Allow",
    "Action": "athena:CreateDataCatalog",
    "Resource": "arn:aws:athena:*:account-B-id:datacatalog/*"
   }
   ```

1. Ajoutez la politique qui autorise l’action `CreateDataCatalog` au rôle `AthenaCrossAccountCreate-account-A-id` que vous avez créé à l’aide du compte B. 

## Partage d'une source de données dans le compte A avec le compte B
<a name="xacct-fed-query-enable-sharing-a-lambda-data-source-in-account-a-with-account-b"></a>

Une fois les autorisations en place, vous pouvez utiliser la page **Sources de données et catalogues** dans la console Athena pour partager un connecteur de données de votre compte (compte A) avec un autre compte (compte B). Le compte A conserve le contrôle total et la propriété du connecteur. Lorsque le compte A modifie la configuration du connecteur, la configuration mise à jour s'applique au connecteur partagé dans le compte B.

**Note**  
Vous pouvez uniquement partager une source de données de type Lambda et ne pouvez pas partager des sources de données utilisant des connexions AWS Glue . Pour de plus amples informations, veuillez consulter [Connecteurs de source de données disponibles](connectors-available.md).

**Pour partager une source de données Lambda du compte A avec le compte B**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez le lien du connecteur que vous souhaitez partager.

1. Sur la page des détails d’une source de données Lambda, sélectionnez **Partager** dans le menu **Actions** situé dans le coin supérieur droit.

1. Dans le cadre du **partage *Lambda-name* avec un autre compte ?** dans une boîte de dialogue, entrez les informations requises.
   + Pour **Data source name (Nom de la source de données)**, saisissez le nom de la source de données copiée telle que vous souhaitez qu'elle apparaisse dans l'autre compte.
   + Pour **Account ID (ID de compte)**, saisissez l'ID du compte avec lequel vous souhaitez partager votre source de données (dans ce cas, compte B).

1. Choisissez **Partager**. Le connecteur de données partagées que vous avez spécifié est créé dans le compte B. Les modifications de configuration apportées au connecteur dans le compte A s'appliquent au connecteur du compte B.

## Ajout d'une source de données partagée du compte A au compte B
<a name="xacct-fed-query-enable-add-a-shared-lambda-function-arn-to-your-account"></a>

En tant qu'analyste de données, un administrateur de données peut vous attribuer l'ARN d'un connecteur à ajouter à votre compte. Vous pouvez utiliser la page **Sources de données et catalogues** de la console Athena pour ajouter l’ARN Lambda fourni par votre administrateur à votre compte.

**Pour ajouter l'ARN Lambda d'un connecteur de données partagées à votre compte**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation n’est pas visible, choisissez le menu d’extension sur la gauche.

1. Sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez **Créer une source de données**.

1. Sur la page **Choisir une source de données**, sélectionnez **Connecteur personnalisé ou partagé**.

1. Choisissez **Suivant**.

1. Sur la page **Saisir les détails de la source de données**, dans la section **Détails de la connexion**, dans **Sélectionnez ou saisissez une fonction Lambda**, saisissez l’ARN Lambda du compte A.

1. Choisissez **Suivant**.

1. Sur la page **Vérifier et créer**, sélectionnez **Créer une source de données**.

## Résolution des problèmes
<a name="xacct-fed-query-enable-troubleshooting"></a>

Si vous recevez un message d'erreur indiquant que le compte A ne dispose pas des autorisations nécessaires pour assumer un rôle dans le compte B, assurez-vous que le nom du rôle créé dans le compte B est correctement orthographié et que la politique appropriée est attachée.

# Mise à jour d’un connecteur de source de données
<a name="connectors-updating"></a>

Athena vous recommande de mettre régulièrement à jour les connecteurs de source de données que vous utilisez vers la dernière version afin de tirer parti des nouvelles fonctionnalités et améliorations. La mise à jour d’un connecteur de source de données comprend les étapes suivantes :

# Connexions Glue (recommandé)
<a name="connectors-updating-gc"></a>

## Recherche de la version la plus récente d’Athena Query Federation
<a name="connectors-updating-finding-the-latest-version"></a>

Le dernier numéro de version des connecteurs de source de données Athena correspond à la dernière version d'Athena Query Federation. Dans certains cas, les GitHub versions peuvent être légèrement plus récentes que celles disponibles sur le AWS Serverless Application Repository (SAR).

**Trouver le dernier numéro de version d'Athena Query Federation**

1. Accédez à l' GitHub URL [https://github.com/awslabs/aws-athena-query-federation/releases/latest](https://github.com/awslabs/aws-athena-query-federation/releases/latest).

1. Notez le numéro de version dans l'en-tête de la page principale au format suivant :

   **Version** *year* v. *week\$1of\$1year*. *iteration\$1of\$1week***de la Fédération Athena Query**

   Par exemple, le numéro de version de la **Version v2023.8.3 d'Athena Query Federation** est 2023.8.3.

## Recherche de la version du connecteur
<a name="connectors-find-version"></a>

Suivez ces étapes pour déterminer la version du connecteur que vous utilisez actuellement.

**Pour rechercher la version du connecteur**

1. Sur la page de la console Lambda pour votre application Lambda, sélectionnez l’onglet **Image**.

1. Sous l’onglet Image, localisez l’URI de l’image. L’URI suit le format ci-dessous :

   ```
   Image_location_account.dkr.ecr.us-west-2.amazonaws.com/athena-federation-repository:Version
   ```

1. Le numéro de version présent dans l’URI de l’image suit le format `year.week_of_year.iteration_of_week` (par exemple, `2021.42.1`). Ce numéro représente la version de votre connecteur.

## Déploiement d’une nouvelle version de connecteur
<a name="connectors-deploy-new-version"></a>

Pour déployer une nouvelle version de votre connecteur, procédez comme suit.

**Pour déployer une nouvelle version de connecteur**

1. Recherchez la version souhaitée en suivant la procédure afin d’identifier la version la plus récente d’Athena Query Federation.

1. Dans la fonction Lambda du connecteur fédéré, localisez l’URI de l’image et mettez à jour la balise vers la version souhaitée. Par exemple :

   De:

   ```
   509399631660.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.15.1
   ```

   Pour :

   ```
   509399631660.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.26.1
   ```

**Note**  
Si votre version actuelle est antérieure à 2025.15.1, prenez note de ces modifications importantes :  
Le nom du référentiel a été mis à jour et modifié en `athena-federation-repository`
Dans les versions antérieures à cette mise à jour, il se peut que le remplacement de commande ne soit pas défini. Vous devez le définir sur le gestionnaire composite.

# Connexions héritées
<a name="connectors-updating-legacy"></a>

## Recherche de la version la plus récente d’Athena Query Federation
<a name="connectors-updating-finding-the-latest-version"></a>

Le dernier numéro de version des connecteurs de source de données Athena correspond à la dernière version d'Athena Query Federation. Dans certains cas, les GitHub versions peuvent être légèrement plus récentes que celles disponibles sur le AWS Serverless Application Repository (SAR).

**Trouver le dernier numéro de version d'Athena Query Federation**

1. Accédez à l' GitHub URL [https://github.com/awslabs/aws-athena-query-federation/releases/latest](https://github.com/awslabs/aws-athena-query-federation/releases/latest).

1. Notez le numéro de version dans l'en-tête de la page principale au format suivant :

   **Version** *year* v. *week\$1of\$1year*. *iteration\$1of\$1week***de la Fédération Athena Query**

   Par exemple, le numéro de version de la **Version v2023.8.3 d'Athena Query Federation** est 2023.8.3.

## Recherche et consignation des noms des ressources
<a name="connectors-updating-finding-and-noting-resource-names"></a>

Pour préparer la mise à niveau, vous devez trouver et noter les informations suivantes :

1. Le nom de la fonction Lambda pour le connecteur.

1. Les variables d'environnement de la fonction Lambda.

1. Le nom de l'application Lambda, qui gère la fonction Lambda pour le connecteur.

**Pour trouver les noms des ressources dans la console Athena**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Dans la colonne **Nom de la source de données**, choisissez le lien vers la source de données de votre connecteur.

1. Dans la section **Détails de la source de données**, sous **Fonction Lambda**, choisissez le lien vers votre fonction Lambda.  
![\[Choisissez le lien vers votre fonction Lambda.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-updating-1.png)

1. Sur la page **Fonctions**, dans la colonne **Nom de la fonction**, notez le nom de la fonction de votre connecteur.  
![\[Notez le nom de la fonction.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-updating-2.png)

1. Choisissez le lien du nom de la fonction.

1. Dans la section **Présentation de la fonction**, choisissez l'onglet **Configuration**.

1. Dans le panneau de gauche, choisissez **Variables d'environnement**.

1. Dans la section **Variables d'environnement**, notez les clés et leurs valeurs correspondantes.

1. Faites défiler jusqu'en haut de la page.

1. Dans le message **Cette fonction appartient à une application. Cliquez ici pour la gérer**, sélectionnez le lien **Cliquez ici**.

1. **Sur la *your\$1application\$1name* page **serverlessrepo-**, notez le nom de votre application sans serverlessrepo.** Par exemple, si le nom de l'application est **serverlessrepo- DynamoDbTestApp**, le nom de votre application est. **DynamoDbTestApp**

1. Restez sur la page de console Lambda pour votre application, puis suivez les étapes décrites dans la section **Recherche de la version du connecteur que vous utilisez**.

## Recherche de la version du connecteur que vous utilisez
<a name="connectors-updating-finding-the-version-that-you-are-using"></a>

Pour trouver la version du connecteur que vous utilisez, procédez comme suit.

**Pour trouver la version du connecteur que vous utilisez**

1. Sur la page de console Lambda pour votre application Lambda, choisissez l'onglet **Déploiements**.

1. Dans l'onglet **Déploiements**, développez la section **Modèle SAM**.

1. Recherchez **CodeUri**.

1. Dans le champ **Clé** ci-dessous **CodeUri**, recherchez la chaîne suivante :

   ```
   applications-connector_name-versions-year.week_of_year.iteration_of_week/hash_number
   ```

   L'exemple suivant montre une chaîne pour le CloudWatch connecteur :

   ```
   applications-AthenaCloudwatchConnector-versions-2021.42.1/15151159...
   ```

1. Enregistrez la valeur pour*year*. *week\$1of\$1year*. *iteration\$1of\$1week*(par exemple, **2021.42.1**). Il s'agit de la version correspondant à votre connecteur.

## Déploiement de la nouvelle version de votre connecteur
<a name="connectors-updating-deploying-the-new-version"></a>

Pour déployer une nouvelle version de votre connecteur, procédez comme suit.

**Pour déployer une nouvelle version de votre connecteur**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez **Créer une source de données**.

1. Choisissez la source de données que vous souhaitez mettre à niveau, puis sélectionnez **Suivant**.

1. Dans la section **Détails de la connexion**, choisissez **Créer une fonction Lambda**. Cela ouvre la console Lambda dans laquelle vous pourrez déployer votre application mise à jour.  
![\[Page du connecteur dans la AWS Lambda console.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-updating-3.png)

1. Comme vous ne créez pas réellement une nouvelle source de données, vous pouvez fermer l'onglet de la console Athena.

1. Sur la page de console Lambda pour le connecteur, effectuez les étapes suivantes :

   1. Assurez-vous d'avoir supprimé le préfixe **serverlessrepo-** du nom de votre application, puis copiez le nom de l'application dans le champ **Nom de l'application.**

   1. Copiez le nom de votre fonction Lambda dans le **AthenaCatalogName**champ. Certains connecteurs appellent ce champ **LambdaFunctionName**.

   1. Copiez les variables d'environnement que vous avez enregistrées dans les champs correspondants.

1. Sélectionnez l'option **Je comprends que cette application crée des rôles IAM personnalisés**, puis choisissez **Déployer**.

1. Pour vérifier que votre application a été mise à jour, sélectionnez l'onglet **Déploiements**.

   La section **Historique de déploiement** indique que votre mise à jour est terminée.  
![\[La mise à jour du connecteur est terminée.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-updating-4.png)

1. Pour confirmer le nouveau numéro de version, vous pouvez développer le **modèle SAM** comme auparavant **CodeUri**, rechercher et vérifier le numéro de version du connecteur dans le champ **Clé**.

Vous pouvez désormais utiliser votre connecteur mis à jour pour créer des requêtes fédérées Athena.

# Modification ou suppression d’une connexion à une source de données
<a name="connectors-edit-data-source"></a>

Vous pouvez utiliser la console Athena pour mettre à jour la description, l’hôte, le port, la base de données et les autres propriétés d’une connexion existante. Vous pouvez également supprimer les sources de données de la console Athena.

## Modification d’une connexion à une source de données
<a name="connectors-edit-data-source-editsteps"></a>

**Pour modifier une connexion à une source de données**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, choisissez la connexion à une source de données que vous souhaitez modifier.

1. Dans **Informations de connexion àAWS Glue **, sélectionnez **Modifier**.

1. Choisissez **Suivant**.

1. Sur la page **Modifier <connection-name>**, mettez à jour les informations selon les besoins. Les propriétés disponibles dépendent du type de connexion.
**Note**  
Lorsque vous mettez à jour les propriétés de connexion concernant les secrets, l’emplacement de déversement ou l’ID de clé AWS KMS , assurez-vous que le rôle d’exécution Lambda a toujours accès aux ressources mises à jour. Pour plus d’informations, consultez [Viewing and updating permissions in the execution role](https://docs.aws.amazon.com/lambda/latest/dg/permissions-executionrole-update.html) dans le Guide de développement d’ AWS Lambda .
   + **Description** : modifiez la description de votre connexion.
   + **Hôte** : modifiez le nom d’hôte de votre base de données.
   + **Port** : modifiez le numéro de port de votre base de données.
   + **Base de données** : modifiez le nom de votre base de données.
   + **Paramètres JDBC** : modifiez les éventuels paramètres JDBC supplémentaires requis pour votre connexion. 
   + **Secret** : choisissez ou créez un secret à partir d’ AWS Secrets Manager. Utilisez des AWS secrets pour éviter de coder en dur des informations sensibles dans votre chaîne de connexion JDBC. Pour plus d'informations, voir [Qu'est-ce que c'est AWS Secrets Manager ?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) Pour plus d’informations sur la création d’un secret dans Secrets Manager, consultez [Create an AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) dans le *Guide d’utilisation d’AWS Secrets Manager *.

     Pour les utiliser AWS Secrets Manager avec les requêtes fédérées Athena, vous devez configurer un point de terminaison privé Amazon VPC pour Secrets Manager. Pour plus d'informations, consultez la rubrique [Création d'un point de terminaison privé VPC Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint-create) du *Guide de l'utilisateur AWS Secrets Manager *.
   + **Emplacement de déversement dans Amazon S3** : choisissez ou créez un emplacement de compartiment Amazon S3 dans votre compte pour stocker les données qui dépassent les limites de taille de réponse de la fonction Lambda.
**Note**  
Les données déversées ne sont pas réutilisées lors d'exécutions ultérieures et peuvent être supprimées en toute sécurité après 12 heures. Athena ne supprime pas ces données pour vous. Pour gérer ces objets, envisagez d'ajouter une politique de cycle de vie des objets qui supprime les anciennes données de votre compartiment de déversement Simple Storage Service (Amazon S3). Pour plus d'informations, veuillez consulter [Gestion du cycle de vie des objets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) dans le *Guide de l'utilisateur Amazon S3*.
   + **Chiffrement des résultats des requêtes dans S3** : sélectionnez l’une des options suivantes :
     + (Valeur par défaut) **Utiliser une clé générée aléatoirement** : 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.
     + **Utiliser une AWS KMS clé** : choisissez ou créez une clé de chiffrement AWS KMS générée plus puissante. Pour plus d'informations, consultez [Création des clés](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) dans le *Guide du développeur AWS Key Management Service *.
     + **Désactiver** : les données de déversement ne sont pas chiffrées.
   + **Paramètres réseaux** : certaines connexions requièrent un cloud privé virtuel (VPC). Choisissez ou créez un VPC doté du magasin de données auquel vous souhaitez accéder, d’un sous-réseau et d’un ou de plusieurs groupes de sécurité. Pour de plus amples informations, veuillez consulter [Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).
**Note**  
Après avoir mis à jour les propriétés de connexion pour des ressources telles que les secrets, l'emplacement du déversement ou l'ID de AWS KMS clé, assurez-vous que le rôle d'exécution Lambda continue d'avoir accès aux ressources mises à jour.
Après avoir mis à jour les paramètres réseaux de votre connexion, assurez-vous de mettre à jour la fonction Lambda avec les mêmes paramètres afin de rendre votre connexion compatible avec la source de données.

   Pour plus d’informations sur les propriétés de connexion supplémentaires, consultez [AWS Glue connection properties](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) dans le *Guide d’utilisation d’AWS Glue * ou [Connecteurs de source de données disponibles](connectors-available.md) dans le *Guide d’utilisation d’Amazon Athena*.

1. Choisissez **Enregistrer**.

La section **Informations de connexion àAWS Glue ** figurant sur la page relative à votre source de données affiche les informations mises à jour de votre connecteur.

## Supprimer une source de données
<a name="connectors-edit-data-source-delete"></a>

Lorsque vous supprimez une source de données, cette action supprime uniquement la source de données Athena et ne supprime pas des ressources telles que les connexions Glue, le rôle d’exécution IAM et la fonction Lambda.

**Pour supprimer une source de données**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, choisissez la source de données que vous souhaitez modifier.

1. Sélectionnez **Delete (Supprimer)**.

1. Sur la page **Supprimer la source de données**, tapez *confirm* pour confirmer la suppression, puis sélectionnez **Supprimer**. La suppression de la source de données peut prendre un certain temps. Vous recevrez une alerte de réussite une fois la source de données supprimée.

# Exécution de requêtes fédérées
<a name="running-federated-queries"></a>

Après avoir configuré un ou plusieurs connecteurs de données et les avoir déployés sur votre compte, vous pouvez les utiliser dans vos requêtes Athena. 

## Interrogation d’une source de données unique
<a name="running-federated-queries-single-data-source"></a>

Les exemples de cette section supposent que vous avez configuré et déployé le [Connecteur Amazon Athena CloudWatch](connectors-cloudwatch.md) sur votre compte. Utilisez la même approche pour effectuer des requêtes lorsque vous utilisez d'autres connecteurs.

**Pour créer une requête Athena utilisant le connecteur CloudWatch**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans l'éditeur de requête Athena, créez une requête SQL utilisant la syntaxe suivante dans la clause `FROM`.

   ```
   MyCloudwatchCatalog.database_name.table_name       
   ```

### Exemples
<a name="running-federated-queries-single-data-source-examples"></a>

L'exemple suivant utilise le CloudWatch connecteur Athena pour se connecter à la `all_log_streams` vue du groupe `/var/ecommerce-engine/order-processor` CloudWatch Logs [Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html). La vue `all_log_streams` est une vue de tous les flux de journaux du groupe de journaux. L'exemple de requête limite le nombre de lignes renvoyées à 100.

```
SELECT * 
FROM "MyCloudwatchCatalog"."/var/ecommerce-engine/order-processor".all_log_streams 
LIMIT 100;
```

L'exemple suivant analyse les informations de la même vue que l'exemple précédent. L'exemple extrait l'ID de commande et le niveau du journal, puis filtre tout message ayant le niveau `INFO`.

```
SELECT 
    log_stream as ec2_instance, 
    Regexp_extract(message '.*orderId=(\d+) .*', 1) AS orderId, 
    message AS order_processor_log, 
    Regexp_extract(message, '(.*):.*', 1) AS log_level 
FROM MyCloudwatchCatalog."/var/ecommerce-engine/order-processor".all_log_streams 
WHERE Regexp_extract(message, '(.*):.*', 1) != 'INFO'
```

## Interrogation de plusieurs sources de données
<a name="running-federated-queries-multiple-sources"></a>

À titre d'exemple plus complexe, imaginez une entreprise de commerce électronique qui utilise les sources de données suivantes pour stocker les données relatives aux achats des clients :
+ [Amazon RDS for MySQL](https://aws.amazon.com/rds/mysql/) pour stocker les données du catalogue de produits
+ [Amazon DocumentDB](https://aws.amazon.com/documentdb/) pour stocker les données de compte client telles que les adresses e-mail et les adresses d'expédition
+ [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) pour stocker les données d'expédition et de suivi des commandes

Imaginez qu'un analyste de données pour cette application de commerce électronique apprenne que les délais de livraison dans certaines régions ont été affectés par les conditions météorologiques locales. L'analyste souhaite savoir combien de commandes sont retardées, où se trouvent les clients concernés et quels sont les produits les plus concernés. Au lieu d'étudier les sources d'informations séparément, l'analyste utilise Athena pour regrouper les données en une seule requête fédérée.

**Example**  

```
SELECT 
     t2.product_name AS product, 
     t2.product_category AS category, 
     t3.customer_region AS region, 
     count(t1.order_id) AS impacted_orders 
FROM my_dynamodb.default.orders t1 
JOIN my_mysql.products.catalog t2 ON t1.product_id = t2.product_id 
JOIN my_documentdb.default.customers t3 ON t1.customer_id = t3.customer_id 
WHERE 
     t1.order_status = 'PENDING'
     AND t1.order_date between '2022-01-01' AND '2022-01-05' 
GROUP BY 1, 2, 3 
ORDER BY 4 DESC
```

## Interrogation de vues fédérées
<a name="running-federated-queries-federated-views"></a>

Lorsque vous interrogez des sources fédérées, vous pouvez utiliser des vues afin d'obscurcir les sources de données sous-jacentes ou de masquer les jointures complexes pour les autres analystes qui interrogent les données.

### Considérations et restrictions
<a name="running-federated-queries-federated-views-considerations"></a>
+ Les vues fédérées nécessitent la version 3 du moteur Athena. 
+ Les vues fédérées sont stockées dans la source de données sous-jacente AWS Glue, et non dans celle-ci.
+ Les vues fédérées ne sont pas prises en charge sur les sources de données [enregistrées en tant que Catalogue de données Glue](register-connection-as-gdc.md).
+ Les vues créées avec des catalogues fédérés doivent utiliser une syntaxe de nom complète, comme dans l'exemple suivant :

  ```
  "ddbcatalog"."default"."customers"
  ```
+ Les utilisateurs qui exécutent des requêtes sur des sources fédérées doivent être autorisés à interroger les sources fédérées.
+ L'autorisation `athena:GetDataCatalog` est requise pour les vues fédérées. Pour de plus amples informations, veuillez consulter [Autorisation d’accès aux requêtes fédérées Athena : exemples de politiques](federated-query-iam-access.md).

### Exemples
<a name="running-federated-queries-federated-views-examples"></a>

L'exemple suivant crée une vue appelée `customers` sur les données stockées dans une source de données fédérée.

**Example**  

```
CREATE VIEW customers AS
SELECT *
FROM my_federated_source.default.table
```

L'exemple de requête suivant montre une requête qui fait référence à la vue `customers` plutôt qu'à la source de données fédérée sous-jacente.

**Example**  

```
SELECT id, SUM(order_amount)
FROM customers
GROUP by 1
ORDER by 2 DESC
LIMIT 50
```

L'exemple suivant crée une vue appelée `order_summary` qui combine les données d'une source de données fédérée et celles d'une source de données Amazon S3. À partir de la source fédérée, qui a déjà été créée dans Athena, la vue utilise les tables `person` et `profile`. Dans Amazon S3, la vue utilise les tables `purchase` et `payment`. Pour faire référence à Amazon S3, l'instruction utilise le mot-clé `awsdatacatalog`. Notez que la source de données fédérée utilise la syntaxe *federated\$1source\$1name* des noms complets. *federated\$1source\$1database*. *federated\$1source\$1table*.

**Example**  

```
CREATE VIEW default.order_summary AS
SELECT *
FROM federated_source_name.federated_source_database."person" p
    JOIN federated_source_name.federated_source_database."profile" pr ON pr.id = p.id
    JOIN awsdatacatalog.default.purchase i ON p.id = i.id
    JOIN awsdatacatalog.default.payment pay ON pay.id = p.id
```

### Ressources supplémentaires
<a name="running-federated-queries-federated-views-additional-resources"></a>
+ Pour un exemple de vue fédérée découplée de sa source d'origine et disponible pour une analyse à la demande dans un modèle d'utilisateurs multiples, consultez la section [Étendre votre maillage de données avec Amazon Athena et les vues fédérées](https://aws.amazon.com/blogs/big-data/extend-your-data-mesh-with-amazon-athena-and-federated-views/) sur le *blog AWS Big Data*. 
+ Pour de plus amples informations sur le fonctionnement des vues dans Athena, consultez [Utilisation de vues](views.md).

# Utilisation des requêtes de transmission fédérées
<a name="federated-query-passthrough"></a>

Dans Athena, vous pouvez exécuter des requêtes sur des sources de données fédérées en utilisant le langage de requête de la source de données elle-même et transmettre la requête complète vers la source de données pour exécution. Ces requêtes sont appelées requêtes de transmission. Pour exécuter des requêtes de transmission, vous devez utiliser une fonction de table dans votre requête Athena. Vous devez inclure la requête de transmission à exécuter sur la source de données dans l’un des arguments de la fonction de table. Les requêtes de transmission renvoient une table que vous pouvez analyser à l’aide d’Athena SQL.

## Connecteurs pris en charge
<a name="federated-query-passthrough-supported-connectors"></a>

Les connecteurs de source de données Athena suivants prennent en charge les requêtes de transmission.
+ [Stockage Azure Data Lake](connectors-adls-gen2.md)
+ [Azure Synapse](connectors-azure-synapse.md)
+ [Cloudera Hive](connectors-cloudera-hive.md)
+ [Cloudera Impala](connectors-cloudera-impala.md)
+ [CloudWatch](connectors-cloudwatch.md)
+ [Db2](connectors-ibm-db2.md)
+ [Db2 iSeries](connectors-ibm-db2-as400.md)
+ [DocumentDB](connectors-docdb.md) 
+ [DynamoDB](connectors-dynamodb.md) 
+ [HBase](connectors-hbase.md)
+ [Google BigQuery](connectors-bigquery.md)
+ [Hortonworks](connectors-hortonworks.md)
+ [MySQL](connectors-mysql.md)
+ [Neptune](connectors-neptune.md)
+ [OpenSearch](connectors-opensearch.md) 
+ [Oracle](connectors-oracle.md)
+ [PostgreSQL](connectors-postgresql.md)
+ [Redshift](connectors-redshift.md)
+ [SAP HANA](connectors-sap-hana.md)
+ [Snowflake](connectors-snowflake.md)
+ [SQL Server](connectors-microsoft-sql-server.md)
+ [Teradata](connectors-teradata.md)
+ [Timestream](connectors-timestream.md)
+ [Vertica](connectors-vertica.md)

## Considérations et restrictions
<a name="federated-query-passthrough-considerations-and-limitations"></a>

Lorsque vous utilisez des requêtes de transmission dans Athena, vous devez tenir compte des points suivants :
+ La fonctionnalité de transmission des requêtes est uniquement prise en charge dans le cadre d’instructions `SELECT` Athena ou d’opérations de lecture.
+ Les performances des requêtes peuvent varier en fonction de la configuration de la source de données.
+ La fonctionnalité de transmission des requêtes ne prend pas en charge le contrôle d’accès précis de Lake Formation.
+ Les requêtes de transmission ne sont pas prises en charge sur les sources de données [enregistrées en tant que Catalogue de données Glue](register-connection-as-gdc.md).

## Syntaxe
<a name="federated-query-passthrough-syntax"></a>

La syntaxe générale de transmission des requêtes Athena est la suivante.

```
SELECT * FROM TABLE(catalog.system.function_name(arg1 => 'arg1Value'[, arg2 => 'arg2Value', ...]))
```

Notez ce qui suit :
+ **catalog** : nom du connecteur fédéré Athena cible ou nom du catalogue de données.
+ **system** : espace de noms qui contient la fonction. Toutes les implémentations de connecteur Athena utilisent cet espace de noms.
+ **function\$1name** : nom de la fonction qui transmet la requête de transmission à la source de données. Cet élément est souvent appelé `query`. La combinaison `catalog.system.function_name` correspond au chemin de résolution complet de la fonction.
+ **arg1, arg2, etc.** : arguments de la fonction. L’utilisateur doit les transmettre à la fonction. Dans la plupart des cas, il s’agit de la chaîne de requête transmise à la source de données.

Dans la plupart des sources de données, le premier et unique argument est `query` suivi de l’opérateur flèche `=>` et de la chaîne de requête.

```
SELECT * FROM TABLE(catalog.system.query(query => 'query string'))
```

Pour plus de simplicité, vous pouvez omettre l’argument nommé facultatif `query` et l’opérateur flèche `=>`.

```
SELECT * FROM TABLE(catalog.system.query('query string'))
```

Vous pouvez encore simplifier la requête en supprimant le nom `catalog` si la requête est exécutée dans le contexte du catalogue cible.

```
SELECT * FROM TABLE(system.query('query string'))
```

Si la source de données nécessite davantage que la chaîne de requête, utilisez des arguments nommés dans l’ordre attendu par la source de données. Par exemple, l’expression `arg1 => 'arg1Value'` contient le premier argument et sa valeur. Le nom *arg1* est spécifique à la source de données et peut varier d'un connecteur à l'autre.

```
SELECT * FROM TABLE(
        system.query(
            arg1 => 'arg1Value',
            arg2 => 'arg2Value',
            arg3 => 'arg3Value'
        ));
```

La requête ci-dessus peut également être simplifiée en omettant les noms des arguments. Vous devez cependant suivre l’ordre de signature de la méthode. Consultez la documentation relative à chaque connecteur pour plus d’informations sur la signature de la fonction.

```
SELECT * FROM TABLE(catalog.system.query('arg1Value', 'arg2Value', 'arg3Value'))
```

Vous pouvez exécuter plusieurs requêtes de transmission sur différents connecteurs Athena en utilisant le chemin de résolution complet de la fonction, comme illustré dans l’exemple suivant.

```
SELECT c_customer_sk 
    FROM TABLE (postgresql.system.query('select * from customer limit 10'))
UNION
SELECT c_customer_sk 
    FROM TABLE(dynamodb.system.query('select * from customer')) LIMIT 10
```

Vous pouvez utiliser des requêtes de transmission dans le cadre d’une vue fédérée. Les mêmes limitations s’appliquent. Pour plus d’informations, consultez [Interrogation de vues fédérées](https://docs.aws.amazon.com/athena/latest/ug/running-federated-queries.html#running-federated-queries-federated-views).

```
CREATE VIEW catalog.database.ViewName AS
    SELECT * FROM TABLE (
        catalog.system.query('query')
    )
```

Pour plus d’informations sur la syntaxe exacte à utiliser avec un connecteur particulier, consultez la documentation de chaque connecteur.

### Utilisation des guillemets
<a name="federated-query-passthrough-syntax-quotation-marks"></a>

Les valeurs des arguments, y compris la chaîne de requête que vous transmettez, doivent être placées entre guillemets simples, comme illustré dans l’exemple suivant.

```
SELECT * FROM TABLE(system.query(query => 'SELECT * FROM testdb.persons LIMIT 10'))
```

Lorsque la chaîne de requête est entourée de guillemets doubles, la requête échoue. La requête suivante échoue avec le message d’erreur COLUMN\$1NOT\$1FOUND: line 1:43: Column 'select \$1 from testdb.persons limit 10' cannot be resolved.

```
SELECT * FROM TABLE(system.query(query => "SELECT * FROM testdb.persons LIMIT 10"))
```

Pour échapper un guillemet simple, ajoutez un guillemet simple à l’original (par exemple, `terry's_group` à `terry''s_group`).

## Exemples
<a name="federated-query-passthrough-sql-based-connectors-examples"></a>

L’exemple de requête suivant transmet une requête à une source de données. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        catalog.system.query(
            query => 'SELECT * FROM customer LIMIT 10;'
        ))
```

L’instruction suivante exécute la même requête, mais supprime l’argument nommé facultatif `query` et l’opérateur flèche `=>`.

```
SELECT * FROM TABLE(
        catalog.system.query(
            'SELECT * FROM customer LIMIT 10;'
        ))
```

Elle peut également être encapsulée dans une vue fédérée pour faciliter sa réutilisation. Lorsque vous l’utilisez avec une vue, vous devez utiliser le chemin de résolution complet de la fonction.

```
CREATE VIEW AwsDataCatalog.default.example_view AS
    SELECT * FROM TABLE (
        catalog.system.query('SELECT * FROM customer LIMIT 10;')
    )
```

## Désactivation de la fonctionnalité de transmission des requêtes
<a name="federated-query-passthrough-sql-based-connectors-opting-out"></a>

Pour désactiver les requêtes de transmission, ajoutez une variable d’environnement Lambda nommée `enable_query_passthrough` et définissez-la sur `false`.

# Présentation des qualificateurs de noms de table fédérés
<a name="tables-qualifiers"></a>

Athena utilise les termes suivants pour désigner les hiérarchies d'objets de données :
+ **Source de données** : un groupe de bases de données
+ **Base de données** : un groupe de tables
+ **Table** : des données organisées sous la forme d'un groupe de lignes ou de colonnes

Parfois, ces objets sont également désignés par des noms alternatifs mais équivalents, tels que les suivants :
+ Une source de données est parfois appelée catalogue.
+ Une base de données est parfois appelée schéma.

## Termes utilisés dans les sources de données fédérées
<a name="tables-qualifiers-terms-in-federated-data-sources"></a>

Lorsque vous interrogez des sources de données fédérées, notez que la source de données sous-jacente n'utilise peut-être pas la même terminologie qu'Athena. Gardez cette distinction à l'esprit lorsque vous rédigez vos requêtes fédérées. Les sections suivantes décrivent comment les termes des objets de données dans Athena correspondent à ceux des sources de données fédérées.

### Amazon Redshift
<a name="tables-qualifiers-redshift"></a>

Une *base de données* Amazon Redshift est un groupe de *schémas* Redshift contenant un groupe de *tables* Redshift.


****  

| Athena | Redshift | 
| --- | --- | 
| Source de données Redshift | Une fonction Lambda du connecteur Redshift configurée pour pointer vers une database Redshift. | 
| data\$1source.database.table | database.schema.table | 

Exemple de requête

```
SELECT * FROM 
Athena_Redshift_connector_data_source.Redshift_schema_name.Redshift_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour Redshift](connectors-redshift.md).

### Cloudera Hive
<a name="tables-qualifiers-cloudera-hive"></a>

Un *serveur* ou un *cluster* Cloudera Hive est un groupe de *bases de données* Cloudera Hive contenant un groupe de *tables* Cloudera Hive.


****  

| Athena | Hive | 
| --- | --- | 
| Source de données Cloudera Hive | Fonction Lambda du connecteur Cloudera Hive configurée pour pointer vers un server Cloudera Hive. | 
| data\$1source.database.table | server.database.table | 

Exemple de requête

```
SELECT * FROM 
Athena_Cloudera_Hive_connector_data_source.Cloudera_Hive_database_name.Cloudera_Hive_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour Cloudera Hive](connectors-cloudera-hive.md).

### Cloudera Impala
<a name="tables-qualifiers-cloudera-impala"></a>

Un *serveur* ou un *cluster* Impala est un groupe de *bases de données* Impala contenant un groupe de *tables* Impala.


****  

| Athena | Impala | 
| --- | --- | 
| Source de données Impala | Fonction Lambda du connecteur Impala configurée pour pointer vers un server Impala. | 
| data\$1source.database.table | server.database.table | 

Exemple de requête

```
SELECT * FROM 
Athena_Impala_connector_data_source.Impala_database_name.Impala_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour Cloudera Impala](connectors-cloudera-impala.md).

### MySQL
<a name="tables-qualifiers-mysql"></a>

Un *serveur* MySQL est un groupe de *bases de données* MySQL contenant un groupe de *tables* MySQL.


****  

| Athena | MySQL | 
| --- | --- | 
| Source de données MySQL | Fonction Lambda du connecteur MySQL configurée pour pointer vers un server MySQL. | 
| data\$1source.database.table | server.database.table | 

Exemple de requête

```
SELECT * FROM 
Athena_MySQL_connector_data source.MySQL_database_name.MySQL_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour MySQL](connectors-mysql.md).

### Oracle
<a name="tables-qualifiers-oracle"></a>

Un *serveur* (ou une *base de données*) Oracle est un groupe de *schémas* Oracle contenant un groupe de *tables* Oracle.


****  

| Athena | Oracle | 
| --- | --- | 
| Source de données Oracle | Fonction Lambda du connecteur Oracle configurée pour pointer vers un server Oracle. | 
| data\$1source.database.table | server.schema.table | 

Exemple de requête

```
SELECT * FROM 
Athena_Oracle_connector_data_source.Oracle_schema_name.Oracle_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour Oracle](connectors-oracle.md).

### Postgres
<a name="tables-qualifiers-postgres"></a>

Un *serveur* (ou *cluster*) Postgres est un groupe de *bases de données* Postgres. Une *base de données* Postgres est un groupe de *schémas* Postgres contenant un groupe de *tables* Postgres.


****  

| Athena | Postgres | 
| --- | --- | 
| Source de données Postgres | Fonction Lambda du connecteur Postgres configurée pour pointer vers un server et une database Postgres. | 
| data\$1source.database.table | server.database.schema.table | 

Exemple de requête

```
SELECT * FROM 
Athena_Postgres_connector_data_source.Postgres_schema_name.Postgres_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour PostgreSQL](connectors-postgresql.md).

# Développement d’un connecteur de source de données à l’aide du kit SDK Athena Query Federation
<a name="connect-data-source-federation-sdk"></a>

Pour écrire vos propres connecteurs de source de données, vous pouvez utiliser le [kit SDK Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk). Le kit Athena Query Federation SDK définit un ensemble d'interfaces et de protocoles filaire que vous pouvez utiliser pour permettre à Athena de déléguer des parties de son plan d'exécution de requêtes au code que vous écrivez et déployez. Le kit SDK comprend une suite de connecteurs et un exemple de connecteur.

Les connecteurs personnalisés n’utilisent pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

Vous pouvez également personnaliser les [connecteurs prédéfinis](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors) d'Amazon Athena pour votre propre usage. Vous pouvez modifier une copie du code source depuis GitHub puis utiliser l'[outil de publication Connector](https://github.com/awslabs/aws-athena-query-federation/wiki/Connector_Publish_Tool) pour créer votre propre AWS Serverless Application Repository package. Une fois que vous avez déployé votre connecteur de cette manière, vous pouvez l'utiliser dans vos requêtes Athena.

Pour plus d'informations sur le téléchargement du SDK et pour obtenir des instructions détaillées sur l'écriture de votre propre connecteur, consultez [Example Athena](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-example) connector on. GitHub

# Utilisation des connecteurs de source de données pour Apache Spark
<a name="connectors-spark"></a>

Certains connecteurs de source de données Athena sont disponibles sous forme de connecteurs Spark DSV2 . Les noms des DSV2 connecteurs Spark ont un `-dsv2` suffixe (par exemple,`athena-dynamodb-dsv2`).

Vous trouverez ci-dessous les DSV2 connecteurs actuellement disponibles, le nom de leur `.format()` classe Spark et les liens vers leur documentation Amazon Athena Federated Query correspondante :


| DSV2 connecteur | Nom de classe .format () Spark | Documentation | 
| --- | --- | --- | 
| athena-cloudwatch-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.CloudwatchTableProvider | [CloudWatch](connectors-cloudwatch.md) | 
| athena-cloudwatch-metrics-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.metrics.CloudwatchMetricsTableProvider | [CloudWatch métriques](connectors-cwmetrics.md) | 
| athena-aws-cmdb-dsv2 | com.amazonaws.athena.connectors.dsv2.aws.cmdb.AwsCmdbTableProvider | [CMDB](connectors-cmdb.md) | 
| athena-dynamodb-dsv2 | com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider | [DynamoDB](connectors-dynamodb.md) | 

Pour télécharger `.jar` des fichiers pour les DSV2 connecteurs, rendez-vous [sur la DSV2 GitHub page Amazon Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation-dsv2) et consultez la section **Releases**, **Release *<version>***, **Assets**.

## Spécification du fichier jar dans Spark
<a name="connectors-spark-specifying-the-jar-to-spark"></a>

Pour utiliser les DSV2 connecteurs Athena avec Spark, vous devez envoyer le `.jar` fichier du connecteur à l'environnement Spark que vous utilisez. Les sections suivantes décrivent les cas spécifiques.

### Athena pour Spark
<a name="connectors-spark-ate"></a>

Pour plus d'informations sur l'ajout de fichiers `.jar` personnalisés et d'une configuration personnalisée dans Amazon Athena pour Apache Spark, consultez. [Utilisation de propriétés Spark pour spécifier une configuration personnalisée](notebooks-spark-custom-jar-cfg.md)

### General Spark
<a name="connectors-spark-general"></a>

Pour transmettre le fichier `.jar` du connecteur à Spark, utilisez la commande `spark-submit` et spécifiez le fichier `.jar` dans l'option `--jars`, comme dans l'exemple suivant :

```
spark-submit \ 
  --deploy-mode cluster \ 
  --jars https://github.com/awslabs/aws-athena-query-federation-dsv2/releases/download/some_version/athena-dynamodb-dsv2-some_version.jar
```

### Amazon EMR Spark
<a name="connectors-spark-emr"></a>

Pour exécuter une commande `spark-submit` avec le paramètre `--jars` sur Amazon EMR, vous devez ajouter une étape à votre cluster Amazon EMR Spark. Pour en savoir plus sur l'utilisation de `spark-submit` sur Amazon EMR, consultez [Ajouter une étape Spark](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html) dans le *Guide de version d'Amazon EMR.*

### AWS Glue ETL Spark
<a name="connectors-spark-glue-etl"></a>

Pour l' AWS Glue ETL, vous pouvez transmettre l'URL GitHub .com du `.jar` fichier à l'`--extra-jars`argument de la `aws glue start-job-run` commande. La AWS Glue documentation décrit le `--extra-jars` paramètre comme empruntant un chemin Amazon S3, mais il peut également prendre une URL HTTPS. Pour plus d'informations, consultez la [référence du paramètre de tâche](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html#w5aac32c13c11) dans le *Guide du développeur AWS Glue *.

## Interrogation du connecteur sur Spark
<a name="connectors-spark-querying-the-connector"></a>

Pour envoyer l'équivalent de votre requête fédérée Athena existante sur Apache Spark, utilisez la fonction `spark.sql()`. Supposons par exemple que vous ayez la requête Athena que vous souhaitez utiliser sur Apache Spark.

```
SELECT somecola, somecolb, somecolc 
FROM ddb_datasource.some_schema_or_glue_database.some_ddb_or_glue_table 
WHERE somecola > 1
```

Pour exécuter la même requête sur Spark à l'aide du DSV2 connecteur Amazon Athena DynamoDB, utilisez le code suivant :

```
dynamoDf = (spark.read 
    .option("athena.connectors.schema", "some_schema_or_glue_database") 
    .option("athena.connectors.table", "some_ddb_or_glue_table") 
    .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") 
    .load()) 
 
dynamoDf.createOrReplaceTempView("ddb_spark_table") 
 
spark.sql(''' 
SELECT somecola, somecolb, somecolc 
FROM ddb_spark_table 
WHERE somecola > 1 
''')
```

## Specify parameters
<a name="connectors-spark-parameters"></a>

Les DSV2 versions des connecteurs de source de données Athena utilisent les mêmes paramètres que les connecteurs de source de données Athena correspondants. Pour obtenir des informations sur les paramètres, reportez-vous à la documentation du connecteur de source de données Athena correspondant.

Dans votre PySpark code, utilisez la syntaxe suivante pour configurer vos paramètres.

```
spark.read.option("athena.connectors.conf.parameter", "value")
```

Par exemple, le code suivant définit le paramètre `disable_projection_and_casing` du connecteur Amazon Athena DynamoDB sur `always`.

```
dynamoDf = (spark.read 
    .option("athena.connectors.schema", "some_schema_or_glue_database") 
    .option("athena.connectors.table", "some_ddb_or_glue_table") 
    .option("athena.connectors.conf.disable_projection_and_casing", "always") 
    .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") 
    .load())
```