

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.

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