

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.

# Connexion aux sources de données
<a name="work-with-data-stores"></a>

Vous pouvez utiliser Amazon Athena pour interroger des données stockées dans différents emplacements et différents formats dans un *jeu de données*. Ce jeu de données peut être au format CSV, JSON, Avro, Parquet ou dans un autre format.

Les tables et bases de données que vous utilisez dans Athena pour exécuter des requêtes sont basées sur des *métadonnées*. Les métadonnées sont des données relatives aux données sous-jacentes de votre jeu de données. La façon dont ces métadonnées décrivent votre jeu de données est appelée *schéma*. Par exemple, un nom de table, les noms de colonne de la table et le type de données de chaque colonne sont tous des schémas, enregistrés en tant que métadonnées, qui décrivent un jeu de données sous-jacent. Dans Athena, un système permettant d'organiser les métadonnées est un *catalogue de données* ou un *métastore*. La combinaison d'un jeu de données et du catalogue de données qui le décrit est appelée *source de données*.

La relation entre les métadonnées et un jeu de données sous-jacent dépend du type de source de données que vous utilisez. Les sources de données relationnelles telles que MySQL, PostgreSQL et SQL Server intègrent étroitement les métadonnées au jeu de données. Dans ces systèmes, les métadonnées sont le plus souvent écrites au même moment que les données. D'autres sources de données, telles que celles créées à l'aide de [Hive](https://hive.apache.org), vous permettent de définir des métadonnées on-the-fly lorsque vous lisez le jeu de données. Le jeu de données peut se présenter sous différents formats, par exemple CSV, JSON, Parquet ou Avro.

Athéna soutient nativement le. AWS Glue Data Catalog AWS Glue Data Catalog Il s'agit d'un catalogue de données construit sur d'autres ensembles de données et sources de données tels qu'Amazon S3, Amazon Redshift et Amazon DynamoDB. Vous pouvez également connecter Athena à d'autres sources de données à l'aide de divers connecteurs.

**Topics**
+ [AWS Glue Data Catalog À utiliser pour vous connecter à vos données](data-sources-glue.md)
+ [Utilisation de la requête fédérée Amazon Athena](federated-queries.md)
+ [Utiliser Amazon DataZone dans Athena](datazone-using.md)
+ [Utilisation d’un metastore Hive externe](connect-to-data-source-hive.md)
+ [Gestion des sources de données](data-sources-managing.md)

# AWS Glue Data Catalog À utiliser pour vous connecter à vos données
<a name="data-sources-glue"></a>

Athena utilise le AWS Glue Data Catalog pour stocker des métadonnées telles que les noms de tables et de colonnes pour vos données stockées dans Amazon S3. Ces métadonnées constituent ensuite les bases de données, les tables et les vues que vous visualisez dans l’éditeur de requête Athena.

Lorsque vous utilisez Athéna avec le AWS Glue Data Catalog, vous pouvez l'utiliser AWS Glue pour créer des bases de données et des tables (schéma) à interroger dans Athéna, ou vous pouvez utiliser Athéna pour créer un schéma, puis les utiliser dans des services connexes. AWS Glue 

Pour définir les informations de schéma pour AWS Glue, vous pouvez utiliser un formulaire dans la console Athena, utiliser l'éditeur de requêtes dans Athena ou créer un AWS Glue robot d'exploration dans la console. AWS Glue AWS Glue les robots d'exploration déduisent automatiquement le schéma de base de données et de table à partir de vos données dans Amazon S3. L’utilisation d’un formulaire offre davantage de possibilités de personnalisation. L’écriture de vos propres instructions `CREATE TABLE` nécessitera plus d’efforts, mais elle vous assurera un plus grand contrôle. Pour de plus amples informations, veuillez consulter [CREATE TABLE](create-table.md).

## Ressources supplémentaires
<a name="glue-additional-resources"></a>
+ Pour plus d'informations sur le AWS Glue Data Catalog, consultez la section [Catalogue de données et robots d'exploration AWS Glue dans](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html) le *Guide du AWS Glue développeur*.
+ Pour un article illustratif expliquant comment utiliser AWS Glue et comment traiter les données XML par Athena, [consultez la section Traitement et analyse de fichiers XML volumineux et très imbriqués à l'aide d' AWS Glue Amazon Athena sur le blog](https://aws.amazon.com/blogs/big-data/process-and-analyze-highly-nested-and-large-xml-files-using-aws-glue-and-amazon-athena/) Big Data. AWS 
+ Des frais distincts s'appliquent à AWS Glue. Pour en savoir plus, consultez [Pricing AWS Glue](https://aws.amazon.com/glue/pricing) (Tarification).

**Topics**
+ [Ressources supplémentaires](#glue-additional-resources)
+ [Enregistrement et utilisation des catalogues de données dans Athena](gdc-register.md)
+ [Enregistrement d’un catalogue de données à partir d’un autre compte](data-sources-glue-cross-account.md)
+ [Contrôle de l’accès aux catalogues de données à l’aide de politiques IAM](datacatalogs-iam-policy.md)
+ [Utiliser un formulaire dans la console Athena pour ajouter un tableau AWS Glue](data-sources-glue-manual-table.md)
+ [Utilisation d’un robot pour ajouter une table](schema-crawlers.md)
+ [Optimisez les requêtes grâce à l'indexation et au filtrage des AWS Glue partitions](glue-best-practices-partition-index.md)
+ [Utilisez le AWS CLI pour recréer une AWS Glue base de données et ses tables](glue-recreate-db-and-tables-cli.md)
+ [Création de tables dans le cadre de tâches d’extraction, de transformation et de chargement (ETL)](schema-classifier.md)
+ [Travaillez avec des données CSV dans AWS Glue](schema-csv.md)
+ [Travaillez avec des données géospatiales dans AWS Glue](schema-geospatial.md)

# Enregistrement et utilisation des catalogues de données dans Athena
<a name="gdc-register"></a>

Athena prend en charge le montage et la connexion à plusieurs catalogues de données. 
+ Vous pouvez y monter des données Amazon Redshift AWS Glue Data Catalog et les interroger depuis Athena sans avoir à les copier ou à les déplacer. Pour plus d’informations, consultez [Bringing Amazon Redshift data into the AWS Glue Data Catalog](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-namespaces-datacatalog.html).
+  Connectez les AWS Glue Data Catalog à des sources de données externes à l'aide de AWS Glue connexions et créez des catalogues fédérés pour gérer de manière centralisée les autorisations d'accès aux données grâce à un contrôle d'accès précis à l'aide de Lake Formation. Pour de plus amples informations, veuillez consulter [Enregistrement de votre connexion en tant que Catalogue de données Glue](register-connection-as-gdc.md).
+ Créez des catalogues à partir de compartiments de table Amazon S3 et utilisez Lake Formation pour gérer de manière centralisée les autorisations d’accès et restreindre l’accès des utilisateurs aux objets contenus dans le compartiment de table. Pour plus d’informations, consultez [Working with Amazon S3 Tables and table buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables.html) dans le Guide d’utilisation d’Amazon S3.

**Note**  
Pour tout catalogue Glue, vous ne pouvez enregistrer qu’un catalogue à plusieurs niveaux, tel que `123412341234:my_catalog/my_child`. Vous ne pouvez pas enregistrer un catalogue à un seul niveau, tel que `123412341234:linkcontainer` ou `my_catalog`. Les catalogues à un seul niveau peuvent uniquement être interrogés à l’aide du catalogue de données Glue, directement dans la requête Athena. Pour de plus amples informations, veuillez consulter [Interrogez AWS Glue les catalogues de données dans Athena](gdc-register-query-the-data-source.md). 

**Topics**
+ [Enregistrement de catalogues de données Redshift dans Athena](gdc-register-rs.md)
+ [Enregistrement de catalogues fédérés dans Athena](gdc-register-federated.md)
+ [Enregistrement de catalogues de compartiment de table S3 et interrogation de tables à partir d’Athena](gdc-register-s3-table-bucket-cat.md)
+ [Interrogez AWS Glue les catalogues de données dans Athena](gdc-register-query-the-data-source.md)

# Enregistrement de catalogues de données Redshift dans Athena
<a name="gdc-register-rs"></a>

Athena peut lire et écrire des données stockées dans des espaces de noms sans serveur ou des clusters Redshift enregistrés dans le AWS Glue Data Catalog. Cela fonctionne en parallèle avec AWS Lake Formation, ce qui fournit une sécurité et une gouvernance centralisées, garantit que l'accès aux données est géré de manière cohérente sur les différents moteurs de requête et maintient des contrôles d'accès précis pour les données Redshift partagées.

## Considérations et restrictions
<a name="gdc-register-rs-considerations-and-limitations"></a>
+ **Vues matérialisées** : les vues matérialisées Amazon Redshift peuvent être interrogées à partir d’Athena, mais la création de vues matérialisées à l’aide d’Athena ou de Spark n’est pas prise en charge.
+ Les opérations DDL, y compris le paramétrage AWS Glue Data Catalog de la configuration et les opérations sur les tables de stockage gérées par Amazon Redshift, ne sont pas prises en charge.

## Conditions préalables
<a name="gdc-register-rs-prerequisites"></a>

Avant de pouvoir interroger un catalogue de AWS Glue données auprès d'Athena, effectuez les tâches suivantes :

1. Créez et enregistrez un cluster ou un espace de noms sans serveur Amazon Redshift dans le AWS Glue Data Catalog. Pour plus d’informations, consultez [Registering a cluster to the AWS Glue Data Catalog](https://docs.aws.amazon.com/redshift/latest/mgmt/register-cluster.html) ou [Registering namespaces to the AWS Glue Data Catalog](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless_datasharing-register-namespace.html) dans le Guide de gestion d’Amazon Redshift.

1. Créez un catalogue de données à AWS Lake Formation partir de l'espace de noms enregistré. Pour plus d'informations, consultez la section [Création de catalogues fédérés Amazon Redshift](https://docs.aws.amazon.com/lake-formation/latest/dg/create-ns-catalog.html) dans le manuel du développeur. AWS Lake Formation 

1. (Facultatif) Utilisez Lake Formation pour définir des contrôles d’accès précis dans le catalogue. Pour plus d'informations, consultez la section [Intégrer vos données AWS Glue Data Catalog dans le](https://docs.aws.amazon.com/lake-formation/latest/dg/bring-your-data-overview.html) Guide du AWS Lake Formation développeur.

## Enregistrement d’un catalogue de données Redshift à l’aide de la console Athena
<a name="gdc-register-rs-console-steps"></a>

Pour enregistrer un catalogue de données Redshift à l’aide de la console Athena, effectuez les étapes suivantes.

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

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez **Créer une source de données**.

1. Dans **Choisir une source de données**, sélectionnez **Amazon S3 – AWS Glue Data Catalog**.

1. Dans la section **AWS Glue Data Catalog**, dans **Compte de source de données**, sélectionnez **AWS Glue Data Catalog dans ce compte**.

1. Pour **Créer une table ou enregistrer un catalogue**, choisissez **Enregistrer un nouveau AWS Glue catalogue**.

1. Dans la section **Détails de la source de données**, dans **Nom de la source de données**, saisissez le nom que vous souhaitez utiliser pour spécifier la source de données dans vos requêtes SQL ou utilisez le nom par défaut généré.

1. Pour **Catalogue**, choisissez **Parcourir** pour rechercher une liste de AWS Glue catalogues dans le même compte. Si vous ne voyez aucun catalogue existant, créez-en un dans la [console AWS Glue](https://console.aws.amazon.com/glue/). 

1. Dans la boîte de dialogue **Parcourir AWS Glue les catalogues**, sélectionnez le catalogue que vous souhaitez utiliser, puis choisissez **Choisir**.

1. (Facultatif) Pour les **balises**, entrez les key/value paires que vous souhaitez associer à la source de données.

1. Choisissez **Suivant**.

1. Sur la page **Vérifier et créer**, vérifiez que les informations que vous avez saisies sont correctes, puis sélectionnez **Créer une source de données**.

# Enregistrement de catalogues fédérés dans Athena
<a name="gdc-register-federated"></a>

Après avoir créé des connexions aux sources de données fédérées, vous pouvez les enregistrer en tant que catalogues de données fédérés pour simplifier la découverte de données et gérer l’accès aux données à l’aide d’autorisations précises via Lake Formation. Pour de plus amples informations, veuillez consulter [Enregistrement de votre connexion en tant que Catalogue de données Glue](register-connection-as-gdc.md).

## Considérations et restrictions
<a name="gdc-register-federated-consideration"></a>
+ Les opérations DDL ne sont pas prises en charge dans les catalogues fédérés. 
+ Vous pouvez enregistrer les connecteurs suivants à intégrer AWS Glue pour un contrôle d'accès précis :
  + [Stockage Azure Data Lake](connectors-adls-gen2.md)
  + [Azure Synapse](connectors-azure-synapse.md)
  + [BigQuery](connectors-bigquery.md)
  + [CMDB](connectors-cmdb.md)
  + [DB2](connectors-ibm-db2.md)
  + [Série Db2 i](connectors-ibm-db2-as400.md)
  + [DocumentDB](connectors-docdb.md)
  + [DynamoDB](connectors-dynamodb.md)
  + [Stockage dans le cloud de Google](connectors-gcs.md)
  + [HBase](connectors-hbase.md)
  + [MySQL](connectors-mysql.md)
  + [OpenSearch](connectors-opensearch.md)
  + [Oracle](connectors-oracle.md)
  + [PostgreSQL](connectors-postgresql.md)
  + [Redshift](connectors-redshift.md)
  + [SAP HANA](connectors-sap-hana.md)
  + [Snowflake](connectors-snowflake.md)
  + [SQL Server](connectors-microsoft-sql-server.md)
  + [Timestream](connectors-timestream.md)
  + [TPC-DS](connectors-tpcds.md)
+ Lorsque vous créez un lien vers une ressource pour la fédération de connexion Glue, le nom du [lien vers la ressource](https://docs.aws.amazon.com/lake-formation/latest/dg/create-resource-link-database.html) doit être identique au nom de base de données du producteur.
+ À l’heure actuelle, seuls les noms de table et de colonne en minuscules sont reconnus, même si la source de données n’est pas sensible à la casse.

# Enregistrement de catalogues de compartiment de table S3 et interrogation de tables à partir d’Athena
<a name="gdc-register-s3-table-bucket-cat"></a>

Les compartiments de table Amazon S3 sont un type de compartiment d’Amazon S3 spécialement conçu pour stocker des données tabulaires dans des tables Apache Iceberg. Les compartiments de table automatisent les tâches de gestion des tables telles que le compactage, la gestion des instantanés et le récupérateur de mémoire afin d’optimiser en permanence les performances des requêtes et de réduire les coûts. Que vous débutiez ou que vous disposiez de milliers de tables dans votre environnement Iceberg, les compartiments de table simplifient les lacs de données à n’importe quelle échelle. Pour plus d’informations, consultez [Table buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html).

## Considérations et restrictions
<a name="gdc-register-s3-table-consideration"></a>
+ Toutes les opérations DDL prises en charge pour les tables Iceberg sont prises en charge pour les tables S3, à l’exception de ce qui suit :
  + Les opérations `ALTER TABLE RENAME`, `CREATE VIEW` et `ALTER DATABASE` ne sont pas prises en charge.
  + Opérations `OPTIMIZE` et `VACUUM` : vous pouvez gérer le compactage et la gestion des instantanés dans S3. Pour plus d’informations, consultez la [documentation sur la maintenance des tables S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-maintenance.html).
+ Les requêtes DDL sur les tables S3 enregistrées en tant que sources de données Athena ne sont pas prises en charge.
+ La réutilisation des résultats des requêtes n’est pas prise en charge.
+ Dans les groupes de travail où le chiffrement SSE-KMS ou CSE-KMS est activé, vous ne pouvez pas exécuter d’opérations d’écriture telles que `INSERT`, `UPDATE`, `DELETE`, ou `MERGE` sur des tables S3.
+ Dans les groupes de travail où l’option S3 Paiement par le demandeur est activée, vous ne pouvez pas exécuter d’opérations DML sur des tables S3.

## Interrogation de tables S3 à partir d’Athena
<a name="gdc-register-s3-table-prereq-setup"></a>

**Effectuez ces étapes préalables avant d’interroger des tables S3 dans Athena :**

1. Créez un compartiment S3. Pour plus d’informations, consultez [Creating a table bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-create.html) dans le Guide d’utilisation d’Amazon Simple Storage Service. 

1. Assurez-vous que l'intégration de vos seaux de table AWS Glue Data Catalog est réussie. Pour connaître les autorisations requises et les étapes de configuration, consultez [les sections Conditions préalables à l'intégration des tables S3](https://docs.aws.amazon.com/glue/latest/dg/s3tables-catalog-prerequisites.html) et [Activation de l'intégration des tables S3 avec Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/enable-s3-tables-catalog-integration.html) dans le guide du AWS Glue développeur.

1. Pour le principal que vous utilisez pour exécuter des requêtes avec Athena, accordez des autorisations sur le catalogue de tables S3 en utilisant l'une des approches suivantes : 

   **Option 1 : utiliser les autorisations IAM**

   Lorsque vous utilisez le contrôle d'accès IAM, votre principal a besoin d'autorisations à la fois sur les AWS Glue Data Catalog ressources et sur les ressources Amazon S3 Tables.

   La liste suivante contient toutes les `s3tables` autorisations requises pour effectuer toute opération DDL ou DML prise en charge sur vos tables S3 dans Athena :
   + `s3tables:GetTableBucket`
   + `s3tables:GetNamespace`
   + `s3tables:GetTable`
   + `s3tables:GetTableData`
   + `s3tables:PutTableData`
   + `s3tables:ListNamespaces`
   + `s3tables:ListTables`
   + `s3tables:DeleteNamespace`
   + `s3tables:DeleteTable`
   + `s3tables:CreateNamespace`
   + `s3tables:CreateTable`
   + `s3tables:UpdateTableMetadataLocation`

   Appliquez ces autorisations à des compartiments de tables S3 et à des ressources de table S3 spécifiques ou utilisez-les `*` comme ressource pour accorder l'accès à tous les compartiments de tables et tables de votre compte. Ces autorisations peuvent être combinées à la politique [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)gérée pour activer toutes les fonctionnalités.

   **Option 2 : Utiliser les autorisations de Lake Formation**

   Sinon, pour activer un contrôle d'accès précis, vous pouvez accorder des autorisations à Lake Formation sur le catalogue de tables S3, soit par le biais de la console Lake Formation, soit. AWS CLI Cela nécessite d'enregistrer vos compartiments de table S3 en tant que localisation de données de Lake Formation. Pour plus d'informations, consultez [la section Création d'un catalogue de tables Amazon S3 AWS Glue Data Catalog dans le](https://docs.aws.amazon.com/lake-formation/latest/dg/create-s3-tables-catalog.html) guide du développeur in the Lake Formation.

------
#### [ AWS Management Console ]

   1. Ouvrez la AWS Lake Formation console [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) et connectez-vous en tant qu'administrateur du lac de données. Pour plus d’informations sur la manière de créer un administrateur de lac de données, consultez [Création d’un administrateur de lac de données](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin).

   1. Dans le volet de navigation, choisissez **Autorisations de données**, puis **Accorder**. 

   1. Sur la page **Accorder des autorisations**, sous **Principaux**, sélectionnez le principal que vous souhaitez utiliser pour soumettre une requête depuis Athena.

   1. Sous **Balises LF ou ressources de catalogue**, choisissez **Ressources de catalogue de données nommées**.

   1. Pour **Catalogues**, choisissez un catalogue de données Glue que vous avez créé à partir de l’intégration de votre compartiment de tables. Par exemple, :s3tablescatalog/*<accoundID>*. *amzn-s3-demo-bucket*

   1. Dans **Autorisation de catalogue**, sélectionnez **Super**.

   1. Choisissez **Accorder**.

------
#### [ AWS CLI ]

   Exécutez la commande suivante avec le rôle d’administrateur du lac de données Lake Formation pour accorder l’accès au principal que vous utilisez pour soumettre une requête depuis Athena. 

   ```
   aws lakeformation grant-permissions \
   --region <region (Example,us-east-1)> \
   --cli-input-json \
   '{
       "Principal": {
           "DataLakePrincipalIdentifier": "<user or role ARN (Example, arn:aws:iam::<Account ID>:role/ExampleRole>"
       },
       "Resource": {
           "Catalog": {
               "Id":"<Account ID>:s3tablescatalog/amzn-s3-demo-bucket"
           }
       },
       "Permissions": ["ALL"]
   }'
   ```

------

**Soumission de requêtes pour les tables S3**

1. Soumettez une `CREATE DATABASE` requête depuis Athena en utilisant l’utilisateur/le rôle autorisé ci-dessus. Dans cet exemple, `s3tablescatalog` est le catalogue de données Glue parent créé à partir de l’intégration et ` s3tablescatalog/amzn-s3-demo-bucket` est le catalogue de données Glue enfant créé pour chaque compartiment de table S3. Il existe deux manières de lancer une requête.

------
#### [ Option 1 ]

   Spécifiez le Glue Data Catalog (`s3tablescatalog/amzn-s3-demo-bucket`) enfant directement depuis la console ou AWS CLI.

   **En utilisant AWS Management Console**

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

   1. Dans le volet de navigation de gauche, pour **Nom de la source de données**, sélectionnez **AwsDataCatalog**.

   1. Pour **Catalog**, choisissez ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Dans l’éditeur de requêtes, saisissez une requête, telle que `CREATE DATABASE test_namespace`.

   **En utilisant AWS CLI**

   Exécutez la commande suivante.

   ```
   aws athena start-query-execution \ 
   --query-string 'CREATE DATABASE `test_namespace`' \ 
   --query-execution-context '{"Catalog": "s3tablescatalog/amzn-s3-demo-bucket"}' \
   --work-group "primary"
   ```

------
#### [ Option 2 ]

   Créez le catalogue de données Athena à partir du catalogue de données Glue enfant dans la console Athena et spécifiez-le en tant que catalogue dans la requête. Pour de plus amples informations, veuillez consulter [Enregistrement de catalogues de compartiment de table S3 en tant que sources de données Athena](#gdc-register-s3-table-console-steps).

------

1. À l’aide de la base de données que vous avez créée à l’étape précédente, utilisez `CREATE TABLE` pour créer une table. L’exemple suivant crée une table dans la base de données *`test_namespace`* que vous avez créée précédemment dans le catalogue Glue `s3tablescatalog/amzn-s3-demo-bucket`.

------
#### [ AWS Management Console ]

   1. Dans le volet de navigation de gauche, pour **Nom de la source de données**, sélectionnez **AwsDataCatalog**.

   1. Pour **Catalog**, choisissez ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Dans **Base de données**, sélectionnez **test\$1namespace**.

   1. Dans l’éditeur de requêtes, exécutez la requête suivante.

      ```
      CREATE TABLE daily_sales (
              sale_date date,
              product_category
              string, sales_amount double)
      PARTITIONED BY (month(sale_date))
      TBLPROPERTIES ('table_type' = 'iceberg')
      ```

------
#### [ AWS CLI ]

   Exécutez la commande suivante.

   ```
   aws athena start-query-execution \
   --query-string "CREATE TABLE daily_sales (
           sale_date date,
           product_category
           string, sales_amount double)
   PARTITIONED BY (month(sale_date))
   TBLPROPERTIES ('table_type' = 'iceberg')" \
   --query-execution-context '{"Catalog": "s3tablescatalog/amzn-s3-demo-bucket", "Database":"test_namespace"}' \
   --work-group "primary"
   ```

------

1. Insérez les données dans la table que vous avez créée à l’étape précédente.

------
#### [ AWS Management Console ]

   1. Dans le volet de navigation de gauche, pour **Nom de la source de données**, sélectionnez **AwsDataCatalog**.

   1. Pour **Catalog**, choisissez ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Dans **Base de données**, sélectionnez **test\$1namespace**.

   1. Dans l’éditeur de requêtes, exécutez la requête suivante.

      ```
      INSERT INTO daily_sales
      VALUES 
          (DATE '2024-01-15', 'Laptop', 900.00),
          (DATE '2024-01-15', 'Monitor', 250.00),
          (DATE '2024-01-16', 'Laptop', 1350.00),
          (DATE '2024-02-01', 'Monitor', 300.00);
      ```

------
#### [ AWS CLI ]

   Exécutez la commande suivante.

   ```
   aws athena start-query-execution \
   --query-string "INSERT INTO \"s3tablescatalog/amzn-s3-demo-bucket\".test_namespace.daily_sales
   VALUES 
   (DATE '2024-01-15', 'Laptop', 900.00),
   (DATE '2024-01-15', 'Monitor', 250.00),
   (DATE '2024-01-16', 'Laptop', 1350.00),
   (DATE '2024-02-01', 'Monitor', 300.00)"\ 
   --work-group "primary"
   ```

------

1. Une fois les données insérées dans la table, vous pouvez l’interroger.

------
#### [ AWS Management Console ]

   1. Dans le volet de navigation de gauche, pour **Nom de la source de données**, sélectionnez **AwsDataCatalog**.

   1. Pour **Catalog**, choisissez ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Dans **Base de données**, sélectionnez **test\$1namespace**.

   1. Dans l’éditeur de requêtes, exécutez la requête suivante.

      ```
      SELECT
          product_category,
          COUNT(*) AS units_sold,
          SUM(sales_amount) AS total_revenue,
          AVG(sales_amount) AS average_price
      FROM
          daily_sales
      WHERE
          sale_date BETWEEN DATE '2024-02-01' 
                       AND DATE '2024-02-29'
      GROUP BY
          product_category
      ORDER BY
          total_revenue DESC
      ```

------
#### [ AWS CLI ]

   Exécutez la commande suivante.

   ```
   aws athena start-query-execution \
   --query-string "SELECT product_category,
       COUNT(*) AS units_sold,
       SUM(sales_amount) AS total_revenue,
       AVG(sales_amount) AS average_price
   FROM \"s3tablescatalog/amzn-s3-demo-bucket\".test_namespace.daily_sales
   WHERE sale_date BETWEEN DATE '2024-02-01' AND DATE '2024-02-29'
   GROUP BY product_category
   ORDER BY total_revenue DESC"\
   --work-group "primary"
   ```

------

## Création de tables S3 dans Athena
<a name="gdc-create-s3-tables-athena"></a>

Athena prend en charge la création de tables dans des espaces de noms de tables S3 existants ou des espaces de noms créés dans Athena à l’aide d’instructions `CREATE DATABASE`. La syntaxe utilisée pour créer une table S3 à partir d’Athena et la même que celle utilisée pour [créer une table Iceberg classique](querying-iceberg-creating-tables.md), à ceci près que vous ne spécifiez pas la propriété `LOCATION`, comme illustré dans l’exemple suivant.

```
CREATE TABLE
[db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] )
[PARTITIONED BY (col_name | transform, ... )]
[TBLPROPERTIES ([, property_name=property_value] )]
```

Vous pouvez également créer des tables S3 à l’aide d’instructions CREATE TABLE AS SELECT (CTAS). Pour de plus amples informations, veuillez consulter [Opérations CTAS dans le cadre des tables S3](#ctas-s3-tables).

## Enregistrement de catalogues de compartiment de table S3 en tant que sources de données Athena
<a name="gdc-register-s3-table-console-steps"></a>

Pour enregistrer des catalogues de compartiment de table S3 à l’aide de la console Athena, effectuez les étapes suivantes.

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

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez **Créer une source de données**.

1. Dans **Choisir une source de données**, sélectionnez **Amazon S3 – AWS Glue Data Catalog**.

1. Dans la section **AWS Glue Data Catalog**, dans **Compte de source de données**, sélectionnez **AWS Glue Data Catalog dans ce compte**.

1. Pour **Créer une table ou enregistrer un catalogue**, choisissez **Enregistrer un nouveau AWS Glue catalogue**.

1. Dans la section **Détails de la source de données**, dans **Nom de la source de données**, saisissez le nom que vous souhaitez utiliser pour spécifier la source de données dans vos requêtes SQL ou utilisez le nom par défaut généré.

1. Pour **Catalogue**, choisissez **Parcourir** pour rechercher une liste de AWS Glue catalogues dans le même compte. Si vous ne voyez aucun catalogue existant, créez-en un dans la [console AWS Glue](https://console.aws.amazon.com/glue/). 

1. Dans la boîte de dialogue **Parcourir AWS Glue les catalogues**, sélectionnez le catalogue que vous souhaitez utiliser, puis choisissez **Choisir**.

1. (Facultatif) Pour les **balises**, entrez les key/value paires que vous souhaitez associer à la source de données.

1. Choisissez **Suivant**.

1. Sur la page **Vérifier et créer**, vérifiez que les informations que vous avez saisies sont correctes, puis sélectionnez **Créer une source de données**.

## Opérations CTAS dans le cadre des tables S3
<a name="ctas-s3-tables"></a>

Amazon Athena prend désormais en charge les opérations CREATE TABLE AS SELECT (CTAS) dans le cadre des tables S3. Cette fonctionnalité vous permet de créer de nouvelles tables S3 sur la base des résultats d’une requête SELECT. 

La création d’une requête CTAS dans le cadre d’une table S3 présente quelques différences importantes par rapport aux tables Athena standard :
+ Vous devez omettre la propriété location, car les tables S3 gèrent automatiquement leurs propres emplacements de stockage.
+ La propriété `table_type` est définie par défaut sur `ICEBERG`, vous n’avez donc pas besoin de la spécifier explicitement dans votre requête.
+ Si vous ne spécifiez aucun format, le système utilise automatiquement `PARQUET` comme format par défaut pour vos données.
+ Les autres propriétés suivent toutes la même syntaxe que pour les tables Iceberg classiques.

Avant de créer des tables S3 à l'aide de CTAS, assurez-vous que vous disposez des autorisations nécessaires configurées dans IAM ou. AWS Lake Formation Plus précisément, vous avez besoin d’autorisations pour créer des tables dans le catalogue de tables S3. Sans ces autorisations, vos opérations CTAS échoueront.

**Note**  
Si votre requête CTAS échoue, vous devrez peut-être supprimer votre table à l’aide de l’[API relative aux tables S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-delete.html) avant de tenter de réexécuter votre requête. Vous ne pouvez pas utiliser les instructions `DROP TABLE` Athena pour supprimer la table partiellement créée par la requête. 

**Exemple**

```
CREATE TABLE "s3tablescatalog/amzn-s3-demo-bucket"."namespace"."s3-table-name"
WITH (
    format = 'PARQUET'
)
AS SELECT *
FROM source_table;
```

# Interrogez AWS Glue les catalogues de données dans Athena
<a name="gdc-register-query-the-data-source"></a>

Pour interroger les catalogues de données à partir d’Athena, effectuez l’une des actions suivantes.
+ Enregistrez le catalogue dans Athena en tant que source de données, puis utilisez le nom de la source de données pour interroger le catalogue. Dans le cadre de cette utilisation, les requêtes suivantes sont équivalentes.

  ```
  SELECT * FROM my_data_source.my_database.my_table
  ```
+ Si vous interrogez un catalogue qui n’a pas été enregistré en tant que source de données Athena, vous pouvez fournir le chemin complet vers le catalogue dans vos requêtes `SELECT`, comme illustré dans l’exemple suivant.

  ```
  SELECT * FROM "my_catalog/my_subcatalog".my_database.my_table
  ```
+ Vous pouvez également le faire par le biais du AWS Management Console.

  1. Ouvrez la console Athena à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/)

  1. Dans l'éditeur de requêtes, pour **Source de données**, sélectionnez **AwsDataCatalog**.

  1. Dans **Catalogue**, sélectionnez le nom du catalogue que vous souhaitez utiliser.

  1. Dans **Base de données**, sélectionnez la base de données contenant la table que vous souhaitez interroger.

  1. Saisissez une requête telle que `SELECT * FROM my_table`, puis sélectionnez **Exécuter**.

# Enregistrement d’un catalogue de données à partir d’un autre compte
<a name="data-sources-glue-cross-account"></a>

Vous pouvez utiliser la fonction de AWS Glue catalogue multi-comptes d'Athena pour enregistrer un AWS Glue catalogue à partir d'un compte autre que le vôtre. Après avoir configuré les autorisations IAM requises pour AWS Glue et enregistré le catalogue en tant que ressource `DataCatalog` Athena, vous pouvez utiliser Athena pour exécuter des requêtes inter-comptes. Pour plus d'informations sur la configuration des autorisations requises, voir[Configuration de l'accès entre comptes aux catalogues de AWS Glue données](security-iam-cross-account-glue-catalog-access.md).

La procédure suivante explique comment utiliser l'Athena pour configurer un AWS Glue Data Catalog compte Amazon Web Services autre que le vôtre comme source de données.

## Enregistrement à partir de la console
<a name="data-sources-glue-cross-account-console"></a>

1. Suivez les étapes de la rubrique [Configuration de l'accès entre comptes aux catalogues de AWS Glue données](security-iam-cross-account-glue-catalog-access.md) pour vous assurer que vous avez les autorisations d'interroger le catalogue de données dans l'autre compte.

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Sélectionnez **Sources de données et catalogues**.

1. Dans le coin supérieur droit, choisissez **Create data source** (Créer une source de données).

1. Sur la page **Choisir une source** de **données, pour Sources** de données, choisissez **S3 - AWS Glue Data Catalog**, puis **Next**.

1. Sur la page **Enter data source details** (Saisir les détails de la source de données), dans la section **AWS Glue Data Catalog**, pour **Choisir un AWS Glue Data Catalog**, choisissez **AWS Glue Data Catalog dans un autre compte**.

1. Pour **Data source details** (Détails de la source de données), saisissez les informations suivantes :
   + **Data source name** (Nom de la source de données) – Saisissez le nom que vous souhaitez utiliser dans vos requêtes SQL pour faire référence au catalogue de données dans l'autre compte.
   + **Description** – (Facultative) Saisissez une description du catalogue de données dans l'autre compte.
   + **ID du catalogue** – Saisissez l'ID de compte Amazon Web Services à 12 chiffres du compte auquel appartient le catalogue de données. L'ID de compte Amazon Web Services est l'ID de catalogue.

1. (Facultatif) Pour **Tags** (Identifications), saisissez les paires clé-valeur que vous voulez associer à la source de données. Pour en savoir plus sur les identifications, consultez [Balisage des ressources Athena](tags.md).

1. Choisissez **Suivant**.

1. Sur la page **Review and create** (Vérifier et créer), vérifiez les informations que vous avez fournies, puis choisissez **Create data source** (Créer une source de données). La page **Data source details** (Détails de la source de données) répertorie les bases de données et les balises du catalogue de données que vous avez enregistré.

1. Sélectionnez **Sources de données et catalogues**. Le catalogue de données que vous avez enregistré est répertorié dans la colonne **Data source name** (Nom de la source de données).

1. Pour afficher ou modifier les informations relatives au catalogue de données, choisissez le catalogue, puis choisissez **Actions**, **Edit** (Modifier).

1. Pour supprimer le nouveau catalogue de données, choisissez le catalogue, puis choisissez **Actions**, **Supprimer**.

## Enregistrement à l’aide d’opérations d’API
<a name="data-sources-glue-cross-account-api"></a>

1. Le corps de `CreateDataCatalog` demande suivant enregistre un AWS Glue catalogue pour un accès entre comptes :

   ```
   # Example CreateDataCatalog request to register a cross-account Glue catalog:
   {
       "Description": "Cross-account Glue catalog",
       "Name": "ownerCatalog",
       "Parameters": {"catalog-id" : "<catalogid>"  # Owner's account ID
       },
       "Type": "GLUE"
   }
   ```

1. L'exemple de code suivant utilise un client Java pour créer l'objet `DataCatalog`.

   ```
   # Sample code to create the DataCatalog through Java client
   CreateDataCatalogRequest request = new CreateDataCatalogRequest()
       .withName("ownerCatalog")
       .withType(DataCatalogType.GLUE)
       .withParameters(ImmutableMap.of("catalog-id", "<catalogid>"));
   
   athenaClient.createDataCatalog(request);
   ```

   Après ces étapes, l'emprunteur devrait voir *`ownerCatalog`* quand il appelle l'opération [ListDataCatalogs](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListDataCatalogs.html)API.

## Inscrivez-vous en utilisant AWS CLI
<a name="data-sources-glue-cross-account-cli"></a>

Utilisez l'exemple de commande CLI suivant pour enregistrer un utilisateur AWS Glue Data Catalog depuis un autre compte

```
aws athena create-data-catalog \
  --name cross_account_catalog \
  --type GLUE \
  --description "Cross Account Catalog" \
  --parameters catalog-id=<catalogid>
```

Pour plus d'informations, consultez la [section Interrogation de comptes AWS Glue Data Catalog multiples à l'aide d'Amazon](https://aws.amazon.com/blogs/big-data/query-cross-account-aws-glue-data-catalogs-using-amazon-athena/) Athena sur *AWS le blog Big Data*.

# Contrôle de l’accès aux catalogues de données à l’aide de politiques IAM
<a name="datacatalogs-iam-policy"></a>

Pour contrôler l'accès aux catalogues de données, utilisez les autorisations IAM au niveau des ressources ou les politiques IAM basées sur l'identité. 

La procédure suivante est spécifique à Athena. 

Pour des informations spécifiques à IAM, consultez les liens répertoriés à la fin de cette section. Pour de plus amples informations sur les stratégies de catalogue de données JSON, veuillez consulter [Exemple de politiques de catalogue de données](datacatalogs-example-policies.md).

**Utilisation de l'éditeur visuel dans la console IAM pour créer une politique de catalogue de données**

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

1. Dans le panneau de navigation à gauche, choisissez **politiques**, puis **Créer une politique**.

1. Dans l'onglet **Visual editor** (Éditeur visuel), sélectionnez **Choose a service** (Choisir un service). Choisissez ensuite Athena pour l'ajouter à la politique.

1. Choisissez **Sélectionner des actions**, puis choisissez les actions à ajouter à la politique. L'éditeur visuel affiche les actions disponibles dans Athena. Pour plus d'informations, consultez la rubrique [Actions, ressources et clés de condition pour Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) dans la section *Référence de l'autorisation de service*.

1. Choisissez **Add actions** (Ajouter des actions) pour entrer une action spécifique ou utilisez des caractères génériques (\$1) pour spécifier plusieurs actions. 

   Par défaut, la politique que vous créez autorise les actions que vous choisissez. Si vous avez choisi une ou plusieurs actions qui prennent en charge les autorisations au niveau des ressources pour la ressource `datacatalog` dans Athena, l'éditeur visuel affiche la ressource `datacatalog`. 

1. Choisissez **Ressources** pour spécifier les catalogues de données spécifiques à votre stratégie. Par exemple, des stratégies de catalogue de données JSON, veuillez consulter [Exemple de politiques de catalogue de données](datacatalogs-example-policies.md).

1. Spécifiez la ressource du `datacatalog` comme suit :

   ```
   arn:aws:athena:<region>:<user-account>:datacatalog/<datacatalog-name>
   ```

1. Choisissez **Review policy** (Examiner une politique), puis saisissez un **Name** (Nom) et une **Description** (facultatif) pour la politique que vous êtes en train de créer. Passez en revue le résumé de politique afin de vous assurer que les autorisations nécessaires vous ont été accordées. 

1. Choisissez **Create policy** (Créer une politique) pour enregistrer votre nouvelle politique.

1. Attachez cette stratégie basée sur une identité à un utilisateur, un groupe ou un rôle et spécifiez les ressources `datacatalog` auxquelles ils peuvent accéder.

Pour plus d'informations, consultez les rubriques suivantes dans la section *Référence de l'autorisation de service* et le *Guide de l'utilisateur IAM* :
+ [Actions, ressources et clés de condition pour Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html)
+ [Création de politiques avec l'éditeur visuel](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor)
+ [Ajout et suppression de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)
+ [Contrôle de l'accès aux ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#access_controlling-resources)

Par exemple, des stratégies de catalogue de données JSON, veuillez consulter [Exemple de politiques de catalogue de données](datacatalogs-example-policies.md).

*Pour plus d'informations sur AWS Glue les autorisations et les autorisations d' AWS Glue explorateur, consultez la section [Configuration des autorisations IAM AWS Glue et des conditions requises pour les](https://docs.aws.amazon.com/glue/latest/dg/getting-started-access.html) [robots d'exploration dans le guide du développeur](https://docs.aws.amazon.com/glue/latest/dg/crawler-prereqs.html).AWS Glue *

Pour obtenir une liste complète d'actions Amazon Athena, consultez les noms d'action API dans la rubrique [Référence d'API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). 

# Exemple de politiques de catalogue de données
<a name="datacatalogs-example-policies"></a>

Cette section inclut des exemples de stratégies que vous pouvez utiliser pour activer plusieurs actions sur des catalogues de données.

Le catalogue de données est une ressource IAM gérée par Athena. Par conséquent, si votre stratégie de catalogue de données utilise des actions qui prennent `datacatalog` en entrée, vous devez spécifier l'ARN du catalogue de données comme suit :

```
"Resource": [arn:aws:athena:<region>:<user-account>:datacatalog/<datacatalog-name>]
```

Le `<datacatalog-name>` est le nom de votre catalogue de données. Par exemple, pour un catalogue de données nommé `test_datacatalog`, spécifiez-le en tant que ressource comme suit :

```
"Resource": ["arn:aws:athena:us-east-1:123456789012:datacatalog/test_datacatalog"]
```

Pour obtenir une liste complète d'actions Amazon Athena, consultez les noms d'action API dans la rubrique [Référence d'API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). Pour plus d'informations sur les politiques IAM, consultez la rubrique [Création de politiques avec l'éditeur visuel](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) du *Guide de l'utilisateur IAM*. Pour plus d'informations sur la création de politiques IAM pour les groupes de travail, voir [Contrôle de l’accès aux catalogues de données à l’aide de politiques IAM](datacatalogs-iam-policy.md).
+ [Example Policy for Full Access to All Data Catalogs](#datacatalog-policy-full-access-to-all-data-catalogs)
+ [Example Policy for Full Access to a Specified Data Catalog](#datacatalog-policy-full-access-to-a-specified-catalog)
+ [Example Policy for Querying a Specified Data Catalog](#datacatalog-policy-querying-a-specified-data-catalog)
+ [Example Policy for Management Operations on a Specified Data Catalog](#datacatalog-policy-management-operations-on-a-specified-catalog)
+ [Example Policy for Listing Data Catalogs](#datacatalog-policy-listing-data-catalogs)
+ [Example Policy for Metadata Operations on Data Catalogs](#datacatalog-policy-metadata-operations)

**Example Exemple de politique pour un accès complet à tous les catalogues de données**  
La stratégie suivante permet un accès complet à toutes les ressources de catalogues de données susceptibles d'exister dans le compte. Nous vous recommandons d'utiliser cette stratégie pour ces utilisateurs dans votre compte qui doivent administrer et gérer les catalogues de données pour tous les autres utilisateurs.    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "athena:*"
         ],
         "Resource":[
            "*"
         ]
      }
   ]
}
```

**Example Exemple de politique pour un accès complet à un catalogue de données spécifié**  
La stratégie suivante autorise un accès complet à une seule ressource de catalogue de données spécifique nommée `datacatalogA`. Vous pouvez utiliser cette stratégie pour les utilisateurs ayant un contrôle total sur un catalogue de données en particulier.    
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement":[ { "Effect":"Allow", "Action":[
   "athena:ListDataCatalogs", "athena:ListWorkGroups", "athena:GetDatabase", "athena:ListDatabases",
   "athena:ListTableMetadata", "athena:GetTableMetadata" ], "Resource":"*" }, { "Effect":"Allow",
   "Action":[ "athena:StartQueryExecution", "athena:GetQueryResults", "athena:DeleteNamedQuery",
   "athena:GetNamedQuery", "athena:ListQueryExecutions", "athena:StopQueryExecution",
   "athena:GetQueryResultsStream", "athena:ListNamedQueries", "athena:CreateNamedQuery",
   "athena:GetQueryExecution", "athena:BatchGetNamedQuery", "athena:BatchGetQueryExecution",
   "athena:DeleteWorkGroup", "athena:UpdateWorkGroup", "athena:GetWorkGroup",
   "athena:CreateWorkGroup" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:workgroup/*"
   ] }, { "Effect":"Allow", "Action":[ "athena:CreateDataCatalog", "athena:DeleteDataCatalog",
   "athena:GetDataCatalog", "athena:GetDatabase", "athena:GetTableMetadata", "athena:ListDatabases",
   "athena:ListTableMetadata", "athena:UpdateDataCatalog" ],
      "Resource":"arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
   } ] }
```

**Example Exemple de politique pour interroger un catalogue de données spécifié**  
Dans la stratégie suivante, un utilisateur est autorisé à exécuter des requêtes dans le `datacatalogA` spécifié. L'utilisateur n'est pas autorisé à effectuer des tâches de gestion pour le catalogue de données lui-même, par exemple le mettre à jour ou le supprimer.     
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement":[ { "Effect":"Allow", "Action":[
   "athena:StartQueryExecution" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:workgroup/*"
   ] }, { "Effect":"Allow", "Action":[ "athena:GetDataCatalog" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
   ] } ] }
```

**Example Exemple de politique pour les opérations de gestion sur un catalogue de données spécifié**  
Dans la stratégie suivante, un utilisateur est autorisé à créer, supprimer, obtenir des détails, et mettre à jour un catalogue de données `datacatalogA`.     
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Effect": "Allow", "Action": [
    "athena:CreateDataCatalog", "athena:GetDataCatalog", "athena:DeleteDataCatalog",
    "athena:UpdateDataCatalog" ], "Resource": [
        "arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
    ] } ] }
```

**Example Exemple de politique pour répertorier les catalogues de données**  
La stratégie suivante autorise tous les utilisateurs à répertorier tous les catalogues de données :    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListDataCatalogs"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Exemple de politique pour les opérations de métadonnées sur les catalogues de données**  
La stratégie suivante autorise les opérations de métadonnées sur les catalogues de données :    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetDatabase",
                "athena:GetTableMetadata",
                "athena:ListDatabases",
                "athena:ListTableMetadata"
            ],
            "Resource": "*"
        }
    ]
}
```

# Utiliser un formulaire dans la console Athena pour ajouter un tableau AWS Glue
<a name="data-sources-glue-manual-table"></a>

La procédure suivante vous montre comment utiliser la console Athena pour ajouter une table à l'aide du formulaire **Create Table From S3 bucket data** (Créer une table à partir des données du compartiment S3).

**Ajout d'une table et saisie des informations de schéma à l'aide d'un formulaire**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans l'éditeur de requêtes, à côté de **Tables and views** (Tables et vues), choisissez **Create** (Créer) puis choisissez **S3 bucket data** (Données de compartiment S3).

1. Dans le formulaire **Create Table From S3 bucket data** (Créer une table à partir des données du compartiment S3), pour **Table name** (Nom de la table), saisissez le nom de la table. Pour plus d’informations sur les caractères admis dans les noms de base de données, de table et de colonne dans Athena, consultez [Attribution de noms aux tables, aux bases de données et aux colonnes](tables-databases-columns-names.md).

1. Pour **Database configuration** (Configuration de la base de données), choisissez une base de données existante ou créez-en une.

1. Pour **Location of Input Data Set** (Emplacement du jeu de données en entrée), spécifiez le chemin d'accès dans Simple Storage Service (Amazon S3) au dossier contenant le jeu de données que vous souhaitez traiter. N'incluez pas de nom de fichier dans le chemin. Athena analyse tous les fichiers dans le dossier que vous spécifiez. Si vos données sont déjà partitionnées (par exemple, 

    s3://amzn-s3-demo -bucket/logs/year=2004/month=12/day=11/), enter the base path only (for example, s3://amzn-s3-demo-bucket/logs/).

1. Pour **Data Format** (Format des données), choisissez l'une des options suivantes :
   + Pour le **type de table**, choisissez **Apache Hive**, **Apache Iceberg** ou **Delta Lake**. Athena utilise le type de table Apache Hive par défaut. Pour plus d'informations sur l'interrogation des tables Apache Iceberg dans Athena, voir [Interrogation des tables Apache Iceberg](querying-iceberg.md). Pour plus d'informations sur l'utilisation des tables Delta Lake dans Athena, voir [Interrogation des tables Linux Foundation Delta Lake](delta-lake-tables.md).
   + Pour **File format** (Format de fichier), choisissez le format de fichier ou de journal dans lequel se trouvent vos données.
     + Pour l'option **Text File with Custom Delimiters** (Fichier texte avec délimiteurs personnalisés), spécifiez un **Field Terminator** (Délimiteur de champ) (c'est-à-dire un délimiteur de colonne). Vous pouvez éventuellement spécifier un **délimiteur de collection** qui marque la fin d'un type de tableau ou un **délimiteur de collection** qui marque la fin d'un type de données cartographiques.
   + **SerDe bibliothèque** — Une bibliothèque SerDe (sérialiseur-désérialiseur) analyse un format de données particulier afin qu'Athena puisse créer une table pour celui-ci. Pour la plupart des formats, une SerDe bibliothèque par défaut est choisie pour vous. Pour les formats suivants, choisissez une bibliothèque en fonction de vos exigences :
     + **Apache Web Logs** : choisissez la **GrokSerDe**bibliothèque **RegexSerDe**ou la bibliothèque. Pour RegexSerDe, fournissez une expression régulière dans la zone de **définition de Regex**. Pour GrokSerDe, fournissez une série d'expressions régulières nommées pour la `input.format` SerDe propriété. Les expressions régulières nommées sont plus faciles à lire et à gérer que les expressions régulières. Pour de plus amples informations, veuillez consulter [Interrogation des journaux Apache stockés dans Amazon S3](querying-apache-logs.md).
     + **CSV** — Choisissez **LazySimpleSerDe**si vos données séparées par des virgules ne contiennent pas de valeurs entre guillemets ou si elles utilisent le `java.sql.Timestamp` format. Choisissez **Open CSVSer De** si vos données incluent des guillemets ou utilisent le format numérique UNIX pour `TIMESTAMP` (par exemple,`1564610311`). Pour plus d’informations, consultez [Lazy Simple SerDe pour les fichiers CSV, TSV et délimités sur mesure](lazy-simple-serde.md) et [Ouvrez le fichier CSV SerDe pour le traitement du fichier CSV](csv-serde.md).
     + **JSON** — Choisissez la bibliothèque JSON **OpenX** ou **Hive.** SerDe Les deux formats nécessitent que chaque document JSON soit sur une seule ligne de texte et que les champs ne soient pas séparés par des caractères de saut de ligne. L'OpenX SerDe offre quelques propriétés supplémentaires. Pour de plus amples informations sur ces propriétés, veuillez consulter [OpenX JSON SerDe](openx-json-serde.md). Pour plus d'informations sur le Hive SerDe, consultez[Hive JSON SerDe](hive-json-serde.md).

     Pour plus d'informations sur l'utilisation SerDe des bibliothèques dans Athena, consultez. [Choisissez un SerDe pour vos données](supported-serdes.md)

1. Pour les **SerDe propriétés**, ajoutez, modifiez ou supprimez des propriétés et des valeurs en fonction de la SerDe bibliothèque que vous utilisez et de vos besoins.
   + Pour ajouter une SerDe propriété, choisissez **Ajouter une SerDe propriété**.
   + Dans le champ **Name** (Nom), saisissez le nom de la propriété. 
   + Dans le champ **Value** (Valeur), saisissez une valeur pour la propriété. 
   + Pour supprimer une SerDe propriété, choisissez **Supprimer**.

1. Pour **Table properties** (Propriétés de table), choisissez ou modifiez les propriétés de la table en fonction de vos exigences.
   + Pour **Write compression** (Compression d'écriture), choisissez une option de compression. La disponibilité de l'option de compression d'écriture et des options de compression dépend du format des données. Pour de plus amples informations, veuillez consulter [Utilisation de la compression dans Athena](compression-formats.md).
   + Pour **Encryption** (Chiffrement), sélectionnez **Encrypted data set** (Jeu de données chiffrées) si les données sous-jacentes sont chiffrées dans Amazon S3. Cette option définit la propriété de table `has_encrypted_data` sur « true » (vrai) dans l'instruction `CREATE TABLE`.

1. Pour **Column details** (Détails de colonne), saisissez les noms et les types de données des colonnes que vous souhaitez ajouter à la table.
   + Pour ajouter d'autres colonnes une par une, choisissez **Add a column** (Ajouter une colonne).
   + Pour ajouter rapidement d'autres colonnes, choisissez **Bulk add columns** (Ajouter des colonnes en bloc). Dans la zone de texte, entrez une liste de colonnes séparées par des virgules au format *column\$1name* *data\$1type* [*column\$1name**data\$1type*,...], puis choisissez **Ajouter**.

1. (Facultatif) Pour **Partition details** (Détails de partition), ajoutez un ou plusieurs noms de colonnes et des types de données. Le partitionnement permet de conserver les données associées en fonction des valeurs des colonnes et peut contribuer à réduire la quantité de données scannées par requête. Pour plus d'informations sur le partitionnement, voir [Partitionner vos données](partitions.md).

1. (Facultatif) Pour **Bucketing** (Mise en compartiments), vous pouvez spécifier une ou plusieurs colonnes contenant des lignes que vous souhaitez regrouper, puis placer ces lignes dans plusieurs compartiments. Cela vous permet d'interroger uniquement le compartiment que vous souhaitez lire lorsque la valeur des colonnes mises en compartiments est spécifiée.
   + Pour **Buckets** (Compartiments), sélectionnez une ou plusieurs colonnes comportant un grand nombre de valeurs uniques (par exemple, une clé primaire) et qui sont fréquemment utilisées pour filtrer les données de vos requêtes.
   + Pour **Number of buckets** (Nombre de compartiments), saisissez un nombre permettant aux fichiers d'avoir une taille optimale. Pour plus d'informations, consultez les [10 meilleurs conseils d'optimisation des performances pour Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) sur le blog AWS Big Data.
   + Pour spécifier vos colonnes mises en compartiments, l'instruction `CREATE TABLE` utilisera la syntaxe suivante :

     ```
     CLUSTERED BY (bucketed_columns) INTO number_of_buckets BUCKETS
     ```
**Note**  
L'option **Bucketing** (Mise en compartiments) n'est pas disponible pour le type de table **Iceberg**.

1. La zone **Preview table query** (Requête de prévisualisation de table) affiche l'instruction `CREATE TABLE` générée par les informations que vous avez saisies dans le formulaire. L'instruction de prévisualisation ne peut pas être modifiée directement. Pour modifier l'instruction, modifiez les champs du formulaire au-dessus de l'aperçu, ou [créez directement l'instruction](creating-tables-how-to.md#to-create-a-table-using-hive-ddl) dans l'éditeur de requêtes au lieu d'utiliser le formulaire. 

1. Choisissez **Create table** (Créer une table) pour exécuter l'instruction générée dans l'éditeur de requêtes et créer la table.

# Utilisation d’un robot pour ajouter une table
<a name="schema-crawlers"></a>

AWS Glue les robots d'exploration aident à découvrir le schéma des ensembles de données et à les enregistrer sous forme de tables dans le catalogue de AWS Glue données. Les Crawlers explorent vos données et en déterminent le schéma. De plus, le Crawler peut détecter et enregistrer des partitions. Pour plus d'informations, consultez [Définition des Crawlers](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) dans le *Guide du développeur AWS Glue *. Les tables de données dont l'analyse a abouti peuvent être interrogées à partir d'Athena.

**Note**  
Athena ne reconnaît pas les [modèles d'exclusion](https://docs.aws.amazon.com/glue/latest/dg/define-crawler.html#crawler-data-stores-exclude) que vous spécifiez pour un AWS Glue robot d'exploration. Par exemple, si vous disposez d'un compartiment Simple Storage Service (Amazon S3) contenant à la fois des fichiers `.csv` et `.json` et que vous excluez les fichiers `.json` du Crawler, Athena interroge les deux groupes de fichiers. Pour éviter cela, placez les fichiers que vous voulez exclure dans un autre emplacement. 

## Création d'un AWS Glue crawler
<a name="data-sources-glue-crawler-setup"></a>

Vous pouvez créer un crawler en commençant dans la console Athena, puis en utilisant la console AWS Glue de manière intégrée. Lorsque vous créez le crawler, vous spécifiez un emplacement de données à analyser dans Simple Storage Service (Amazon S3).

**Pour créer un robot d'exploration à AWS Glue partir de la console Athena**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans l'éditeur de requêtes, à côté de **Tables and views (Tables et vues)**, choisissez **Create** (Créer) puis choisissez le **crawler AWS Glue **. 

1. Sur la page **Add crawler** (Ajouter un crawler) de la console **AWS Glue**, procédez comme suit pour créer un crawler. Pour plus d'informations, consultez les [sections Utilisation AWS Glue des robots](#schema-crawlers) d'exploration dans ce guide et [Remplissage du AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/populate-catalog-methods.html) manuel du *AWS Glue développeur*.

**Note**  
Athena ne reconnaît pas les [modèles d'exclusion](https://docs.aws.amazon.com/glue/latest/dg/define-crawler.html#crawler-data-stores-exclude) que vous spécifiez pour un AWS Glue robot d'exploration. Par exemple, si vous disposez d'un compartiment Simple Storage Service (Amazon S3) contenant à la fois des fichiers `.csv` et `.json` et que vous excluez les fichiers `.json` du Crawler, Athena interroge les deux groupes de fichiers. Pour éviter cela, placez les fichiers que vous voulez exclure dans un autre emplacement.

Après un crawl, le AWS Glue robot attribue automatiquement certaines métadonnées aux tables afin de les rendre compatibles avec d'autres technologies externes telles qu'Apache Hive, Presto et Spark. De temps en temps, le Crawler peut attribuer de manière incorrecte les propriétés des métadonnées. Corrigez manuellement les propriétés AWS Glue avant d'interroger la table à l'aide d'Athena. Pour en savoir plus, consultez [Affichage et modification des détails de table](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html#console-tables-details) dans le *Guide du développeur AWS Glue *.

AWS Glue peut mal affecter les métadonnées lorsqu'un fichier CSV contient des guillemets autour de chaque champ de données, ce qui entraîne une erreur de `serializationLib` propriété. Pour de plus amples informations, veuillez consulter [Gestion des données CSV entre guillemets](schema-csv.md#schema-csv-quotes).

# Utilisation de plusieurs sources de données avec un robot
<a name="schema-crawlers-data-sources"></a>

Lorsqu'un AWS Glue robot d'exploration analyse Amazon S3 et détecte plusieurs répertoires, il utilise une heuristique pour déterminer où se trouve la racine d'une table dans la structure du répertoire et quels répertoires sont des partitions de la table. Dans certains cas, si le schéma détecté dans deux ou plusieurs répertoires est similaire, le Crawler peut les traiter comme des partitions et pas comme des tables distinctes. L'une des solutions pour aider le Crawler à découvrir les tables individuelles consiste à ajouter le répertoire racine de chaque table comme magasin de données du analyseur.

Les partitions suivantes dans Simple Storage Service (Amazon S3) constituent un example :

```
s3://amzn-s3-demo-bucket/folder1/table1/partition1/file.txt
s3://amzn-s3-demo-bucket/folder1/table1/partition2/file.txt
s3://amzn-s3-demo-bucket/folder1/table1/partition3/file.txt
s3://amzn-s3-demo-bucket/folder1/table2/partition4/file.txt
s3://amzn-s3-demo-bucket/folder1/table2/partition5/file.txt
```

Si le schéma pour `table1` et `table2` est similaire, et si une seule source de données est définie sur `s3://amzn-s3-demo-bucket/folder1/` in AWS Glue, le robot d'exploration peut créer une table unique avec deux colonnes de partition : une colonne de partition contenant `table1` et`table2`, et une seconde colonne de partition contenant `partition1` des `partition5`

Pour que le AWS Glue robot crée deux tables distinctes, configurez le robot de manière à ce qu'il dispose de deux sources de données`s3://amzn-s3-demo-bucket/folder1/table2`, `s3://amzn-s3-demo-bucket/folder1/table1/` et comme indiqué dans la procédure suivante.

**Pour ajouter un magasin de données S3 à un robot d'exploration existant 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 panneau de navigation, sélectionnez **Crawlers**. (Analyseurs)

1. Choisissez le lien vers votre crawler, puis choisissez **Modification**. 

1. **Étape 2 : Choisir des sources de données et des classificateurs**, choisissez **Modification**. 

1. Dans **Sources de données et catalogues**, sélectionnez **Ajouter une source de données**.

1. Dans la boite de dialogue **Ajouter une source de données** pour le **Chemin S3**, choisissez **Parcourir**. 

1. Choisissez le compartiment que vous souhaitez utiliser, ensuite choisissez **Sélectionner un plan**.

   La source de données que vous avez ajoutée apparaît dans la liste **Sources de données**.

1. Choisissez **Suivant**.

1. Sur la page **Configurer les paramètres de sécurité**, ou créez ou choisissez un rôle IAM pour le crawler, puis sélectionnez **Suivant**.

1. Assurez-vous que le chemin S3 se termine par une barre oblique, avant de choisir ensuite **Ajouter une source de données S3**.

1. Sur la page **Régler la sortie et la planification**, pour la **Configuration de sortie**, sélectionnez la base de données cible.

1. Choisissez **Suivant**.

1. Sur la page **Vérifier et mettre à jour**, passez en revue les choix que vous avez effectués. Pour modifier une étape, sélectionnez **Modification**.

1.  Choisissez **Mettre à jour**.

# Planifiez un robot d'exploration pour synchroniser Amazon S3 AWS Glue Data Catalog et Amazon S3
<a name="schema-crawlers-schedule"></a>

AWS Glue les robots d'exploration peuvent être configurés pour fonctionner selon un calendrier ou à la demande. Pour en savoir plus, consultez [Planifications temporelles pour les tâches et les Crawlers](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html) dans le *Guide du développeur AWS Glue *.

Si des données arrivent pour une table partitionnée à une heure fixe, vous pouvez configurer un AWS Glue robot d'exploration pour qu'il s'exécute selon le calendrier prévu afin de détecter et de mettre à jour les partitions de table. Cela peut éliminer la nécessité d'exécuter une commande `MSCK REPAIR` potentiellement longue et coûteuse ou d'exécuter manuellement une commande `ALTER TABLE ADD PARTITION`. Pour en savoir plus, consultez [Partitions de table](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html#tables-partition) dans le *Guide du développeur AWS Glue *.

# Optimisez les requêtes grâce à l'indexation et au filtrage des AWS Glue partitions
<a name="glue-best-practices-partition-index"></a>

Lors de l'interrogation de tables partitionnées, Athena récupère et filtre les partitions de table disponibles vers le sous-ensemble correspondant à votre requête. À mesure que de nouvelles données et partitions sont ajoutées, il faut plus de temps pour traiter les partitions et l'exécution des requêtes peut augmenter. Si vous disposez d'une table avec un grand nombre de partitions qui croît au fil du temps, envisagez d'utiliser indexation et filtrage des partitions AWS Glue . L'indexation des partitions permet à Athena d'optimiser le traitement des partitions et d'améliorer les performances des requêtes sur les tables fortement partitionnées. La configuration du filtrage de partition dans les propriétés d'une table s'effectue en deux étapes :

1. Création d'un index de partition dans AWS Glue.

1. Activation du filtrage des partitions pour la table.

## Création d'un index de partition
<a name="glue-best-practices-partition-index-creating"></a>

Pour savoir comment créer un index de partition dans AWS Glue, consultez la section [Utilisation des index de partition](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html) dans le Guide du AWS Glue développeur. Pour connaître les limites relatives aux index de partition dans AWS Glue, consultez la section [À propos des index de partition](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html#partition-index-1) de cette page.

## Activation du filtrage de partition
<a name="glue-best-practices-partition-filtering-enabling"></a>

Pour activer le filtrage des partitions pour la table, vous devez définir une nouvelle propriété de table dans AWS Glue. Pour savoir comment définir les propriétés d'une table dans AWS Glue, reportez-vous à la page [Configuration de la projection par partition](https://docs.aws.amazon.com/athena/latest/ug/partition-projection-setting-up.html). Lorsque vous modifiez les détails de la table dans AWS Glue, ajoutez la paire clé-valeur suivante à la section **Propriétés de la table** :
+ Pour **Key (Clé)**, ajoutez `partition_filtering.enabled`
+ Pour **Value (Valeur)**, ajoutez `true`

Vous pouvez désactiver le filtrage de partition sur cette table à tout moment en définissant la valeur `partition_filtering.enabled` sur `false`.

Une fois que vous avez terminé les étapes ci-dessus, vous pouvez revenir à la console Athena pour interroger les données.

Pour plus d'informations sur l'utilisation de l'indexation et du filtrage des partitions, consultez la section [Améliorer les performances des requêtes Amazon Athena à AWS Glue Data Catalog l'aide d'index de partition](https://aws.amazon.com/blogs/big-data/improve-amazon-athena-query-performance-using-aws-glue-data-catalog-partition-indexes/) sur *AWS le* blog Big Data.

# Utilisez le AWS CLI pour recréer une AWS Glue base de données et ses tables
<a name="glue-recreate-db-and-tables-cli"></a>

Il n'est pas possible de renommer directement une AWS Glue base de données, mais vous pouvez copier sa définition, modifier la définition et utiliser la définition pour recréer la base de données sous un autre nom. De même, vous pouvez copier les définitions des tables de l'ancienne base de données, modifier les définitions et utiliser les définitions modifiées pour recréer les tables de la nouvelle base de données.

**Note**  
 La méthode présentée ne copie pas le partitionnement des tables. 

La procédure suivante pour Windows suppose que vous êtes AWS CLI configuré pour la sortie JSON. Pour modifier le format de sortie par défaut dans le AWS CLI, exécutez`aws configure`.

**Pour copier une AWS Glue base de données à l'aide du AWS CLI**

1. À l'invite de commandes, exécutez la AWS CLI commande suivante pour récupérer la définition de la AWS Glue base de données que vous souhaitez copier.

   ```
   aws glue get-database --name database_name
   ```

   Pour obtenir plus d'informations sur la commande `get-database`, consultez [get-database](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-database.html).

1. Enregistrez la sortie JSON dans un fichier portant le nom de la nouvelle base de données (par exemple,`new_database_name.json`) sur votre bureau.

1. Ouvrez le fichier `new_database_name.json` dans un éditeur de texte.

1. Dans le fichier JSON, effectuez les étapes suivantes :

   1. Supprimez l’entrée `{ "Database":` extérieure et le crochet de fermeture correspondant `}` à la fin du fichier.

   1. Remplacez l’entrée `Name` par le nom de la nouvelle base de données.

   1. Supprimez le champ `CatalogId`.

1. Enregistrez le fichier.

1. À l'invite de commandes, exécutez la AWS CLI commande suivante pour utiliser le fichier de définition de base de données modifié afin de créer la base de données sous le nouveau nom.

   ```
   aws glue create-database --database-input "file://~/Desktop\new_database_name.json"
   ```

   Pour obtenir plus d'informations sur la commande `create-database`, consultez [create-database](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-database.html). Pour plus d'informations sur le chargement de AWS CLI paramètres depuis un fichier, consultez la section [Chargement de AWS CLI paramètres depuis un fichier](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html) dans le *Guide de AWS Command Line Interface l'utilisateur*.

1. Pour vérifier que la nouvelle base de données a été créée dans AWS Glue, exécutez la commande suivante :

   ```
   aws glue get-database --name new_database_name
   ```

Vous êtes maintenant prêt à obtenir la définition d'une table à copier dans la nouvelle base de données, à modifier la définition et à utiliser la définition modifiée pour recréer la table dans la nouvelle base de données. Cette procédure ne modifie pas le nom de la table.

**Pour copier un AWS Glue tableau à l'aide du AWS CLI**

1. À l'invite de commande, exécutez la AWS CLI commande suivante.

   ```
   aws glue get-table --database-name database_name --name table_name
   ```

   Pour obtenir plus d'informations sur la commande `get-table`, consultez [get-table](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-table.html).

1. Enregistrez la sortie JSON dans un fichier portant le nom de la table (par exemple, *table\$1name* .json) sur votre bureau Windows.

1. Ouvrez le fichier dans un éditeur de texte.

1. Dans le fichier JSON, supprimez l'entrée `{"Table": ` extérieure et le crochet de fermeture correspondant `}` à la fin du fichier.

1. Dans le fichier JSON, supprimez les entrées suivantes et leurs valeurs :
   + `DatabaseName` – Cette entrée n'est pas obligatoire, car la commande CLI `create-table` utilise le paramètre `--database-name`.
   + `CreateTime`
   + `UpdateTime`
   + `CreatedBy`
   + `IsRegisteredWithLakeFormation`
   + `CatalogId`
   + `VersionId`

1. Enregistrez le fichier de définition de table.

1. À l'invite de commande, exécutez la AWS CLI commande suivante pour recréer la table dans la nouvelle base de données :

   ```
   aws glue create-table --database-name new_database_name --table-input "file://~/Desktop\table_name.json"     
   ```

   Pour obtenir plus d'informations sur la commande `create-table`, consultez [create-table](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-table.html).

   La table apparaît désormais dans la nouvelle base de données AWS Glue et peut être interrogée auprès d'Athena.

1. Répétez les étapes pour copier chaque table supplémentaire dans la nouvelle base de données dans AWS Glue.

# Création de tables dans le cadre de tâches d’extraction, de transformation et de chargement (ETL)
<a name="schema-classifier"></a>

Vous pouvez utiliser Athena pour créer des tables AWS Glue utilisables pour les tâches ETL. AWS Glue les jobs exécutent des opérations ETL. Une AWS Glue tâche exécute un script qui extrait les données des sources, les transforme et les charge dans des cibles. Pour plus d'informations, consultez la section [Création de tâches dans AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) dans le *manuel du AWS Glue développeur*.

## Création de tables Athena pour les tâches ETL AWS Glue
<a name="schema-etl-tables"></a>

Les tables que vous créez dans Athena doivent se voir ajouter une propriété de table appelée `classification`, qui identifie le format des données. Ceci permet à AWS Glue d'être en mesure d'utiliser les tables pour les tâches ETL. Les valeurs de classification peuvent être `avro`, `csv`, `json`, `orc`, `parquet`, ou `xml`. Voici un exemple d'instruction `CREATE TABLE` dans Athena :

```
CREATE EXTERNAL TABLE sampleTable (
  column1 INT,
  column2 INT
  ) STORED AS PARQUET
  TBLPROPERTIES (
  'classification'='parquet')
```

Si la propriété de `classification` table n'a pas été ajoutée lors de la création de la table, vous pouvez l'ajouter à l'aide de la AWS Glue console.

**Pour ajouter la propriété de la table de classification à l'aide de 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 de la console, choisissez **Tableaux**.

1. Choisissez le lien de la table que vous souhaitez modifier, puis sélectionnez **Action**, **Modifier la table**.

1. Faites défiler vers le bas jusqu'à la section des **Propriétés du tableau**.

1. Choisissez **Ajouter**.

1. Pour **Key** (Clé), saisissez **classification**.

1. Pour la **Valeur**, entrez un type de données (**json** par exemple).

1. Choisissez **Enregistrer**.

   Dans la section **Détails de la table**, le type de données que vous avez saisi apparaîssent dans le champ **Classification** du tableau.

Pour en savoir plus, consultez [Utilisation des tables](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html) dans le *Guide du développeur AWS Glue *.

## Utilisation des tâches ETL pour optimiser les performances des requêtes
<a name="schema-etl-performance"></a>

AWS Glue les jobs peuvent vous aider à transformer les données dans un format qui optimise les performances des requêtes dans Athena. Les formats de données ont un grand impact sur les performances et les coûts d'interrogation dans Athena.

AWS Glue prend en charge l'écriture aux formats de données Parquet et ORC. Vous pouvez utiliser cette fonctionnalité pour transformer vos données afin de les utiliser dans Athena. Pour plus d’informations sur l’utilisation des formats Parquet et ORC et sur les autres manières d’améliorer les performances dans Athena, consultez [Top 10 performance tuning tips for Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/).

**Note**  
Pour réduire le risque qu'Athena ne soit pas en mesure de lire les `SMALLINT` types de `TINYINT` données produits par une tâche AWS Glue ETL, convertissez `SMALLINT` et `TINYINT` vers `INT` lorsque vous créez une tâche ETL qui convertit les données en ORC.

## Automatisez AWS Glue les tâches pour l'ETL
<a name="schema-etl-automate"></a>

Vous pouvez configurer les tâches AWS Glue ETL pour qu'elles s'exécutent automatiquement en fonction de déclencheurs. Cette fonctionnalité est idéale lorsque des données provenant de l'extérieur AWS sont transférées vers un compartiment Amazon S3 dans un format par ailleurs sous-optimal pour les requêtes dans Athena. Pour plus d'informations, consultez la section [Déclenchement de AWS Glue tâches](https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html) dans le *guide du AWS Glue développeur*.

# Travaillez avec des données CSV dans AWS Glue
<a name="schema-csv"></a>

Cette page décrit comment créer un schéma AWS Glue à partir de fichiers CSV comportant des guillemets autour des valeurs de données pour chaque colonne ou à partir de fichiers CSV contenant des valeurs d'en-tête.

## Gestion des données CSV entre guillemets
<a name="schema-csv-quotes"></a>

Supposons qu’un fichier CSV comporte des champs de données entre guillemets, comme dans l’exemple suivant.

```
"John","Doe","123-555-1231","John said \"hello\""
"Jane","Doe","123-555-9876","Jane said \"hello\""
```

Pour exécuter une requête dans Athena sur une table créée à partir d'un fichier CSV contenant des valeurs entre guillemets, vous devez modifier les propriétés de la table AWS Glue pour utiliser l'Open CSVSer De. Pour plus d'informations sur SerDe OpenCSV, consultez. [Ouvrez le fichier CSV SerDe pour le traitement du fichier CSV](csv-serde.md)

**Pour modifier les propriétés du tableau dans la AWS Glue console**

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

1. Choisissez le lien de la table que vous souhaitez modifier, puis sélectionnez **Action**, **Modifier la table**.

1. Sur la page **Modifier le tableau**, procédez au modifications suivantes :
   + Dans la **Bibliothèque de sérialisation**, saisissez `org.apache.hadoop.hive.serde2.OpenCSVSerde`.
   + Pour **Serde parameters** (Paramètres Serde), saisissez les valeurs suivantes pour les clés `escapeChar`, `quoteChar` et `separatorChar` : 
     + Pour `escapeChar`, saisissez une barre oblique inverse (**\$1**).
     + Pour `quoteChar`, saisissez un guillemet double (**"**).
     + Pour `separatorChar`, saisissez une virgule (**,**).

1. Choisissez **Enregistrer**.

Pour en savoir plus, consultez [Affichage et modification des détails de table](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html#console-tables-details) dans le *Guide du développeur AWS Glue *.

Vous pouvez également mettre à jour les propriétés des AWS Glue tables par programmation. Utilisez l'opération AWS Glue [UpdateTable](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateTable.html)API ou la AWS CLI commande [update-table](https://docs.aws.amazon.com/cli/latest/reference/glue/update-table.html) pour modifier le `SerDeInfo` bloc dans la définition de la table, comme dans l'exemple JSON suivant.

```
"SerDeInfo": {
   "name": "",
   "serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
   "parameters": {
      "separatorChar": ","
      "quoteChar": "\""
      "escapeChar": "\\"
      }
},
```

## Gestion des fichiers CSV avec en-têtes
<a name="schema-csv-headers"></a>

Lorsque vous définissez une table dans Athena avec une instruction `CREATE TABLE`, vous pouvez utiliser la propriété de table `skip.header.line.count` pour ignorer les en-têtes dans vos données CSV, comme dans l'exemple suivant.

```
...
STORED AS TEXTFILE
LOCATION 's3://amzn-s3-demo-bucket/csvdata_folder/';
TBLPROPERTIES ("skip.header.line.count"="1")
```

Vous pouvez également supprimer les en-têtes CSV au préalable afin que les informations d'en-tête ne soient pas incluses dans les résultats des requêtes Athena. Pour cela, vous pouvez utiliser des tâches AWS Glue , qui exécutent le travail d'extraction, de transformation et de chargement (ETL). Vous pouvez écrire des scripts en AWS Glue utilisant un langage qui est une extension du dialecte PySpark Python. Pour plus d'informations, consultez la section [Création de tâches dans AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) dans le *manuel du AWS Glue développeur*.

L'exemple suivant montre une fonction dans un AWS Glue script qui écrit un cadre dynamique en utilisant `from_options` et définit l'option de `writeHeader` format sur false, ce qui supprime les informations d'en-tête :

```
glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": "s3://amzn-s3-demo-bucket/MYTABLEDATA/"}, format = "csv", format_options = {"writeHeader": False}, transformation_ctx = "datasink2")
```

# Travaillez avec des données géospatiales dans AWS Glue
<a name="schema-geospatial"></a>

AWS Glue ne prend pas en charge nativement le texte connu (WKT), le binaire connu (WKB) ou les autres types de données PostGIS. Le AWS Glue classificateur analyse les données géospatiales et les classe à l'aide des types de données pris en charge pour le format, par exemple pour CSV. `varchar` Comme pour les autres AWS Glue tables, vous devrez peut-être mettre à jour les propriétés des tables créées à partir de données géospatiales pour permettre à Athena d'analyser ces types de données tels quels. Pour plus d’informations, consultez [Utilisation d’un robot pour ajouter une table](schema-crawlers.md) et [Travaillez avec des données CSV dans AWS Glue](schema-csv.md). Athena ne sera peut-être pas en mesure d'analyser certains types de données géospatiales dans les tables telles quelles. AWS Glue Pour de plus amples informations sur l'utilisation des données géospatiales dans Athena, veuillez consulter [Interrogation des données géospatiales](querying-geospatial-data.md).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## Conditions préalables
<a name="connectors-datalakegentwo-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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


****  

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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

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


****  

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

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

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


****  

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

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

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


****  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## Conditions préalables
<a name="connectors-synapse-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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


****  

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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

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


****  

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

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

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

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

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

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

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

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

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

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

**Visualisation de votre secret dans Secrets Manager**

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

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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

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


****  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

## Conditions préalables
<a name="connectors-hive-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ Avant d’utiliser ce connecteur, configurez un VPC et un groupe de sécurité. Pour plus d’informations, consultez [Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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


****  

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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

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


****  

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

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

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


****  

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

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

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


****  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

## Conditions préalables
<a name="connectors-impala-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ Avant d’utiliser ce connecteur, configurez un VPC et un groupe de sécurité. Pour plus d’informations, consultez [Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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


****  

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

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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

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


****  

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

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

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


****  

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

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

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


****  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

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

## Conditions préalables
<a name="connectors-cloudwatch-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

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

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

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

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

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

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

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

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

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

### Connexions héritées
<a name="connectors-cloudwatch-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

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

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

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

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

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

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

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

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

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

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-cloudwatch.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudwatch/athena-cloudwatch.yaml). La liste suivante résume les autorisations requises.
+ **Amazon S3 write access** (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
+ **Athena GetQueryExecution** — Le connecteur utilise cette autorisation pour échouer rapidement lorsque la requête Athena en amont est terminée.
+ **CloudWatch Lecture/écriture des journaux** : le connecteur utilise cette autorisation pour lire les données de vos journaux et écrire ses journaux de diagnostic.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

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

## Conditions préalables
<a name="connectors-cwmetrics-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

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

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

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

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

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

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

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

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

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

### Connexions héritées
<a name="connectors-cwmetrics-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

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

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

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

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

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

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

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

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

Pour plus de détails sur les politiques IAM requises par ce connecteur, consultez la `Policies` section du [athena-cloudwatch-metricsfichier .yaml.](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudwatch-metrics/athena-cloudwatch-metrics.yaml) La liste suivante résume les autorisations requises.
+ **Amazon S3 write access** (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
+ **Athena GetQueryExecution** — Le connecteur utilise cette autorisation pour échouer rapidement lorsque la requête Athena en amont est terminée.
+ **CloudWatch Métriques ReadOnly** — Le connecteur utilise cette autorisation pour interroger les données de vos métriques.
+ **CloudWatch Enregistrement des journaux** : le connecteur utilise cet accès pour écrire ses journaux de diagnostic.

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

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

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

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

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

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

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

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

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

## Conditions préalables
<a name="connectors-cmdb-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

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

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

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

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

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

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

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

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

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

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

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

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.

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

**Propriétés d’environnement Lambda**
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **default\$1ec2\$1image\$1owner — (Facultatif) Lorsque cette option est définie, elle contrôle le propriétaire** [de l'image Amazon par défaut qui filtre les Amazon Machine EC2 Images (AMI).](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) Si vous ne définissez pas cette valeur et que votre requête par rapport à la table EC2 des images n'inclut pas de filtre pour le propriétaire, vos résultats incluront toutes les images publiques.

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

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

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

Pour plus de détails sur les politiques IAM requises par ce connecteur, consultez la `Policies` section du [athena-aws-cmdbfichier .yaml.](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-aws-cmdb/athena-aws-cmdb.yaml) La liste suivante résume les autorisations requises.
+ **Amazon S3 write access** (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
+ **Athena GetQueryExecution** — Le connecteur utilise cette autorisation pour échouer rapidement lorsque la requête Athena en amont est terminée.
+ **S3 List** (Liste S3) – Le connecteur utilise cette autorisation pour répertorier vos compartiments et vos objets Amazon S3.
+ **EC2 Décrire** — Le connecteur utilise cette autorisation pour décrire des ressources telles que vos EC2 instances Amazon, vos groupes de sécurité et vos volumes Amazon EBS. VPCs
+ **EMR Descrire/Liste** (Description EMR/Liste) – Le connecteur utilise cette autorisation pour décrire vos clusters EMR.
+ **RDS Describe** (Description RDS) – Le connecteur utilise cette autorisation pour décrire vos instances RDS.

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

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

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

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

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

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

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

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

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

## Conditions préalables
<a name="connectors-dbtwo-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ Avant d’utiliser ce connecteur, configurez un VPC et un groupe de sécurité. Pour plus d’informations, consultez [Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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


****  

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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

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


****  

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

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

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


****  

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

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

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


****  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## Conditions préalables
<a name="connectors-db2as400-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ Avant d’utiliser ce connecteur, configurez un VPC et un groupe de sécurité. Pour plus d’informations, consultez [Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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


****  

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

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

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

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

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

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

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

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

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

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

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

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


****  

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

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


****  

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

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

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


****  

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

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

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


****  

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

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

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


****  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Le connecteur Amazon Athena DocumentDB permet à Amazon Athena de communiquer avec vos instances DocumentDB afin que vous puissiez interroger vos données DocumentDB avec SQL. Le connecteur fonctionne également avec n'importe quel point de terminaison compatible avec MongoDB.

Contrairement aux magasins de données relatives traditionnels, les collections Amazon DocumentDB n’ont pas de schéma défini. DocumentDB n’a pas de magasin de métadonnées. Chaque entrée d’une collection DocumentDB peut comporter des champs et des types de données différents.

Le connecteur DocumentDB prend en charge deux mécanismes pour générer des informations de schéma de table : l'inférence de schéma de base et les métadonnées. AWS Glue Data Catalog 

L’inférence de schéma est la valeur par défaut. Cette option analyse un petit nombre de documents de votre collection, réunit tous les champs et impose des champs dont les types de données ne se chevauchent pas. Cette option fonctionne bien pour les collections dont les entrées sont généralement uniformes.

Pour les collections comportant une plus grande variété de types de données, le connecteur prend en charge la récupération de métadonnées à partir du AWS Glue Data Catalog. Si le connecteur détecte une AWS Glue base de données et une table qui correspondent aux noms de votre base de données et de collection DocumentDB, il obtient ses informations de schéma dans la table correspondante AWS Glue . Lorsque vous créez votre AWS Glue table, nous vous recommandons d'en faire un sur-ensemble de tous les champs auxquels vous souhaitez accéder depuis votre collection DocumentDB. 

Si Lake Formation est activé sur votre compte, le rôle IAM de votre connecteur Lambda fédéré Athena que vous avez déployé dans AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

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

## Conditions préalables
<a name="connectors-docdb-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

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

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

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

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

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

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

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

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

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

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

### Connexions héritées
<a name="connectors-docdb-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **disable\$1glue** — (Facultatif) S'il est présent et défini sur true, le connecteur ne tente pas de récupérer des métadonnées supplémentaires à partir de. AWS Glue
+ **glue\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.
+ **default\$1docdb** – S’il est présent, il spécifie une chaîne de connexion DocumentDB à utiliser lorsqu’aucune variable d’environnement spécifique au catalogue n’existe.
+ **disable\$1projection\$1and\$1casing** – (Facultatif) Désactive la projection et la casse. À utiliser si vous souhaitez interroger des tables Amazon DocumentDB qui utilisent des noms de colonnes sensibles à la casse. Le paramètre `disable_projection_and_casing` utilise les valeurs suivantes pour spécifier le comportement de la casse et du mappage des colonnes : 
  + **false** (faux) : il s'agit du paramètre par défaut. La projection est activée et le connecteur s'attend à ce que tous les noms de colonnes soient en minuscules. 
  + **true** (vrai) : désactive la projection et la casse. Lorsque vous utilisez le paramètre `disable_projection_and_casing`, gardez à l'esprit les points suivants : 
    + L'utilisation de ce paramètre peut augmenter l'utilisation de la bande passante. En outre, si votre fonction Lambda ne se trouve pas dans la même Région AWS que votre source de données, vous devrez supporter des coûts de transfert interrégionaux AWS standard plus élevés en raison de l'utilisation plus importante de la bande passante. Pour plus d'informations sur les coûts de transfert entre régions, consultez la section [Frais de transfert de AWS données pour les architectures serveur et sans](https://aws.amazon.com/blogs/apn/aws-data-transfer-charges-for-server-and-serverless-architectures/) serveur sur le blog du réseau AWS partenaire.
    + Étant donné qu'un plus grand nombre d'octets est transféré et qu'un plus grand nombre d'octets nécessite un délai de désérialisation plus long, la latence globale peut augmenter. 
+ **enable\$1case\$1insensitive\$1match** (facultatif) : lorsqu’elle est définie sur `true`, cette option réalise des recherches non sensibles à la casse sur les noms de schéma et de table dans Amazon DocumentDB. La valeur par défaut est `false`. À utiliser si votre requête contient des noms de schéma ou de table en majuscules.

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

Vous pouvez fournir une ou plusieurs propriétés qui définissent les détails de connexion DocumentDB pour les instances de DocumentDB que vous utilisez avec le connecteur. Pour ce faire, définissez une variable d’environnement Lambda qui correspond au nom du catalogue que vous souhaitez utiliser dans Athena. Supposons, par exemple, que vous souhaitiez utiliser les requêtes suivantes pour interroger deux instances DocumentDB différentes depuis Athena :

```
SELECT * FROM "docdb_instance_1".database.table
```

```
SELECT * FROM "docdb_instance_2".database.table
```

Avant de pouvoir utiliser ces deux instructions SQL, vous devez ajouter deux variables d’environnement à votre fonction Lambda : `docdb_instance_1` et `docdb_instance_2`. La valeur pour chacune d’elles doit être une chaîne de connexion DocumentDB au format suivant :

```
mongodb://:@:/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0      
```

##### Utilisation de secrets
<a name="connectors-docdb-using-secrets"></a>

Vous pouvez éventuellement utiliser AWS Secrets Manager une partie ou la totalité de la valeur pour les détails de votre chaîne de connexion. Pour utiliser la fonctionnalité de requête fédérée d’Athena avec Secrets Manager, le VPC connecté à votre fonction Lambda doit avoir un [accès internet](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) ou un [point de terminaison de VPC](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) pour vous connecter à Secrets Manager.

Si vous utilisez la syntaxe `${my_secret}` pour indiquer le nom d'un secret provenant de Secrets Manager dans votre chaîne de connexion, le connecteur remplace exactement `${my_secret}` par sa valeur en texte brut provenant de Secrets Manager. Les secrets doivent être stockés sous forme de texte brut avec la valeur `<username>:<password>`. Les secrets stockés sous la forme `{username:<username>,password:<password>}` ne seront pas transmis correctement à la chaîne de connexion.

Les secrets peuvent également être utilisés pour l'ensemble de la chaîne de connexion, le nom d'utilisateur et le mot de passe pouvant être définis dans le secret.

Supposons, par exemple, que vous définissiez la variable d’environnement Lambda pour `docdb_instance_1` sur la valeur suivante :

```
mongodb://${docdb_instance_1_creds}@myhostname.com:123/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0         
```

Le SDK Athena Query Federation tente automatiquement de récupérer un secret nommé `docdb_instance_1_creds` à partir de Secrets Manager et d’injecte cette valeur à la place de `${docdb_instance_1_creds}`. Toute partie de la chaîne de connexion qui est entourée par la combinaison de caractères `${ }` est interprétée comme un secret de Secrets Manager. Si vous spécifiez un nom de secret que le connecteur ne trouve pas dans Secrets Manager, le connecteur ne remplace pas le texte.

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

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

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

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

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

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

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

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

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

1. Exécutez votre requête.

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

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

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

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

Étant donné que la fonctionnalité d'inférence de schéma intégrée du connecteur scanne un nombre limité de documents et ne prend en charge qu'un sous-ensemble de types de données, vous pouvez préférer l'utiliser AWS Glue pour les métadonnées.

Pour activer une AWS Glue table à utiliser avec Amazon DocumentDB, vous devez disposer d'une base de AWS Glue données et d'une table pour la base de données et la collection DocumentDB pour lesquelles vous souhaitez fournir des métadonnées supplémentaires.

**Pour utiliser une AWS Glue table pour des métadonnées supplémentaires**

1. Utilisez la AWS Glue console pour créer une AWS Glue base de données portant le même nom que le nom de votre base de données Amazon DocumentDB.

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

1. (Facultatif) Ajoutez la propriété de table **sourceTable**. Cette propriété définit le nom de la table source dans Amazon DocumentDB. Utilisez cette propriété si le nom de votre AWS Glue table est différent de celui de la table dans Amazon DocumentDB. Les différences entre les règles de dénomination AWS Glue et Amazon DocumentDB peuvent rendre cela nécessaire. Par exemple, les majuscules ne sont pas autorisées dans les noms de AWS Glue table, mais elles le sont dans les noms de table Amazon DocumentDB.

1. (Facultatif) Ajoutez la propriété de table **columnMapping**. Cette propriété définit les mappages de noms de colonnes. Utilisez cette propriété si les règles de dénomination des AWS Glue colonnes vous empêchent de créer une AWS Glue table portant les mêmes noms de colonne que ceux de votre table Amazon DocumentDB. Cela peut être utile, car les majuscules sont autorisées dans les noms de colonnes Amazon DocumentDB, mais elles ne le sont pas dans les noms de colonnes AWS Glue .

   La valeur de la propriété `columnMapping` est censée être un ensemble de mappages au format `col1=Col1,col2=Col2`.
**Note**  
 Le mappage des colonnes s'applique uniquement aux noms de colonnes de niveau supérieur et non aux champs imbriqués. 

   Après avoir ajouté la propriété AWS Glue `columnMapping` table, vous pouvez supprimer la variable d'environnement `disable_projection_and_casing` Lambda.

1. Assurez-vous d'utiliser les types de données appropriés AWS Glue tels que listés dans ce document.

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

Cette section répertorie les types de données que le connecteur DocumentDB utilise pour l'inférence de schéma, ainsi que les types de données lorsque des AWS Glue métadonnées sont utilisées.

### Types de données d’inférence de schéma
<a name="connectors-docdb-schema-inference-data-types"></a>

La fonction d’inférence de schéma du connecteur DocumentDB tente de déduire des valeurs comme appartenant à l’un des types de données suivants. Le tableau indique les types de données correspondants pour Amazon DocumentDB, Java et Apache Arrow.


****  

| Apache | Java ou DocDB | 
| --- | --- | 
| VARCHAR | String | 
| INT | Entier | 
| BIGINT | Long | 
| BIT | Booléen | 
| FLOAT4 | Float | 
| FLOAT8 | Double | 
| TIMESTAMPSEC | Date | 
| VARCHAR | ObjectId | 
| LIST | List | 
| STRUCT | Document | 

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

Si vous utilisez AWS Glue des métadonnées supplémentaires, vous pouvez configurer les types de données suivants. Le tableau indique les types de données correspondants pour AWS Glue et Apache Arrow.


****  

| AWS Glue | Apache | 
| --- | --- | 
| int | INT | 
| bigint | BIGINT | 
| double | FLOAT8 | 
| float | FLOAT4 | 
| boolean | BIT | 
| binary | VARBINARY | 
| chaîne | VARCHAR | 
| List | LIST | 
| Struct | STRUCT | 

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

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-docdb.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-docdb/athena-docdb.yaml). La liste suivante résume les autorisations requises.
+ **Amazon S3 write access** (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
+ **Athena GetQueryExecution** — Le connecteur utilise cette autorisation pour échouer rapidement lorsque la requête Athena en amont est terminée.
+ **AWS Glue Data Catalog**— Le connecteur DocumentDB nécessite un accès en lecture seule au pour AWS Glue Data Catalog obtenir des informations sur le schéma.
+ **CloudWatch Journaux** : le connecteur a besoin d'accéder aux CloudWatch journaux pour stocker les journaux.
+ **AWS Secrets Manager accès en lecture** — Si vous choisissez de stocker les détails du point de terminaison DocumentDB dans Secrets Manager, vous devez autoriser le connecteur à accéder à ces secrets.
+ **Accès VPC** – Le connecteur nécessite la possibilité d’attacher des interfaces à votre VPC et de les détacher afin qu’il puisse s’y connecter et communiquer avec vos instances DocumentDB.

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

Le connecteur Amazon DocumentDB d'Athena ne prend pas actuellement en charge les analyses parallèles, mais tente de pousser les prédicats vers le bas dans le cadre de ses requêtes DocumentDB, et les prédicats contre les index de votre collection DocumentDB entraînent une réduction significative des données analysées.

La fonction Lambda effectue une poussée vers le bas de projection pour réduire les données analysées par la requête. Cependant, la sélection d’un sous-ensemble de colonnes entraîne parfois un temps d’exécution plus long de la requête. Les clauses `LIMIT` réduisent la quantité de données analysées, mais si vous ne fournissez pas de prédicat, vous devez vous attendre à ce que les requêtes `SELECT` avec une clause `LIMIT` analysent au moins 16 Mo de données.

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

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

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

```
SELECT * FROM TABLE(
        system.query(
            database => 'database_name',
            collection => 'collection_name',
            filter => '{query_syntax}'
        ))
```

L’exemple suivant interroge la base de données `example` dans la collection `TPCDS`, en filtrant tous les livres portant le titre *Bill of Rights*.

```
SELECT * FROM TABLE(
        system.query(
            database => 'example',
            collection => 'tpcds',
            filter => '{title: "Bill of Rights"}'
        ))
```

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

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

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

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

Si Lake Formation est activé sur votre compte, le rôle IAM de votre connecteur Lambda fédéré Athena que vous avez déployé dans AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

## Conditions préalables
<a name="connectors-dynamodb-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

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

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

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

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

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

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

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

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

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

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

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

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

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

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.

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

**Propriétés d’environnement Lambda**
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **disable\$1glue** — (Facultatif) S'il est présent et défini sur true, le connecteur ne tente pas de récupérer des métadonnées supplémentaires à partir de. AWS Glue
+ **glue\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.
+ **disable\$1projection\$1and\$1casing** – (Facultatif) Désactive la projection et la casse. À utiliser si vous souhaitez interroger des tables DynamoDB dont le nom de colonne est sensible à la casse et que vous ne souhaitez pas spécifier de propriété `columnMapping` sur votre table AWS Glue .

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

  Lorsque vous utilisez le paramètre `disable_projection_and_casing`, gardez à l'esprit les points suivants :
  + L'utilisation de ce paramètre peut augmenter l'utilisation de la bande passante. En outre, si votre fonction Lambda ne se trouve pas dans la même Région AWS que votre source de données, vous devrez supporter des coûts de transfert interrégionaux AWS standard plus élevés en raison de l'utilisation plus importante de la bande passante. Pour plus d'informations sur les coûts de transfert entre régions, consultez la section [Frais de transfert de AWS données pour les architectures serveur et sans](https://aws.amazon.com/blogs/apn/aws-data-transfer-charges-for-server-and-serverless-architectures/) serveur sur le blog du réseau AWS partenaire.
  + Étant donné qu'un plus grand nombre d'octets est transféré et qu'un plus grand nombre d'octets nécessite un délai de désérialisation plus long, la latence globale peut augmenter. 

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

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

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

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

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

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

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

1. Choisissez **Modifier**.

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

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

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

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

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

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

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

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

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

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

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

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

1. Choisissez **Enregistrer**.

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

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-dynamodb.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-dynamodb/athena-dynamodb.yaml). La liste suivante résume les autorisations requises.
+ **Amazon S3 write access** (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
+ **Athena GetQueryExecution** — Le connecteur utilise cette autorisation pour échouer rapidement lorsque la requête Athena en amont est terminée.
+ **AWS Glue Data Catalog**— Le connecteur DynamoDB nécessite un accès en lecture seule au pour obtenir des informations sur AWS Glue Data Catalog le schéma.
+ **CloudWatch Journaux** : le connecteur a besoin d'accéder aux CloudWatch journaux pour stocker les journaux.
+ **Accès en lecture DynamoDB** – Le connecteur utilise les opérations d’API `DescribeTable`, `ListSchemas`, `ListTables`, `Query` et `Scan`.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## Conditions préalables
<a name="connectors-bigquery-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

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

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

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

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

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

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

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

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

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

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

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

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

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.

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

**Propriétés d’environnement Lambda**
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **gcp\$1project\$1id** – L’ID du projet (et non le nom du projet) qui contient les jeux de données à partir desquels le connecteur doit lire (par exemple, `semiotic-primer-1234567`).
+ **secret\$1manager\$1gcp\$1creds\$1name — Le nom du** secret AWS Secrets Manager qui contient vos informations d'identification au format JSON (par exemple,). BigQuery `GoogleCloudPlatformCredentials`
+ **big\$1query\$1endpoint** — (Facultatif) L'URL d'un point de terminaison privé. BigQuery Utilisez ce paramètre lorsque vous souhaitez accéder BigQuery via un point de terminaison privé.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Si Lake Formation est activé sur votre compte, le rôle IAM de votre connecteur Lambda fédéré Athena que vous avez déployé dans AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

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

## Conditions préalables
<a name="connectors-gcs-prerequisites"></a>
+ Configurez une AWS Glue base de données et une table correspondant à votre bucket et à vos dossiers dans Google Cloud Storage. Pour consulter les étapes à suivre, reportez-vous à [Configuration de bases de données et de tables dans AWS Glue](#connectors-gcs-setting-up-databases-and-tables-in-glue) plus loin dans ce document.
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

### Connexions héritées
<a name="connectors-gcs-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **secret\$1manager\$1gcp\$1creds\$1name — Le nom du** secret AWS Secrets Manager qui contient vos informations d'identification GCS au format JSON (par exemple,). `GoogleCloudPlatformCredentials`

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. Choisissez **Suivant**.

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

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

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

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

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

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

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

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

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

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

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

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

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

### Ajout d'un modèle de partition aux propriétés d'une table dans AWS Glue
<a name="connectors-gcs-adding-a-partition-pattern-to-table-properties-in-glue"></a>

Si vos compartiments GCS comportent des partitions, vous devez ajouter le modèle de partition aux propriétés de la table dans AWS Glue.

**Pour ajouter des informations de partition aux propriétés de la table AWS Glue**

1. Sur la page de détails de la table que vous avez créée AWS Glue, choisissez **Actions**, **Modifier la table**.

1. Sur la page **Edit table** (Modifier le table), faites défiler l’écran vers le bas jusqu’à la section **Table properties** (Propriétés de la table).

1. Sélectionnez **Add** (Ajouter) pour ajouter une clé de partition.

1. Pour **Key** (Clé), saisissez **partition.pattern**. Cette clé définit le modèle de chemin de dossier.

1. Dans le champ **Value** (Valeur), saisissez un modèle de chemin de dossier tel que **StateName=\$1\$1statename\$1/ZipCode=\$1\$1zipcode\$1/**, **statename** et **zipcode** entourés par **\$1\$1\$1** étant des noms de colonne de partition. Le connecteur GCS prend en charge les schémas de partition Hive et non Hive.

1. Lorsque vous avez terminé, choisissez **Save**.

1. Pour afficher les propriétés de la table que vous venez de créer, sélectionnez l’onglet **Advanced properties** (Propriétés avancées).

À ce stade, vous pouvez accéder à la console Athena. La base de données et la table que vous avez créées peuvent être consultées dans Athena. AWS Glue 

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

Les tables suivantes indiquent les types de données pris en charge pour les fichiers CSV et Parquet.

### CSV
<a name="connectors-gcs-csv"></a>


****  

| **Nature des données** | **Type de données inféré** | 
| --- | --- | 
| Les données ressemblent à un nombre | BIGINT | 
| Les données ressemblent à une chaîne | VARCHAR | 
| Les données ressemblent à une virgule flottante (flottante, double ou décimale) | DOUBLE | 
| Les données ressemblent à une date | Horodatage | 
| Données contenant des true/false valeurs | BOOL | 

### Parquet
<a name="connectors-gcs-parquet"></a>


****  

| **PARQUET** | **Athena (flèche)** | 
| --- | --- | 
| BINAIRE | VARCHAR | 
| BOOLEAN | BOOL | 
| DOUBLE | DOUBLE | 
| ENUM | VARCHAR | 
| FIXED\$1LEN\$1BYTE\$1ARRAY | DECIMAL | 
| FLOAT | FLOAT (32 bits) | 
| INT32 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-gcs.html)  | 
| INT64 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-gcs.html)  | 
| INT96 | Horodatage | 
| MAP | MAP | 
| STRUCT | STRUCT | 
| LIST | LIST | 

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

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-gcs.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-gcs/athena-gcs.yaml). La liste suivante résume les autorisations requises.
+ **Amazon S3 write access** (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
+ **Athena GetQueryExecution** — Le connecteur utilise cette autorisation pour échouer rapidement lorsque la requête Athena en amont est terminée.
+ **AWS Glue Data Catalog**— Le connecteur GCS nécessite un accès en lecture seule au pour AWS Glue Data Catalog obtenir des informations sur le schéma.
+ **CloudWatch Journaux** : le connecteur a besoin d'accéder aux CloudWatch journaux pour stocker les journaux.

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

Lorsque le schéma de la table contient des champs de partition et que la propriété de la table `partition.pattern` est correctement configurée, vous pouvez inclure le champ de partition dans la clause `WHERE` de vos requêtes. Pour de telles requêtes, le connecteur GCS utilise les colonnes de partition pour affiner le chemin du dossier GCS et éviter d’analyser des fichiers inutiles dans les dossiers GCS.

Pour les jeux de données Parquet, la sélection d’un sous-ensemble de colonnes permet de réduire la quantité de données analysées. Cela se traduit généralement par un temps d’exécution des requêtes plus court lorsque la projection de colonnes est appliquée. 

Pour les jeux de données CSV, la projection de colonnes n’est pas prise en charge et ne réduit pas la quantité de données analysées. 

Les clauses `LIMIT` réduisent la quantité de données analysées, mais si vous ne fournissez pas de prédicat, vous devez vous attendre à ce que les requêtes `SELECT` avec une clause `LIMIT` analysent au moins 16 Mo de données. Le connecteur GCS analyse une plus grande quantité de données pour les jeux de données plus volumineux que pour les jeux de données plus petits, indépendamment de la clause `LIMIT` appliquée. Par exemple, la requête `SELECT * LIMIT 10000` analyse une plus grande quantité de données pour un jeu de données sous-jacent plus volumineux que pour un jeu de données sous-jacent plus petit.

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

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

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

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

# Connecteur Amazon Athena HBase
<a name="connectors-hbase"></a>

Le HBase connecteur Amazon Athena permet à Amazon Athena de communiquer avec vos instances HBase Apache afin que vous puissiez interroger HBase vos données avec SQL.

Contrairement aux magasins de données relationnels traditionnels, les HBase collections n'ont pas de schéma défini. HBasene possède pas de magasin de métadonnées. Chaque entrée d'une HBase collection peut comporter des champs et des types de données différents.

Le HBase connecteur prend en charge deux mécanismes pour générer des informations de schéma de table : l'inférence de schéma de base et AWS Glue Data Catalog les métadonnées.

L’inférence de schéma est la valeur par défaut. Cette option analyse un petit nombre de documents de votre collection, réunit tous les champs et impose des champs dont les types de données ne se chevauchent pas. Cette option fonctionne bien pour les collections dont les entrées sont généralement uniformes.

Pour les collections comportant une plus grande variété de types de données, le connecteur prend en charge la récupération de métadonnées à partir du AWS Glue Data Catalog. Si le connecteur détecte une AWS Glue base de données et une table qui correspondent à votre HBase espace de noms et aux noms de collection, il obtient ses informations de schéma dans la AWS Glue table correspondante. Lorsque vous créez votre AWS Glue table, nous vous recommandons d'en faire un sur-ensemble de tous les champs auxquels vous souhaitez accéder depuis votre HBase collection.

Si Lake Formation est activé sur votre compte, le rôle IAM de votre connecteur Lambda fédéré Athena que vous avez déployé dans AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

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

## Conditions préalables
<a name="connectors-hbase-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

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

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

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

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

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

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

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

```
aws glue describe-connection-type --connection-type HBASE
```

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

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

### Connexions héritées
<a name="connectors-hbase-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **disable\$1glue** — (Facultatif) S'il est présent et défini sur true, le connecteur ne tente pas de récupérer des métadonnées supplémentaires à partir de. AWS Glue
+ **glue\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.
+ **default\$1hbase** — Le cas échéant, spécifie une chaîne de HBase connexion à utiliser lorsqu'aucune variable d'environnement spécifique au catalogue n'existe.
+ **enable\$1case\$1insensitive\$1match** — (Facultatif) Lorsque`true`, effectue des recherches sans distinction majuscules/minuscules dans les noms de table dans. HBase La valeur par défaut est `false`. À utiliser si votre requête contient des noms de table en majuscules.

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

Vous pouvez fournir une ou plusieurs propriétés qui définissent les détails de HBase connexion pour les HBase instances que vous utilisez avec le connecteur. Pour ce faire, définissez une variable d’environnement Lambda qui correspond au nom du catalogue que vous souhaitez utiliser dans Athena. Supposons, par exemple, que vous souhaitiez utiliser les requêtes suivantes pour interroger deux HBase instances différentes provenant d'Athena :

```
SELECT * FROM "hbase_instance_1".database.table
```

```
SELECT * FROM "hbase_instance_2".database.table
```

Avant de pouvoir utiliser ces deux instructions SQL, vous devez ajouter deux variables d’environnement à votre fonction Lambda : `hbase_instance_1` et `hbase_instance_2`. La valeur de chacun doit être une chaîne de HBase connexion au format suivant :

```
master_hostname:hbase_port:zookeeper_port
```

##### Utilisation de secrets
<a name="connectors-hbase-using-secrets"></a>

Vous pouvez éventuellement utiliser AWS Secrets Manager une partie ou la totalité de la valeur pour les détails de votre chaîne de connexion. Pour utiliser la fonctionnalité de requête fédérée d’Athena avec Secrets Manager, le VPC connecté à votre fonction Lambda doit avoir un [accès internet](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) ou un [point de terminaison de VPC](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) pour vous connecter à Secrets Manager.

Si vous utilisez la syntaxe `${my_secret}` pour mettre le nom d’un secret provenant de Secrets Manager dans votre chaîne de connexion, le connecteur remplace le nom secret par vos valeurs de nom d’utilisateur et de mot de passe provenant de Secrets Manager.

Supposons, par exemple, que vous définissiez la variable d’environnement Lambda pour `hbase_instance_1` sur la valeur suivante :

```
${hbase_host_1}:${hbase_master_port_1}:${hbase_zookeeper_port_1}
```

Le SDK Athena Query Federation tente automatiquement de récupérer un secret nommé `hbase_instance_1_creds` à partir de Secrets Manager et d’injecte cette valeur à la place de `${hbase_instance_1_creds}`. Toute partie de la chaîne de connexion qui est entourée par la combinaison de caractères `${ }` est interprétée comme un secret de Secrets Manager. Si vous spécifiez un nom de secret que le connecteur ne trouve pas dans Secrets Manager, le connecteur ne remplace pas le texte.

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

L'inférence de schéma intégrée du connecteur ne prend en charge que les valeurs sérialisées HBase sous forme de chaînes (par exemple,`String.valueOf(int)`). La capacité d’inférence de schéma intégrée du connecteur étant limitée, vous pouvez souhaiter utiliser plutôt AWS Glue pour les métadonnées. Pour activer l'utilisation d'une AWS Glue table HBase, vous devez disposer d'une AWS Glue base de données et d'une table dont les noms correspondent à l' HBase espace de noms et à la table pour lesquels vous souhaitez fournir des métadonnées supplémentaires. L'utilisation des conventions de dénomination des familles de HBase colonnes est facultative mais pas obligatoire.

**Pour utiliser une AWS Glue table pour des métadonnées supplémentaires**

1. Lorsque vous modifiez la table et la base de données dans la AWS Glue console, ajoutez les propriétés de table suivantes :
   + **hbase-metadata-flag**— Cette propriété indique au HBase connecteur qu'il peut utiliser la table pour des métadonnées supplémentaires. Vous pouvez fournir n’importe quelle valeur pour `hbase-metadata-flag` tant que la propriété `hbase-metadata-flag` est présente dans la liste des propriétés de la table.
   + **hbase-native-storage-flag**— Utilisez cet indicateur pour activer ou désactiver les deux modes de sérialisation de valeurs pris en charge par le connecteur. Par défaut, lorsque ce champ n'est pas présent, le connecteur suppose que toutes les valeurs sont stockées HBase sous forme de chaînes. En tant que tel, il tentera d'analyser les types de données tels que `INT``BIGINT`, et `DOUBLE` from HBase sous forme de chaînes. Si ce champ est défini avec une valeur quelconque de la table AWS Glue, le connecteur passe en mode de stockage « natif » et tente de lire`INT`, `BIGINT``BIT`, et `DOUBLE` sous forme d'octets à l'aide des fonctions suivantes :

     ```
     ByteBuffer.wrap(value).getInt() 
     ByteBuffer.wrap(value).getLong() 
     ByteBuffer.wrap(value).get() 
     ByteBuffer.wrap(value).getDouble()
     ```

1. Assurez-vous d'utiliser les types de données appropriés AWS Glue tels que listés dans ce document.

### Modélisation de familles de colonnes
<a name="connectors-hbase-modeling-column-families"></a>

Le HBase connecteur Athena permet de modéliser des familles de HBase colonnes de deux manières : en les nommant de manière complète (aplatie) ou en utilisant des objets`family:column`. `STRUCT`

Dans le modèle `STRUCT`, le nom du champ `STRUCT` doit correspondre à la famille de colonnes, tandis que les enfants de `STRUCT` doivent correspondre aux noms des colonnes de la famille. Cependant, étant donné que les lectures de prédicats poussés vers le bas et en colonnes ne sont pas encore totalement prises en charge pour les types complexes tels que `STRUCT`, l’utilisation de `STRUCT` n’est actuellement pas conseillée.

L'image suivante montre une table configurée dans AWS Glue qui utilise une combinaison des deux approches.

![\[Modélisation de familles de colonnes dans AWS Glue Apache Hbase.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-hbase-1.png)


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

Le connecteur récupère toutes les HBase valeurs sous forme de type d'octet de base. Ensuite, en fonction de la façon dont vous avez défini vos tables dans AWS Glue Data Catalog, il mappe les valeurs dans l'un des types de données Apache Arrow du tableau suivant.


****  

| AWS Glue type de données | Type de données Apache Arrow | 
| --- | --- | 
| int | INT | 
| bigint | BIGINT | 
| double | FLOAT8 | 
| float | FLOAT4 | 
| boolean | BIT | 
| binary | VARBINARY | 
| chaîne | VARCHAR | 

**Note**  
Si vous ne l'utilisez pas AWS Glue pour compléter vos métadonnées, l'inférence du schéma du connecteur utilise uniquement les types de données `BIGINT``FLOAT8`, et`VARCHAR`.

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

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-hbase.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hbase/athena-hbase.yaml). La liste suivante résume les autorisations requises.
+ **Amazon S3 write access** (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
+ **Athena GetQueryExecution** — Le connecteur utilise cette autorisation pour échouer rapidement lorsque la requête Athena en amont est terminée.
+ **AWS Glue Data Catalog**— Le HBase connecteur nécessite un accès en lecture seule au pour AWS Glue Data Catalog obtenir des informations sur le schéma.
+ **CloudWatch Journaux** : le connecteur a besoin d'accéder aux CloudWatch journaux pour stocker les journaux.
+ **AWS Secrets Manager accès en lecture** — Si vous choisissez de stocker les détails du HBase point de terminaison dans Secrets Manager, vous devez autoriser le connecteur à accéder à ces secrets.
+ **Accès au VPC** : le connecteur doit être capable d'attacher et de détacher des interfaces à votre VPC afin qu'il puisse s'y connecter et communiquer avec vos instances. HBase 

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

Le HBase connecteur Athena tente de paralléliser les requêtes par rapport à votre HBase instance en lisant chaque serveur régional en parallèle. Le HBase connecteur Athena effectue un transfert de prédicat vers le bas pour réduire le nombre de données scannées par la requête.

La fonction Lambda effectue également une poussée vers le bas de *projection* pour réduire les données analysées par la requête. Cependant, la sélection d’un sous-ensemble de colonnes entraîne parfois un temps d’exécution plus long de la requête. Les clauses `LIMIT` réduisent la quantité de données analysées, mais si vous ne fournissez pas de prédicat, vous devez vous attendre à ce que les requêtes `SELECT` avec une clause `LIMIT` analysent au moins 16 Mo de données.

HBase est sujet à des échecs de requêtes et à des temps d'exécution variables. Vous devrez peut-être réessayer vos requêtes plusieurs fois pour qu'elles aboutissent. Le HBase connecteur résiste à l'étranglement dû à la simultanéité.

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

Le HBase connecteur prend en charge les [requêtes passthrough](federated-query-passthrough.md) et est basé sur NoSQL. Pour plus d'informations sur l'interrogation d'Apache HBase à l'aide du filtrage, consultez la section [Langage des filtres](https://hbase.apache.org/book.html#thrift.filter_language) dans la documentation d'Apache.

Pour utiliser des requêtes directes avec HBase, utilisez la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            database => 'database_name',
            collection => 'collection_name',
            filter => '{query_syntax}'
        ))
```

L'exemple suivant filtre les HBase requêtes directes pour les employés âgés de 24 ou 30 ans au sein de la `employee` collection de la `default` base de données.

```
SELECT * FROM TABLE(
        system.query(
            DATABASE => 'default',
            COLLECTION => 'employee',
            FILTER => 'SingleColumnValueFilter(''personaldata'', ''age'', =, ''binary:30'')' ||
                       ' OR SingleColumnValueFilter(''personaldata'', ''age'', =, ''binary:24'')'
        ))
```

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

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

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

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

# Connecteur Amazon Athena pour Hortonworks
<a name="connectors-hortonworks"></a>

Le connecteur Amazon Athena pour Hortonworks permet à Amazon Athena d'exécuter des requêtes SQL sur la plateforme de données Cloudera [Hortonworks](https://www.cloudera.com/products/hdp.html). Le connecteur transforme vos requêtes Athena SQL en syntaxe HiveQL équivalente.

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

## Conditions préalables
<a name="connectors-hive-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

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

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

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

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

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

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

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
hive://${jdbc_connection_string}
```

### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-hortonworks-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | HiveMuxCompositeHandler | 
| Gestionnaire de métadonnées | HiveMuxMetadataHandler | 
| Gestionnaire d’enregistrements | HiveMuxRecordHandler | 

#### Paramètres du gestionnaire de multiplexage
<a name="connectors-hortonworks-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myhivecatalog, le nom de la variable d’environnement est alors myhivecatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Hive MUX Lambda qui prend en charge deux instances de base de données :`hive1` (par défaut) et `hive2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | hive://jdbc:hive2://hive1:10000/default?\$1\$1Test/RDS/hive1\$1 | 
| hive\$1catalog1\$1connection\$1string | hive://jdbc:hive2://hive1:10000/default?\$1\$1Test/RDS/hive1\$1 | 
| hive\$1catalog2\$1connection\$1string | hive://jdbc:hive2://hive2:10000/default?UID=sample&PWD=sample | 

#### Fourniture des informations d’identification
<a name="connectors-hortonworks-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/hive1host}`.

```
hive://jdbc:hive2://hive1host:10000/default?...&${Test/RDS/hive1host}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
hive://jdbc:hive2://hive1host:10000/default?...&UID=sample2&PWD=sample2&...
```

Actuellement, le connecteur Hortonworks Hive reconnaît les propriétés JDBC `UID` et `PWD`.

### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-hortonworks-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Hortonworks Hive.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | HiveCompositeHandler | 
| Gestionnaire de métadonnées | HiveMetadataHandler | 
| Gestionnaire d’enregistrements | HiveRecordHandler | 

#### Paramètres du gestionnaire de connexion unique
<a name="connectors-hortonworks-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance Hortonworks Hive unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | hive://jdbc:hive2://hive1host:10000/default?secret=\$1\$1Test/RDS/hive1host\$1 | 

### Paramètres de déversement
<a name="connectors-hortonworks-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-hortonworks-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour JDBC, Hortonworks Hive et Arrow.


****  

| JDBC | Hortonworks Hive | Flèche | 
| --- | --- | --- | 
| Booléen | Booléen | Bit | 
| Entier | TINYINT | Tiny | 
| Court | SMALLINT | Smallint | 
| Entier | INT | Int | 
| Long | BIGINT | Bigint | 
| float | float4 | Float4 | 
| Double | float8 | Float8 | 
| Date | date | DateDay | 
| Horodatage | timestamp | DateMilli | 
| String | VARCHAR | Varchar | 
| Octets | octets | Varbinary | 
| BigDecimal | Décimal | Décimal | 
| ARRAY | N/A (voir la remarque) | List | 

**Note**  
Hortonworks Hive ne prend actuellement pas en charge les types d’agrégat `ARRAY`, `MAP`, `STRUCT` ou `UNIONTYPE`. Les colonnes de types d’agrégats sont traitées comme des colonnes `VARCHAR` dans SQL.

## Partitions et déversements
<a name="connectors-hortonworks-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

## Performance
<a name="connectors-hortonworks-performance"></a>

Hortonworks Hive prend en charge les partitions statiques. Le connecteur Athena Hortonworks Hive peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement statique est fortement recommandé. La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur Hortonworks Hive résiste à la limitation due à la simultanéité.

Le connecteur Athena Hortonworkds Hive effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes. 

### Clauses LIMIT
<a name="connectors-hive-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-hive-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Hortonworks Hive peut combiner ces expressions et les pousser directement vers Cloudera Hive pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Hortonworks Hive suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-hive-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Requêtes de transmission
<a name="connectors-hive-passthrough-queries"></a>

Le connecteur Hortonworks Hive prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Hortonworks Hive, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Hortonworks Hive. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-hive-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-hive-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/pom.xml) du connecteur Hortonworks Hive sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-hortonworks-hive) sur GitHub .com.

# Connecteur Amazon Athena Apache Kafka
<a name="connectors-kafka"></a>

Le connecteur Amazon Athena pour Apache Kafka permet à Amazon Athena d'exécuter des requêtes SQL sur vos rubriques Apache Kafka. Utilisez ce connecteur pour afficher les rubriques [Apache Kafka](https://kafka.apache.org/) sous forme de tableaux et les messages sous forme de lignes dans Athena.

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

## Conditions préalables
<a name="connectors-kafka-prerequisites"></a>

Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-kafka-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Toutes les limites Lambda pertinentes. Pour plus d’informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Les types de données de date et d’horodatage dans des conditions de filtre doivent être convertis en types de données appropriés.
+ Les types de données date et horodatage ne sont pas pris en charge pour le type de fichier CSV et sont traités comme des valeurs varchar.
+ Le mappage dans des champs JSON imbriqués n'est pas pris en charge. Le connecteur ne mappe que les champs de niveau supérieur.
+ Le connecteur ne prend pas en charge les types complexes. Les types complexes sont interprétés comme des chaînes.
+ Pour extraire ou travailler avec des valeurs JSON complexes, utilisez les fonctions relatives à JSON disponibles dans Athena. Pour plus d’informations, consultez [Extraction de données JSON à partir de chaînes](extracting-data-from-JSON.md).
+ Le connecteur ne prend pas en charge l’accès aux métadonnées des messages Kafka.

## Conditions
<a name="connectors-kafka-terms"></a>
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Point de terminaison Kafka** – Chaîne de texte qui établit une connexion à une instance Kafka.

## Compatibilité des clusters
<a name="connectors-kafka-cluster-compatibility"></a>

Le connecteur Kafka peut être utilisé avec les types de clusters suivants.
+ **Kafka autonome** – Connexion directe à Kafka (authentifiée ou non).
+ **Confluent** – Une connexion directe à Confluent Kafka. *Pour plus d'informations sur l'utilisation d'Athena avec les données Confluent Kafka, consultez [Visualiser les données Confluent dans Quick using Amazon Athena sur le blog Business](https://aws.amazon.com/blogs/business-intelligence/visualize-confluent-data-in-amazon-quicksight-using-amazon-athena/) Intelligence.AWS * 

### Connexion à Confluent
<a name="connectors-kafka-connecting-to-confluent"></a>

La connexion à Confluent nécessite les étapes suivantes :

1. Générer une clé d'API à partir de Confluent.

1. Enregistrer le nom d'utilisateur et le mot de passe de la clé API Confluent dans AWS Secrets Manager.

1. Indiquer le nom secret de la variable d'environnement `secrets_manager_secret` dans le connecteur Kafka.

1. Suivez les étapes décrites dans la section [Configuration du connecteur Kafka](#connectors-kafka-setup) de ce document.

## Méthodes d'authentification prises en charge
<a name="connectors-kafka-supported-authentication-methods"></a>

Le connecteur prend en charge les méthodes d'authentification suivantes.
+ [SSL](https://kafka.apache.org/documentation/#security_ssl)
+ [SASL/SCRAM](https://kafka.apache.org/documentation/#security_sasl_scram)
+ SASL/PLAIN
+ SASL/PLAINTEXT
+ NO\$1AUTH
+ **Plateforme Kafka et Confluent autogérée** — SSL, NO\$1AUTH SASL/SCRAM, SASL/PLAINTEXT
+ **Cloud Kafka et Confluent autogéré** – SASL/PLAIN

Pour de plus amples informations, veuillez consulter [Configuration de l'authentification pour le connecteur Athena Kafka](#connectors-kafka-setup-configuring-authentication).

## Formats de données d'entrée pris en charge
<a name="connectors-kafka-supported-input-data-formats"></a>

Le connecteur prend en charge les formats de données d'entrée suivants.
+ JSON
+ CSV
+ AVRO
+ PROTOBUF (PROTOCOL BUFFERS)

## Parameters
<a name="connectors-kafka-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Athena pour Kafka.
+ **auth\$1type** – Spécifie le type d'authentification du cluster. Le connecteur prend en charge les types d'authentification suivants :
  + **NO\$1AUTH** – Connectez-vous directement à Kafka (par exemple, à un cluster Kafka déployé sur une instance EC2 qui n'utilise pas l'authentification).
  + **SASL\$1SSL\$1PLAIN** — Cette méthode utilise le protocole `SASL_SSL` de sécurité et le mécanisme `PLAIN` SASL. Pour plus d'informations, consultez la page [Configuration SASL](https://kafka.apache.org/documentation/#security_sasl_config) dans la documentation Apache Kafka.
  + **SASL\$1PLAINTEXT\$1PLAIN** — Cette méthode utilise le protocole `SASL_PLAINTEXT` de sécurité et le mécanisme `PLAIN` SASL. Pour plus d'informations, consultez la page [Configuration SASL](https://kafka.apache.org/documentation/#security_sasl_config) dans la documentation Apache Kafka.
  + **SASL\$1SSL\$1SCRAM\$1 SHA512** — Vous pouvez utiliser ce type d'authentification pour contrôler l'accès à vos clusters Apache Kafka. Cette méthode enregistre le nom d'utilisateur et le mot de passe dans AWS Secrets Manager. Le secret doit être associé au cluster Kafka. Pour plus d'informations, consultez [Authentification à l'aide de SASL/SCRAM](https://kafka.apache.org/documentation/#security_sasl_scram) dans la documentation Apache Kafka.
  + **SASL\$1PLAINTEXT\$1SCRAM\$1 SHA512** — Cette méthode utilise le protocole de `SASL_PLAINTEXT` sécurité et le mécanisme. `SCRAM_SHA512 SASL` Cette méthode utilise votre nom d'utilisateur et votre mot de passe enregistrés dans AWS Secrets Manager. Pour plus d'informations, consultez la section [Configuration SASL](https://kafka.apache.org/documentation/#security_sasl_config) dans la documentation Apache Kafka.
  + **SSL** – L'authentification SSL utilise des fichiers keystore et truststore pour se connecter au cluster Apache Kafka. Vous devez générer les fichiers keystore et truststore, les charger dans un compartiment Amazon S3 et fournir la référence à Amazon S3 lorsque vous déployez le connecteur. Le magasin de clés, le magasin de confiance et la clé SSL sont stockés dans AWS Secrets Manager. Votre client doit fournir la clé AWS secrète lors du déploiement du connecteur. Pour plus d'informations, consultez [Chiffrement et authentification à l'aide de SSL](https://kafka.apache.org/documentation/#security_ssl) dans la documentation Apache Kafka.

    Pour de plus amples informations, veuillez consulter [Configuration de l'authentification pour le connecteur Athena Kafka](#connectors-kafka-setup-configuring-authentication).
+ **certificates\$1s3\$1reference** – L'emplacement Amazon S3 qui contient les certificats (les fichiers keystore et truststore).
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **kafka\$1endpoint** – Les détails du point de terminaison à fournir à Kafka.
+ **schema\$1registry\$1url** : adresse URL du registre de schémas (par exemple, `http://schema-registry.example.org:8081`). S’applique aux formats de données `AVRO` et `PROTOBUF`. Athena prend uniquement en charge le registre de schémas Confluent.
+ **secrets\$1manager\$1secret** – Le nom du secret AWS dans lequel sont enregistrées les informations d'identification.
+ **Paramètres de déversement** – Les fonctions Lambda stockent temporairement (« déversent ») les données qui ne tiennent pas en mémoire vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement. Utilisez les paramètres du tableau suivant pour spécifier l'emplacement de déversement.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)
+ **Sous-réseau IDs** : un ou plusieurs sous-réseaux correspondant au sous-réseau IDs que la fonction Lambda peut utiliser pour accéder à votre source de données.
  + **Cluster Kafka public ou cluster Confluent Cloud standard** – Associez le connecteur à un sous-réseau privé doté d'une passerelle NAT.
  + **Cluster Confluent Cloud avec connectivité privée** – Associez le connecteur à un sous-réseau privé qui possède une route vers le cluster Confluent Cloud.
    + Pour [AWS Transit Gateway](https://docs.confluent.io/cloud/current/networking/aws-transit-gateway.html), les sous-réseaux doivent se trouver dans un VPC attaché à la même passerelle de transit qu'utilise Confluent Cloud.
    + Pour l'[appairage de VPC, les](https://docs.confluent.io/cloud/current/networking/peering/aws-peering.html) sous-réseaux doivent se trouver dans un VPC appairé au VPC Confluent Cloud.
    + Pour [AWS PrivateLink](https://docs.confluent.io/cloud/current/networking/private-links/aws-privatelink.html), les sous-réseaux doivent se trouver dans un VPC qui possède une route vers les points de terminaison du VPC qui se connectent à Confluent Cloud.

**Note**  
Si vous déployez le connecteur dans un VPC afin d’accéder à des ressources privées et si vous souhaitez également vous connecter à un service accessible au public tel que Confluent, vous devez associer le connecteur à un sous-réseau privé doté d’une passerelle NAT. Pour plus d’informations, consultez [Passerelles NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) dans le Guide de l’utilisateur Amazon VPC.

## Prise en charge du type de données
<a name="connectors-kafka-data-type-support"></a>

Le tableau suivant indique les types de données correspondants pris en charge par Kafka et Apache Arrow.


****  

| Kafka | Flèche | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| TIMESTAMP | MILLISECOND | 
| DATE | DAY | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 

## Partitions et déversements
<a name="connectors-kafka-partitions-and-splits"></a>

Les rubriques Kafka sont divisées en partitions. Chaque partition est ordonnée. Chaque message dans une partition a un ID incrémentiel appelé *offset*. Chaque partition Kafka est ensuite divisée en plusieurs parties pour un traitement parallèle. Les données sont disponibles pour la période de rétention configurée dans les clusters Kafka.

## Bonnes pratiques
<a name="connectors-kafka-best-practices"></a>

Il est recommandé d'utiliser la poussée vers le bas des prédicats lorsque vous interrogez Athena, comme dans les exemples suivants.

```
SELECT * 
FROM "kafka_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE integercol = 2147483647
```

```
SELECT * 
FROM "kafka_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Configuration du connecteur Kafka
<a name="connectors-kafka-setup"></a>

Pour pouvoir utiliser le connecteur, vous devez configurer votre cluster Apache Kafka, utilisez le [Registre de schémas AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html) pour définir votre schéma et configurez l'authentification pour le connecteur.

Lorsque vous travaillez avec le registre des AWS Glue schémas, tenez compte des points suivants :
+ Assurez-vous que le texte du champ **Description** du registre de schémas AWS Glue inclut la chaîne `{AthenaFederationKafka}`. Cette chaîne de marquage est obligatoire pour les AWS Glue registres que vous utilisez avec le connecteur Amazon Athena Kafka.
+ Pour des performances optimales, n'utilisez que des minuscules pour vos noms de bases de données et de tables. L'utilisation d'une casse mixte oblige le connecteur à effectuer une recherche insensible à la casse, ce qui demande plus de temps de calcul.

**Pour configurer votre environnement Apache Kafka et votre registre de AWS Glue schémas**

1. Configurez votre environnement Apache Kafka.

1. Téléchargez le fichier de description de la rubrique Kafka (c'est-à-dire son schéma) au format JSON dans le registre des AWS Glue schémas. Pour plus d'informations, consultez la section [Intégration à AWS Glue Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-integrations.html) dans le guide du AWS Glue développeur.

1. Pour utiliser le format de données `AVRO` ou `PROTOBUF` lorsque vous définissez le schéma dans le registre de schémas AWS Glue :
   + Dans **Nom du schéma**, saisissez le nom de la rubrique Kafka en utilisant la même casse que celle d’origine.
   + Dans **Format de données**, sélectionnez **Apache Avro** ou **Protocol Buffers**.

    Pour des exemples de schémas, voir la rubrique suivante.

### Exemples de schémas pour le registre des AWS Glue schémas
<a name="connectors-kafka-setup-schema-examples"></a>

Utilisez le format des exemples de cette rubrique lorsque vous téléchargez votre schéma dans le [registre de schémas AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html).

#### Exemple de schéma de type JSON
<a name="connectors-kafka-setup-schema-examples-json"></a>

Dans l'exemple suivant, le schéma à créer dans le registre des AWS Glue `json` schémas indique la valeur pour `dataFormat` et les utilisations `datatypejson` pour`topicName`.

**Note**  
La valeur de `topicName` doit utiliser la même casse que le nom de la rubrique de Kafka. 

```
{
  "topicName": "datatypejson",
  "message": {
    "dataFormat": "json",
    "fields": [
      {
        "name": "intcol",
        "mapping": "intcol",
        "type": "INTEGER"
      },
      {
        "name": "varcharcol",
        "mapping": "varcharcol",
        "type": "VARCHAR"
      },
      {
        "name": "booleancol",
        "mapping": "booleancol",
        "type": "BOOLEAN"
      },
      {
        "name": "bigintcol",
        "mapping": "bigintcol",
        "type": "BIGINT"
      },
      {
        "name": "doublecol",
        "mapping": "doublecol",
        "type": "DOUBLE"
      },
      {
        "name": "smallintcol",
        "mapping": "smallintcol",
        "type": "SMALLINT"
      },
      {
        "name": "tinyintcol",
        "mapping": "tinyintcol",
        "type": "TINYINT"
      },
      {
        "name": "datecol",
        "mapping": "datecol",
        "type": "DATE",
        "formatHint": "yyyy-MM-dd"
      },
      {
        "name": "timestampcol",
        "mapping": "timestampcol",
        "type": "TIMESTAMP",
        "formatHint": "yyyy-MM-dd HH:mm:ss.SSS"
      }
    ]
  }
}
```

#### Exemple de schéma de type CSV
<a name="connectors-kafka-setup-schema-examples-csv"></a>

Dans l'exemple suivant, le schéma à créer dans le registre des AWS Glue `csv` schémas indique la valeur pour `dataFormat` et les utilisations `datatypecsvbulk` pour`topicName`. La valeur de `topicName` doit utiliser la même casse que le nom de la rubrique de Kafka.

```
{
  "topicName": "datatypecsvbulk",
  "message": {
    "dataFormat": "csv",
    "fields": [
      {
        "name": "intcol",
        "type": "INTEGER",
        "mapping": "0"
      },
      {
        "name": "varcharcol",
        "type": "VARCHAR",
        "mapping": "1"
      },
      {
        "name": "booleancol",
        "type": "BOOLEAN",
        "mapping": "2"
      },
      {
        "name": "bigintcol",
        "type": "BIGINT",
        "mapping": "3"
      },
      {
        "name": "doublecol",
        "type": "DOUBLE",
        "mapping": "4"
      },
      {
        "name": "smallintcol",
        "type": "SMALLINT",
        "mapping": "5"
      },
      {
        "name": "tinyintcol",
        "type": "TINYINT",
        "mapping": "6"
      },
      {
        "name": "floatcol",
        "type": "DOUBLE",
        "mapping": "7"
      }
    ]
  }
}
```

#### Exemple de schéma de type AVRO
<a name="connectors-kafka-setup-schema-examples-avro"></a>

L’exemple suivant est utilisé pour créer un schéma basé sur AVRO dans le registre de schémas AWS Glue . Lorsque vous définissez le schéma dans le registre des AWS Glue schémas, pour le **nom du schéma**, vous entrez le nom du sujet Kafka dans le même boîtier que l'original, et pour le **format des données**, vous choisissez **Apache Avro**. Étant donné que vous spécifiez ces informations directement dans le registre, les champs `dataformat` et `topicName` ne sont pas obligatoires.

```
{
    "type": "record",
    "name": "avrotest",
    "namespace": "example.com",
    "fields": [{
            "name": "id",
            "type": "int"
        },
        {
            "name": "name",
            "type": "string"
        }
    ]
}
```

#### Exemple de schéma de type PROTOBUF
<a name="connectors-kafka-setup-schema-examples-protobuf"></a>

L’exemple suivant est utilisé pour créer un schéma basé sur PROTOBUF dans le registre de schémas AWS Glue . Lorsque vous définissez le schéma dans le registre des AWS Glue schémas, pour le **nom du schéma**, vous entrez le nom du sujet Kafka dans le même boîtier que l'original, et pour le **format des données**, vous choisissez **Protocol Buffers**. Étant donné que vous spécifiez ces informations directement dans le registre, les champs `dataformat` et `topicName` ne sont pas obligatoires. La première ligne définit le schéma sur PROTOBUF.

```
syntax = "proto3";
message protobuftest {
string name = 1;
int64 calories = 2;
string colour = 3;
}
```

Pour plus d'informations sur l'ajout d'un registre et de schémas dans le registre des AWS Glue schémas, consultez la section [Getting started with Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-gs.html) dans la AWS Glue documentation.

### Configuration de l'authentification pour le connecteur Athena Kafka
<a name="connectors-kafka-setup-configuring-authentication"></a>

Vous pouvez utiliser différentes méthodes pour vous authentifier auprès de votre cluster Apache Kafka, notamment le protocole SSL. SASL/SCRAM, SASL/PLAIN, and SASL/PLAINTEXT

Le tableau suivant présente les types d'authentification pour le connecteur ainsi que le protocole de sécurité et le mécanisme SASL pour chacun d'entre eux. Pour de plus amples informations, consultez la section [Sécurité](https://kafka.apache.org/documentation/#security) de la documentation Apache Kafka.


****  

| auth\$1type | security.protocol | sasl.mechanism | Compatibilité avec les types de cluster | 
| --- | --- | --- | --- | 
| SASL\$1SSL\$1PLAIN | SASL\$1SSL | PLAIN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1PLAINTEXT\$1PLAIN | SASL\$1PLAINTEXT | PLAIN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1SSL\$1SCRAM\$1SHA512 | SASL\$1SSL | SCRAM-SHA-512 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1PLAINTEXT\$1SCRAM\$1SHA512 | SASL\$1PLAINTEXT | SCRAM-SHA-512 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)  | 
| SSL | SSL | N/A |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-kafka.html)  | 

#### SSL
<a name="connectors-kafka-setup-configuring-authentication-tls"></a>

Si le cluster est authentifié SSL, vous devez générer les fichiers truststore (magasin d'approbations) et keystore (magasin de clés) et les télécharger dans le compartiment Amazon S3. Vous devez fournir cette référence Amazon S3 lorsque vous déployez le connecteur. Les clés keystore, truststore et SSL sont stockées dans AWS Secrets Manager. Vous fournissez la clé AWS secrète lorsque vous déployez le connecteur.

Pour plus d'informations sur la création d'un secret dans Secrets Manager, voir la rubrique [Créer un secret AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

Pour utiliser ce type d'authentification, définissez les variables d'environnement comme indiqué dans le tableau suivant.


****  

| Paramètre | Value | 
| --- | --- | 
| auth\$1type | SSL | 
| certificates\$1s3\$1reference | L'emplacement Amazon S3 qui contient les certificats. | 
| secrets\$1manager\$1secret | Le nom de votre clé AWS secrète. | 

Après avoir créé un secret dans Secrets Manager, vous pouvez le consulter dans la console Secrets Manager.

**Visualisation de votre secret dans Secrets Manager**

1. Ouvrez la console Secrets Manager à l'adresse [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Dans le volet de navigation, sélectionnez **Secrets**.

1. Sur la page **Secrets**, choisissez le lien vers votre secret.

1. Sur la page de détails de votre secret, sélectionnez **Retrieve secret value** (Récupérer la valeur du secret).

   L'image suivante montre un exemple de secret avec trois paires clé/valeur : `keystore_password`, `truststore_password` et `ssl_key_password`.  
![\[Récupération d'un secret SSL dans Secrets Manager\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-kafka-setup-1.png)

Pour plus d'informations sur l'utilisation de SSL avec Kafka, consultez [Chiffrement et authentification à l'aide de SSL](https://kafka.apache.org/documentation/#security_ssl) dans la documentation Apache Kafka.

#### SASL/SCRAM
<a name="connectors-kafka-setup-configuring-authentication-sasl-scram"></a>

Si votre cluster utilise l'authentification SCRAM, fournissez la clé Secrets Manager qui est associée au cluster lorsque vous déployez le connecteur. Les informations d'identification AWS de l'utilisateur (clé secrète et clé d'accès) sont utilisées pour s'authentifier au cluster.

Définissez les variables d'environnement comme indiqué dans le tableau suivant.


****  

| Paramètre | Value | 
| --- | --- | 
| auth\$1type | SASL\$1SSL\$1SCRAM\$1SHA512 | 
| secrets\$1manager\$1secret | Le nom de votre clé AWS secrète. | 

L'image suivante montre un exemple de secret dans la console Secrets Manager avec deux key/value paires : une pour `username` et une pour`password`.

![\[Récupération d'un secret SCRAM dans Secrets Manager\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-kafka-setup-2.png)


Pour plus d'informations sur l'utilisation SASL/SCRAM avec Kafka, consultez la section [Authentification à l'aide de SASL/SCRAM](https://kafka.apache.org/documentation/#security_sasl_scram) dans la documentation d'Apache Kafka.

## Informations de licence
<a name="connectors-kafka-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-kafka/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-kafka/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-kafka-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-kafka) sur GitHub .com.

# Connecteur Amazon Athena pour MSK
<a name="connectors-msk"></a>

Le connecteur Amazon Athena pour [Amazon MSK](https://aws.amazon.com/msk/) permet à Amazon Athena d'exécuter des requêtes SQL sur vos rubriques Apache Kafka. Utilisez ce connecteur pour afficher les rubriques [Apache Kafka](https://kafka.apache.org/) sous forme de tableaux et les messages sous forme de lignes dans Athena. Pour plus d'informations, consultez [Analyser les données de streaming en temps réel dans Amazon MSK avec Amazon](https://aws.amazon.com/blogs/big-data/analyze-real-time-streaming-data-in-amazon-msk-with-amazon-athena/) Athena sur AWS le blog Big Data.

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

## Conditions préalables
<a name="connectors-msk-prerequisites"></a>

Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-msk-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Toutes les limites Lambda pertinentes. Pour plus d’informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Les types de données de date et d’horodatage dans des conditions de filtre doivent être convertis en types de données appropriés.
+ Les types de données date et horodatage ne sont pas pris en charge pour le type de fichier CSV et sont traités comme des valeurs varchar.
+ Le mappage dans des champs JSON imbriqués n'est pas pris en charge. Le connecteur ne mappe que les champs de niveau supérieur.
+ Le connecteur ne prend pas en charge les types complexes. Les types complexes sont interprétés comme des chaînes.
+ Pour extraire ou travailler avec des valeurs JSON complexes, utilisez les fonctions relatives à JSON disponibles dans Athena. Pour plus d’informations, consultez [Extraction de données JSON à partir de chaînes](extracting-data-from-JSON.md).
+ Le connecteur ne prend pas en charge l’accès aux métadonnées des messages Kafka.

## Conditions
<a name="connectors-msk-terms"></a>
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Point de terminaison Kafka** – Chaîne de texte qui établit une connexion à une instance Kafka.

## Compatibilité des clusters
<a name="connectors-msk-cluster-compatibility"></a>

Le connecteur MSK peut être utilisé avec les types de clusters suivants.
+ **Cluster provisionné MSK** – Vous spécifiez, surveillez et adaptez manuellement la capacité du cluster.
+ **Cluster sans serveur MSK** : fournit une capacité à la demande qui évolue automatiquement à mesure que l'application I/O évolue.
+ **Kafka autonome** – Connexion directe à Kafka (authentifiée ou non).

## Méthodes d'authentification prises en charge
<a name="connectors-msk-supported-authentication-methods"></a>

Le connecteur prend en charge les méthodes d'authentification suivantes.
+ [SASL/IAM](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html) 
+ [SSL](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html)
+ [SASL/SCRAM](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html)
+ SASL/PLAIN
+ SASL/PLAINTEXT
+ NO\$1AUTH

  Pour plus d’informations, consultez [Configuration de l'authentification pour le connecteur Athena MSK](#connectors-msk-setup-configuring-authentication).

## Formats de données d'entrée pris en charge
<a name="connectors-msk-supported-input-data-formats"></a>

Le connecteur prend en charge les formats de données d'entrée suivants.
+ JSON
+ CSV

## Parameters
<a name="connectors-msk-parameters"></a>

Utilisez les paramètres de cette rubrique pour configurer le connecteur Athena pour MSK.
+ **auth\$1type** – Spécifie le type d'authentification du cluster. Le connecteur prend en charge les types d'authentification suivants :
  + **NO\$1AUTH** – Connectez-vous directement à Kafka sans authentification (par exemple, à un cluster Kafka déployé sur une instance EC2 qui n'utilise pas l'authentification).
  + **SASL\$1SSL\$1PLAIN** — Cette méthode utilise le protocole `SASL_SSL` de sécurité et le mécanisme `PLAIN` SASL.
  + **SASL\$1PLAINTEXT\$1PLAIN** — Cette méthode utilise le protocole `SASL_PLAINTEXT` de sécurité et le mécanisme `PLAIN` SASL.
**Note**  
Les types d'authentification `SASL_SSL_PLAIN` et `SASL_PLAINTEXT_PLAIN` sont pris en charge par Apache Kafka, mais pas par Amazon MSK.
  + **SASL\$1SSL\$1 AWS\$1MSK \$1IAM** — Le contrôle d'accès IAM pour Amazon MSK vous permet de gérer à la fois l'authentification et l'autorisation pour votre cluster MSK. Les informations d' AWS identification de votre utilisateur (clé secrète et clé d'accès) sont utilisées pour se connecter au cluster. Pour plus d'informations, voir la rubrique [Contrôle d'accès IAM](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html) du Guide du développeur Amazon Managed Streaming for Apache Kafka.
  + **SASL\$1SSL\$1SCRAM\$1 SHA512** — Vous pouvez utiliser ce type d'authentification pour contrôler l'accès à vos clusters Amazon MSK. Cette méthode enregistre le nom d'utilisateur et le mot de passe sur AWS Secrets Manager. Le secret doit être associé au cluster Amazon MSK. Pour plus d'informations, consultez la section [Configuration de SASL/SCRAM l'authentification pour un cluster Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html#msk-password-tutorial) dans le guide du développeur Amazon Managed Streaming for Apache Kafka.
  + **SSL** – L’authentification SSL utilise des fichiers keystore et truststore pour se connecter au cluster Amazon MSK. Vous devez générer les fichiers keystore et truststore, les charger dans un compartiment Amazon S3 et fournir la référence à Amazon S3 lorsque vous déployez le connecteur. Les clés keystore, truststore et SSL sont stockées dans AWS Secrets Manager. Votre client doit fournir la clé AWS secrète lors du déploiement du connecteur. Pour plus d'informations, voir la rubrique [Authentification TLS mutuelle](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) du Guide du développeur Amazon Managed Streaming for Apache Kafka.

    Pour plus d’informations, consultez [Configuration de l'authentification pour le connecteur Athena MSK](#connectors-msk-setup-configuring-authentication).
+ **certificates\$1s3\$1reference** – L'emplacement Amazon S3 qui contient les certificats (les fichiers keystore et truststore).
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **kafka\$1endpoint** – Les détails du point de terminaison à fournir à Kafka. Par exemple, pour un cluster Amazon MSK, vous fournissez une [URL d'amorçage](https://docs.aws.amazon.com/msk/latest/developerguide/msk-get-bootstrap-brokers.html) pour le cluster.
+ **secrets\$1manager\$1secret** – Le nom du secret AWS dans lequel sont enregistrées les informations d'identification. Ce paramètre n'est pas obligatoire pour l'authentification IAM.
+ **Paramètres de déversement** – Les fonctions Lambda stockent temporairement (« déversent ») les données qui ne tiennent pas en mémoire vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement. Utilisez les paramètres du tableau suivant pour spécifier l'emplacement de déversement.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/connectors-msk.html)

## Prise en charge du type de données
<a name="connectors-msk-data-type-support"></a>

Le tableau suivant indique les types de données correspondants pris en charge par Kafka et Apache Arrow.


****  

| Kafka | Flèche | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| TIMESTAMP | MILLISECOND | 
| DATE | DAY | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 

## Partitions et déversements
<a name="connectors-msk-partitions-and-splits"></a>

Les rubriques Kafka sont divisées en partitions. Chaque partition est ordonnée. Chaque message dans une partition a un ID incrémentiel appelé *offset*. Chaque partition Kafka est ensuite divisée en plusieurs parties pour un traitement parallèle. Les données sont disponibles pour la période de rétention configurée dans les clusters Kafka.

## Bonnes pratiques
<a name="connectors-msk-best-practices"></a>

Il est recommandé d'utiliser la poussée vers le bas des prédicats lorsque vous interrogez Athena, comme dans les exemples suivants.

```
SELECT * 
FROM "msk_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE integercol = 2147483647
```

```
SELECT * 
FROM "msk_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Configuration du connecteur MSK
<a name="connectors-msk-setup"></a>

Pour pouvoir utiliser le connecteur, vous devez configurer votre cluster Amazon MSK, utiliser le [Registre de schémas AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html) pour définir votre schéma et configurer l'authentification pour le connecteur.

**Note**  
Si vous déployez le connecteur dans un VPC afin d’accéder à des ressources privées et si vous souhaitez également vous connecter à un service accessible au public tel que Confluent, vous devez associer le connecteur à un sous-réseau privé doté d’une passerelle NAT. Pour plus d’informations, consultez [Passerelles NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) dans le Guide de l’utilisateur Amazon VPC.

Lorsque vous travaillez avec le registre des AWS Glue schémas, tenez compte des points suivants :
+ Assurez-vous que le texte du champ **Description** du registre de schémas AWS Glue inclut la chaîne `{AthenaFederationMSK}`. Cette chaîne de marqueur est obligatoire pour les AWS Glue registres que vous utilisez avec le connecteur Amazon Athena MSK.
+ Pour des performances optimales, n'utilisez que des minuscules pour vos noms de bases de données et de tables. L'utilisation d'une casse mixte oblige le connecteur à effectuer une recherche insensible à la casse, ce qui demande plus de temps de calcul.

**Pour configurer votre environnement Amazon MSK et votre registre de AWS Glue schémas**

1. Configurez votre environnement Amazon MSK. Pour plus d'informations et d'étapes, voir la rubrique [Configuration d'Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/before-you-begin.html) et Mise en route avec Amazon MSK dans le [Guide du développeur Amazon Managed Streaming for Apache Kafka](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

1. Téléchargez le fichier de description de la rubrique Kafka (c'est-à-dire son schéma) au format JSON dans le registre des AWS Glue schémas. Pour plus d'informations, consultez la section [Intégration au registre des AWS Glue schémas](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-integrations.html) dans le guide du AWS Glue développeur. Pour des exemples de schémas, voir la rubrique suivante.

### Exemples de schémas pour le registre des AWS Glue schémas
<a name="connectors-msk-setup-schema-examples"></a>

Utilisez le format des exemples de cette rubrique lorsque vous téléchargez votre schéma dans le [registre de schémas AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html).

#### Exemple de schéma de type JSON
<a name="connectors-msk-setup-schema-examples-json"></a>

Dans l'exemple suivant, le schéma à créer dans le registre des AWS Glue `json` schémas indique la valeur pour `dataFormat` et les utilisations `datatypejson` pour`topicName`.

**Note**  
La valeur de `topicName` doit utiliser la même casse que le nom de la rubrique de Kafka. 

```
{
  "topicName": "datatypejson",
  "message": {
    "dataFormat": "json",
    "fields": [
      {
        "name": "intcol",
        "mapping": "intcol",
        "type": "INTEGER"
      },
      {
        "name": "varcharcol",
        "mapping": "varcharcol",
        "type": "VARCHAR"
      },
      {
        "name": "booleancol",
        "mapping": "booleancol",
        "type": "BOOLEAN"
      },
      {
        "name": "bigintcol",
        "mapping": "bigintcol",
        "type": "BIGINT"
      },
      {
        "name": "doublecol",
        "mapping": "doublecol",
        "type": "DOUBLE"
      },
      {
        "name": "smallintcol",
        "mapping": "smallintcol",
        "type": "SMALLINT"
      },
      {
        "name": "tinyintcol",
        "mapping": "tinyintcol",
        "type": "TINYINT"
      },
      {
        "name": "datecol",
        "mapping": "datecol",
        "type": "DATE",
        "formatHint": "yyyy-MM-dd"
      },
      {
        "name": "timestampcol",
        "mapping": "timestampcol",
        "type": "TIMESTAMP",
        "formatHint": "yyyy-MM-dd HH:mm:ss.SSS"
      }
    ]
  }
}
```

#### Exemple de schéma de type CSV
<a name="connectors-msk-setup-schema-examples-csv"></a>

Dans l'exemple suivant, le schéma à créer dans le registre des AWS Glue `csv` schémas indique la valeur pour `dataFormat` et les utilisations `datatypecsvbulk` pour`topicName`. La valeur de `topicName` doit utiliser la même casse que le nom de la rubrique de Kafka.

```
{
  "topicName": "datatypecsvbulk",
  "message": {
    "dataFormat": "csv",
    "fields": [
      {
        "name": "intcol",
        "type": "INTEGER",
        "mapping": "0"
      },
      {
        "name": "varcharcol",
        "type": "VARCHAR",
        "mapping": "1"
      },
      {
        "name": "booleancol",
        "type": "BOOLEAN",
        "mapping": "2"
      },
      {
        "name": "bigintcol",
        "type": "BIGINT",
        "mapping": "3"
      },
      {
        "name": "doublecol",
        "type": "DOUBLE",
        "mapping": "4"
      },
      {
        "name": "smallintcol",
        "type": "SMALLINT",
        "mapping": "5"
      },
      {
        "name": "tinyintcol",
        "type": "TINYINT",
        "mapping": "6"
      },
      {
        "name": "floatcol",
        "type": "DOUBLE",
        "mapping": "7"
      }
    ]
  }
}
```

### Configuration de l'authentification pour le connecteur Athena MSK
<a name="connectors-msk-setup-configuring-authentication"></a>

Vous pouvez utiliser diverses méthodes pour vous authentifier dans votre cluster Amazon MSK, notamment IAM, SSL, SCRAM et Kafka autonome.

Le tableau suivant présente les types d'authentification pour le connecteur ainsi que le protocole de sécurité et le mécanisme SASL pour chacun d'entre eux. Pour plus d'informations, consultez [Authentification et autorisation pour Apache Kafka APIs](https://docs.aws.amazon.com/msk/latest/developerguide/kafka_apis_iam.html) dans le guide du développeur Amazon Managed Streaming for Apache Kafka.


****  

| auth\$1type | security.protocol | sasl.mechanism | 
| --- | --- | --- | 
| SASL\$1SSL\$1PLAIN | SASL\$1SSL | PLAIN | 
| SASL\$1PLAINTEXT\$1PLAIN | SASL\$1PLAINTEXT | PLAIN | 
| SASL\$1SSL\$1AWS\$1MSK\$1IAM | SASL\$1SSL | AWS\$1MSK\$1IAM | 
| SASL\$1SSL\$1SCRAM\$1SHA512 | SASL\$1SSL | SCRAM-SHA-512 | 
| SSL | SSL | N/A | 

**Note**  
Les types d'authentification `SASL_SSL_PLAIN` et `SASL_PLAINTEXT_PLAIN` sont pris en charge par Apache Kafka, mais pas par Amazon MSK.

#### SASL/IAM
<a name="connectors-msk-setup-configuring-authentication-sasl-iam"></a>

Si le cluster utilise l'authentification IAM, vous devez configurer la politique IAM pour l'utilisateur lorsque vous configurez le cluster. Pour plus d'informations, voir la rubrique [Contrôle d'accès IAM](https://docs.aws.amazon.com/msk/latest/developerguide/IAM-access-control.html) du Guide du développeur Amazon Managed Streaming for Apache Kafka.

Pour utiliser ce type d'authentification, définissez la variable d'environnement Lambda `auth_type` pour le connecteur sur `SASL_SSL_AWS_MSK_IAM`. 

#### SSL
<a name="connectors-msk-setup-configuring-authentication-tls"></a>

Si le cluster est authentifié SSL, vous devez générer les fichiers truststore (magasin d'approbations) et keystore (magasin de clés) et les télécharger dans le compartiment Amazon S3. Vous devez fournir cette référence Amazon S3 lorsque vous déployez le connecteur. Les clés keystore, truststore et SSL sont stockées dans AWS Secrets Manager. Vous fournissez la clé AWS secrète lorsque vous déployez le connecteur.

Pour plus d'informations sur la création d'un secret dans Secrets Manager, voir la rubrique [Créer un secret AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

Pour utiliser ce type d'authentification, définissez les variables d'environnement comme indiqué dans le tableau suivant.


****  

| Paramètre | Value | 
| --- | --- | 
| auth\$1type | SSL | 
| certificates\$1s3\$1reference | L'emplacement Amazon S3 qui contient les certificats. | 
| secrets\$1manager\$1secret | Le nom de votre clé AWS secrète. | 

Après avoir créé un secret dans Secrets Manager, vous pouvez le consulter dans la console Secrets Manager.

**Visualisation de votre secret dans Secrets Manager**

1. Ouvrez la console Secrets Manager à l'adresse [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Dans le volet de navigation, sélectionnez **Secrets**.

1. Sur la page **Secrets**, choisissez le lien vers votre secret.

1. Sur la page de détails de votre secret, sélectionnez **Retrieve secret value** (Récupérer la valeur du secret).

   L'image suivante montre un exemple de secret avec trois paires clé/valeur : `keystore_password`, `truststore_password` et `ssl_key_password`.  
![\[Récupération d'un secret SSL dans Secrets Manager\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-msk-setup-1.png)

#### SASL/SCRAM
<a name="connectors-msk-setup-configuring-authentication-sasl-scram"></a>

Si votre cluster utilise l'authentification SCRAM, fournissez la clé Secrets Manager qui est associée au cluster lorsque vous déployez le connecteur. Les informations d'identification AWS de l'utilisateur (clé secrète et clé d'accès) sont utilisées pour s'authentifier au cluster.

Définissez les variables d'environnement comme indiqué dans le tableau suivant.


****  

| Paramètre | Value | 
| --- | --- | 
| auth\$1type | SASL\$1SSL\$1SCRAM\$1SHA512 | 
| secrets\$1manager\$1secret | Le nom de votre clé AWS secrète. | 

L'image suivante montre un exemple de secret dans la console Secrets Manager avec deux key/value paires : une pour `username` et une pour`password`.

![\[Récupération d'un secret SCRAM dans Secrets Manager\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-msk-setup-2.png)


## Informations de licence
<a name="connectors-msk-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-msk/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-msk/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-msk-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-msk) sur GitHub .com.

# Connecteur Amazon Athena pour MySQL
<a name="connectors-mysql"></a>

Le connecteur Lambda MySQL Amazon Athena permet à Amazon Athena d'accéder à vos bases de données MySQL.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-mysql-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ Avant d’utiliser ce connecteur, configurez un VPC et un groupe de sécurité. Pour plus d’informations, consultez [Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

## Limitations
<a name="connectors-mysql-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Comme Athena convertit les requêtes en minuscules, les noms des tables MySQL doivent être en minuscules. Par exemple, les requêtes Athena par rapport à une table nommée `myTable` échoue.
+ Si vous migrez vos connexions MySQL vers le Catalogue Glue et Lake Formation, seuls les noms de table et de colonne en minuscules seront reconnus. 

## Conditions
<a name="connectors-mysql-terms"></a>

Les termes suivants se rapportent au connecteur MySQ.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-mysql-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur MySQL.

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.

### Connexions Glue (recommandé)
<a name="connectors-mysql-gc"></a>

Nous vous recommandons de configurer un connecteur MySQL en utilisant un objet des connexions Glue. 

Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur MySQL Lambda sur le nom de la connexion Glue à utiliser.

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type MYSQL
```

**Propriétés d’environnement Lambda**

**glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur MySQL créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur MySQL créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-mysql-connection-legacy"></a>

Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

#### Chaîne de connexion
<a name="connectors-mysql-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
mysql://${jdbc_connection_string}
```

**Note**  
Si vous recevez le message d'erreur java.sql. SQLException: valeur de date nulle interdite lorsque vous effectuez une `SELECT` requête sur une table MySQL, ajoutez le paramètre suivant à votre chaîne de connexion :  

```
zeroDateTimeBehavior=convertToNull
```
Pour plus d'informations, consultez [l'erreur « Valeur de date zéro interdite » lors de la tentative de sélection dans la table MySQL](https://github.com/awslabs/aws-athena-query-federation/issues/760) sur .com. GitHub

#### Utilisation d'un gestionnaire de multiplexage
<a name="connectors-mysql-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | MySqlMuxCompositeHandler | 
| Gestionnaire de métadonnées | MySqlMuxMetadataHandler | 
| Gestionnaire d’enregistrements | MySqlMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-mysql-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mymysqlcatalog, le nom de la variable d’environnement est alors mymysqlcatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Lambda MySql MUX qui prend en charge deux instances de base de données `mysql1` : (par défaut) et. `mysql2`


****  

| Propriété | Value | 
| --- | --- | 
| default | mysql://jdbc:mysql://mysql2.host:3333/default?user=sample2&password=sample2 | 
| mysql\$1catalog1\$1connection\$1string | mysql://jdbc:mysql://mysql1.host:3306/default?\$1\$1Test/RDS/MySql1\$1 | 
| mysql\$1catalog2\$1connection\$1string | mysql://jdbc:mysql://mysql2.host:3333/default?user=sample2&password=sample2 | 

##### Fourniture des informations d’identification
<a name="connectors-mysql-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/MySql1}`.

```
mysql://jdbc:mysql://mysql1.host:3306/default?...&${Test/RDS/MySql1}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
mysql://jdbc:mysql://mysql1host:3306/default?...&user=sample2&password=sample2&...
```

Actuellement, le connecteur MySQL reconnaît les propriétés JDBC `user` et `password`.

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-mysql-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance MySQL.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | MySqlCompositeHandler | 
| Gestionnaire de métadonnées | MySqlMetadataHandler | 
| Gestionnaire d’enregistrements | MySqlRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-mysql-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance MySQL unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | mysql://mysql1.host:3306/default?secret=Test/RDS/MySql1 | 

#### Paramètres de déversement
<a name="connectors-mysql-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-mysql-data-type-support"></a>

Le tableau suivant affiche les types de données correspondants pour JDBC et Arrow.


****  

| JDBC | Flèche | 
| --- | --- | 
| Booléen | Bit | 
| Entier | Tiny | 
| Court | Smallint | 
| Entier | Int | 
| Long | Bigint | 
| float | Float4 | 
| Double | Float8 | 
| Date | DateDay | 
| Horodatage | DateMilli | 
| String | Varchar | 
| Octets | Varbinary | 
| BigDecimal | Décimal | 
| ARRAY | List | 

## Partitions et déversements
<a name="connectors-mysql-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

## Performance
<a name="connectors-mysql-performance"></a>

MySQL prend en charge les partitions natives. Le connecteur Athena MySQL peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement natif est fortement recommandé.

Le connecteur Athena MySQL effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes. 

### Clauses LIMIT
<a name="connectors-mysql-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-mysql-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena MySQL peut combiner ces expressions et les pousser directement vers MySQL pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena MySQL suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-mysql-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

Pour un article sur l'utilisation de la poussée vers le bas de prédicats pour améliorer les performances des requêtes fédérées, y compris MySQL, consultez [Améliorer les requêtes fédérées avec la poussée vers le bas de prédicats dans Amazon Athena](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) sur le *blog AWS Big Data*.

## Requêtes de transmission
<a name="connectors-mysql-passthrough-queries"></a>

Le connecteur MySQL prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec MySQL, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans MySQL. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-mysql-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-mysql-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/pom.xml) du connecteur MySQL sur GitHub .com.

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-mysql) sur GitHub .com.

# Connecteur Amazon Athena pour Neptune
<a name="connectors-neptune"></a>

Amazon Neptune est un service de base de données orientée graphe entièrement géré et fiable, qui facilite la création et l'exécution d'applications fonctionnant avec des jeux de données hautement connectés. Neptune conçu spécialement, haute performance, le moteur de base de données graphique stocke des milliards de relations de manière optimale et des requêtes sur les graphiques avec une latence de seulement quelques millisecondes. Pour plus d'informations, consultez [Neptune Guide de l'utilisateur](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html).

Le connecteur Amazon Athena Neptune permet à Athena de communiquer avec votre instance de base de données orientée graphe Neptune, rendant vos données de graphe Neptune accessibles par des requêtes SQL.

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

Si Lake Formation est activé sur votre compte, le rôle IAM de votre connecteur Lambda fédéré Athena que vous avez déployé dans AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

## Conditions préalables
<a name="connectors-neptune-prerequisites"></a>

L’utilisation du connecteur Neptune nécessite les trois étapes suivantes.
+ Configuration d’un cluster Neptune
+ Configuration d'un AWS Glue Data Catalog
+ Déploiement du connecteur sur votre Compte AWS. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md). Pour plus d'informations spécifiques au déploiement du connecteur Neptune, consultez la section [Déployer le connecteur Amazon Athena Neptune](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/neptune-connector-setup) sur .com. GitHub

## Limitations
<a name="connectors-neptune-limitations"></a>

Actuellement, le connecteur Neptune présente la limitation suivante.
+ La projection de colonnes, y compris la clé primaire (ID), n'est pas prise en charge. 

## Configuration d’un cluster Neptune
<a name="connectors-neptune-setting-up-a-neptune-cluster"></a>

Si vous ne disposez pas d’un cluster Amazon Neptune et d’un jeu de données de graphes de propriétés que vous souhaitez utiliser, vous devez en configurer un.

Assurez-vous de disposer d’une passerelle Internet et d’une passerelle NAT dans le VPC qui héberge votre cluster Neptune. Les sous-réseaux privés utilisés par la fonction Lambda du connecteur Neptune doivent avoir une route vers Internet via cette passerelle NAT. La fonction Lambda du connecteur Neptune utilise la passerelle NAT pour communiquer avec. AWS Glue

Pour obtenir des instructions sur la configuration d'un nouveau cluster Neptune et son chargement avec un exemple de jeu de données, consultez Sample [Neptune Cluster](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/neptune-cluster-setup) Setup sur .com. GitHub

## Configuration d'un AWS Glue Data Catalog
<a name="connectors-neptune-setting-up-an-aws-glue-data-catalog"></a>

Contrairement aux magasins de données relatives traditionnels, les nœuds et les périphéries de base de données de graphe Neptune n’utilisent pas de schéma défini. Chaque entrée peut comporter des champs et des types de données différents. Toutefois, étant donné que le connecteur Neptune extrait les métadonnées du AWS Glue Data Catalog, vous devez créer une AWS Glue base de données contenant des tables avec le schéma requis. Après avoir créé la base de données et les tables AWS Glue , le connecteur peut fournir la liste des tables disponibles pour effectuer des requêtes auprès d’Athena.

### Activation de la mise en correspondance non sensible à la casse des colonnes
<a name="connectors-neptune-glue-case-insensitive-column-matching"></a>

Pour résoudre les noms de colonnes de votre table Neptune avec le boitier correct, même si les noms de colonnes sont tous en minuscules AWS Glue, vous pouvez configurer le connecteur Neptune pour une correspondance insensible aux majuscules et minuscules.

Pour activer cette fonctionnalité, définissez la variable d'environnement de la fonction Lambda du connecteur Neptune de `enable_caseinsensitivematch` à `true`. 

### Spécification du paramètre de table AWS Glue glabel pour les noms de table en majuscules
<a name="connectors-neptune-glue-glabel-parameter-for-table-names"></a>

Étant donné que seuls AWS Glue les noms de table en minuscules sont pris en charge, il est important de spécifier le paramètre de `glabel` AWS Glue table lorsque vous créez une AWS Glue table pour Neptune et que le nom de votre table Neptune inclut le boîtier. 

Dans la définition de votre AWS Glue table, incluez le `glabel` paramètre et attribuez à sa valeur le nom de votre table avec son boîtier d'origine. Cela garantit que le boîtier correct est préservé lors de AWS Glue l'interaction avec votre table Neptune. L'exemple suivant définit la valeur de `glabel` sur le nom de la table `Airport`.

```
glabel = Airport
```

![\[Définition de la propriété de glabel AWS Glue table afin de préserver le cadre du nom de table pour une table Neptune\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-neptune-1.png)


Pour plus d'informations sur la configuration d'un AWS Glue Data Catalog pour qu'il fonctionne avec Neptune, voir [Configurer le AWS Glue catalogue sur GitHub .com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/aws-glue-sample-scripts).

## Performance
<a name="connectors-neptune-performance"></a>

Le connecteur Athena Neptune effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Cependant, les prédicats utilisant la clé primaire entraînent l’échec de la requête. Les clauses `LIMIT` réduisent la quantité de données analysées, mais si vous ne fournissez pas de prédicat, vous devez vous attendre à ce que les requêtes `SELECT` avec une clause `LIMIT` analysent au moins 16 Mo de données. Le connecteur Neptune résiste à la limitation due à la simultanéité.

## Requêtes de transmission
<a name="connectors-neptune-passthrough-queries"></a>

Le connecteur Neptune prend en charge les [requêtes de transmission](federated-query-passthrough.md). Vous pouvez utiliser cette fonctionnalité pour exécuter des requêtes Gremlin sur des graphes de propriétés et pour exécuter des requêtes SPARQL sur des données RDF.

Pour créer des requêtes de transmission avec Neptune, utilisez la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            DATABASE => 'database_name',
            COLLECTION => 'collection_name',
            QUERY => 'query_string'
        ))
```

L’exemple de requête de transmission Neptune ci-dessous filtre les aéroports utilisant le code `ATL`. Les guillemets simples doublés servent de guillemets d’échappement.

```
SELECT * FROM TABLE(
        system.query(
            DATABASE => 'graph-database',
            COLLECTION => 'airport',
            QUERY => 'g.V().has(''airport'', ''code'', ''ATL'').valueMap()' 
        ))
```

## Ressources supplémentaires
<a name="connectors-neptune-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune) sur GitHub .com.

# Connecteur Amazon Athena OpenSearch
<a name="connectors-opensearch"></a>

OpenSearch Service

Le OpenSearch connecteur Amazon Athena permet à Amazon Athena de communiquer avec OpenSearch vos instances afin que vous puissiez utiliser le SQL pour interroger vos données. OpenSearch 

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

**Note**  
En raison d'un problème connu, le OpenSearch connecteur ne peut pas être utilisé avec un VPC.

Si Lake Formation est activé sur votre compte, le rôle IAM de votre connecteur Lambda fédéré Athena que vous avez déployé dans AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

## Conditions préalables
<a name="connectors-opensearch-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Conditions
<a name="connectors-opensearch-terms"></a>

Les termes suivants concernent le OpenSearch connecteur.
+ **Domaine** : nom que ce connecteur associe au point de terminaison de votre OpenSearch instance. Le domaine est également utilisé comme nom de base de données. Pour les OpenSearch instances définies au sein d'Amazon OpenSearch Service, le domaine est détectable automatiquement. Pour les autres cas, vous devez fournir un mappage entre le nom de domaine et le point de terminaison.
+ **Index** — Table de base de données définie dans votre OpenSearch instance.
+ **Mapping** (Mappage) – Si un index est une table de base de données, le mappage est son schéma (c’est-à-dire les définitions de ses champs et attributs).

  Ce connecteur prend en charge à la fois la récupération des métadonnées depuis l' OpenSearch instance et depuis le AWS Glue Data Catalog. Si le connecteur trouve une AWS Glue base de données et une table qui correspondent à vos noms de OpenSearch domaine et d'index, il tente de les utiliser pour définir le schéma. Nous vous recommandons de créer votre AWS Glue table de manière à ce qu'elle soit un sur-ensemble de tous les champs de votre OpenSearch index.
+ **Document** – Un enregistrement au sein d’une table de base de données.
+ **Flux de données** – Données temporelles composées de plusieurs index de support. Pour plus d'informations, consultez les [sections Flux de données](https://opensearch.org/docs/latest/dashboards/im-dashboards/datastream/) dans la OpenSearch documentation et [Getting started with data streams](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/data-streams.html#data-streams-example) dans le *Amazon OpenSearch Service Developer Guide*.
**Note**  
Les index de flux de données étant créés et gérés en interne par OpenSearch, le connecteur choisit le mappage de schéma à partir du premier index disponible. Pour cette raison, nous vous recommandons vivement de configurer une AWS Glue table comme source de métadonnées supplémentaire. Pour de plus amples informations, veuillez consulter [Configuration de bases de données et de tables dans AWS Glue](#connectors-opensearch-setting-up-databases-and-tables-in-aws-glue). 

## Parameters
<a name="connectors-opensearch-parameters"></a>

Utilisez les paramètres de cette section pour configurer le OpenSearch connecteur.

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.  
Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="opensearch-gc"></a>

Nous vous recommandons de configurer un OpenSearch connecteur à l'aide d'un objet de connexions Glue. Pour ce faire, définissez la variable d'`glue_connection`environnement du OpenSearch connecteur Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type OPENSEARCH
```

**Propriétés d’environnement Lambda**
+  **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le OpenSearch connecteur créé à l'aide des connexions Glue ne prend pas en charge l'utilisation d'un gestionnaire de multiplexage.
Le OpenSearch connecteur créé à l'aide des connexions Glue ne prend en charge que `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="opensearch-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **disable\$1glue** — (Facultatif) S'il est présent et défini sur true, le connecteur ne tente pas de récupérer des métadonnées supplémentaires à partir de. AWS Glue
+ **query\$1timeout\$1cluster** – Le délai d’expiration, en secondes, pour les requêtes d’intégrité du cluster utilisées dans la génération d’examens parallèles.
+ **query\$1timeout\$1search** – Le délai d’expiration, en secondes, des requêtes de recherche utilisées pour récupérer des documents à partir d’un index.
+ **auto\$1discover\$1endpoint** – Valeur booléenne. La valeur par défaut est `true`. Lorsque vous utilisez le OpenSearch service Amazon et que vous définissez ce paramètre sur true, le connecteur peut découvrir automatiquement vos domaines et points de terminaison en appelant les opérations d'API de description ou de liste appropriées sur le OpenSearch service. Pour tout autre type d' OpenSearch instance (par exemple, auto-hébergée), vous devez spécifier les points de terminaison de domaine associés dans la `domain_mapping` variable. Si`auto_discover_endpoint=true`, le connecteur utilise des AWS informations d'identification pour s'authentifier auprès du OpenSearch service. Dans le cas contraire, le connecteur récupère les informations d'identification du nom d'utilisateur et du mot de passe AWS Secrets Manager par le biais de la `domain_mapping` variable.
+ **domain\$1mapping** – Utilisé uniquement lorsque `auto_discover_endpoint` est défini sur false et définit le mappage entre les noms de domaine et leurs points de terminaison associés. La `domain_mapping` variable peut prendre en charge plusieurs OpenSearch points de terminaison au format suivant :

  ```
  domain1=endpoint1,domain2=endpoint2,domain3=endpoint3,...       
  ```

  Dans le but de s'authentifier auprès d'un OpenSearch point de terminaison, le connecteur prend en charge les chaînes de substitution injectées en utilisant le format dont le nom `${SecretName}` d'utilisateur et le mot de passe ont été extraits AWS Secrets Manager. Le secret doit être stocké au format JSON suivant :

  ```
  { "username": "your_username", "password": "your_password" }
  ```

  Le connecteur analysera automatiquement cette structure JSON pour récupérer les informations d’identification.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.

  L’exemple suivant utilise le secret `opensearch-creds`.

  ```
  movies=https://${opensearch-creds}:search-movies-ne...qu---us-east-1---es.amazonaws.com     
  ```

  Au moment de l’exécution, `${opensearch-creds}` est affiché sous la forme du nom d’utilisateur et du mot de passe, comme dans l’exemple suivant.

  ```
  movies=https://myusername@mypassword:search-movies-ne...qu---us-east-1---es.amazonaws.com
  ```

  Dans le paramètre `domain_mapping`, chaque paire domaine-point de terminaison peut utiliser un secret différent. Le secret lui-même doit être spécifié au format *user\$1name* @*password*. Bien que le mot de passe puisse contenir `@` des signes intégrés, le premier `@` sert de séparateur de*user\$1name*.

  Il est également important de noter que la virgule (,) et le signe égal (=) sont utilisés par ce connecteur comme séparateurs pour les paires domaine-point de terminaison. Pour cette raison, vous ne devez les utiliser nulle part dans le secret stocké.

## Configuration de bases de données et de tables dans AWS Glue
<a name="connectors-opensearch-setting-up-databases-and-tables-in-aws-glue"></a>

Le connecteur obtient des informations de métadonnées à l'aide de AWS Glue ou OpenSearch. Vous pouvez configurer une AWS Glue table comme source de définition de métadonnées supplémentaire. Pour activer cette fonctionnalité, définissez une AWS Glue base de données et une table correspondant au domaine et à l'index de la source que vous complétez. Le connecteur peut également tirer parti des définitions de métadonnées stockées dans l' OpenSearch instance en récupérant le mappage pour l'index spécifié.

### Définition des métadonnées pour les tableaux dans OpenSearch
<a name="connectors-opensearch-defining-metadata-for-arrays-in-opensearch"></a>

OpenSearch ne possède pas de type de données de tableau dédié. Chaque champ peut contenir zéro ou plusieurs valeurs, à condition qu’elles soient du même type de données. Si vous souhaitez l'utiliser OpenSearch comme source de définition de métadonnées, vous devez définir une `_meta` propriété pour tous les index utilisés avec Athena pour les champs qui doivent être considérés comme une liste ou un tableau. Si vous ne parvenez pas à effectuer cette étape, les requêtes renvoient uniquement le premier élément du champ de liste. Lorsque vous spécifiez la propriété `_meta`, les noms de champs doivent être entièrement qualifiés pour les structures JSON imbriquées (par exemple, `address.street`, où `street` est un champ imbriqué dans une structure `address`).

L’exemple suivant définit les listes `actor` et `genre` dans la table `movies`.

```
PUT movies/_mapping 
{ 
  "_meta": { 
    "actor": "list", 
    "genre": "list" 
  } 
}
```

### Types de données
<a name="connectors-opensearch-data-types"></a>

Le OpenSearch connecteur peut extraire les définitions de métadonnées de l'instance AWS Glue ou de l' OpenSearch instance. Le connecteur utilise le mappage du tableau suivant pour convertir les définitions en types de données Apache Arrow, y compris les points notés dans la section suivante.


****  

| OpenSearch | Apache | AWS Glue | 
| --- | --- | --- | 
| texte, mot clé, binaire | VARCHAR | chaîne | 
| long | BIGINT | bigint | 
| scaled\$1float | BIGINT | SCALED\$1FLOAT(...) | 
| entier | INT | int | 
| short | SMALLINT | smallint | 
|  octet | TINYINT | tinyint | 
| double | FLOAT8 | double | 
| float, half\$1float | FLOAT4 | float | 
| boolean | BIT | boolean | 
| date, date\$1nanos | DATEMILLI | timestamp | 
| Structure JSON | STRUCT | STRUCT | 
| \$1meta (pour plus d’informations, consultez la section [Définition des métadonnées pour les tableaux dans OpenSearch](#connectors-opensearch-defining-metadata-for-arrays-in-opensearch).) | LIST | ARRAY | 

#### Remarques sur les types de données
<a name="connectors-opensearch-data-type-considerations-and-limitations"></a>
+ Actuellement, le connecteur ne prend en charge que les AWS Glue types de données OpenSearch et répertoriés dans le tableau précédent.
+ Un`scaled_float` est un nombre à virgule flottante mis à l’échelle par un facteur de mise à l’échelle double fixe et représenté en tant que `BIGINT` dans Apache Arrow. Par exemple, 0,756 avec un facteur d’échelle de 100 est arrondi à 76.
+ Pour définir un `scaled_float` in AWS Glue, vous devez sélectionner le type de `array` colonne et déclarer le champ au format SCALED\$1FLOAT (). *scaling\$1factor*

  Les exemples suivants sont valides :

  ```
  SCALED_FLOAT(10.51) 
  SCALED_FLOAT(100) 
  SCALED_FLOAT(100.0)
  ```

  Les exemples suivants ne sont pas valides :

  ```
  SCALED_FLOAT(10.) 
  SCALED_FLOAT(.5)
  ```
+ Lors de la conversion de `date_nanos` vers `DATEMILLI`, les nanosecondes sont arrondies à la milliseconde la plus proche. Valeurs valides pour `date` et `date_nanos` incluent, sans s’y limiter, les formats suivants :

  ```
  "2020-05-18T10:15:30.123456789" 
  "2020-05-15T06:50:01.123Z" 
  "2020-05-15T06:49:30.123-05:00" 
  1589525370001 (epoch milliseconds)
  ```
+ An OpenSearch `binary` est une représentation sous forme de chaîne d'une valeur binaire codée en utilisant `Base64` et convertie en `VARCHAR` a.

## Exécution de requêtes SQL
<a name="connectors-opensearch-running-sql-queries"></a>

Vous trouverez ci-dessous des exemples de requêtes DDL que vous pouvez utiliser avec ce connecteur. Dans les exemples, *function\$1name* correspond au nom de votre fonction Lambda, *domain* au nom du domaine que vous souhaitez interroger et *index* au nom de votre index.

```
SHOW DATABASES in `lambda:function_name`
```

```
SHOW TABLES in `lambda:function_name`.domain
```

```
DESCRIBE `lambda:function_name`.domain.index
```

## Performance
<a name="connectors-opensearch-performance"></a>

Le OpenSearch connecteur Athena prend en charge les scans parallèles basés sur des partitions. Le connecteur utilise les informations relatives à l'état du cluster extraites de l' OpenSearch instance pour générer plusieurs demandes de recherche de documents. Les demandes sont réparties pour chaque partition et exécutées simultanément.

Le connecteur transfère également des prédicats dans le cadre de ses requêtes de recherche de documents. L’exemple de requête et de prédicat suivant montre comment le connecteur utilise le prédicat poussé vers le bas.

**Interrogation**

```
SELECT * FROM "lambda:elasticsearch".movies.movies 
WHERE year >= 1955 AND year <= 1962 OR year = 1996
```

**Prédicat**

```
(_exists_:year) AND year:([1955 TO 1962] OR 1996)
```

## Requêtes de transmission
<a name="connectors-opensearch-passthrough-queries"></a>

Le OpenSearch connecteur prend en charge [les requêtes directes](federated-query-passthrough.md) et utilise le langage Query DSL. Pour plus d'informations sur les requêtes avec Query DSL, consultez [Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html) dans la documentation Elasticsearch ou [Query](https://opensearch.org/docs/latest/query-dsl/) DSL dans la documentation. OpenSearch 

Pour utiliser des requêtes directes avec le OpenSearch connecteur, utilisez la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            schema => 'schema_name',
            index => 'index_name',
            query => "{query_string}"
        ))
```

L' OpenSearch exemple de requête directe suivant filtre les employés dont le statut professionnel est actif dans l'`employee`index du `default` schéma.

```
SELECT * FROM TABLE(
        system.query(
            schema => 'default',
            index => 'employee',
            query => "{ ''bool'':{''filter'':{''term'':{''status'': ''active''}}}}"
        ))
```

## Ressources supplémentaires
<a name="connectors-opensearch-additional-resources"></a>
+ Pour un article sur l'utilisation du OpenSearch connecteur Amazon Athena pour interroger des données dans Amazon OpenSearch Service et Amazon S3 en une seule requête, voir Interroger des [données dans Amazon OpenSearch Service à l'aide de SQL depuis Amazon Athena](https://aws.amazon.com/blogs/big-data/query-data-in-amazon-opensearch-service-using-sql-from-amazon-athena/) dans *AWS le* blog Big Data.
+ Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-elasticsearch) sur GitHub .com.

# Connecteur Amazon Athena pour Oracle
<a name="connectors-oracle"></a>

Le connecteur Amazon Athena pour Oracle permet à Amazon Athena d’exécuter des requêtes SQL sur des données stockées dans Oracle exécutées sur site ou sur Amazon EC2 ou Amazon RDS. Vous pouvez également utiliser le connecteur pour interroger des données sur [Oracle Exadata](https://www.oracle.com/engineered-systems/exadata/).

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-oracle-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-oracle-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Seules les bases de données Oracle dont la version est 12.1.0.2 sont prises en charge.
+ Si le connecteur Oracle n’utilise pas une connexion Glue, les noms de base de données, de table et de colonne seront convertis en majuscules par le connecteur. 

  Si le connecteur Oracle utilise une connexion Glue, les noms de base de données, de table et de colonne ne seront pas établis en majuscules par défaut par le connecteur. Pour modifier ce comportement relatif à la casse, remplacez l’élément Lambda par variable d’environnement `casing_mode` par `upper` ou `lower` selon les besoins.

   Un connecteur Oracle utilisant une connexion Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
+ Lorsque vous utilisez l’élément `NUMBER` Oracle sans définir la précision ni l’échelle, Athena le traite en tant que `BIGINT`. Pour obtenir les décimales requises dans Athena, spécifiez `default_scale=<number of decimal places>` dans vos variables d’environnement Lambda.

## Conditions
<a name="connectors-oracle-terms"></a>

Les termes suivants se rapportent au connecteur Oracle.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-oracle-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Oracle.

### Connexions Glue (recommandé)
<a name="oracle-gc"></a>

Nous vous recommandons de configurer un connecteur Oracle en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Oracle Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type ORACLE
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **is\$1fips\$1enabled** (facultatif) : défini sur true lorsque le mode FIPS est activé. La valeur par défaut est false.
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée.
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels aucune connexion Glue n’est associée.
  + **case\$1insensitive\$1search** : réalisation de recherches non sensibles à la casse sur les noms de schéma et de table dans Oracle. Utilisez cette valeur si votre requête contient des noms de schéma ou de table qui ne correspondent pas à la casse par défaut de votre connecteur.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Oracle créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Oracle créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="oracle-legacy"></a>

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.

Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

**Propriétés d’environnement Lambda**
+ **default** : chaîne de connexion JDBC à utiliser pour se connecter à l’instance de base de données Oracle. Par exemple, `oracle://${jdbc_connection_string}`
+ **catalog\$1connection\$1string** : utilisé par le gestionnaire de multiplexage (non pris en charge lors de l’utilisation d’une connexion Glue). Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myoraclecatalog, le nom de la variable d’environnement est alors myoraclecatalog\$1connection\$1string.
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **is\$1fips\$1enabled** (facultatif) : défini sur true lorsque le mode FIPS est activé. La valeur par défaut est false.
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée.
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels aucune connexion Glue n’est associée.
  + **case\$1insensitive\$1search** : réalisation de recherches non sensibles à la casse sur les noms de schéma et de table dans Oracle. Utilisez cette valeur si votre requête contient des noms de schéma ou de table qui ne correspondent pas à la casse par défaut de votre connecteur.

#### Chaîne de connexion
<a name="connectors-oracle-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
oracle://${jdbc_connection_string}
```

**Note**  
Si votre mot de passe contient des caractères spéciaux (par exemple,`some.password`), mettez-le entre guillemets lorsque vous le transmettez à la chaîne de connexion (par exemple,`"some.password"`). Si vous ne le faites pas, une erreur d'URL Oracle spécifiée invalide peut se produire.

#### Utilisation d'un gestionnaire de connexion unique
<a name="connectors-oracle-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Oracle.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | OracleCompositeHandler | 
| Gestionnaire de métadonnées | OracleMetadataHandler | 
| Gestionnaire d’enregistrements | OracleRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-oracle-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 
| IsFIPSEnabled | Facultatif. Défini sur true lorsque le mode FIPS est activé. La valeur par défaut est false.  | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

Le connecteur prend en charge les connexions basées sur SSL aux instances Amazon RDS. La prise en charge est limitée au protocole TLS (Transport Layer Security) et à l'authentification du serveur par le client. L’authentification mutuelle n’est pas prise en charge dans Amazon RDS. La deuxième ligne du tableau ci-dessous indique la syntaxe pour utiliser le protocole SSL.

L’exemple de propriété suivant concerne une instance Oracle unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle\$1@//hostname:port/servicename | 
|  | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle\$1@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS) (HOST=<HOST\$1NAME>)(PORT=))(CONNECT\$1DATA=(SID=))(SECURITY=(SSL\$1SERVER\$1CERT\$1DN=))) | 

#### Fourniture des informations d’identification
<a name="connectors-oracle-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Note**  
Si votre mot de passe contient des caractères spéciaux (par exemple,`some.password`), mettez-le entre guillemets lorsque vous l'enregistrez dans Secrets Manager (par exemple,`"some.password"`). Si vous ne le faites pas, une erreur d'URL Oracle spécifiée invalide peut se produire.

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/Oracle}`.

```
oracle://jdbc:oracle:thin:${Test/RDS/Oracle}@//hostname:port/servicename 
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
oracle://jdbc:oracle:thin:username/password@//hostname:port/servicename
```

Actuellement, le connecteur Oracle reconnaît les propriétés JDBC `UID` et `PWD`.

#### Utilisation d'un gestionnaire de multiplexage
<a name="connectors-oracle-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | OracleMuxCompositeHandler | 
| Gestionnaire de métadonnées | OracleMuxMetadataHandler | 
| Gestionnaire d’enregistrements | OracleMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-oracle-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myoraclecatalog, le nom de la variable d’environnement est alors myoraclecatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Oracle MUX Lambda qui prend en charge deux instances de base de données :`oracle1` (par défaut) et `oracle2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle1\$1@//oracle1.hostname:port/servicename | 
| oracle\$1catalog1\$1connection\$1string | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle1\$1@//oracle1.hostname:port/servicename | 
| oracle\$1catalog2\$1connection\$1string | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle2\$1@//oracle2.hostname:port/servicename | 

## Prise en charge du type de données
<a name="connectors-oracle-data-type-support"></a>

Le tableau suivant indique les types de données pour JDBC, Oracle et Arrow.


****  

| JDBC | Oracle | Flèche | 
| --- | --- | --- | 
| Booléen | boolean | Bit | 
| Entier | N/A | Tiny | 
| Court | smallint | Smallint | 
| Entier | entier | Int | 
| Long | bigint | Bigint | 
| float | float4 | Float4 | 
| Double | float8 | Float8 | 
| Date | date | DateDay | 
| Horodatage | timestamp | DateMilli | 
| String | text | Varchar | 
| Octets | octets | Varbinary | 
| BigDecimal | numeric(p,s) | Décimal | 
| ARRAY | N/A (voir la remarque) | List | 

## Partitions et déversements
<a name="connectors-oracle-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

## Performance
<a name="connectors-oracle-performance"></a>

Oracle prend en charge les partitions natives. Le connecteur Athena Oracle peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement natif est fortement recommandé. La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur Oracle résiste à la limitation due à la simultanéité. Cependant, les temps d'exécution des requêtes ont tendance à être longs.

Le connecteur Athena Oracle effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Des prédicats simples et des expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution de la requête. 

### Prédicats
<a name="connectors-oracle-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Oracle peut combiner ces expressions et les pousser directement vers Oracle pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Oracle suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-oracle-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Requêtes de transmission
<a name="connectors-oracle-passthrough-queries"></a>

Le connecteur Oracle prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Oracle, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Oracle. La requête sélectionne toutes les colonnes dans la table `customer`.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer'
        ))
```

## Informations de licence
<a name="connectors-oracle-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-oracle-additional-resources"></a>

Pour obtenir les informations les plus récentes sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/pom.xml) du connecteur Oracle sur GitHub .com.

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-oracle) sur GitHub .com.

# Connecteur Amazon Athena pour PostgreSQL
<a name="connectors-postgresql"></a>

Le connecteur PostgreSQL Amazon Athena permet à Athena d’accéder à vos bases de données PostgreSQL.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-postgres-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-postgresql-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ À l’instar de PostgreSQL, Athena considère les espaces de fin dans les types `CHAR` PostgreSQL comme étant sémantiquement non importants à des fins de longueur et de comparaison. Notez que cela s’applique uniquement aux types `CHAR`, mais pas aux types `VARCHAR`. Athena ignore les espaces de fin pour le type `CHAR`, mais les considère comme importants pour le type `VARCHAR`.
+ Lorsque vous utilisez le type de données chaîne de caractères non sensible à la casse [citext](https://www.postgresql.org/docs/current/citext.html), PostgreSQL utilise une comparaison de données non sensible à la casse qui est différente de celle d’Athena. Cette différence crée un écart entre les données lors des opérations SQL `JOIN`. Pour contourner ce problème, utilisez la fonctionnalité de requête de transmission du connecteur PostgreSQL. Pour plus d’informations, consultez [Requêtes de transmission](#connectors-postgres-passthrough-queries) plus bas dans ce document. 

## Conditions
<a name="connectors-postgresql-terms"></a>

Les termes suivants se rapportent au connecteur PostgreSQL.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-postgresql-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur PostgreSQL.

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.

### Connexions Glue (recommandé)
<a name="connectors-postgresql-gc"></a>

Nous vous recommandons de configurer un connecteur PostgreSQL en utilisant un objet des connexions Glue. 

Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur PostgreSQL Lambda sur le nom de la connexion Glue à utiliser.

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type POSTGRESQL
```

**Propriétés d’environnement Lambda**

**glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur PostgreSQL créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur PostgreSQL créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-postgresql-connection-legacy"></a>

Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

#### Chaîne de connexion
<a name="connectors-postgresql-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
postgres://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-postgresql-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | PostGreSqlMuxCompositeHandler | 
| Gestionnaire de métadonnées | PostGreSqlMuxMetadataHandler | 
| Gestionnaire d’enregistrements | PostGreSqlMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-postgresql-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mypostgrescatalog, le nom de la variable d’environnement est alors mypostgrescatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Lambda PostGreSql MUX qui prend en charge deux instances de base de données `postgres1` : (par défaut) et. `postgres2`


****  

| Propriété | Value | 
| --- | --- | 
| default | postgres://jdbc:postgresql://postgres1.host:5432/default?\$1\$1Test/RDS/PostGres1\$1 | 
| postgres\$1catalog1\$1connection\$1string | postgres://jdbc:postgresql://postgres1.host:5432/default?\$1\$1Test/RDS/PostGres1\$1 | 
| postgres\$1catalog2\$1connection\$1string | postgres://jdbc:postgresql://postgres2.host:5432/default?user=sample&password=sample | 

##### Fourniture des informations d’identification
<a name="connectors-postgresql-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/PostGres1}`.

```
postgres://jdbc:postgresql://postgres1.host:5432/default?...&${Test/RDS/PostGres1}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
postgres://jdbc:postgresql://postgres1.host:5432/default?...&user=sample2&password=sample2&...
```

Actuellement, le connecteur PostgreSQL reconnaît les propriétés JDBC `user` et `password`.

##### Activation de SSL
<a name="connectors-postgresql-ssl"></a>

Pour prendre en charge le protocole SSL dans votre connexion PostgreSQL, ajoutez ce qui suit à votre chaîne de connexion :

```
&sslmode=verify-ca&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory
```

**Exemple**  
L'exemple de chaîne de connexion suivant n'utilise pas le protocole SSL.

```
postgres://jdbc:postgresql://example-asdf-aurora-postgres-endpoint:5432/asdf?user=someuser&password=somepassword
```

Pour activer le protocole SSL, modifiez la chaîne comme suit.

```
postgres://jdbc:postgresql://example-asdf-aurora-postgres-endpoint:5432/asdf?user=someuser&password=somepassword&sslmode=verify-ca&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory
```

#### Utilisation d'un gestionnaire de connexion unique
<a name="connectors-postgresql-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance PostgreSQL.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | PostGreSqlCompositeHandler | 
| Gestionnaire de métadonnées | PostGreSqlMetadataHandler | 
| Gestionnaire d’enregistrements | PostGreSqlRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-postgresql-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance PostgreSQL unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | postgres://jdbc:postgresql://postgres1.host:5432/default?secret=\$1\$1Test/RDS/PostgreSQL1\$1 | 

#### Paramètres de déversement
<a name="connectors-postgresql-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-postgresql-data-type-support"></a>

Le tableau suivant indique les types de données correspondants pour JDBC, PostGre SQL et Arrow.


****  

| JDBC | PostGreSQL | Flèche | 
| --- | --- | --- | 
| Booléen | Booléen | Bit | 
| Entier | N/A | Tiny | 
| Court | smallint | Smallint | 
| Entier | entier | Int | 
| Long | bigint | Bigint | 
| float | float4 | Float4 | 
| Double | float8 | Float8 | 
| Date | date | DateDay | 
| Horodatage | timestamp | DateMilli | 
| String | text | Varchar | 
| Octets | octets | Varbinary | 
| BigDecimal | numeric(p,s) | Décimal | 
| ARRAY | N/A (voir la remarque) | List | 

**Note**  
Le type `ARRAY` est pris en charge pour le connecteur PostgreSQL avec les contraintes suivantes : les tableaux multidimensionnels (`<data_type>[][]` ou tableaux imbriqués) ne sont pas pris en charge. Les colonnes avec des types de données `ARRAY` non pris en charge sont converties en un tableau d’éléments de chaîne (`array<varchar>`).

## Partitions et déversements
<a name="connectors-postgresql-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

## Performance
<a name="connectors-postgresql-performance"></a>

PostgreSQL prend en charge les partitions natives. Le connecteur Athena PostgreSQL peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement natif est fortement recommandé.

Le connecteur Athena PostgreSQL effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes. Cependant, la sélection d'un sous-ensemble de colonnes entraîne parfois un délai d'exécution plus long des requêtes.

### Clauses LIMIT
<a name="connectors-postgres-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-postgres-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena PostgreSQL peut combiner ces expressions et les pousser directement vers PistgreSQL pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena PostgreSQL suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-postgres-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Requêtes de transmission
<a name="connectors-postgres-passthrough-queries"></a>

Le connecteur PostgreSQL prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec PostgreSQL, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans PostgreSQL. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Ressources supplémentaires
<a name="connectors-postgresql-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-postgresql/pom.xml) du connecteur PostgreSQL sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-postgresql) sur GitHub .com.

# Connecteur Amazon Athena pour Redis OSS
<a name="connectors-redis"></a>

Le connecteur Amazon Athena pour Redis OSS permet à Amazon Athena de communiquer avec vos instances Redis OSS afin que vous puissiez interroger vos données Redis OSS avec SQL. Vous pouvez utiliser le AWS Glue Data Catalog pour mapper vos paires clé-valeur Redis OSS dans des tables virtuelles.

Contrairement aux magasins de données relationnels classiques, Redis OSS n’utilise pas le concept de table ou de colonne. Redis OSS propose plutôt des modèles d’accès clé-valeur où la clé est essentiellement de type `string` et où la valeur est de type `string`, `z-set` ou `hmap`.

Vous pouvez utiliser le AWS Glue Data Catalog pour créer un schéma et configurer des tables virtuelles. Des propriétés de table spéciales indiquent au connecteur Athena pour Redis OSS comment mapper vos clés et valeurs Redis OSS dans une table. Pour plus d'informations, consultez [Configuration de bases de données et de tables dans AWS Glue](#connectors-redis-setting-up-databases-and-tables-in-glue) dans la suite de ce document.

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

Si Lake Formation est activé sur votre compte, le rôle IAM de votre connecteur Lambda fédéré Athena que vous avez déployé dans AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

Le connecteur Amazon Athena Redis OSS prend en charge Amazon MemoryDB et ElastiCache Amazon (Redis OSS).

## Conditions préalables
<a name="connectors-redis-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ Avant d’utiliser ce connecteur, configurez un VPC et un groupe de sécurité. Pour plus d’informations, consultez [Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

## Parameters
<a name="connectors-redis-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Redis.
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **glue\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.

## Configuration de bases de données et de tables dans AWS Glue
<a name="connectors-redis-setting-up-databases-and-tables-in-glue"></a>

Pour activer une AWS Glue table à utiliser avec Redis OSS, vous pouvez définir les propriétés de table suivantes sur la table :`redis-endpoint`,`redis-value-type`, et `redis-keys-zset` soit`redis-key-prefix`.

En outre, toute AWS Glue base de données contenant des tables Redis OSS doit avoir une propriété URI `redis-db-flag` dans la base de données. Pour définir la propriété `redis-db-flag` URI, utilisez la AWS Glue console pour modifier la base de données.

La liste suivante décrit les propriétés de la table.
+ **redis-endpoint** — (Obligatoire) Le serveur Redis OSS qui contient les données *hostname* `:` *port* `:` *password* de cette table (par exemple,`athena-federation-demo.cache.amazonaws.com:6379`) Vous pouvez également stocker le point de terminaison, ou une partie du point de terminaison, en AWS Secrets Manager utilisant \$1 \$1*Secret\$1Name*\$1 comme valeur de propriété de table.

**Note**  
[Pour utiliser la fonctionnalité Athena Federated Query avec, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)
+ **redis-keys-zset**— (Obligatoire si elle n'`redis-key-prefix`est pas utilisée) Une liste de clés séparées par des virgules dont la valeur est un [zset](https://redis.com/ebook/part-2-core-concepts/chapter-3-commands-in-redis/3-5-sorted-sets/) (par exemple,). `active-orders,pending-orders` Chacune des valeurs du zset est considérée comme une clé faisant partie de la table. La propriété `redis-keys-zset` ou `redis-key-prefix` doit être définie.
+ **redis-key-prefix**— (Obligatoire si elle n'`redis-keys-zset`est pas utilisée) Une liste de préfixes clés séparés par des virgules pour rechercher des valeurs dans le tableau (par exemple,`accounts-*,acct-`). La propriété `redis-key-prefix` ou `redis-keys-zset` doit être définie.
+ **redis-value-type**— (Obligatoire) Définit la façon dont les valeurs des clés définies par l'une `redis-key-prefix` ou l'autre `redis-keys-zset` sont mappées à votre table. Un littéral mappe à une seule colonne. Un zset mappe également à une seule colonne, mais chaque clé peut stocker de nombreuses lignes. Un hachage permet à chaque clé de constituer une ligne avec plusieurs colonnes (par exemple, un hachage, un littéral ou un zset).
+ **redis-ssl-flag**— (Facultatif) Quand`True`, crée une connexion Redis utilisant SSL/TLS. La valeur par défaut est `False`.
+ **redis-cluster-flag**— (Facultatif) Quand`True`, active la prise en charge des instances Redis en cluster. La valeur par défaut est `False`.
+ **redis-db-number**— (Facultatif) S'applique uniquement aux instances autonomes non clusterisées.) Définissez ce nombre (par exemple 1, 2 ou 3) pour lire à partir d’une base de données Redis personnalisée. La base de données logique Redis par défaut est 0. Ce numéro ne fait pas référence à une base de données dans Athena ou AWS Glue, mais à une base de données logique Redis. Pour plus d’informations, consultez l’[index SELECT](https://redis.io/commands/select) dans la documentation Redis.

## Types de données
<a name="connectors-redis-data-types"></a>

Le connecteur Redis OSS prend en charge les types de données suivants. Les flux Redis OSS ne sont pas pris en charge.
+ [String](https://redis.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/1-2-1-strings-in-redis/)
+ [Hachage](https://redis.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/1-2-4-hashes-in-redis/)
+ Set trié ([ZSet](https://redis.com/ebook/part-2-core-concepts/chapter-3-commands-in-redis/3-5-sorted-sets/))

Toutes les valeurs Redis OSS sont récupérées en tant que type de données `string`. Elles sont ensuite converties vers l’un des types de données Apache Arrow suivants en fonction de la façon dont vos tables sont définies dans le AWS Glue Data Catalog.


****  

| AWS Glue type de données | Type de données Apache Arrow | 
| --- | --- | 
| int | INT | 
| chaîne | VARCHAR | 
| bigint | BIGINT | 
| double | FLOAT8 | 
| float | FLOAT4 | 
| smallint | SMALLINT | 
| tinyint | TINYINT | 
| boolean | BIT | 
| binary | VARBINARY | 

## Autorisations nécessaires
<a name="connectors-redis-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-redis.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-redis/athena-redis.yaml). La liste suivante résume les autorisations requises.
+ **Amazon S3 write access** (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
+ **Athena GetQueryExecution** — Le connecteur utilise cette autorisation pour échouer rapidement lorsque la requête Athena en amont est terminée.
+ **AWS Glue Data Catalog**— Le connecteur Redis nécessite un accès en lecture seule au pour AWS Glue Data Catalog obtenir des informations sur le schéma.
+ **CloudWatch Journaux** : le connecteur a besoin d'accéder aux CloudWatch journaux pour stocker les journaux.
+ **AWS Secrets Manager accès en lecture** — Si vous choisissez de stocker les détails du point de terminaison Redis dans Secrets Manager, vous devez autoriser le connecteur à accéder à ces secrets.
+ **Accès VPC** – Le connecteur nécessite la possibilité d’attacher des interfaces à votre VPC et de les détacher afin qu’il puisse s’y connecter et communiquer avec vos instances Redis.

## Performance
<a name="connectors-redis-performance"></a>

Le connecteur Athena pour Redis OSS tente de paralléliser les requêtes par rapport à votre instance Redis OSS en fonction du type de table que vous avez défini (par exemple, des clés zset ou des clés prefix).

Le connecteur Athena Redis effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Cependant, les requêtes contenant un prédicat en opposition avec la clé primaire échouent en fonction d’un délai d’expiration. Les clauses `LIMIT` réduisent la quantité de données analysées, mais si vous ne fournissez pas de prédicat, vous devez vous attendre à ce que les requêtes `SELECT` avec une clause `LIMIT` analysent au moins 16 Mo de données. Le connecteur Redis résiste à la limitation due à la simultanéité.

## Requêtes de transmission
<a name="connectors-redis-passthrough-queries"></a>

Le connecteur Redis prend en charge les [requêtes de transmission](federated-query-passthrough.md). Vous pouvez utiliser cette fonctionnalité pour exécuter des requêtes utilisant le script Lua sur les bases de données Redis. 

Pour créer des requêtes de transmission avec Redis, utilisez la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.script(
            script => 'return redis.[call|pcall](query_script)',
            keys => '[key_pattern]',
            argv => '[script_arguments]'
))
```

L’exemple suivant exécute un script Lua pour obtenir la valeur au niveau de la clé `l:a`.

```
SELECT * FROM TABLE(
        system.script(
            script => 'return redis.call("GET", KEYS[1])',
            keys => '[l:a]',
            argv => '[]'
))
```

## Informations de licence
<a name="connectors-redis-license-information"></a>

Le projet de connecteur Redis Amazon Athena est concédé sous licence dans le cadre de la [licence Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Ressources supplémentaires
<a name="connectors-redis-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-redis) sur GitHub .com.

# Connecteur Amazon Athena pour Redshift
<a name="connectors-redshift"></a>

Le connecteur Amazon Athena pour Redshift permet à Amazon Athena d’accéder à vos bases de données Amazon Redshift et Amazon Redshift sans serveur, y compris aux vues Redshift sans serveur. Vous pouvez vous connecter à l’un ou l’autre de ces service en utilisant les paramètres de configuration de la chaîne de connexion JDBC décrits sur cette page.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-redshift-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-redshift-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Comme Redshift ne prend pas en charge les partitions externes, toutes les données spécifiées par une requête sont récupérées à chaque fois.
+ À l’instar de Redshift, Athena considère les espaces de fin dans les types `CHAR` Redshift comme sémantiquement non importants à des fins de longueur et de comparaison. Notez que cela s’applique uniquement aux types `CHAR`, mais pas aux types `VARCHAR`. Athena ignore les espaces de fin pour le type `CHAR`, mais les considère comme importants pour le type `VARCHAR`.

## Conditions
<a name="connectors-redshift-terms"></a>

Les termes suivants se rapportent au connecteur Redshift :
+ **Instance de base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-redshift-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Redshift.

### Connexions Glue (recommandé)
<a name="redshift-gc"></a>

Nous vous recommandons de configurer un connecteur Redshift en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Amazon Redshift Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type REDSHIFT
```

**Propriétés d’environnement Lambda**

**glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Redshift créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Redshift créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="redshift-legacy"></a>

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.

Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

**Propriétés d’environnement Lambda**
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **disable\$1glue** — (Facultatif) S'il est présent et défini sur true, le connecteur ne tente pas de récupérer des métadonnées supplémentaires à partir de. AWS Glue
+ **glue\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.

#### Chaîne de connexion
<a name="connectors-redshift-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
redshift://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-redshift-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | RedshiftMuxCompositeHandler | 
| Gestionnaire de métadonnées | RedshiftMuxMetadataHandler | 
| Gestionnaire d’enregistrements | RedshiftMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-redshift-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myredshiftcatalog, le nom de la variable d’environnement est alors myredshiftcatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Redshift MUX Lambda qui prend en charge deux instances de base de données : `redshift1` (par défaut) et `redshift2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | redshift://jdbc:redshift://redshift1.host:5439/dev?user=sample2&password=sample2 | 
| redshift\$1catalog1\$1connection\$1string | redshift://jdbc:redshift://redshift1.host:3306/default?\$1\$1Test/RDS/Redshift1\$1 | 
| redshift\$1catalog2\$1connection\$1string | redshift://jdbc:redshift://redshift2.host:3333/default?user=sample2&password=sample2 | 

##### Fourniture des informations d’identification
<a name="connectors-redshift-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret \$1\$1Test/RDS/ `Redshift1`\$1.

```
redshift://jdbc:redshift://redshift1.host:3306/default?...&${Test/RDS/Redshift1}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
redshift://jdbc:redshift://redshift1.host:3306/default?...&user=sample2&password=sample2&...
```

Actuellement, le connecteur Redshift reconnaît les propriétés JDBC `user` et `password`.

## Prise en charge du type de données
<a name="connectors-redshift-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour JDBC et Apache Arrow.


****  

| JDBC | Flèche | 
| --- | --- | 
| Booléen | Bit | 
| Entier | Tiny | 
| Court | Smallint | 
| Entier | Int | 
| Long | Bigint | 
| float | Float4 | 
| Double | Float8 | 
| Date | DateDay | 
| Horodatage | DateMilli | 
| String | Varchar | 
| Octets | Varbinary | 
| BigDecimal | Décimal | 
| ARRAY | List | 

## Partitions et déversements
<a name="connectors-redshift-partitions-and-splits"></a>

Redshift ne prend pas en charge les partitions externes. Pour plus d’informations sur les problèmes liés aux performances, veuillez consulter [Performance](#connectors-redshift-performance).

## Performance
<a name="connectors-redshift-performance"></a>

Le connecteur Athena Redshift effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les clauses `ORDER BY`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes. Cependant, la sélection d'un sous-ensemble de colonnes entraîne parfois un délai d'exécution plus long des requêtes. Amazon Redshift est particulièrement vulnérable au ralentissement de l’exécution des requêtes lorsque vous exécutez plusieurs requêtes en même temps.

### Clauses LIMIT
<a name="connectors-redshift-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Requêtes Top N
<a name="connectors-redshift-performance-top-n-queries"></a>

Une requête Top `N` spécifie le classement du jeu de résultats et la limite du nombre de lignes renvoyées. Vous pouvez utiliser ce type de requête pour déterminer les valeurs Top `N` maximales ou Top `N` minimales pour vos jeux de données. Grâce à la poussée vers le bas Top `N`, le connecteur renvoie uniquement des lignes `N` classées à Athena.

### Prédicats
<a name="connectors-redshift-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Redshift peut combiner ces expressions et les pousser directement vers Redshift pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Redshift suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-redshift-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
ORDER BY col_a DESC 
LIMIT 10;
```

Pour un article sur l'utilisation de la poussée vers le bas de prédicats pour améliorer les performances des requêtes fédérées, y compris Amazon Redshift, consultez [Améliorer les requêtes fédérées avec la poussée vers le bas de prédicats dans Amazon Athena](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) sur le *blog AWS Big Data*.

## Requêtes de transmission
<a name="connectors-redshift-passthrough-queries"></a>

Le connecteur Redshift prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Redshift, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Redshift. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Ressources supplémentaires
<a name="connectors-redshift-additional-resources"></a>

Pour obtenir les informations les plus récentes sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-redshift/pom.xml) du connecteur Redshift sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-redshift) sur GitHub .com.

# Connecteur Amazon Athena pour SAP HANA
<a name="connectors-sap-hana"></a>

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-saphana-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-sap-hana-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Dans SAP HANA, les noms d’objets sont convertis en majuscules lorsqu’ils sont stockés dans la base de données SAP HANA. Toutefois, comme les noms entre guillemets sont sensibles à la casse, il est possible que deux tables portent le même nom en minuscules et en majuscules (par exemple, `EMPLOYEE` et `employee`).

  Dans la requête fédérée d’Athena, les noms des tables de schéma sont fournis à la fonction Lambda en minuscules. Pour contourner ce problème, vous pouvez fournir des indicateurs de requête `@schemaCase` pour récupérer les données des tables dont les noms sont sensibles à la casse. Vous trouverez ci-dessous deux exemples de requêtes avec des indicateurs de requête.

  ```
  SELECT * 
  FROM "lambda:saphanaconnector".SYSTEM."MY_TABLE@schemaCase=upper&tableCase=upper"
  ```

  ```
  SELECT * 
  FROM "lambda:saphanaconnector".SYSTEM."MY_TABLE@schemaCase=upper&tableCase=lower"
  ```

## Conditions
<a name="connectors-sap-hana-terms"></a>

Les termes suivants se rapportent au connecteur SAP HANA :
+ **Instance de base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-sap-hana-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur SAP HANA.

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.  
Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-sap-hana-gc"></a>

Nous vous recommandons de configurer un connecteur SAP HANA en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur SAP HANA Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type SAPHANA
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur SAP HANA créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur SAP HANA créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-sap-hana-legacy"></a>

#### Chaîne de connexion
<a name="connectors-sap-hana-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
saphana://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-sap-hana-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | SaphanaMuxCompositeHandler | 
| Gestionnaire de métadonnées | SaphanaMuxMetadataHandler | 
| Gestionnaire d’enregistrements | SaphanaMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-sap-hana-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mysaphanacatalog, le nom de la variable d’environnement est alors mysaphanacatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Saphana MUX Lambda qui prend en charge deux instances de base de données : `saphana1` (par défaut) et `saphana2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | saphana://jdbc:sap://saphana1.host:port/?\$1\$1Test/RDS/ Saphana1\$1 | 
| saphana\$1catalog1\$1connection\$1string | saphana://jdbc:sap://saphana1.host:port/?\$1\$1Test/RDS/ Saphana1\$1 | 
| saphana\$1catalog2\$1connection\$1string | saphana://jdbc:sap://saphana2.host:port/?user=sample2&password=sample2 | 

##### Fourniture des informations d’identification
<a name="connectors-sap-hana-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/Saphana1}`.

```
saphana://jdbc:sap://saphana1.host:port/?${Test/RDS/Saphana1}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
saphana://jdbc:sap://saphana1.host:port/?user=sample2&password=sample2&...
```

Actuellement, le connecteur SAP HANA reconnaît les propriétés JDBC `user` et `password`.

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-sap-hana-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance SAP HANA.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | SaphanaCompositeHandler | 
| Gestionnaire de métadonnées | SaphanaMetadataHandler | 
| Gestionnaire d’enregistrements | SaphanaRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-sap-hana-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance SAP HANA unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | saphana://jdbc:sap://saphana1.host:port/?secret=Test/RDS/Saphana1 | 

#### Paramètres de déversement
<a name="connectors-sap-hana-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-sap-hana-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour JDBC et Apache Arrow.


****  

| JDBC | Flèche | 
| --- | --- | 
| Booléen | Bit | 
| Entier | Tiny | 
| Court | Smallint | 
| Entier | Int | 
| Long | Bigint | 
| float | Float4 | 
| Double | Float8 | 
| Date | DateDay | 
| Horodatage | DateMilli | 
| String | Varchar | 
| Octets | Varbinary | 
| BigDecimal | Décimal | 
| ARRAY | List | 

## Conversions du type de données
<a name="connectors-sap-hana-data-type-conversions"></a>

Outre les conversions JDBC vers Arrow, le connecteur effectue certaines autres conversions pour que la source SAP HANA et les types de données Athena soient compatibles. Ces conversions permettent de garantir la réussite de l’exécution des requêtes. Le tableau suivant présente ces conversions.


****  

| Type de données source (SAP HANA) | Type de données converties (Athena) | 
| --- | --- | 
| DECIMAL | BIGINT | 
| INTEGER | INT | 
| DATE | DATEDAY | 
| TIMESTAMP | DATEMILLI | 

Tous les autres types de données non pris en charge sont convertis en `VARCHAR`.

## Partitions et déversements
<a name="connectors-sap-hana-partitions-and-splits"></a>

Une partition est représentée par une seule colonne de partition de type `Integer`. La colonne contient les noms des partitions définies dans une table SAP HANA. Pour une table qui ne possède pas de nom de partition, \$1 est renvoyé, ce qui équivaut à une partition unique. Une partition équivaut à une division.


****  

| Nom | Type | Description | 
| --- | --- | --- | 
| PART\$1ID | Entier | Partition nommée dans SAP HANA. | 

## Performance
<a name="connectors-sap-hana-performance"></a>

SAP HANA prend en charge les partitions natives. Le connecteur Athena SAP HANA peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement natif est fortement recommandé. La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur présente des limitations importantes et parfois des échecs de requêtes, en raison de la simultanéité.

Le connecteur Athena SAP HANA effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes. 

### Clauses LIMIT
<a name="connectors-saphana-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-saphana-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena SAP HANA peut combiner ces expressions et les pousser directement vers SAP HANA pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena SAP HANA suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-saphana-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

## Requêtes de transmission
<a name="connectors-saphana-passthrough-queries"></a>

Le connecteur SAP HANA prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec SAP HANA, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans SAP HANA. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-saphana-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-saphana-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/pom.xml) du connecteur SAP HANA sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-saphana) sur GitHub .com.

# Connecteur Amazon Athena pour Snowflake
<a name="connectors-snowflake"></a>

Le connecteur Amazon Athena pour [Snowflake](https://www.snowflake.com/) permet à Amazon Athena d’exécuter des requêtes SQL sur des données stockées dans vos bases de données Snowflake ou des instances RDS à l’aide de JDBC.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-snowflake-prerequisites"></a>

Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou de l’opération d’API `CreateDataCatalog`. Pour de plus amples informations, veuillez consulter [Création d’une connexion à une source de données](connect-to-a-data-source.md).

## Limitations
<a name="connectors-snowflake-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Seules les connexions existantes prennent en charge la configuration du multiplexeur. 
+ Pour l’instant, les affichages Snowflake à division unique sont pris en charge. 
+  Dans Snowflake, les noms d'objets distinguent les majuscules et minuscules. Athena accepte la combinaison de majuscules et de minuscules dans les requêtes DDL et DML, mais par défaut, les noms [des](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html#table-names-and-table-column-names-in-ate-must-be-lowercase) objets lorsqu'elle exécute la requête. Le connecteur Snowflake ne prend en charge que les minuscules lorsque Glue Catalog/Lake Formation est utilisée. Lorsque le catalogue Athena est utilisé, les clients peuvent contrôler le comportement du boîtier à l'aide de la variable d'environnement `casing_mode` Lambda dont les valeurs possibles sont répertoriées dans la [Parameters](#connectors-snowflake-parameters) section (par exemple,). `key=casing_mode, value = CASE_INSENSITIVE_SEARCH` 

## Conditions
<a name="connectors-snowflake-terms"></a>

Les termes suivants se rapportent au connecteur Snowflake.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-snowflake-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Snowflake.

### Connexions Glue (recommandé)
<a name="snowflake-gc"></a>

Nous vous recommandons de configurer un connecteur Snowflake en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Snowflake Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type SNOWFLAKE
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **NONE** — Ne changez pas la majuscule du schéma et des noms de table donnés (exécutez la requête telle quelle sur Snowflake). Il s'agit de la valeur par défaut lorsque **casing\$1mode n'est pas spécifié**. 
  + **MAJUSCULE** — Tous les noms de schéma et de table indiqués dans la requête sont en majuscules avant de l'exécuter sur Snowflake.
  + **MINUSCULE** — Tous les noms de schéma et de table donnés en minuscules dans la requête avant de l'exécuter sur Snowflake.
  + **CASE\$1INSENSITIVE\$1SEARCH — Effectuez des recherches sans distinction majuscules/minuscules** dans les noms de schéma et de table dans Snowflake. Par exemple, vous pouvez utiliser ce mode lorsque vous avez une requête telle que `SELECT * FROM EMPLOYEE` Snowflake contient une table appelée. `Employee` Cependant, en présence de collisions de noms, telles qu'une table appelée `EMPLOYEE` et une autre table appelée `Employee` dans Snowflake, la requête échouera.

**Note**  
Le connecteur Snowflake créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Snowflake créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

**Stockage des identifiants**

Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification. Pour de plus amples informations, veuillez consulter [Authentification auprès de Snowflake](connectors-snowflake-authentication.md).

### Connexions héritées
<a name="snowflake-legacy"></a>

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.

Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

**Propriétés d’environnement Lambda**
+ **default** : chaîne de connexion JDBC à utiliser pour se connecter à l’instance de base de données Snowflake. Par exemple, `snowflake://${jdbc_connection_string}`
+ **catalog\$1connection\$1string** : utilisé par le gestionnaire de multiplexage (non pris en charge lors de l’utilisation d’une connexion Glue). Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mysnowflakecatalog, le nom de la variable d’environnement est alors mysnowflakecatalog\$1connection\$1string.
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **NONE** — Ne changez pas la majuscule du schéma et des noms de table donnés (exécutez la requête telle quelle sur Snowflake). Il s'agit de la valeur par défaut lorsque **casing\$1mode n'est pas spécifié**. 
  + **MAJUSCULE** — Tous les noms de schéma et de table indiqués dans la requête sont en majuscules avant de l'exécuter sur Snowflake.
  + **MINUSCULE** — Tous les noms de schéma et de table donnés en minuscules dans la requête avant de l'exécuter sur Snowflake.
  + **CASE\$1INSENSITIVE\$1SEARCH — Effectuez des recherches sans distinction majuscules/minuscules** dans les noms de schéma et de table dans Snowflake. Par exemple, vous pouvez utiliser ce mode lorsque vous avez une requête telle que `SELECT * FROM EMPLOYEE` Snowflake contient une table appelée. `Employee` Cependant, en présence de collisions de noms, telles qu'une table appelée `EMPLOYEE` et une autre table appelée `Employee` dans Snowflake, la requête échouera.
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

#### Chaîne de connexion
<a name="connectors-snowflake-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
snowflake://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-snowflake-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | SnowflakeMuxCompositeHandler | 
| Gestionnaire de métadonnées | SnowflakeMuxMetadataHandler | 
| Gestionnaire d’enregistrements | SnowflakeMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-snowflake-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mysnowflakecatalog, le nom de la variable d’environnement est alors mysnowflakecatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Snowflake MUX Lambda qui prend en charge deux instances de base de données : `snowflake1` (par défaut) et `snowflake2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1&\$1\$1Test/RDS/Snowflake1\$1 | 
| snowflake\$1catalog1\$1connection\$1string | snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1\$1\$1Test/RDS/Snowflake1\$1 | 
| snowflake\$1catalog2\$1connection\$1string | snowflake://jdbc:snowflake://snowflake2.host:port/?warehouse=warehousename&db=db1&schema=schema1&user=sample2&password=sample2 | 

##### Fourniture des informations d’identification
<a name="connectors-snowflake-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/Snowflake1}`.

```
snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1${Test/RDS/Snowflake1}&... 
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
snowflake://jdbc:snowflake://snowflake1.host:port/warehouse=warehousename&db=db1&schema=schema1&user=sample2&password=sample2&... 
```

À l’heure actuelle, Snowflake reconnaît les propriétés JDBC `user` et `password`. Il accepte également le nom d'utilisateur et le mot de passe au format *username* `/` *password* sans les clés `user` ou`password`.

#### Utilisation d'un gestionnaire de connexion unique
<a name="connectors-snowflake-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Snowflake.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | SnowflakeCompositeHandler | 
| Gestionnaire de métadonnées | SnowflakeMetadataHandler | 
| Gestionnaire d’enregistrements | SnowflakeRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-snowflake-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance Snowflake unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | snowflake://jdbc:snowflake://snowflake1.host:port/?secret=Test/RDS/Snowflake1 | 

#### Paramètres de déversement
<a name="connectors-snowflake-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-snowflake-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour JDBC et Apache Arrow.


****  

| JDBC | Flèche | 
| --- | --- | 
| Booléen | Bit | 
| Entier | Tiny | 
| Court | Smallint | 
| Entier | Int | 
| Long | Bigint | 
| float | Float4 | 
| Double | Float8 | 
| Date | DateDay | 
| Horodatage | DateMilli | 
| String | Varchar | 
| Octets | Varbinary | 
| BigDecimal | Décimal | 
| ARRAY | List | 

## Conversions du type de données
<a name="connectors-snowflake-data-type-conversions"></a>

Outre les conversions JDBC vers Arrow, le connecteur effectue certaines autres conversions pour que la source Snowflake et les types de données Athena soient compatibles. Ces conversions permettent de garantir la réussite de l’exécution des requêtes. Le tableau suivant présente ces conversions.


****  

| Type de données source (Snowflake) | Type de données converties (Athena) | 
| --- | --- | 
| TIMESTAMP | TIMESTAMPMILLI | 
| DATE | TIMESTAMPMILLI | 
| INTEGER | INT | 
| DECIMAL | BIGINT | 
| TIMESTAMP\$1NTZ | TIMESTAMPMILLI | 

Tous les autres types de données non pris en charge sont convertis en `VARCHAR`.

## Partitions et déversements
<a name="connectors-snowflake-partitions-and-splits"></a>

Les partitions sont utilisées pour déterminer comment générer des divisions pour le connecteur. Athena construit une colonne synthétique de type `varchar` qui représente le schéma de partitionnement de la table afin d’aider le connecteur à générer des divisions. Le connecteur ne modifie pas la définition réelle de la table.

Pour créer cette colonne synthétique et les partitions, Athena nécessite la définition d’une clé primaire. Cependant, étant donné que Snowflake n’applique pas les contraintes de clé primaire, vous devez vous-même appliquer l’unicité. Si vous ne le faites pas, Athena optera par défaut pour une division unique.

## Performance
<a name="connectors-snowflake-performance"></a>

Pour des performances optimales, utilisez des filtres dans les requêtes dans la mesure du possible. En outre, nous recommandons vivement le partitionnement natif pour récupérer des jeux de données volumineux dont la distribution des partitions est uniforme. La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur Snowflake résiste à la limitation due à la simultanéité.

Le connecteur Athena Snowflake effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT`, les prédicats simples et les expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution des requêtes.

### Clauses LIMIT
<a name="connectors-snowflake-performance-limit-clauses"></a>

Une instruction `LIMIT N` réduit les données analysées par la requête. Grâce à la poussée vers le bas `LIMIT N`, le connecteur renvoie uniquement des lignes `N` à Athena.

### Prédicats
<a name="connectors-snowflake-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Snowflake peut combiner ces expressions et les pousser directement vers Snowflake pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Snowflake suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-snowflake-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d))
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') 
LIMIT 10;
```

# Authentification auprès de Snowflake
<a name="connectors-snowflake-authentication"></a>

Vous pouvez configurer le connecteur Amazon Athena Snowflake pour utiliser l'authentification par paire de clés ou la méthode d'authentification pour vous connecter à votre entrepôt de OAuth données Snowflake. Les deux méthodes fournissent un accès sécurisé à Snowflake et éliminent le besoin de stocker les mots de passe dans des chaînes de connexion.
+ **Authentification par paire de clés** : cette méthode utilise des paires de clés publiques ou privées RSA à des fins d’authentification auprès de Snowflake. La clé privée signe numériquement les demandes d’authentification tandis que la clé publique correspondante est enregistrée dans Snowflake pour vérification. Cette méthode supprime le stockage des mots de passe.
+ **OAuth authentification** — Cette méthode utilise un jeton d'autorisation et un jeton d'actualisation pour s'authentifier auprès de Snowflake. Elle prend en charge l’actualisation automatique des jetons, ce qui fait d’elle une méthode adaptée aux applications de longue durée.

Pour plus d'informations, consultez les sections [Authentification et [OAuth authentification](https://docs.snowflake.com/en/user-guide/oauth-custom) par paire de clés](https://docs.snowflake.com/en/user-guide/key-pair-auth) dans le guide de l'utilisateur de Snowflake.

## Conditions préalables
<a name="connectors-snowflake-authentication-prerequisites"></a>

Avant de commencer, effectuez les opérations obligatoires suivantes :
+ Vous devez accéder au compte Snowflake avec des privilèges administratifs.
+ Vous devez disposer d’un compte utilisateur Snowflake dédié pour le connecteur Athena.
+ Vous devez disposer d’OpenSSL ou d’outils de génération de clés équivalents pour l’authentification par paire de clés.
+ AWS Secrets Manager accès pour créer et gérer des secrets.
+ Navigateur Web pour terminer OAuth le processus d' OAuth authentification.

## Configuration de l’authentification par paire de clés
<a name="connectors-snowflake-keypair-authentication"></a>

Ce processus implique la génération d’une paire de clés RSA, la configuration de votre compte Snowflake avec la clé publique et le stockage sécurisé de la clé privée dans AWS Secrets Manager. Les étapes suivantes vous guideront dans la création des clés cryptographiques, la configuration des autorisations Snowflake nécessaires et la configuration des AWS informations d'identification pour une authentification fluide. 

1. **Génération d’une paire de clés RSA**

   Générez une paire de clés privées et publiques à l’aide d’OpenSSL.
   + Pour générer une version non chiffrée, utilisez la commande suivante dans votre application de ligne de commande locale.

     ```
     openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
     ```
   + Pour générer une version chiffrée, utilisez la commande suivante, qui omet `-nocrypt`.

     ```
     openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
     ```
   + Pour générer une clé publique à partir d’une clé privée, utilisez ce qui suit.

     ```
     openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
     # Set appropriate permissions (Unix/Linux)
     chmod 600 rsa_key.p8
     chmod 644 rsa_key.pub
     ```
**Note**  
Ne partagez pas votre clé privée. La clé privée doit uniquement être accessible à l’application qui doit s’authentifier auprès de Snowflake.

1. **Extraction du contenu de la clé publique sans délimiteurs pour Snowflake**

   ```
   # Extract public key content (remove BEGIN/END lines and newlines)
   cat rsa_key.pub | grep -v "BEGIN\|END" | tr -d '\n'
   ```

   Enregistrez cette sortie, dont vous aurez besoin à l’étape suivante.

1. **Configuration de l’utilisateur Snowflake**

   Suivez ces étapes pour configurer un utilisateur Snowflake.

   1. Créez un utilisateur dédié pour le connecteur Athena s’il n’existe pas déjà.

      ```
      -- Create user for Athena connector
      CREATE USER athena_connector_user;
      
      -- Grant necessary privileges
      GRANT USAGE ON WAREHOUSE your_warehouse TO ROLE athena_connector_role;
      GRANT USAGE ON DATABASE your_database TO ROLE athena_connector_role;
      GRANT SELECT ON ALL TABLES IN DATABASE your_database TO ROLE athena_connector_role;
      ```

   1. Accordez des privilèges d’authentification. Pour attribuer une clé publique à un utilisateur, l’un des rôles ou privilèges suivants doit être accordé.
      + Le privilège `MODIFY PROGRAMMATIC AUTHENTICATION METHODS` ou `OWNERSHIP` doit être accordé à l’utilisateur.
      + Le rôle `SECURITYADMIN` ou un rôle supérieur doit être accordé.

      Accordez les privilèges nécessaires pour attribuer des clés publiques à l’aide de la commande suivante.

      ```
      GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER athena_connector_user TO ROLE your_admin_role;
      ```

   1. Attribuez la clé publique à l’utilisateur Snowflake à l’aide de la commande suivante.

      ```
      ALTER USER athena_connector_user SET RSA_PUBLIC_KEY='RSAkey';
      ```

      Vérifiez que la clé publique a bien été attribuée à l’utilisateur à l’aide de la commande suivante.

      ```
      DESC USER athena_connector_user;
      ```

1. **Stocker la clé privée dans AWS Secrets Manager**

   1. Convertissez votre clé privée au format requis par le connecteur.

      ```
      # Read private key content
      cat rsa_key.p8
      ```

   1. Créez un secret AWS Secrets Manager avec la structure suivante.

      ```
      {
        "sfUser": "your_snowflake_user",
        "pem_private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
        "pem_private_key_passphrase": "passphrase_in_case_of_encrypted_private_key(optional)"
      }
      ```
**Note**  
L’en-tête et le pied de page sont facultatifs.
La clé privée doit être séparée par `\n`.

## Configuration de OAuth l'authentification
<a name="connectors-snowflake-oauth-authentication"></a>

Cette méthode d’authentification offre un accès sécurisé à Snowflake basé sur des jetons grâce à des fonctionnalités d’actualisation automatique des informations d’identification. Le processus de configuration consiste à créer une intégration de sécurité dans Snowflake, à récupérer les informations d'identification du OAuth client, à terminer le flux d'autorisation pour obtenir un code d'accès et à stocker les OAuth informations d'identification AWS Secrets Manager pour que le connecteur puisse les utiliser. 

1. **Création d’une intégration de sécurité dans Snowflake**

   Exécutez la commande SQL suivante dans Snowflake pour créer une intégration de sécurité OAuth Snowflake.

   ```
   CREATE SECURITY INTEGRATION my_snowflake_oauth_integration_a
     TYPE = OAUTH
     ENABLED = TRUE
     OAUTH_CLIENT = CUSTOM
     OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
     OAUTH_REDIRECT_URI = 'https://localhost:8080/oauth/callback'
     OAUTH_ISSUE_REFRESH_TOKENS = TRUE
     OAUTH_REFRESH_TOKEN_VALIDITY = 7776000;
   ```

   **Paramètres de configuration**
   + `TYPE = OAUTH`— Spécifie le type OAuth d'authentification.
   + `ENABLED = TRUE` : active l’intégration de sécurité.
   + `OAUTH_CLIENT = CUSTOM`— Utilise une configuration OAuth client personnalisée.
   + `OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'` : définit le type de client pour les applications sécurisées.
   + `OAUTH_REDIRECT_URI`— L'URL de rappel pour le OAuth flux. Il peut s’agir de localhost à des fins de test.
   + `OAUTH_ISSUE_REFRESH_TOKENS = TRUE` : active la génération de jetons d’actualisation.
   + `OAUTH_REFRESH_TOKEN_VALIDITY = 7776000` : définit la validité du jeton d’actualisation (90 jours en secondes).

1. **Récupérez les secrets des OAuth clients**

   1. Pour obtenir les informations d’identification du client, exécutez la commande suivante.

      ```
      DESC SECURITY INTEGRATION 'MY_SNOWFLAKE_OAUTH_INTEGRATION_A';
      ```

   1. Récupérez les secrets OAuth du client.

      ```
      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('MY_SNOWFLAKE_OAUTH_INTEGRATION_A');
      ```

      **Exemple de réponse**

      ```
      {
        "OAUTH_CLIENT_SECRET_2": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "OAUTH_CLIENT_SECRET": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY,
        "OAUTH_CLIENT_ID": "AIDACKCEVSQ6C2EXAMPLE"
      }
      ```
**Note**  
Conservez ces informations d’identification en lieu sûr et ne les partagez pas. Ils seront utilisés pour configurer le OAuth client.

1. **Autorisation de l’utilisateur et récupération du code d’autorisation**

   1. Ouvrez l’URL suivante dans un navigateur.

      ```
      https://<your_account>.snowflakecomputing.com/oauth/authorize?client_id=<OAUTH_CLIENT_ID>&response_type=code&redirect_uri=https://localhost:8080/oauth/callback
      ```

   1. Exécutez le flux d’autorisation.

      1. Connectez-vous à l’aide de vos informations d’identification Snowflake.

      1. Accordez les autorisations demandées. Vous serez redirigé vers l’URI de rappel avec un code d’autorisation.

   1. Extrayez le code d’autorisation en copiant le paramètre de code depuis l’URL de redirection.

      ```
      https://localhost:8080/oauth/callback?code=<authorizationcode>
      ```
**Note**  
Le code d’autorisation est valide pour une durée limitée et ne peut être utilisé qu’une seule fois.

1. **Stockez les OAuth informations d'identification dans AWS Secrets Manager**

   Créez un secret AWS Secrets Manager avec la structure suivante.

   ```
   {
     "redirect_uri": "https://localhost:8080/oauth/callback",
     "client_secret": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
     "token_url": "https://<your_account>.snowflakecomputing.com/oauth/token-request",
     "client_id": "AIDACKCEVSQ6C2EXAMPLE,
     "username": "your_snowflake_username",
     "auth_code": "authorizationcode"
   }
   ```

   **Champs obligatoires**
   + `redirect_uri`— OAuth redirige l'URI que vous avez obtenu à l'étape 1.
   + `client_secret`— secret OAuth client que vous avez obtenu à l'étape 2.
   + `token_url`— Snowflake Le point de terminaison du OAuth jeton.
   + `client_id`— L'ID OAuth client indiqué à l'étape 2.
   + `username` : nom d’utilisateur Snowflake pour le connecteur.
   + `auth_code` : code d’autorisation que vous avez obtenu à l’étape 3.

Après avoir créé un secret, vous obtenez un ARN de secret que vous pouvez utiliser dans votre connexion Glue lors de la [création d’une connexion à une source de données](connect-to-a-data-source.md). 

## Requêtes de transmission
<a name="connectors-snowflake-passthrough-queries"></a>

Le connecteur Snowflake prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Snowflake, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Snowflake. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-snowflake-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-snowflake-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/pom.xml) du connecteur Snowflake sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-snowflake) sur GitHub .com.

# Connecteur Amazon Athena pour Microsoft SQL Server
<a name="connectors-microsoft-sql-server"></a>

Le connecteur Amazon Athena pour [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/?view=sql-server-ver15) permet à Amazon Athena d’exécuter des requêtes SQL sur vos données stockées dans Microsoft SQL Server à l’aide de JDBC.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-sqlserver-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-microsoft-sql-server-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.
+ Dans des conditions de filtre, vous devez lancer les types de données `Date`et`Timestamp` vers le type de données approprié.
+ Pour rechercher des valeurs négatives de type `Real` et `Float`, utilisez l’opérateur `<=` ou `>=`.
+ Les types de données `binary`, `varbinary`, `image` et `rowversion` ne sont pas pris en charge.

## Conditions
<a name="connectors-microsoft-sql-server-terms"></a>

Les termes suivants se rapportent au connecteur SQL Server.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-microsoft-sql-server-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur SQL Server.

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.  
Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-microsoft-sql-server-gc"></a>

Nous vous recommandons de configurer un connecteur SQL Server en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur SQL Server Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type SQLSERVER
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré.
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur SQL Server créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur SQL Server créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-microsoft-sql-server-legacy"></a>

#### Chaîne de connexion
<a name="connectors-microsoft-sql-server-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
sqlserver://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-microsoft-sql-server-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | SqlServerMuxCompositeHandler | 
| Gestionnaire de métadonnées | SqlServerMuxMetadataHandler | 
| Gestionnaire d’enregistrements | SqlServerMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-microsoft-sql-server-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est mysqlservercatalog, le nom de la variable d’environnement est alors mysqlservercatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Lambda SqlServer MUX qui prend en charge deux instances de base de données `sqlserver1` : (par défaut) et. `sqlserver2`


****  

| Propriété | Value | 
| --- | --- | 
| default | sqlserver://jdbc:sqlserver://sqlserver1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| sqlserver\$1catalog1\$1connection\$1string | sqlserver://jdbc:sqlserver://sqlserver1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| sqlserver\$1catalog2\$1connection\$1string | sqlserver://jdbc:sqlserver://sqlserver2.hostname:port;databaseName=<database\$1name>;\$1\$1secret2\$1name\$1 | 

##### Fourniture des informations d’identification
<a name="connectors-microsoft-sql-server-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${secret_name}`.

```
sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database_name>;${secret_name}
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database_name>;user=<user>;password=<password>
```

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-microsoft-sql-server-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance SQL Server.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | SqlServerCompositeHandler | 
| Gestionnaire de métadonnées | SqlServerMetadataHandler | 
| Gestionnaire d’enregistrements | SqlServerRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-microsoft-sql-server-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance SQL Server unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database\$1name>;\$1\$1secret\$1name\$1 | 

#### Paramètres de déversement
<a name="connectors-microsoft-sql-server-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-microsoft-sql-server-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour SQL Server et Apache Arrow.


****  

| SQL Server | Flèche | 
| --- | --- | 
| bit | TINYINT | 
| tinyint | SMALLINT | 
| smallint | SMALLINT | 
| int | INT | 
| bigint | BIGINT | 
| decimal | DECIMAL | 
| numeric | FLOAT8 | 
| smallmoney | FLOAT8 | 
| money | DECIMAL | 
| float[24] | FLOAT4 | 
| float[53] | FLOAT8 | 
| real | FLOAT4 | 
| datetime | Date(MILLISECOND) | 
| datetime2 | Date(MILLISECOND) | 
| smalldatetime | Date(MILLISECOND) | 
| date | Date(DAY) | 
| time | VARCHAR | 
| datetimeoffset | Date(MILLISECOND) | 
| char[n] | VARCHAR | 
| varchar[n/max] | VARCHAR | 
| nchar [n] | VARCHAR | 
| nvarchar[n/max] | VARCHAR | 
| text | VARCHAR | 
| ntext | VARCHAR | 

## Partitions et déversements
<a name="connectors-microsoft-sql-server-partitions-and-splits"></a>

Une partition est représentée par une seule colonne de partition de type `varchar`. Dans le cas du connecteur SQL Server, une fonction de partition détermine la manière dont les partitions sont appliquées à la table. Les informations relatives à la fonction de partition et au nom de colonne sont extraites de la table de métadonnées de SQL Server. Une requête personnalisée obtient ensuite la partition. Les divisions sont créées en fonction du nombre de partitions distinctes reçues.

## Performance
<a name="connectors-microsoft-sql-server-performance"></a>

La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur SQL Server résiste à la limitation due à la simultanéité.

Le connecteur Athena SQL Server effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Des prédicats simples et des expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution de la requête. 

### Prédicats
<a name="connectors-sqlserver-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena SQL Server peut combiner ces expressions et les pousser directement vers SQL Server pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena SQL Server suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN, GREATER\$1THAN\$1OR\$1EQUAL, IS\$1DISTINCT\$1FROM, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-sqlserver-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Requêtes de transmission
<a name="connectors-sqlserver-passthrough-queries"></a>

Le connecteur SQL Server prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec SQL Server, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans SQL Server. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-sqlserver-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-sqlserver-additional-resources"></a>

Pour obtenir les informations les plus récentes sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/pom.xml) du connecteur SQL Server sur GitHub .com.

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-sqlserver) sur GitHub .com.

# Connecteur Amazon Athena pour Teradata
<a name="connectors-teradata"></a>

 Le connecteur Amazon Athena pour Teradata permet à Athena d’exécuter des requêtes SQL sur des données stockées dans vos bases de données Teradata. 

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

## Conditions préalables
<a name="connectors-teradata-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Limitations
<a name="connectors-teradata-limitations"></a>
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Dans une configuration de multiplexeur, le compartiment de déversement et le préfixe sont partagés entre toutes les instances de base de données.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.

## Conditions
<a name="connectors-teradata-terms"></a>

Les termes suivants se rapportent au connecteur Teradata.
+ **Base de données** – Toute instance de base de données déployée sur site, sur Amazon EC2 ou sur Amazon RDS.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`
+ **Gestionnaire de multiplexage** – Un gestionnaire Lambda qui peut accepter et utiliser plusieurs connexions de base de données.

## Parameters
<a name="connectors-teradata-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Teradata.

### Connexions Glue (recommandé)
<a name="connectors-teradata-gc"></a>

Nous vous recommandons de configurer un connecteur Teradata en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Teradata Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type TERADATA
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré.
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Teradata créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Teradata créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-teradata-legacy"></a>

#### Chaîne de connexion
<a name="connectors-teradata-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
teradata://${jdbc_connection_string}
```

#### Utilisation d’un gestionnaire de multiplexage
<a name="connectors-teradata-using-a-multiplexing-handler"></a>

Vous pouvez utiliser un multiplexeur pour vous connecter à plusieurs instances de base de données à l’aide d’une seule fonction Lambda. Les demandes sont acheminées par nom de catalogue. Utilisez les classes suivantes dans Lambda.


****  

| Handler (Gestionnaire) | Classe | 
| --- | --- | 
| Gestionnaire de composites | TeradataMuxCompositeHandler | 
| Gestionnaire de métadonnées | TeradataMuxMetadataHandler | 
| Gestionnaire d’enregistrements | TeradataMuxRecordHandler | 

##### Paramètres du gestionnaire de multiplexage
<a name="connectors-teradata-multiplexing-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Obligatoire. Chaîne de connexion d’instance de base de données. Préfixez la variable d'environnement avec le nom du catalogue utilisé dans Athena. Par exemple, si le catalogue enregistré auprès d’Athena est myteradatacatalog, le nom de la variable d’environnement est alors myteradatacatalog\$1connection\$1string. | 
| default | Obligatoire. Chaîne de connexion par défaut. Cette chaîne est utilisée lorsque le catalogue est lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Les exemples de propriétés suivants concernent une fonction Teradata MUX Lambda qui prend en charge deux instances de base de données :`teradata1` (par défaut) et `teradata2`.


****  

| Propriété | Value | 
| --- | --- | 
| default | teradata://jdbc:teradata://teradata2.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,user=sample2&password=sample2 | 
| teradata\$1catalog1\$1connection\$1string | teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,\$1\$1Test/RDS/Teradata1\$1 | 
| teradata\$1catalog2\$1connection\$1string | teradata://jdbc:teradata://teradata2.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,user=sample2&password=sample2 | 

##### Fourniture des informations d’identification
<a name="connectors-teradata-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec un nom secret**  
La chaîne suivante porte le nom secret `${Test/RDS/Teradata1}`.

```
teradata://jdbc:teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,${Test/RDS/Teradata1}&...
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,...&user=sample2&password=sample2&...
```

À l’heure actuelle, Teradata reconnaît les propriétés JDBC `user` et `password`. Il accepte également le nom d'utilisateur et le mot de passe au format *username* `/` *password* sans les clés `user` ou`password`.

#### Utilisation d'un gestionnaire de connexion unique
<a name="connectors-teradata-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Teradata.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | TeradataCompositeHandler | 
| Gestionnaire de métadonnées | TeradataMetadataHandler | 
| Gestionnaire d’enregistrements | TeradataRecordHandler | 

##### Paramètres du gestionnaire de connexion unique
<a name="connectors-teradata-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

L’exemple de propriété suivant concerne une instance Teradata unique prise en charge par une fonction Lambda.


****  

| Propriété | Value | 
| --- | --- | 
| default | teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,secret=Test/RDS/Teradata1 | 

#### Paramètres de déversement
<a name="connectors-teradata-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-teradata-data-type-support"></a>

Le tableau suivant montre les types de données correspondants pour JDBC et Apache Arrow.


****  

| JDBC | Flèche | 
| --- | --- | 
| Booléen | Bit | 
| Entier | Tiny | 
| Court | Smallint | 
| Entier | Int | 
| Long | Bigint | 
| float | Float4 | 
| Double | Float8 | 
| Date | DateDay | 
| Horodatage | DateMilli | 
| String | Varchar | 
| Octets | Varbinary | 
| BigDecimal | Décimal | 
| ARRAY | List | 

## Partitions et déversements
<a name="connectors-teradata-partitions-and-splits"></a>

Une partition est représentée par une seule colonne de partition de type `Integer`. La colonne contient les noms des partitions définies dans une table Teradata. Pour une table qui ne possède pas de nom de partition, \$1 est renvoyé, ce qui équivaut à une partition unique. Une partition équivaut à une division.


****  

| Nom | Type | Description | 
| --- | --- | --- | 
| partition | Entier | Partition nommée dans Teradata. | 

## Performance
<a name="connectors-teradata-performance"></a>

Teradata prend en charge les partitions natives. Le connecteur Athena Teradata peut récupérer les données de ces partitions en parallèle. Si vous souhaitez interroger des jeux de données très volumineux avec une distribution de partition uniforme, le partitionnement natif est fortement recommandé. La sélection d'un sous-ensemble de colonnes ralentit considérablement l'exécution de la requête. Le connecteur présente une certaine limitation en raison de la simultanéité.

Le connecteur Athena Teradata effectue une poussée vers le bas des prédicats pour réduire les données analysées par la requête. Des prédicats simples et des expressions complexes sont poussés vers le connecteur afin de réduire la quantité de données analysées et le délai d'exécution de la requête.

### Prédicats
<a name="connectors-teradata-performance-predicates"></a>

Un prédicat est une expression contenue dans la clause `WHERE` d'une requête SQL qui prend une valeur booléenne et filtre les lignes en fonction de plusieurs conditions. Le connecteur Athena Teradata peut combiner ces expressions et les pousser directement vers Teradata pour améliorer la fonctionnalité et réduire la quantité de données analysées.

Les opérateurs du connecteur Athena Teradata suivants prennent en charge la poussée vers le bas de prédicats :
+ **Booléen : **AND, OR, NOT
+ **Égalité : **EQUAL, NOT\$1EQUAL, LESS\$1THAN, LESS\$1THAN\$1OR\$1EQUAL, GREATER\$1THAN\$1OR\$1EQUAL, NULL\$1IF, IS\$1NULL
+ **Arithmétique : **ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
+ **Autres :** LIKE\$1PATTERN, IN

### Exemple de poussée combinée vers le bas
<a name="connectors-teradata-performance-pushdown-example"></a>

Pour améliorer les capacités de requête, combinez les types de poussée vers le bas, comme dans l'exemple suivant :

```
SELECT * 
FROM my_table 
WHERE col_a > 10 
    AND ((col_a + col_b) > (col_c % col_d)) 
    AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
```

## Requêtes de transmission
<a name="connectors-teradata-passthrough-queries"></a>

Le connecteur Teradata prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Teradata, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Teradata. La requête sélectionne toutes les colonnes dans la table `customer`.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer'
        ))
```

## Informations de licence
<a name="connectors-teradata-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-teradata-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/pom.xml) du connecteur Teradata sur .com. GitHub

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-teradata) sur GitHub .com.

# Connecteur Amazon Athena pour Timestream
<a name="connectors-timestream"></a>

Le connecteur Amazon Athena pour Timestream permet à Amazon Athena de communiquer avec [Amazon Timestream](https://aws.amazon.com/timestream/), ce qui rend os données de séries temporelles accessibles via Amazon Timestream. Vous pouvez éventuellement l'utiliser AWS Glue Data Catalog comme source de métadonnées supplémentaires.

Amazon Timestream est une base de données de séries temporelles rapide, évolutive, entièrement gérée et spécialement conçue pour faciliter le stockage et l'analyse de milliers de milliards de points de données en séries chronologiques par jour. Timestream vous fait gagner du temps et réduire les coûts de gestion du cycle de vie des données en séries chronologiques en conservant les données récentes en mémoire et en déplaçant les données historiques vers un niveau de stockage à coût optimisé en fonction des politiques définies par l'utilisateur.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

Si Lake Formation est activé sur votre compte, le rôle IAM de votre connecteur Lambda fédéré Athena que vous avez déployé dans AWS Serverless Application Repository le doit avoir un accès en lecture dans Lake Formation au. AWS Glue Data Catalog

## Conditions préalables
<a name="connectors-timestream-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-timestream-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Timestream.

### Connexions Glue (recommandé)
<a name="connectors-timestream-gc"></a>

Nous vous recommandons de configurer un connecteur Timestream en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Timestream Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type TIMESTREAM
```

**Propriétés d’environnement Lambda**

**glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Timestream créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Timestream créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-timestream-legacy"></a>

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.

Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés sans connexion Glue associée. Utilisez les paramètres suivants uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena ou lorsque la propriété d’environnement `glue_connection` n’est pas spécifiée.

**Propriétés d’environnement Lambda**
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).
+ **glue\$1catalog** – (Facultatif) Utilisez cette option pour spécifier un [catalogue AWS Glue entre compte](data-sources-glue-cross-account.md). Par défaut, le connecteur tente d'obtenir des métadonnées à partir de son propre AWS Glue compte.

## Configuration de bases de données et de tables dans AWS Glue
<a name="connectors-timestream-setting-up-databases-and-tables-in-aws-glue"></a>

Vous pouvez éventuellement utiliser le AWS Glue Data Catalog comme source de métadonnées supplémentaires. Pour activer une AWS Glue table à utiliser avec Timestream, vous devez disposer d'une AWS Glue base de données et d'une table dont les noms correspondent à la base de données Timestream et à la table pour laquelle vous souhaitez fournir des métadonnées supplémentaires.

**Note**  
Pour des performances optimales, n'utilisez que des minuscules pour vos noms de bases de données et de tables. L'utilisation d'une casse mixte oblige le connecteur à effectuer une recherche insensible à la casse, ce qui demande plus de temps de calcul.

Pour configurer AWS Glue une table à utiliser avec Timestream, vous devez définir ses propriétés dans. AWS Glue

**Pour utiliser une AWS Glue table pour des métadonnées supplémentaires**

1. Modifiez le tableau dans la AWS Glue console pour ajouter les propriétés de tableau suivantes :
   + **timestream-metadata-flag**— Cette propriété indique au connecteur Timestream que le connecteur peut utiliser la table pour des métadonnées supplémentaires. Vous pouvez fournir n’importe quelle valeur pour `timestream-metadata-flag` tant que la propriété `timestream-metadata-flag` est présente dans la liste des propriétés de la table.
   + **\$1view\$1template** – Lorsque vous utilisez AWS Glue pour des métadonnées supplémentaires, vous pouvez utiliser cette propriété de table et spécifier n’importe quel SQL Timestream en tant que vue. Le connecteur Athena Timestream utilise le SQL de la vue avec votre SQL d’Athena pour exécuter votre requête. Cela s’avère utile si vous souhaitez utiliser une fonctionnalité de Timestream SQL qui n’est pas disponible dans Athena.

1. Assurez-vous d'utiliser les types de données appropriés AWS Glue tels que listés dans ce document.

### Types de données
<a name="connectors-timestream-data-types"></a>

Actuellement, le connecteur Timestream ne prend en charge qu’un sous-ensemble des types de données disponibles dans Timestream, en particulier les valeurs scalaires `varchar`, `double` et `timestamp`.

Pour interroger le type de données `timeseries`, vous devez configurer une vue dans les propriétés de la table AWS Glue qui utilise la fonction `CREATE_TIME_SERIES` de Timestream. Vous devez également fournir un schéma pour la vue qui utilise la syntaxe `ARRAY<STRUCT<time:timestamp,measure_value::double:double>>` comme type pour n’importe laquelle de vos colonnes de séries chronologiques. Assurez-vous de remplacer `double` par le type scalaire approprié pour votre table.

L'image suivante montre un exemple de propriétés de AWS Glue table configurées pour configurer une vue sur une série chronologique.

![\[Configuration des propriétés de table AWS Glue pour configurer une vue sur une série chronologique.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-timestream-1.png)


## Autorisations nécessaires
<a name="connectors-timestream-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-timestream.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-timestream/athena-timestream.yaml). La liste suivante résume les autorisations requises.
+ **Amazon S3 write access** (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
+ **Athena GetQueryExecution** — Le connecteur utilise cette autorisation pour échouer rapidement lorsque la requête Athena en amont est terminée.
+ **AWS Glue Data Catalog**— Le connecteur Timestream nécessite un accès en lecture seule au pour AWS Glue Data Catalog obtenir des informations sur le schéma.
+ **CloudWatch Journaux** : le connecteur a besoin d'accéder aux CloudWatch journaux pour stocker les journaux.
+ **Accès à Timestream** – Pour exécuter des requêtes Timestream.

## Performance
<a name="connectors-timestream-performance"></a>

Nous vous recommandons d'utiliser la clause `LIMIT` afin de limiter les données renvoyées (et non les données numérisées) à moins de 256 Mo afin de garantir les performances des requêtes interactives.

Le connecteur Athena pour Timestream procède à la transmission des prédicats pour réduire les données analysées par la requête. Les clauses `LIMIT` réduisent la quantité de données analysées, mais si vous ne fournissez pas de prédicat, vous devez vous attendre à ce que les requêtes `SELECT` avec une clause `LIMIT` analysent au moins 16 Mo de données. La sélection d'un sous-ensemble de colonnes accélère considérablement l'exécution des requêtes et réduit le nombre de données analysées. Le connecteur Timestream résiste à la limitation due à la simultanéité.

## Requêtes de transmission
<a name="connectors-timestream-passthrough-queries"></a>

Le connecteur Timestream prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Timestream, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Timestream. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-timestream-license-information"></a>

Le projet de connecteur Timestream Amazon Athena est concédé sous licence dans le cadre de la [licence Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Ressources supplémentaires
<a name="connectors-timestream-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-timestream) sur GitHub .com.

# Connecteur Amazon Athena pour TPC Benchmark DS (TPC-DS)
<a name="connectors-tpcds"></a>

Le connecteur Amazon Athena pour TPC-DS permet à Amazon Athena de communiquer avec une source de données TPC Benchmark DS générées de manière aléatoire et destinées à être utilisées pour la définition de points de référence et les tests fonctionnels d’Athena Federation. Le connecteur TPC-DS d'Athena génère une base de données conforme TPC-DS à l'un des quatre facteurs d'échelle. Nous ne recommandons pas l’utilisation de ce connecteur comme alternative aux tests de performance des lacs de données basés sur Amazon S3.

Ce connecteur peut être enregistré auprès du Catalogue de données Glue en tant que catalogue fédéré. Il prend en charge les contrôles d’accès aux données définis dans Lake Formation aux niveaux catalogue, base de données, table, colonne, ligne et balise. Ce connecteur utilise les connexions Glue pour centraliser les propriétés de configuration dans Glue.

## Conditions préalables
<a name="connectors-tpcds-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-tpcds-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur TPC-DS.

**Note**  
Les connecteurs de source de données Athena créés le 3 décembre 2024 et les versions ultérieures utilisent AWS Glue des connexions.  
Les noms et définitions de paramètres répertoriés ci-dessous concernent les connecteurs de source de données Athena créés avant le 3 décembre 2024. Ces noms et définitions peuvent différer de ceux des [propriétés de connexion AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) correspondantes. À compter du 3 décembre 2024, utilisez les paramètres ci-dessous uniquement lorsque vous [déployez manuellement](connect-data-source-serverless-app-repo.md) une version antérieure d’un connecteur de source de données Athena.

### Connexions Glue (recommandé)
<a name="connectors-tpcds-gc"></a>

Nous vous recommandons de configurer un connecteur TPC-DS en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur TPC-DS Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type TPCDS
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur TPC-DS créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur TPC-DS créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-tpcds-legacy"></a>
+ **spill\$1bucket** – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
+ **spill\$1prefix** – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le `spill_bucket` spécifié appelé `athena-federation-spill`. Nous vous recommandons de configurer un [cycle de vie de stockage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé.
+ **spill\$1put\$1request\$1headers** – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande `putObject` Amazon S3 utilisée pour le déversement (par exemple, `{"x-amz-server-side-encryption" : "AES256"}`). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel *Amazon Simple Storage Service API Reference*.
+ **kms\$1key\$1id** – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, vous pouvez spécifier l’ID d’une clé KMS.
+ **disable\$1spill\$1encryption** – (Facultatif) Lorsque la valeur est définie sur `True`, le chiffrement des déversements est désactivé. La valeur par défaut est `False` afin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le [chiffrement côté serveur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

## Tester des bases de données et des tables
<a name="connectors-tpcds-test-databases-and-tables"></a>

Le connecteur TPC-DS d’Athena génère une base de données conforme TPC-DS à l’un des quatre facteurs d’échelle `tpcds1`, `tpcds10`, `tpcds100`, `tpcds250` ou `tpcds1000`.

### Résumé des tables
<a name="connectors-tpcds-table-summary"></a>

Pour obtenir une liste complète des tables et des colonnes de données de test, exécutez les requêtes `SHOW TABLES` ou `DESCRIBE TABLE`. Le résumé des tables suivant est fourni pour des raisons de commodité.

1. call\$1center

1. catalog\$1page

1. catalog\$1returns

1. catalog\$1sales

1. customer

1. customer\$1address

1. customer\$1demographics

1. date\$1dim

1. dbgen\$1version

1. household\$1demographics

1. income\$1band

1.  Inventory

1. item

1. promotion

1. raison

1. ship\$1mode

1. stocker

1. store\$1returns

1. store\$1sales

1. time\$1dim

1. warehouse

1. web\$1page

1. web\$1returns

1. web\$1sales

1. web\$1site

Pour les requêtes TPC-DS compatibles avec le schéma et les données générés, consultez le répertoire [athena-tpcds/src/main/resources/queries/](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds/src/main/resources/queries)sur. GitHub

### Exemple de requête
<a name="connectors-tpcds-example-query"></a>

Les exemples de requêtes `SELECT` suivants interrogent le catalogue `tpcds` pour la démographie des clients dans des comtés spécifiques.

```
SELECT
  cd_gender,
  cd_marital_status,
  cd_education_status,
  count(*) cnt1,
  cd_purchase_estimate,
  count(*) cnt2,
  cd_credit_rating,
  count(*) cnt3,
  cd_dep_count,
  count(*) cnt4,
  cd_dep_employed_count,
  count(*) cnt5,
  cd_dep_college_count,
  count(*) cnt6
FROM
  "lambda:tpcds".tpcds1.customer c, "lambda:tpcds".tpcds1.customer_address ca, "lambda:tpcds".tpcds1.customer_demographics
WHERE
  c.c_current_addr_sk = ca.ca_address_sk AND
    ca_county IN ('Rush County', 'Toole County', 'Jefferson County',
                  'Dona Ana County', 'La Porte County') AND
    cd_demo_sk = c.c_current_cdemo_sk AND
    exists(SELECT *
           FROM "lambda:tpcds".tpcds1.store_sales, "lambda:tpcds".tpcds1.date_dim
           WHERE c.c_customer_sk = ss_customer_sk AND
             ss_sold_date_sk = d_date_sk AND
             d_year = 2002 AND
             d_moy BETWEEN 1 AND 1 + 3) AND
    (exists(SELECT *
            FROM "lambda:tpcds".tpcds1.web_sales, "lambda:tpcds".tpcds1.date_dim
            WHERE c.c_customer_sk = ws_bill_customer_sk AND
              ws_sold_date_sk = d_date_sk AND
              d_year = 2002 AND
              d_moy BETWEEN 1 AND 1 + 3) OR
      exists(SELECT *
             FROM "lambda:tpcds".tpcds1.catalog_sales, "lambda:tpcds".tpcds1.date_dim
             WHERE c.c_customer_sk = cs_ship_customer_sk AND
               cs_sold_date_sk = d_date_sk AND
               d_year = 2002 AND
               d_moy BETWEEN 1 AND 1 + 3))
GROUP BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
ORDER BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
LIMIT 100
```

## Autorisations nécessaires
<a name="connectors-tpcds-required-permissions"></a>

Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section `Policies` du fichier [athena-tpcds.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-tpcds/athena-tpcds.yaml). La liste suivante résume les autorisations requises.
+ **Amazon S3 write access** (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
+ **Athena GetQueryExecution** — Le connecteur utilise cette autorisation pour échouer rapidement lorsque la requête Athena en amont est terminée.

## Performance
<a name="connectors-tpcds-performance"></a>

Le connecteur Athena TPC-DS tente de paralléliser les requêtes en fonction du facteur d’échelle que vous choisissez. La poussée vers le bas de prédicat est effectuée au sein de la fonction Lambda.

## Informations de licence
<a name="connectors-tpcds-license-information"></a>

Le projet de connecteur TPC-DS Amazon Athena est concédé sous licence dans le cadre de la [licence Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Ressources supplémentaires
<a name="connectors-tpcds-additional-resources"></a>

Pour plus d'informations sur ce connecteur, rendez-vous sur [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds) sur GitHub .com.

# Connecteur Amazon Athena pour Vertica
<a name="connectors-vertica"></a>

Vertica est une plateforme de base de données en colonnes qui peut être déployée dans le cloud ou sur site et qui prend en charge les entrepôts de données à l'échelle des exaoctets. Vous pouvez utiliser le connecteur Vertica d'Amazon Athena dans les requêtes fédérées pour interroger les sources de données Vertica depuis Athena. Par exemple, vous pouvez exécuter des requêtes analytiques sur un entrepôt de données sur Vertica et un lac de données sur Simple Storage Service (Amazon S3).

Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

## Conditions préalables
<a name="connectors-vertica-prerequisites"></a>
+ Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez [Création d’une connexion à une source de données](connect-to-a-data-source.md) ou [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md).
+ Avant d’utiliser ce connecteur, configurez un VPC et un groupe de sécurité. Pour plus d’informations, consultez [Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).

## Limitations
<a name="connectors-vertica-limitations"></a>
+ Étant donné que le connecteur Athena pour Vertica lit les fichiers Parquet exportés depuis Amazon S3, les performances du connecteur peuvent être lentes. Lorsque vous interrogez des tables de grande taille, nous vous recommandons d’utiliser une requête [CREATE TABLE AS (SELECT ...)](ctas.md) et des prédicats SQL.
+ Actuellement, en raison d’un problème connu dans la requête fédérée d’Athena, le connecteur oblige Vertica à exporter toutes les colonnes de la table interrogée vers Amazon S3, mais seules les colonnes demandées sont visibles dans les résultats sur la console Athena.
+ Les opérations DDL d’écriture ne sont pas prises en charge.
+ Toutes les limites Lambda pertinentes. Pour plus d'informations, consultez la section [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) du *Guide du développeur AWS Lambda *.

## Flux de travail
<a name="connectors-vertica-workflow"></a>

Le diagramme suivant montre le flux de travail d’une requête qui utilise le connecteur Vertica.

![\[Flux de travail d’une requête Vertica depuis Amazon Athena\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-vertica-1.png)


1. Une requête SQL est émise par rapport à une ou plusieurs tables dans Vertica.

1. Le connecteur analyse la requête SQL pour envoyer la partie appropriée à Vertica via la connexion JDBC.

1. Les chaînes de connexion utilisent le nom d'utilisateur et le mot de passe enregistrés AWS Secrets Manager pour accéder à Vertica.

1. Le connecteur enveloppe la requête SQL avec une commande `EXPORT` Vertica, comme dans l’exemple suivant.

   ```
   EXPORT TO PARQUET (directory = 's3://amzn-s3-demo-bucket/folder_name, 
      Compression='Snappy', fileSizeMB=64) OVER() as 
   SELECT
   PATH_ID,
   ...
   SOURCE_ITEMIZED,
   SOURCE_OVERRIDE
   FROM DELETED_OBJECT_SCHEMA.FORM_USAGE_DATA
   WHERE PATH_ID <= 5;
   ```

1. Vertica traite la requête SQL et envoie l’ensemble de résultats à un compartiment Amazon S3. Pour un meilleur débit, Vertica utilise l’option `EXPORT` pour paralléliser l’opération d’écriture de plusieurs fichiers Parquet.

1. Athena analyse le compartiment Amazon S3 afin de déterminer le nombre de fichiers à lire pour l’ensemble de résultats.

1. Athena effectue plusieurs appels à la fonction Lambda et utilise un `ArrowReader` Apache pour lire les fichiers Parquet à partir du jeu de données qui en résulte. Les appels multiples permettent à Athena de paralléliser la lecture des fichiers Amazon S3 et d’obtenir un débit pouvant atteindre 100 Go par seconde.

1. Athena traite les données renvoyées par Vertica avec les données analysées depuis le lac de données et renvoie le résultat.

## Conditions
<a name="connectors-vertica-terms"></a>

Les termes suivants se rapportent au connecteur Vertica.
+ **Base de données** – Toute instance d’une base de données Vertica déployée sur Amazon EC2.
+ **Gestionnaire** – Un gestionnaire Lambda qui accède à votre instance de base de données. Un gestionnaire peut être destiné aux métadonnées ou aux enregistrements de données.
+ **Gestionnaire de métadonnées** – Un gestionnaire Lambda qui extrait les métadonnées de votre instance de base de données.
+ **Gestionnaire d’enregistrements** – Un gestionnaire Lambda qui extrait les enregistrements de données de votre instance de base de données.
+ **Gestionnaire de composites** – Un gestionnaire Lambda qui extrait les métadonnées et les enregistrements de données de votre instance de base de données.
+ **Propriété ou paramètre** – Propriété de base de données utilisée par les gestionnaires pour extraire des informations de base de données. Vous configurez ces propriétés en tant que variables d’environnement Lambda.
+ **Chaîne de connexion** – Chaîne de texte utilisée pour établir une connexion à une instance de base de données.
+ **Catalogue** — Un AWS Glue non-catalogue enregistré auprès d'Athena qui est un préfixe obligatoire pour la propriété. `connection_string`

## Parameters
<a name="connectors-vertica-parameters"></a>

Utilisez les paramètres de cette section pour configurer le connecteur Vertica.

### Connexions Glue (recommandé)
<a name="connectors-vertica-gc"></a>

Nous vous recommandons de configurer un connecteur Vertica en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement `glue_connection` du connecteur Vertica Lambda sur le nom de la connexion Glue à utiliser.

**Propriétés des connexions Glue**

Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.

```
aws glue describe-connection-type --connection-type VERTICA
```

**Propriétés d’environnement Lambda**
+ **glue\$1connection** : spécifie le nom de la connexion Glue associée au connecteur fédéré. 
+ **casing\$1mode** (facultatif) : spécifie comment gérer la casse des noms de schéma et de table. Le paramètre `casing_mode` utilise les valeurs suivantes pour spécifier le comportement de la casse :
  + **none** : aucune modification de la casse dans les noms de schéma et de table indiqués. Il s’agit de la valeur par défaut pour les connecteurs auxquels une connexion Glue est associée. 
  + **upper** : mise en majuscules de tous les noms de schéma et de table indiqués.
  + **lower** : mise en minuscules de tous les noms de schéma et de table indiqués.

**Note**  
Tous les connecteurs qui utilisent des connexions Glue doivent être utilisés AWS Secrets Manager pour stocker les informations d'identification.
Le connecteur Vertica créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
Le connecteur Vertica créé à l’aide des connexions Glue prend uniquement en charge `ConnectionSchemaVersion` 2.

### Connexions héritées
<a name="connectors-vertica-legacy"></a>

Le connecteur Vertica d’Amazon Athena expose des options de configuration par le biais de variables d’environnement Lambda. Vous pouvez utiliser les variables d’environnement Lambda suivantes pour configurer le connecteur. 
+  **AthenaCatalogName**— Nom de la fonction Lambda 
+  **ExportBucket**— Le compartiment Amazon S3 dans lequel les résultats des requêtes Vertica sont exportés. 
+  **SpillBucket**— Le nom du compartiment Amazon S3 dans lequel cette fonction peut diffuser des données. 
+  **SpillPrefix**— Le préfixe de l'`SpillBucket`emplacement où cette fonction peut diffuser des données. 
+  **SecurityGroupIds**— Un ou plusieurs IDs éléments correspondant au groupe de sécurité qui doit être appliqué à la fonction Lambda (par exemple, `sg1``sg2`, ou`sg3`). 
+  **SubnetIds**— Un ou plusieurs sous-réseaux correspondant au sous-réseau IDs que la fonction Lambda peut utiliser pour accéder à votre source de données (par exemple, `subnet1` ou). `subnet2` 
+  **SecretNameOrPrefix**— Le nom ou le préfixe d'un ensemble de noms dans Secrets Manager auquel cette fonction a accès (par exemple,`vertica-*`) 
+  **VerticaConnectionString**— Les détails de connexion Vertica à utiliser par défaut si aucune connexion spécifique au catalogue n'est définie. La chaîne peut éventuellement utiliser AWS Secrets Manager la syntaxe (par exemple,`${secret_name}`). 
+  **ID de VPC** – L’ID de VPC à associer à la fonction Lambda. 

#### Chaîne de connexion
<a name="connectors-vertica-connection-string"></a>

Utilisez une chaîne de connexion JDBC au format suivant pour vous connecter à une instance de base de données.

```
vertica://jdbc:vertica://host_name:
                        port/database?user=vertica-username&password=
                        vertica-password
```

#### Utilisation d’un gestionnaire de connexion unique
<a name="connectors-vertica-using-a-single-connection-handler"></a>

Vous pouvez utiliser les métadonnées de connexion unique et les gestionnaires d’enregistrements suivants pour vous connecter à une seule instance Vertica.


****  

| Type de gestionnaire | Classe | 
| --- | --- | 
| Gestionnaire de composites | VerticaCompositeHandler | 
| Gestionnaire de métadonnées | VerticaMetadataHandler | 
| Gestionnaire d’enregistrements | VerticaRecordHandler | 

#### Paramètres du gestionnaire de connexion unique
<a name="connectors-vertica-single-connection-handler-parameters"></a>


****  

| Paramètre | Description | 
| --- | --- | 
| default | Obligatoire. Chaîne de connexion par défaut. | 

Les gestionnaires de connexion unique prennent en charge une instance de base de données et doivent fournir un paramètre de connexion `default`. Toutes les autres chaînes de connexion sont ignorées.

#### Fourniture des informations d’identification
<a name="connectors-vertica-providing-credentials"></a>

Pour fournir un nom d’utilisateur et un mot de passe pour votre base de données dans votre chaîne de connexion JDBC, vous pouvez utiliser les propriétés de la chaîne de connexion ou AWS Secrets Manager.
+ **Chaîne de connexion** – Un nom d'utilisateur et un mot de passe peuvent être spécifiés en tant que propriétés dans la chaîne de connexion JDBC.
**Important**  
Afin de vous aider à optimiser la sécurité, n’utilisez pas d’informations d’identification codées en dur dans vos variables d’environnement ou vos chaînes de connexion. Pour plus d'informations sur le transfert de vos secrets codés en dur vers AWS Secrets Manager, voir [Déplacer les secrets codés en dur vers AWS Secrets Manager dans le Guide de](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) l'*AWS Secrets Manager utilisateur*.
+ **AWS Secrets Manager**[— Pour utiliser la fonctionnalité Athena Federated Query, AWS Secrets Manager le VPC connecté à votre fonction Lambda doit disposer d'un [accès Internet ou](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) d'un point de terminaison VPC pour se connecter à Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

  Vous pouvez insérer le nom d'un secret AWS Secrets Manager dans votre chaîne de connexion JDBC. Le connecteur remplace le nom secret par les valeurs `username` et `password` de Secrets Manager.

  Pour les instances de base de données Amazon RDS, cette prise en charge est étroitement intégrée. Si vous utilisez Amazon RDS, nous vous recommandons vivement d'utiliser une AWS Secrets Manager rotation des identifiants. Si votre base de données n’utilise pas Amazon RDS, stockez les informations d’identification au format JSON au format suivant :

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Exemple de chaîne de connexion avec des noms secrets**  
La chaîne suivante contient les noms secrets \$1\$1`vertica-username`\$1 et `${vertica-password}`. 

```
vertica://jdbc:vertica://
                        host_name:port/database?user=${vertica-username}&password=${vertica-password}
```

Le connecteur utilise le nom secret pour récupérer les secrets et fournir le nom d’utilisateur et le mot de passe, comme dans l’exemple suivant.

```
vertica://jdbc:vertica://
                        host_name:port/database?user=sample-user&password=sample-password
```

Actuellement, le connecteur Vertica reconnaît les propriétés JDBC `vertica-username` et `vertica-password`. 

#### Paramètres de déversement
<a name="connectors-vertica-spill-parameters"></a>

Le kit SDK Lambda peut déverser des données vers Amazon S3. Toutes les instances de base de données accessibles par la même fonction Lambda déversent au même emplacement.


****  

| Paramètre | Description | 
| --- | --- | 
| spill\$1bucket | Obligatoire. Nom du compartiment de déversement. | 
| spill\$1prefix | Obligatoire. Préfixe de la clé du compartiment de déversement. | 
| spill\$1put\$1request\$1headers | (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande putObject Amazon S3 utilisée pour le déversement (par exemple, \$1"x-amz-server-side-encryption" : "AES256"\$1). Pour les autres en-têtes possibles, consultez le [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)manuel Amazon Simple Storage Service API Reference. | 

## Prise en charge du type de données
<a name="connectors-vertica-data-type-support"></a>

Le tableau suivant indique les types de données pris en charge pour le connecteur Vertica.


****  

| Booléen | 
| --- | 
| BigInt | 
| Court | 
| Entier | 
| Long | 
| Float | 
| Double | 
| Date | 
| Varchar | 
| Octets | 
| BigDecimal | 
| TimeStamp Rôle : Varchar | 

## Performance
<a name="connectors-vertica-performance"></a>

La fonction Lambda procède à la transmission des projections pour réduire les données analysées par la requête. Les clauses `LIMIT` réduisent la quantité de données analysées, mais si vous ne fournissez pas de prédicat, vous devez vous attendre à ce que les requêtes `SELECT` avec une clause `LIMIT` analysent au moins 16 Mo de données. Le connecteur Vertica résiste à la limitation de à la simultanéité.

## Requêtes de transmission
<a name="connectors-vertica-passthrough-queries"></a>

Le connecteur Vertica prend en charge les [requêtes de transmission](federated-query-passthrough.md). Les requêtes de transmission utilisent une fonction de table pour transmettre votre requête complète à la source de données à des fins d’exécution.

Pour utiliser les requêtes de transmission avec Vertica, vous pouvez utiliser la syntaxe suivante :

```
SELECT * FROM TABLE(
        system.query(
            query => 'query string'
        ))
```

L’exemple de requête suivant transmet une requête à une source de données dans Vertica. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        system.query(
            query => 'SELECT * FROM customer LIMIT 10'
        ))
```

## Informations de licence
<a name="connectors-vertica-license-information"></a>

En utilisant ce connecteur, vous reconnaissez l'inclusion de composants tiers, dont la liste se trouve dans le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/pom.xml) de ce connecteur, et vous acceptez les termes des licences tierces respectives fournies dans le fichier [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/LICENSE.txt) sur GitHub .com.

## Ressources supplémentaires
<a name="connectors-vertica-additional-resources"></a>

Pour obtenir les dernières informations sur la version du pilote JDBC, consultez le fichier [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/pom.xml) du connecteur Vertica sur .com. GitHub

*Pour plus d'informations sur ce connecteur, consultez [le site correspondant](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-vertica) sur GitHub .com et [Interrogation d'une source de données Vertica dans Amazon Athena à l'aide du SDK Athena Federated Query](https://aws.amazon.com/blogs/big-data/querying-a-vertica-data-source-in-amazon-athena-using-the-athena-federated-query-sdk/) sur le blog Big Data.AWS *

# Création d’une connexion à une source de données
<a name="connect-to-a-data-source"></a>

Pour utiliser un connecteur de source de données Athena, vous devez créer la AWS Glue connexion qui stocke les informations de connexion concernant le connecteur et votre source de données. Lorsque vous créez la connexion, vous devez attribuer à la source de données un nom que vous utiliserez pour référencer votre source de données dans vos requêtes SQL.

Vous pouvez créer et configurer une connexion à une source de données dans Athena à l'aide de la [console](connect-to-a-data-source-console-steps.md) ou des opérations de l'[CreateDataCatalogAPI](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateDataCatalog.html).

**Topics**
+ [Autorisations permettant de créer et d’utiliser une source de données dans Athena](connect-to-a-data-source-permissions.md)
+ [Utilisation de la console Athena pour se connecter à une source de données](connect-to-a-data-source-console-steps.md)
+ [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données](connect-data-source-serverless-app-repo.md)
+ [Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md)
+ [Transférez des images ECR vers votre compte AWS](pull-ecr-customer-account.md)
+ [Enregistrement de votre connexion en tant que Catalogue de données Glue](register-connection-as-gdc.md)
+ [Activation des requêtes fédérées entre comptes](xacct-fed-query-enable.md)
+ [Mise à jour d’un connecteur de source de données](connectors-updating.md)

# Autorisations permettant de créer et d’utiliser une source de données dans Athena
<a name="connect-to-a-data-source-permissions"></a>

Pour créer et utiliser une source de données, vous devez disposer des jeux d’autorisations suivants.
+ AmazonAthenaFullAccess qui fournit un accès complet à Amazon Athena et un accès étendu aux dépendances nécessaires pour permettre l'interrogation, la rédaction des résultats et la gestion des données. Pour plus d'informations, consultez [AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)le Guide de référence des politiques AWS gérées.
+ Autorisations pour appeler l' CreateDataCatalog API. Ces autorisations sont uniquement nécessaires lorsque vous créez une source de données qui s’intègre aux connexions Glue. Pour plus d’informations sur cet exemple de politique, consultez [Autorisations requises pour créer un connecteur et un catalogue Athena](athena-catalog-access.md).
+ Si vous souhaitez utiliser le contrôle d’accès précis de Lake Formation, outre les autorisations répertoriées ci-dessus, vous aurez également besoin des autorisations suivantes.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lakeformation:RegisterResource",
          "iam:ListRoles",
          "glue:CreateCatalog",
          "glue:GetCatalogs",
          "glue:GetCatalog"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

------

# Utilisation de la console Athena pour se connecter à une source de données
<a name="connect-to-a-data-source-console-steps"></a>

Vous pouvez utiliser la console Athena pour créer et configurer une connexion à une source de données.

**Pour créer une connexion à une source de données**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez **Créer une source de données**.

1. Pour **Choose a data source** (Sélectionnez une source de données), choisissez la source de données qu'Athena doit interroger, en tenant compte des directives suivantes :
   + Choisissez une option de connexion qui correspond à votre source de données. Athena dispose de connecteurs de source de données prédéfinis que vous pouvez configurer pour des sources comme MySQL, Amazon DocumentDB et PostgreSQL.
   + Choisissez **S3 - AWS Glue Data Catalog** si vous souhaitez interroger des données dans Simple Storage Service (Amazon S3) et que vous n'utilisez pas un métastore Apache Hive ou l'une des autres options de source de données de requête fédérée de cette page. Athena utilise le AWS Glue Data Catalog pour stocker les métadonnées et les informations de schéma pour les sources de données Simple Storage Service (Amazon S3). Il s'agit de l'option par défaut (non fédérée). Pour de plus amples informations, veuillez consulter [AWS Glue Data Catalog À utiliser pour vous connecter à vos données](data-sources-glue.md). Pour connaître les étapes associées à l’utilisation de ce flux de travail, consultez [Enregistrement et utilisation des catalogues de données dans Athena](gdc-register.md).
   + Choisissez **S3 - Apache Hive metastore (métastore Apache Hive)** pour interroger les jeux de données dans Simple Storage Service (Amazon S3) qui utilisent un métastore Apache Hive. Pour plus d’informations sur cette option, consultez [Connexion d’Athena à un metastore Apache Hive](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md).
   + Choisissez **Custom or shared connector** (Connecteur personnalisé ou partagé) si vous souhaitez créer votre propre connecteur de source de données à utiliser avec Athena. Pour plus d'informations sur l'écriture d'un connecteur de source de données , consultez [Développement d’un connecteur de source de données à l’aide du kit SDK Athena Query Federation](connect-data-source-federation-sdk.md).

1. Choisissez **Suivant**.

1. Sur la page **Saisir les détails de la source de données**, dans **Nom de la source de données**, utilisez le nom généré automatiquement ou saisissez un nom unique que vous souhaitez utiliser dans vos instructions SQL lorsque vous interrogez la source de données à partir d’Athena. Le nom peut contenir jusqu'à 127 caractères et doit être unique dans votre compte. Il ne peut pas être modifié après sa création. Les caractères valides sont a-z, A-Z, 0–9, \$1 (trait de soulignement), @ (arobase) et - (trait d'union). Les noms `awsdatacatalog`, `hive`, `jmx` et `system` sont réservés par Athena et ne peuvent pas être utilisés pour les noms de source de données. 

1. Si la source de données que vous choisissez s'intègre aux AWS Glue connexions.

   1. Dans **Informations de connexion àAWS Glue **, saisissez les informations requises. Une connexion contient les propriétés requises pour se connecter à une source de données particulière Les propriétés requises varient en fonction du type de connexion. Pour plus d’informations sur les propriétés associées à votre connecteur, consultez [Connecteurs de source de données disponibles](connectors-available.md). Pour plus d’informations sur les propriétés de connexion supplémentaires, consultez [AWS Glue connection properties](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) dans le *Guide d’utilisation d’AWS Glue *.
**Note**  
Lorsque vous mettez à jour les propriétés de connexion Glue, le connecteur Lambda doit être redémarré pour obtenir les propriétés mises à jour. Pour ce faire, modifiez les propriétés de l’environnement et enregistrez-le sans réellement apporter de changements. 
Lorsque vous mettez à jour une connexion Glue, les propriétés suivantes ne sont pas automatiquement mises à jour dans la fonction Lambda correspondante. Vous devez mettre à jour manuellement votre fonction Lambda pour ces propriétés.  
Configuration du VPC Lambda : `security_group_ids`, `subnet_ids`
Rôle d’exécution Lambda : `spill_bucket`, `secret_name`, `spill_kms_key_id`

   1. Dans **Rôle IAM d’exécution Lambda** choisissez l’une des options suivantes :
      + **Créer et utiliser un nouveau rôle d'exécution** — (par défaut) Athena crée un rôle d'exécution qu'elle utilisera ensuite pour accéder aux ressources en votre AWS Lambda nom. Athena a besoin de ce rôle pour créer votre source de données fédérée.
      + **Utiliser un rôle d’exécution existant** : utilisez cette option pour choisir un rôle d’exécution existant. Dans cette option, choisissez le rôle d’exécution que vous souhaitez utiliser dans la liste déroulante **Rôle d’exécution**.

1. Si la source de données que vous sélectionnez ne s’intègre pas aux connexions AWS Glue . 

   1. Pour **Lambda Function** (fonction Lambda), choisissez **Create Lambda Function** (Créer une fonction Lambda). La page de fonctions du connecteur que vous avez choisi s'ouvre dans la AWS Lambda console. La page contient des informations détaillées sur le connecteur.

   1. Sous **Application settings** (Paramètres d'application), lisez attentivement la description de chaque paramètre d'application, puis saisissez les valeurs qui correspondent à vos besoins.

      Les paramètres de l'application que vous voyez varient en fonction du connecteur de votre source de données. Les paramètres minimaux requis sont les suivants :
      + **AthenaCatalogName**— Nom, en minuscules, de la fonction Lambda qui indique la source de données qu'elle cible, par exemple. `cloudwatchlogs`
      + **SpillBucket**— Un compartiment Amazon S3 dans votre compte pour stocker les données qui dépassent les limites de taille de réponse de la fonction Lambda.
**Note**  
Les données déversées ne sont pas réutilisées lors des exécutions suivantes et peuvent être supprimées en toute sécurité. Athena ne supprime pas ces données pour vous. Pour gérer ces objets, envisagez d'ajouter une politique de cycle de vie des objets qui supprime les anciennes données de votre compartiment de déversement Simple Storage Service (Amazon S3). Pour plus d’informations, consultez [Managing your storage lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) dans le Guide d’utilisation d’Amazon S3.

   1. Sélectionnez **I acknowledge that this app creates custom IAM roles and resource policies** (Je reconnais que cette application crée des politiques de ressources et rôles IAM personnalisés). Pour de plus amples informations, veuillez cliquer sur le lien **Info**.

   1. Choisissez **Déployer**. Lorsque le déploiement est terminé, la fonction Lambda apparaît dans la section **Resources** (Ressources) dans la console Lambda.

      Une fois que vous avez déployé le connecteur de source de données sur votre compte, vous pouvez y connecter Athena.

   1. Revenez à la page **Enter data sources details** (Saisir les détails des sources de données) de la console Athena.

   1. Dans la section **Connection details** (Détails de connexion), choisissez l'icône actualiser à côté de la zone de recherche **Select or enter a Lambda function** (Sélectionner ou saisir une fonction Lambda.

   1. Choisissez le nom de la fonction que vous venez de créer dans la console Lambda. L'ARN de la fonction Lambda s'affiche.

1. (Facultatif) Pour **Tags** (Identifications), ajoutez des paires clé-valeur à associer à cette source de données. Pour en savoir plus sur les identifications, consultez [Balisage des ressources Athena](tags.md).

1. Choisissez **Suivant**.

1. Sur la page **Vérifier et créer**, vérifiez les détails de la source de données. Pour effectuer des changements, sélectionnez **Modifier**. 

1. Lisez les informations contenues dans **Athena créera des ressources dans votre compte**. Si vous êtes d’accord, sélectionnez **Je reconnais qu’Athena créera des ressources en mon nom**.

1. Choisissez **Create data source**. **Athena** créera les ressources suivantes pour vous.
   + Rôle IAM d’exécution Lambda
   + AWS Glue connexion (uniquement si la source de données est compatible avec AWS Glue Connections)
   + Fonction Lambda

La section **Data source details** (Détails de source de données) de la page de votre source de données affiche des informations sur votre nouveau connecteur. Vous pouvez maintenant utiliser le connecteur dans vos requêtes Athena. 

Pour de plus amples informations sur l'utilisation de connecteurs de données dans les requêtes, consultez [Exécution de requêtes fédérées](running-federated-queries.md).

# Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données
<a name="connect-data-source-serverless-app-repo"></a>

Pour déployer un connecteur de source de données, vous pouvez utiliser [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/)au lieu d’utiliser une connexion AWS Glue .

**Note**  
Nous vous recommandons d’utiliser SAR uniquement si vous possédez un connecteur personnalisé ou si vous avez besoin d’utiliser un connecteur plus ancien. Autrement, l’utilisation de la console Athena est recommandée. 

Vous pouvez utiliser le AWS Serverless Application Repository pour trouver le connecteur que vous souhaitez utiliser, fournir les paramètres requis par le connecteur, puis déployer le connecteur sur votre compte. Ensuite, après avoir déployé le connecteur, vous utilisez la console Athena pour rendre la source de données disponible pour Athena.

## Déploiement du connecteur sur votre compte
<a name="connect-data-source-serverless-app-repo-deploying"></a>

**Pour utiliser le connecteur de source de données AWS Serverless Application Repository pour déployer un connecteur de source de données sur votre compte**

1. Connectez-vous au **référentiel d'applications sans serveur AWS Management Console ** et ouvrez-le.

1. Dans le volet de navigation, choisissez **Applications**.

1. Sélectionnez l'option **Show apps that create custom IAM roles or resource policies** (Afficher les applications qui créent des rôles IAM ou des politiques de ressources personnalisés).

1. Dans la zone de recherche, saisissez le nom du connecteur. Pour obtenir la liste des connecteurs de données Athena prédéfinis, voir [Connecteurs de source de données disponibles](connectors-available.md).

1. Choisissez le nom du connecteur. Cliquer sur un connecteur ouvre la page **Application details** (Détails de l'application) de la fonction Lambda dans la console AWS Lambda .

1. Sur le côté droit de la page de détails, pour **Application settings** (Paramètres de l'application), fournissez les informations requises. Les paramètres minimaux requis sont les suivants. Pour plus d'informations sur les options configurables restantes pour les connecteurs de données créés par Athena, consultez la rubrique [Connecteurs disponibles correspondante sur](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors). GitHub
   + **AthenaCatalogName**— Nom de la fonction Lambda en minuscules qui indique la source de données qu'elle cible, par exemple. `cloudwatchlogs`
   + **SpillBucket**— Spécifiez un compartiment Amazon S3 dans votre compte pour recevoir les données de toute charge utile de réponse importante dépassant les limites de taille de réponse de la fonction Lambda.

1. Sélectionnez **I acknowledge that this app creates custom IAM roles and resource policies** (Je reconnais que cette application crée des politiques de ressources et rôles IAM personnalisés). Pour de plus amples informations, veuillez cliquer sur le lien **Info**.

1. En bas à droite de la section **Application settings** (Paramètres de l'application), choisissez **Deploy** (Déployer). Lorsque le déploiement est terminé, la fonction Lambda apparaît dans la section **Resources** (Ressources) dans la console Lambda.

## Mise à disposition du connecteur dans Athena
<a name="connect-data-source-serverless-app-repo-making-the-connector-available-in-athena"></a>

Maintenant vous pouvez utiliser la console Athena pour rendre le connecteur de source de données disponible pour Athena.

**Pour rendre le connecteur de source de données disponible pour Athena**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez **Créer une source de données**.

1. Pour **Choose a data source** (Choisisir une source de données), choisissez la source de données pour laquelle vous avez créé un connecteur dans le AWS Serverless Application Repository. Ce didacticiel utilise **Amazon CloudWatch Logs** comme source de données fédérée.

1. Choisissez **Suivant**.

1. À la page **Enter data source details** (Saisir les détails de la source de données), pour **Data source name** (Nom de la source de données), saisissez le nom que vous souhaitez utiliser dans vos instructions SQL lorsque vous interrogez la source de données à partir d'Athena (par exemple, `CloudWatchLogs`). Le nom peut contenir jusqu'à 127 caractères et doit être unique dans votre compte. Il ne peut pas être modifié après sa création. Les caractères valides sont a-z, A-Z, 0–9, \$1 (trait de soulignement), @ (arobase) et - (trait d'union). Les noms `awsdatacatalog`, `hive`, `jmx` et `system` sont réservés par Athena et ne peuvent pas être utilisés pour les noms de source de données. 

1. Dans la section **Connection details** (Détails de connexion), utilisez la zone **Select or enter a Lambda function** (Sélectionner ou saisir une fonction Lambda) pour choisir le nom de la fonction que vous venez de créer. L'ARN de la fonction Lambda s'affiche.

1. (Facultatif) Pour **Tags** (Identifications), ajoutez des paires clé-valeur à associer à cette source de données. Pour en savoir plus sur les identifications, consultez [Balisage des ressources Athena](tags.md).

1. Choisissez **Suivant**.

1. À la page **Review and create**, vérifiez les détails de la source de données, puis choisissez **Create data source** (Créer une source de données). 

1. La section **Data source details** (Détails de source de données) de la page de votre source de données affiche des informations sur votre nouveau connecteur. Vous pouvez maintenant utiliser le connecteur dans vos requêtes Athena. 

   Pour de plus amples informations sur l'utilisation de connecteurs de données dans les requêtes, consultez [Exécution de requêtes fédérées](running-federated-queries.md).

# Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue
<a name="athena-connectors-vpc-creation"></a>

Certains connecteurs et AWS Glue connexions de source de données Athena nécessitent un VPC et un groupe de sécurité. Cette rubrique explique comment créer un VPC avec un sous-réseau et un groupe de sécurité pour le VPC. Dans le cadre de ce processus, vous récupérez le IDs pour le VPC, le sous-réseau et le groupe de sécurité que vous créez. Ils IDs sont nécessaires lorsque vous configurez votre AWS Glue connexion ou votre connecteur de source de données pour une utilisation avec Athena.

**Pour créer un VPC pour un connecteur de source de données Athena**

1. Connectez-vous à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Sélectionnez **Create VPC** (Créer un VPC).

1. Sur la page **Créer un VPC**, sous **Paramètres de VPC**, dans **Ressources à créer**, sélectionnez **VPC et plus encore**.

1. Sous **Génération automatique d’identifications de noms**, dans **Génération automatique**, saisissez une valeur qui sera utilisée pour générer des identifications de nom pour toutes les ressources de votre VPC.

1. Sélectionnez **Create VPC** (Créer un VPC).

1. Une fois le processus terminé, sélectionnez **Afficher le VPC**.

1. Dans la section **Details** (Détails), pour **VPC ID** (ID du VPC), copiez votre ID VPC pour référence ultérieure.

Vous pouvez maintenant récupérer l'ID de sous-réseau du VPC que vous venez de créer.

**Pour récupérer votre ID de sous-réseau de VPC**

1. Dans le panneau de navigation de la console VPC, choisissez **Subnets** (Sous-réseaux).

1. Sélectionnez le nom d’un sous-réseau dont la colonne **VPC** présente l’ID de VPC que vous avez noté.

1. Dans la section **Details** (Détails), pour **Subnet ID** (ID du sous-réseau), copiez votre ID de sous-réseau pour référence ultérieure.

Ensuite, créez un groupe de sécurité pour votre VPC.

**Pour créer un groupe de sécurité pour votre VPC**

1. Dans le panneau de navigation de la console VPC, choisissez **Security** (Sécurité), **Security Groups** (Groupes de sécurité).

1. Sélectionnez **Create security group** (Créer un groupe de sécurité).

1. Sur la page **Create Security Group** (Créer un groupe de sécurité), saisissez les informations suivantes :
   + Pour **Security group name** (Nom du groupe de sécurité), saisissez un nom pour votre groupe de sécurité.
   + Pour **Description**, saisissez une description du groupe de sécurité. Une description est requise.
   + Dans **VPC**, sélectionnez l’ID du VPC que vous avez créé pour votre connecteur de source de données.
   + Pour **Inbound rules** (Règles entrantes) et **Outbound rules** (Règles sortantes), ajoutez toutes les règles entrantes et sortantes dont vous avez besoin.

1. Sélectionnez **Create security group** (Créer un groupe de sécurité).

1. Sur la page **Details** (Details) du groupe de sécurité, copiez le **Security group ID** (ID du groupe de sécurité) pour référence ultérieure.

## Éléments importants à prendre en compte concernant l’utilisation d’un VPC avec les connecteurs Athena
<a name="vpc-warning-instructions"></a>

Les instructions suivantes s’appliquent à tous les connecteurs Athena, puisque tous les connecteurs peuvent utiliser un VPC.

**Note**  
Lorsque vous utilisez un VPC avec des connexions AWS Glue, vous devez configurer les points de terminaison suivants : PrivateLink   
Amazon S3
AWS Glue
AWS Secrets Manager

Vous pouvez également utiliser l’accès public à Internet, bien que cela ne soit pas recommandé pour des raisons de sécurité.

**Avertissement**  
L’utilisation de l’accès public à Internet peut exposer vos ressources à des risques de sécurité supplémentaires. Il est vivement recommandé d'utiliser des PrivateLink points de terminaison pour renforcer la sécurité de votre configuration VPC.

# Transférez des images ECR vers votre compte AWS
<a name="pull-ecr-customer-account"></a>

Les fonctions Lambda du connecteur de fédération Athena utilisent des images de conteneur stockées dans des référentiels Amazon ECR gérés par Athena. Pour effectuer des analyses de sécurité sur ces images de conteneur, vous devez d’abord les copier dans un référentiel Amazon ECR de votre compte. Cette section fournit des step-by-step instructions sur la façon de copier une image dans votre référentiel et de configurer votre fonction Lambda pour utiliser l'image.

## Conditions préalables
<a name="pull-ecr-customer-account-prereq"></a>
+ Vous devez disposer d’un connecteur de fédération Athena : le connecteur peut être créé via n’importe quelle source, sous réserve qu’elle utilise une image de conteneur.
**Note**  
Pour vérifier le déploiement de l’image, consultez l’onglet Image de votre connecteur de fédération Athena Lambda.
+ Docker doit être installé et en cours d’exécution.
+ AWS CLI installé
+ Vous devez disposer des informations d’identification du compte ainsi que des autorisations d’extraction appropriées.

## Méthode pour transférer une image
<a name="image-transfer-procedure"></a>

1. Localisation de l’URI de l’image depuis votre connecteur de fédération Athena Lambda  
**Example**  

   ```
   account_id_1.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.15.1
   ```

1. Générez un jeton d’authentification Docker pour le compte géré par Athena :

   ```
   aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin athena-managed-registry
   ```

   Où :
   + *regionID*est votre région de déploiement (par exemple, us-east-1)
   + *athena-managed-registry*est la partie registre de l'URI de l'image (par exemple, account\$1id\$11.dkr. ecr.us-east-1.amazonaws.com)

1. Extrayez l’image du compte géré par Athena :

   ```
   docker pull athenaImageURI
   ```

1. Authentifiez Docker auprès de votre registre :

   ```
   aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin customer-registry
   ```

   Où se *customer-registry* trouve votre registre ECR (par exemple, account\$1id\$12.dkr. ecr.us-east-1.amazonaws.com)

1. Balisez l’image extraite pour votre référentiel :

   ```
   docker tag athenaImageURI yourImageURI
   ```

1. Envoyez l’image vers votre référentiel :

   ```
   docker push yourImageURI
   ```

1. Mettez à jour votre connecteur de fédération Athena :

   1. Accédez à votre fonction Lambda.

   1. Sélectionnez **Déployer une nouvelle image**.

   1. Saisissez votre nouvel URI d’image.

   L’image du connecteur fédéré Athena se trouve désormais dans votre compte, ce qui vous permet d’effectuer des analyses CVE sur l’image.

# Enregistrement de votre connexion en tant que Catalogue de données Glue
<a name="register-connection-as-gdc"></a>

Après avoir créé votre source de données, vous pouvez utiliser la console Athena pour enregistrer votre connexion en tant que Catalogue de données Glue. Une fois enregistré, vous pouvez gérer votre catalogue de données fédéré et activer le contrôle d’accès précis à l’aide de Lake Formation. Pour plus d’informations, consultez [Creating a federated catalog](https://docs.aws.amazon.com/lake-formation/latest/dg/create-fed-catalog-data-source.html).

Vous pouvez enregistrer les connecteurs suivants à intégrer AWS Glue pour un contrôle d'accès précis.
+ Redshift
+ BigQuery
+ DynamoDB (version préliminaire)
+ Snowflake (version préliminaire)
+ MySQL
+ PostgreSQL
+ AWS CMDB
+ Timestream
+ Stockage Azure Data Lake
+ Azure Synapse
+ IBM Db2
+ IBM Db2 AS/400 (Db2 iSeries)
+ DocumentDB
+ Google Cloud Storage
+ HBase
+ OpenSearch
+ Oracle
+ SAP HANA
+ SQL Server
+ TPC-DS
+ Cloudera Hive
+ Cloudwatch
+ Cloudwatch Metrics
+ Teradata
+ Vertica

## Conditions préalables
<a name="register-connection-as-gdc-pre"></a>

Avant de commencer, vous devez remplir les conditions préalables suivantes.
+ Assurez-vous de disposer des rôles et autorisations nécessaires pour enregistrer des emplacements. Pour plus d'informations, consultez les [exigences relatives aux rôles](https://docs.aws.amazon.com/lake-formation/latest/dg/registration-role.html) dans le guide du AWS Lake Formation développeur.
+ Assurez-vous de disposer des rôles Lake Formation requis. Pour plus d'informations, consultez la section [Conditions préalables à la connexion du catalogue de données à des sources de données externes](https://docs.aws.amazon.com/lake-formation/latest/dg/federated-catalog-data-connection.html) dans le Guide du AWS Lake Formation développeur.
+ Le rôle que vous enregistrez dans Glue doit disposer des autorisations répertoriées dans l’exemple suivant.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket",
                  "s3:GetObject"
              ],
              "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket/spill-prefix/*",
      "arn:aws:s3:::amzn-s3-demo-bucket/spill-prefix"
              ]
          },
          {
              "Sid": "lambdainvoke",
              "Effect": "Allow",
              "Action": "lambda:InvokeFunction",
              "Resource": "arn:aws:lambda:us-east-1:111122223333:function:lambda_function_name"
          },
          {
              "Sid": "gluepolicy",
              "Effect": "Allow",
              "Action": "glue:*",
              "Resource": [
              "arn:aws:glue:us-east-1:111122223333:connection/<connection_name>",
      "arn:aws:glue:us-east-1:111122223333:catalog"
              ]
          }
      ]
  }
  ```

------
+ Vous êtes responsable de la détermination et de la gestion de l’accès approprié aux données. Dans le cas de contrôles d'accès précis sur les requêtes fédérées, il est recommandé d'utiliser la politique [AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)gérée. Si vous souhaitez utiliser votre propre politique, vous devez vous assurer que les utilisateurs exécutant des requêtes fédérées n’ont pas accès aux ressources suivantes.
  + `lambda:InvokeFunction` sur le connecteur Lambda spécifié dans la connexion Glue
  + Accès à l’emplacement du compartiment de déversement dans IAM
  + Accès à la connexion Glue associée à votre catalogue fédéré
  + Rôle Lake Formation dans IAM

## Enregistrement de votre connexion à l’aide de la console
<a name="register-connection-as-gdc-steps"></a>

**Pour enregistrer votre connexion en tant que Catalogue de données Glue**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Dans la liste **Sources de données**, choisissez la source de données que vous avez créée pour ouvrir la page **Détails de la source de données**. 

1. Choisissez **Commencer avec AWS Lake Formation**.
**Note**  
Après avoir choisi cette option, vous devrez gérer vous-même votre fonction Lambda. Athena ne supprimera pas votre fonction Lambda.

1. Dans **Nom du catalogue de données**, indiquez un nom unique pour votre catalogue.

1. Choisissez le **Rôle IAM de Lake Formation** qui accorde à Lake Formation l’autorisation d’invoquer la fonction Lambda. Assurez-vous que le rôle dispose des autorisations illustrées dans [l’exemple](#register-connection-as-gdc-pre).

1. Dans la zone de texte, tapez **confirm** pour supprimer la source de données Athena et remplacez-la par un enregistrement du Catalogue de données Glue.
**Note**  
Cette action supprimera votre source de données Athena et créera un nouveau Catalogue de données Glue à la place. Une fois ce processus terminé, vous devrez peut-être mettre à jour les requêtes qui accèdent à la source de données afin qu’elles se réfèrent plutôt au Catalogue de données Glue que vous venez de créer.

1. Sélectionnez **Créer un catalogue et accéder à Lake Formation**. Cette action ouvre la console Lake Formation, dans laquelle vous pouvez gérer le catalogue et accorder des autorisations aux utilisateurs sur les catalogues, les bases de données et les tables.

# Activation des requêtes fédérées entre comptes
<a name="xacct-fed-query-enable"></a>

La requête fédérée vous permet d'interroger des sources de données autres qu'Amazon S3 à l'aide de connecteurs de source de données déployés sur AWS Lambda. La fonction de requête fédérée entre comptes permet à la fonction Lambda et aux sources de données à interroger d'être localisées dans différents comptes.

**Note**  
Utilisez cette méthode uniquement si vous n’avez pas enregistré votre source de données fédérée auprès du AWS Glue Data Catalog. Si vous avez enregistré votre source de données auprès du AWS Glue Data Catalog, utilisez les fonctionnalités AWS Glue Data Catalog multi-comptes et le modèle d'autorisations. Pour plus d’informations, consultez [Granting cross-account access](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html) dans le *Guide d’utilisation d’AWS Glue *.

En tant qu'administrateur de données, vous pouvez activer les requêtes fédérées entre comptes en partageant votre connecteur de données avec le compte d'un analyste de données ou, en tant qu'analyste de données, en utilisant un ARN Lambda partagé d'un administrateur de données pour l'ajouter à votre compte. Lorsque des modifications de configuration sont apportées à un connecteur du compte d'origine, la configuration mise à jour est automatiquement appliquée aux instances partagées du connecteur dans les comptes d'autres utilisateurs.

## Considérations et restrictions
<a name="xacct-fed-query-enable-considerations-and-limitations"></a>
+ La fonction de requête fédérée entre comptes est disponible pour les connecteurs de données de métastores non Hive qui utilisent une source de données Lambda.
+ La fonctionnalité n'est pas disponible pour le type de source de AWS Glue Data Catalog données. Pour plus d'informations sur l'accès entre comptes à AWS Glue Data Catalog s, consultez[Configuration de l'accès entre comptes aux catalogues de AWS Glue données](security-iam-cross-account-glue-catalog-access.md).
+ Si la réponse de la fonction Lambda de votre connecteur dépasse la limite de taille de réponse Lambda de 6 Mo, Athena chiffre, regroupe et déverse automatiquement la réponse dans un compartiment Amazon S3 que vous configurez. L'entité qui exécute la requête Athena doit avoir accès à l'emplacement du déversement pour qu'Athéna puisse lire les données déversées. Nous vous recommandons de définir une politique de cycle de vie Amazon S3 afin de supprimer les objets présents sur le lieu du déversement, car les données ne sont plus nécessaires une fois la requête terminée. 
+ L'utilisation de requêtes fédérées n' Régions AWS est pas prise en charge. 

## Autorisations requises
<a name="xacct-fed-query-enable-required-permissions"></a>

Pour configurer les autorisations requises, des actions doivent être effectuées à la fois dans le compte A (*444455556666*) et dans le compte B (*111122223333*).

### Actions relatives au compte A
<a name="xacct-fed-query-enable-required-permissions-account-a"></a>

Pour que le compte administrateur de données A partage une fonction Lambda avec le compte d'analyste de données B, le compte B nécessite la fonction d'invocation Lambda et l'accès au compartiment de déversement. Par conséquent, le compte A devrait ajouter une [politique basée sur les ressources](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) à la fonction Lambda et l'accès [principal](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html) à son compartiment de déversement dans Amazon S3.

1. La politique suivante accorde des autorisations de fonction d'invocation Lambda au compte B sur une fonction Lambda dans le compte A.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CrossAccountInvocationStatement",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:user/username"
                   ]
               },
               "Action": "lambda:InvokeFunction",
               "Resource": "arn:aws:lambda:us-east-1:444455556666:function:lambda-function-name"
           }
       ]
   }
   ```

------

1. La politique suivante permet d'accéder au compartiment de déversement au principal dans le compte B.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
               "AWS": ["arn:aws:iam::111122223333:user/username"]
               },
               "Action": [
                   "s3:GetObject",
                   "s3:ListBucket"
                ],
               "Resource": [
                   "arn:aws:s3:::spill-bucket",
                   "arn:aws:s3:::spill-bucket/*"
               ]
           }
        ]
    }
   ```

------

1. Si la fonction Lambda chiffre le bucket de spill avec une AWS KMS clé au lieu du chiffrement par défaut proposé par le SDK de fédération, la politique de AWS KMS clés du compte A doit accorder l'accès à l'utilisateur du compte B, comme dans l'exemple suivant.

   ```
   { 
       "Sid": "Allow use of the key", 
       "Effect": "Allow", 
       "Principal": 
       { 
          "AWS": ["arn:aws:iam::account-B-id:user/username"] 
       }, 
       "Action": [ "kms:Decrypt" ], 
       "Resource": "*" // Resource policy that gets placed on the KMS key. 
    }
   ```

### Actions relatives au compte B
<a name="xacct-fed-query-enable-required-permissions-account-b"></a>

Pour que le compte A partage son connecteur avec le compte B, le compte B doit créer un rôle appelé `AthenaCrossAccountCreate-account-A-id` que le compte A assume en appelant l'action [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API AWS Security Token Service.

1. Utilisez la console IAM ou le AWS CLI pour créer le `AthenaCrossAccountCreate-account-A-id` rôle en tant que rôle de politique de confiance personnalisé. Une politique de confiance personnalisée délègue l'accès et permet à d'autres personnes d'effectuer des actions sur votre AWS compte. Pour connaître les étapes à suivre, consultez [Create a role using custom trust policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) dans le *Guide d’utilisation d’IAM*.

   La relation de confiance doit comporter un objet principal, dans lequel la clé est `AWS` et la valeur est l’ARN du compte A, comme illustré dans l’exemple suivant.

   ```
   ...
   "Principal": 
   { 
      "AWS": ["arn:aws:iam::account-A-id:user/username"]
   }, 
   ...
   ```

1. Créez également dans le compte B une politique semblable à la suivante qui autorise l’action `CreateDataCatalog`. 

   ```
   {
    "Effect": "Allow",
    "Action": "athena:CreateDataCatalog",
    "Resource": "arn:aws:athena:*:account-B-id:datacatalog/*"
   }
   ```

1. Ajoutez la politique qui autorise l’action `CreateDataCatalog` au rôle `AthenaCrossAccountCreate-account-A-id` que vous avez créé à l’aide du compte B. 

## Partage d'une source de données dans le compte A avec le compte B
<a name="xacct-fed-query-enable-sharing-a-lambda-data-source-in-account-a-with-account-b"></a>

Une fois les autorisations en place, vous pouvez utiliser la page **Sources de données et catalogues** dans la console Athena pour partager un connecteur de données de votre compte (compte A) avec un autre compte (compte B). Le compte A conserve le contrôle total et la propriété du connecteur. Lorsque le compte A modifie la configuration du connecteur, la configuration mise à jour s'applique au connecteur partagé dans le compte B.

**Note**  
Vous pouvez uniquement partager une source de données de type Lambda et ne pouvez pas partager des sources de données utilisant des connexions AWS Glue . Pour de plus amples informations, veuillez consulter [Connecteurs de source de données disponibles](connectors-available.md).

**Pour partager une source de données Lambda du compte A avec le compte B**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez le lien du connecteur que vous souhaitez partager.

1. Sur la page des détails d’une source de données Lambda, sélectionnez **Partager** dans le menu **Actions** situé dans le coin supérieur droit.

1. Dans le cadre du **partage *Lambda-name* avec un autre compte ?** dans une boîte de dialogue, entrez les informations requises.
   + Pour **Data source name (Nom de la source de données)**, saisissez le nom de la source de données copiée telle que vous souhaitez qu'elle apparaisse dans l'autre compte.
   + Pour **Account ID (ID de compte)**, saisissez l'ID du compte avec lequel vous souhaitez partager votre source de données (dans ce cas, compte B).

1. Choisissez **Partager**. Le connecteur de données partagées que vous avez spécifié est créé dans le compte B. Les modifications de configuration apportées au connecteur dans le compte A s'appliquent au connecteur du compte B.

## Ajout d'une source de données partagée du compte A au compte B
<a name="xacct-fed-query-enable-add-a-shared-lambda-function-arn-to-your-account"></a>

En tant qu'analyste de données, un administrateur de données peut vous attribuer l'ARN d'un connecteur à ajouter à votre compte. Vous pouvez utiliser la page **Sources de données et catalogues** de la console Athena pour ajouter l’ARN Lambda fourni par votre administrateur à votre compte.

**Pour ajouter l'ARN Lambda d'un connecteur de données partagées à votre compte**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation n’est pas visible, choisissez le menu d’extension sur la gauche.

1. Sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez **Créer une source de données**.

1. Sur la page **Choisir une source de données**, sélectionnez **Connecteur personnalisé ou partagé**.

1. Choisissez **Suivant**.

1. Sur la page **Saisir les détails de la source de données**, dans la section **Détails de la connexion**, dans **Sélectionnez ou saisissez une fonction Lambda**, saisissez l’ARN Lambda du compte A.

1. Choisissez **Suivant**.

1. Sur la page **Vérifier et créer**, sélectionnez **Créer une source de données**.

## Résolution des problèmes
<a name="xacct-fed-query-enable-troubleshooting"></a>

Si vous recevez un message d'erreur indiquant que le compte A ne dispose pas des autorisations nécessaires pour assumer un rôle dans le compte B, assurez-vous que le nom du rôle créé dans le compte B est correctement orthographié et que la politique appropriée est attachée.

# Mise à jour d’un connecteur de source de données
<a name="connectors-updating"></a>

Athena vous recommande de mettre régulièrement à jour les connecteurs de source de données que vous utilisez vers la dernière version afin de tirer parti des nouvelles fonctionnalités et améliorations. La mise à jour d’un connecteur de source de données comprend les étapes suivantes :

# Connexions Glue (recommandé)
<a name="connectors-updating-gc"></a>

## Recherche de la version la plus récente d’Athena Query Federation
<a name="connectors-updating-finding-the-latest-version"></a>

Le dernier numéro de version des connecteurs de source de données Athena correspond à la dernière version d'Athena Query Federation. Dans certains cas, les GitHub versions peuvent être légèrement plus récentes que celles disponibles sur le AWS Serverless Application Repository (SAR).

**Trouver le dernier numéro de version d'Athena Query Federation**

1. Accédez à l' GitHub URL [https://github.com/awslabs/aws-athena-query-federation/releases/latest](https://github.com/awslabs/aws-athena-query-federation/releases/latest).

1. Notez le numéro de version dans l'en-tête de la page principale au format suivant :

   **Version** *year* v. *week\$1of\$1year*. *iteration\$1of\$1week***de la Fédération Athena Query**

   Par exemple, le numéro de version de la **Version v2023.8.3 d'Athena Query Federation** est 2023.8.3.

## Recherche de la version du connecteur
<a name="connectors-find-version"></a>

Suivez ces étapes pour déterminer la version du connecteur que vous utilisez actuellement.

**Pour rechercher la version du connecteur**

1. Sur la page de la console Lambda pour votre application Lambda, sélectionnez l’onglet **Image**.

1. Sous l’onglet Image, localisez l’URI de l’image. L’URI suit le format ci-dessous :

   ```
   Image_location_account.dkr.ecr.us-west-2.amazonaws.com/athena-federation-repository:Version
   ```

1. Le numéro de version présent dans l’URI de l’image suit le format `year.week_of_year.iteration_of_week` (par exemple, `2021.42.1`). Ce numéro représente la version de votre connecteur.

## Déploiement d’une nouvelle version de connecteur
<a name="connectors-deploy-new-version"></a>

Pour déployer une nouvelle version de votre connecteur, procédez comme suit.

**Pour déployer une nouvelle version de connecteur**

1. Recherchez la version souhaitée en suivant la procédure afin d’identifier la version la plus récente d’Athena Query Federation.

1. Dans la fonction Lambda du connecteur fédéré, localisez l’URI de l’image et mettez à jour la balise vers la version souhaitée. Par exemple :

   De:

   ```
   509399631660.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.15.1
   ```

   Pour :

   ```
   509399631660.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.26.1
   ```

**Note**  
Si votre version actuelle est antérieure à 2025.15.1, prenez note de ces modifications importantes :  
Le nom du référentiel a été mis à jour et modifié en `athena-federation-repository`
Dans les versions antérieures à cette mise à jour, il se peut que le remplacement de commande ne soit pas défini. Vous devez le définir sur le gestionnaire composite.

# Connexions héritées
<a name="connectors-updating-legacy"></a>

## Recherche de la version la plus récente d’Athena Query Federation
<a name="connectors-updating-finding-the-latest-version"></a>

Le dernier numéro de version des connecteurs de source de données Athena correspond à la dernière version d'Athena Query Federation. Dans certains cas, les GitHub versions peuvent être légèrement plus récentes que celles disponibles sur le AWS Serverless Application Repository (SAR).

**Trouver le dernier numéro de version d'Athena Query Federation**

1. Accédez à l' GitHub URL [https://github.com/awslabs/aws-athena-query-federation/releases/latest](https://github.com/awslabs/aws-athena-query-federation/releases/latest).

1. Notez le numéro de version dans l'en-tête de la page principale au format suivant :

   **Version** *year* v. *week\$1of\$1year*. *iteration\$1of\$1week***de la Fédération Athena Query**

   Par exemple, le numéro de version de la **Version v2023.8.3 d'Athena Query Federation** est 2023.8.3.

## Recherche et consignation des noms des ressources
<a name="connectors-updating-finding-and-noting-resource-names"></a>

Pour préparer la mise à niveau, vous devez trouver et noter les informations suivantes :

1. Le nom de la fonction Lambda pour le connecteur.

1. Les variables d'environnement de la fonction Lambda.

1. Le nom de l'application Lambda, qui gère la fonction Lambda pour le connecteur.

**Pour trouver les noms des ressources dans la console Athena**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Dans la colonne **Nom de la source de données**, choisissez le lien vers la source de données de votre connecteur.

1. Dans la section **Détails de la source de données**, sous **Fonction Lambda**, choisissez le lien vers votre fonction Lambda.  
![\[Choisissez le lien vers votre fonction Lambda.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-updating-1.png)

1. Sur la page **Fonctions**, dans la colonne **Nom de la fonction**, notez le nom de la fonction de votre connecteur.  
![\[Notez le nom de la fonction.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-updating-2.png)

1. Choisissez le lien du nom de la fonction.

1. Dans la section **Présentation de la fonction**, choisissez l'onglet **Configuration**.

1. Dans le panneau de gauche, choisissez **Variables d'environnement**.

1. Dans la section **Variables d'environnement**, notez les clés et leurs valeurs correspondantes.

1. Faites défiler jusqu'en haut de la page.

1. Dans le message **Cette fonction appartient à une application. Cliquez ici pour la gérer**, sélectionnez le lien **Cliquez ici**.

1. **Sur la *your\$1application\$1name* page **serverlessrepo-**, notez le nom de votre application sans serverlessrepo.** Par exemple, si le nom de l'application est **serverlessrepo- DynamoDbTestApp**, le nom de votre application est. **DynamoDbTestApp**

1. Restez sur la page de console Lambda pour votre application, puis suivez les étapes décrites dans la section **Recherche de la version du connecteur que vous utilisez**.

## Recherche de la version du connecteur que vous utilisez
<a name="connectors-updating-finding-the-version-that-you-are-using"></a>

Pour trouver la version du connecteur que vous utilisez, procédez comme suit.

**Pour trouver la version du connecteur que vous utilisez**

1. Sur la page de console Lambda pour votre application Lambda, choisissez l'onglet **Déploiements**.

1. Dans l'onglet **Déploiements**, développez la section **Modèle SAM**.

1. Recherchez **CodeUri**.

1. Dans le champ **Clé** ci-dessous **CodeUri**, recherchez la chaîne suivante :

   ```
   applications-connector_name-versions-year.week_of_year.iteration_of_week/hash_number
   ```

   L'exemple suivant montre une chaîne pour le CloudWatch connecteur :

   ```
   applications-AthenaCloudwatchConnector-versions-2021.42.1/15151159...
   ```

1. Enregistrez la valeur pour*year*. *week\$1of\$1year*. *iteration\$1of\$1week*(par exemple, **2021.42.1**). Il s'agit de la version correspondant à votre connecteur.

## Déploiement de la nouvelle version de votre connecteur
<a name="connectors-updating-deploying-the-new-version"></a>

Pour déployer une nouvelle version de votre connecteur, procédez comme suit.

**Pour déployer une nouvelle version de votre connecteur**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez **Créer une source de données**.

1. Choisissez la source de données que vous souhaitez mettre à niveau, puis sélectionnez **Suivant**.

1. Dans la section **Détails de la connexion**, choisissez **Créer une fonction Lambda**. Cela ouvre la console Lambda dans laquelle vous pourrez déployer votre application mise à jour.  
![\[Page du connecteur dans la AWS Lambda console.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-updating-3.png)

1. Comme vous ne créez pas réellement une nouvelle source de données, vous pouvez fermer l'onglet de la console Athena.

1. Sur la page de console Lambda pour le connecteur, effectuez les étapes suivantes :

   1. Assurez-vous d'avoir supprimé le préfixe **serverlessrepo-** du nom de votre application, puis copiez le nom de l'application dans le champ **Nom de l'application.**

   1. Copiez le nom de votre fonction Lambda dans le **AthenaCatalogName**champ. Certains connecteurs appellent ce champ **LambdaFunctionName**.

   1. Copiez les variables d'environnement que vous avez enregistrées dans les champs correspondants.

1. Sélectionnez l'option **Je comprends que cette application crée des rôles IAM personnalisés**, puis choisissez **Déployer**.

1. Pour vérifier que votre application a été mise à jour, sélectionnez l'onglet **Déploiements**.

   La section **Historique de déploiement** indique que votre mise à jour est terminée.  
![\[La mise à jour du connecteur est terminée.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connectors-updating-4.png)

1. Pour confirmer le nouveau numéro de version, vous pouvez développer le **modèle SAM** comme auparavant **CodeUri**, rechercher et vérifier le numéro de version du connecteur dans le champ **Clé**.

Vous pouvez désormais utiliser votre connecteur mis à jour pour créer des requêtes fédérées Athena.

# Modification ou suppression d’une connexion à une source de données
<a name="connectors-edit-data-source"></a>

Vous pouvez utiliser la console Athena pour mettre à jour la description, l’hôte, le port, la base de données et les autres propriétés d’une connexion existante. Vous pouvez également supprimer les sources de données de la console Athena.

## Modification d’une connexion à une source de données
<a name="connectors-edit-data-source-editsteps"></a>

**Pour modifier une connexion à une source de données**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, choisissez la connexion à une source de données que vous souhaitez modifier.

1. Dans **Informations de connexion àAWS Glue **, sélectionnez **Modifier**.

1. Choisissez **Suivant**.

1. Sur la page **Modifier <connection-name>**, mettez à jour les informations selon les besoins. Les propriétés disponibles dépendent du type de connexion.
**Note**  
Lorsque vous mettez à jour les propriétés de connexion concernant les secrets, l’emplacement de déversement ou l’ID de clé AWS KMS , assurez-vous que le rôle d’exécution Lambda a toujours accès aux ressources mises à jour. Pour plus d’informations, consultez [Viewing and updating permissions in the execution role](https://docs.aws.amazon.com/lambda/latest/dg/permissions-executionrole-update.html) dans le Guide de développement d’ AWS Lambda .
   + **Description** : modifiez la description de votre connexion.
   + **Hôte** : modifiez le nom d’hôte de votre base de données.
   + **Port** : modifiez le numéro de port de votre base de données.
   + **Base de données** : modifiez le nom de votre base de données.
   + **Paramètres JDBC** : modifiez les éventuels paramètres JDBC supplémentaires requis pour votre connexion. 
   + **Secret** : choisissez ou créez un secret à partir d’ AWS Secrets Manager. Utilisez des AWS secrets pour éviter de coder en dur des informations sensibles dans votre chaîne de connexion JDBC. Pour plus d'informations, voir [Qu'est-ce que c'est AWS Secrets Manager ?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) Pour plus d’informations sur la création d’un secret dans Secrets Manager, consultez [Create an AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) dans le *Guide d’utilisation d’AWS Secrets Manager *.

     Pour les utiliser AWS Secrets Manager avec les requêtes fédérées Athena, vous devez configurer un point de terminaison privé Amazon VPC pour Secrets Manager. Pour plus d'informations, consultez la rubrique [Création d'un point de terminaison privé VPC Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint-create) du *Guide de l'utilisateur AWS Secrets Manager *.
   + **Emplacement de déversement dans Amazon S3** : choisissez ou créez un emplacement de compartiment Amazon S3 dans votre compte pour stocker les données qui dépassent les limites de taille de réponse de la fonction Lambda.
**Note**  
Les données déversées ne sont pas réutilisées lors d'exécutions ultérieures et peuvent être supprimées en toute sécurité après 12 heures. Athena ne supprime pas ces données pour vous. Pour gérer ces objets, envisagez d'ajouter une politique de cycle de vie des objets qui supprime les anciennes données de votre compartiment de déversement Simple Storage Service (Amazon S3). Pour plus d'informations, veuillez consulter [Gestion du cycle de vie des objets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) dans le *Guide de l'utilisateur Amazon S3*.
   + **Chiffrement des résultats des requêtes dans S3** : sélectionnez l’une des options suivantes :
     + (Valeur par défaut) **Utiliser une clé générée aléatoirement** : les données déversées vers Amazon S3 sont chiffrées à l’aide du mode de chiffrement authentifié AES-GCM et d’une clé générée de manière aléatoire.
     + **Utiliser une AWS KMS clé** : choisissez ou créez une clé de chiffrement AWS KMS générée plus puissante. Pour plus d'informations, consultez [Création des clés](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) dans le *Guide du développeur AWS Key Management Service *.
     + **Désactiver** : les données de déversement ne sont pas chiffrées.
   + **Paramètres réseaux** : certaines connexions requièrent un cloud privé virtuel (VPC). Choisissez ou créez un VPC doté du magasin de données auquel vous souhaitez accéder, d’un sous-réseau et d’un ou de plusieurs groupes de sécurité. Pour de plus amples informations, veuillez consulter [Création d'un VPC pour un connecteur ou une connexion à une source de données AWS Glue](athena-connectors-vpc-creation.md).
**Note**  
Après avoir mis à jour les propriétés de connexion pour des ressources telles que les secrets, l'emplacement du déversement ou l'ID de AWS KMS clé, assurez-vous que le rôle d'exécution Lambda continue d'avoir accès aux ressources mises à jour.
Après avoir mis à jour les paramètres réseaux de votre connexion, assurez-vous de mettre à jour la fonction Lambda avec les mêmes paramètres afin de rendre votre connexion compatible avec la source de données.

   Pour plus d’informations sur les propriétés de connexion supplémentaires, consultez [AWS Glue connection properties](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) dans le *Guide d’utilisation d’AWS Glue * ou [Connecteurs de source de données disponibles](connectors-available.md) dans le *Guide d’utilisation d’Amazon Athena*.

1. Choisissez **Enregistrer**.

La section **Informations de connexion àAWS Glue ** figurant sur la page relative à votre source de données affiche les informations mises à jour de votre connecteur.

## Supprimer une source de données
<a name="connectors-edit-data-source-delete"></a>

Lorsque vous supprimez une source de données, cette action supprime uniquement la source de données Athena et ne supprime pas des ressources telles que les connexions Glue, le rôle d’exécution IAM et la fonction Lambda.

**Pour supprimer une source de données**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, choisissez la source de données que vous souhaitez modifier.

1. Sélectionnez **Delete (Supprimer)**.

1. Sur la page **Supprimer la source de données**, tapez *confirm* pour confirmer la suppression, puis sélectionnez **Supprimer**. La suppression de la source de données peut prendre un certain temps. Vous recevrez une alerte de réussite une fois la source de données supprimée.

# Exécution de requêtes fédérées
<a name="running-federated-queries"></a>

Après avoir configuré un ou plusieurs connecteurs de données et les avoir déployés sur votre compte, vous pouvez les utiliser dans vos requêtes Athena. 

## Interrogation d’une source de données unique
<a name="running-federated-queries-single-data-source"></a>

Les exemples de cette section supposent que vous avez configuré et déployé le [Connecteur Amazon Athena CloudWatch](connectors-cloudwatch.md) sur votre compte. Utilisez la même approche pour effectuer des requêtes lorsque vous utilisez d'autres connecteurs.

**Pour créer une requête Athena utilisant le connecteur CloudWatch**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans l'éditeur de requête Athena, créez une requête SQL utilisant la syntaxe suivante dans la clause `FROM`.

   ```
   MyCloudwatchCatalog.database_name.table_name       
   ```

### Exemples
<a name="running-federated-queries-single-data-source-examples"></a>

L'exemple suivant utilise le CloudWatch connecteur Athena pour se connecter à la `all_log_streams` vue du groupe `/var/ecommerce-engine/order-processor` CloudWatch Logs [Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html). La vue `all_log_streams` est une vue de tous les flux de journaux du groupe de journaux. L'exemple de requête limite le nombre de lignes renvoyées à 100.

```
SELECT * 
FROM "MyCloudwatchCatalog"."/var/ecommerce-engine/order-processor".all_log_streams 
LIMIT 100;
```

L'exemple suivant analyse les informations de la même vue que l'exemple précédent. L'exemple extrait l'ID de commande et le niveau du journal, puis filtre tout message ayant le niveau `INFO`.

```
SELECT 
    log_stream as ec2_instance, 
    Regexp_extract(message '.*orderId=(\d+) .*', 1) AS orderId, 
    message AS order_processor_log, 
    Regexp_extract(message, '(.*):.*', 1) AS log_level 
FROM MyCloudwatchCatalog."/var/ecommerce-engine/order-processor".all_log_streams 
WHERE Regexp_extract(message, '(.*):.*', 1) != 'INFO'
```

## Interrogation de plusieurs sources de données
<a name="running-federated-queries-multiple-sources"></a>

À titre d'exemple plus complexe, imaginez une entreprise de commerce électronique qui utilise les sources de données suivantes pour stocker les données relatives aux achats des clients :
+ [Amazon RDS for MySQL](https://aws.amazon.com/rds/mysql/) pour stocker les données du catalogue de produits
+ [Amazon DocumentDB](https://aws.amazon.com/documentdb/) pour stocker les données de compte client telles que les adresses e-mail et les adresses d'expédition
+ [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) pour stocker les données d'expédition et de suivi des commandes

Imaginez qu'un analyste de données pour cette application de commerce électronique apprenne que les délais de livraison dans certaines régions ont été affectés par les conditions météorologiques locales. L'analyste souhaite savoir combien de commandes sont retardées, où se trouvent les clients concernés et quels sont les produits les plus concernés. Au lieu d'étudier les sources d'informations séparément, l'analyste utilise Athena pour regrouper les données en une seule requête fédérée.

**Example**  

```
SELECT 
     t2.product_name AS product, 
     t2.product_category AS category, 
     t3.customer_region AS region, 
     count(t1.order_id) AS impacted_orders 
FROM my_dynamodb.default.orders t1 
JOIN my_mysql.products.catalog t2 ON t1.product_id = t2.product_id 
JOIN my_documentdb.default.customers t3 ON t1.customer_id = t3.customer_id 
WHERE 
     t1.order_status = 'PENDING'
     AND t1.order_date between '2022-01-01' AND '2022-01-05' 
GROUP BY 1, 2, 3 
ORDER BY 4 DESC
```

## Interrogation de vues fédérées
<a name="running-federated-queries-federated-views"></a>

Lorsque vous interrogez des sources fédérées, vous pouvez utiliser des vues afin d'obscurcir les sources de données sous-jacentes ou de masquer les jointures complexes pour les autres analystes qui interrogent les données.

### Considérations et restrictions
<a name="running-federated-queries-federated-views-considerations"></a>
+ Les vues fédérées nécessitent la version 3 du moteur Athena. 
+ Les vues fédérées sont stockées dans la source de données sous-jacente AWS Glue, et non dans celle-ci.
+ Les vues fédérées ne sont pas prises en charge sur les sources de données [enregistrées en tant que Catalogue de données Glue](register-connection-as-gdc.md).
+ Les vues créées avec des catalogues fédérés doivent utiliser une syntaxe de nom complète, comme dans l'exemple suivant :

  ```
  "ddbcatalog"."default"."customers"
  ```
+ Les utilisateurs qui exécutent des requêtes sur des sources fédérées doivent être autorisés à interroger les sources fédérées.
+ L'autorisation `athena:GetDataCatalog` est requise pour les vues fédérées. Pour de plus amples informations, veuillez consulter [Autorisation d’accès aux requêtes fédérées Athena : exemples de politiques](federated-query-iam-access.md).

### Exemples
<a name="running-federated-queries-federated-views-examples"></a>

L'exemple suivant crée une vue appelée `customers` sur les données stockées dans une source de données fédérée.

**Example**  

```
CREATE VIEW customers AS
SELECT *
FROM my_federated_source.default.table
```

L'exemple de requête suivant montre une requête qui fait référence à la vue `customers` plutôt qu'à la source de données fédérée sous-jacente.

**Example**  

```
SELECT id, SUM(order_amount)
FROM customers
GROUP by 1
ORDER by 2 DESC
LIMIT 50
```

L'exemple suivant crée une vue appelée `order_summary` qui combine les données d'une source de données fédérée et celles d'une source de données Amazon S3. À partir de la source fédérée, qui a déjà été créée dans Athena, la vue utilise les tables `person` et `profile`. Dans Amazon S3, la vue utilise les tables `purchase` et `payment`. Pour faire référence à Amazon S3, l'instruction utilise le mot-clé `awsdatacatalog`. Notez que la source de données fédérée utilise la syntaxe *federated\$1source\$1name* des noms complets. *federated\$1source\$1database*. *federated\$1source\$1table*.

**Example**  

```
CREATE VIEW default.order_summary AS
SELECT *
FROM federated_source_name.federated_source_database."person" p
    JOIN federated_source_name.federated_source_database."profile" pr ON pr.id = p.id
    JOIN awsdatacatalog.default.purchase i ON p.id = i.id
    JOIN awsdatacatalog.default.payment pay ON pay.id = p.id
```

### Ressources supplémentaires
<a name="running-federated-queries-federated-views-additional-resources"></a>
+ Pour un exemple de vue fédérée découplée de sa source d'origine et disponible pour une analyse à la demande dans un modèle d'utilisateurs multiples, consultez la section [Étendre votre maillage de données avec Amazon Athena et les vues fédérées](https://aws.amazon.com/blogs/big-data/extend-your-data-mesh-with-amazon-athena-and-federated-views/) sur le *blog AWS Big Data*. 
+ Pour de plus amples informations sur le fonctionnement des vues dans Athena, consultez [Utilisation de vues](views.md).

# Utilisation des requêtes de transmission fédérées
<a name="federated-query-passthrough"></a>

Dans Athena, vous pouvez exécuter des requêtes sur des sources de données fédérées en utilisant le langage de requête de la source de données elle-même et transmettre la requête complète vers la source de données pour exécution. Ces requêtes sont appelées requêtes de transmission. Pour exécuter des requêtes de transmission, vous devez utiliser une fonction de table dans votre requête Athena. Vous devez inclure la requête de transmission à exécuter sur la source de données dans l’un des arguments de la fonction de table. Les requêtes de transmission renvoient une table que vous pouvez analyser à l’aide d’Athena SQL.

## Connecteurs pris en charge
<a name="federated-query-passthrough-supported-connectors"></a>

Les connecteurs de source de données Athena suivants prennent en charge les requêtes de transmission.
+ [Stockage Azure Data Lake](connectors-adls-gen2.md)
+ [Azure Synapse](connectors-azure-synapse.md)
+ [Cloudera Hive](connectors-cloudera-hive.md)
+ [Cloudera Impala](connectors-cloudera-impala.md)
+ [CloudWatch](connectors-cloudwatch.md)
+ [Db2](connectors-ibm-db2.md)
+ [Db2 iSeries](connectors-ibm-db2-as400.md)
+ [DocumentDB](connectors-docdb.md) 
+ [DynamoDB](connectors-dynamodb.md) 
+ [HBase](connectors-hbase.md)
+ [Google BigQuery](connectors-bigquery.md)
+ [Hortonworks](connectors-hortonworks.md)
+ [MySQL](connectors-mysql.md)
+ [Neptune](connectors-neptune.md)
+ [OpenSearch](connectors-opensearch.md) 
+ [Oracle](connectors-oracle.md)
+ [PostgreSQL](connectors-postgresql.md)
+ [Redshift](connectors-redshift.md)
+ [SAP HANA](connectors-sap-hana.md)
+ [Snowflake](connectors-snowflake.md)
+ [SQL Server](connectors-microsoft-sql-server.md)
+ [Teradata](connectors-teradata.md)
+ [Timestream](connectors-timestream.md)
+ [Vertica](connectors-vertica.md)

## Considérations et restrictions
<a name="federated-query-passthrough-considerations-and-limitations"></a>

Lorsque vous utilisez des requêtes de transmission dans Athena, vous devez tenir compte des points suivants :
+ La fonctionnalité de transmission des requêtes est uniquement prise en charge dans le cadre d’instructions `SELECT` Athena ou d’opérations de lecture.
+ Les performances des requêtes peuvent varier en fonction de la configuration de la source de données.
+ La fonctionnalité de transmission des requêtes ne prend pas en charge le contrôle d’accès précis de Lake Formation.
+ Les requêtes de transmission ne sont pas prises en charge sur les sources de données [enregistrées en tant que Catalogue de données Glue](register-connection-as-gdc.md).

## Syntaxe
<a name="federated-query-passthrough-syntax"></a>

La syntaxe générale de transmission des requêtes Athena est la suivante.

```
SELECT * FROM TABLE(catalog.system.function_name(arg1 => 'arg1Value'[, arg2 => 'arg2Value', ...]))
```

Notez ce qui suit :
+ **catalog** : nom du connecteur fédéré Athena cible ou nom du catalogue de données.
+ **system** : espace de noms qui contient la fonction. Toutes les implémentations de connecteur Athena utilisent cet espace de noms.
+ **function\$1name** : nom de la fonction qui transmet la requête de transmission à la source de données. Cet élément est souvent appelé `query`. La combinaison `catalog.system.function_name` correspond au chemin de résolution complet de la fonction.
+ **arg1, arg2, etc.** : arguments de la fonction. L’utilisateur doit les transmettre à la fonction. Dans la plupart des cas, il s’agit de la chaîne de requête transmise à la source de données.

Dans la plupart des sources de données, le premier et unique argument est `query` suivi de l’opérateur flèche `=>` et de la chaîne de requête.

```
SELECT * FROM TABLE(catalog.system.query(query => 'query string'))
```

Pour plus de simplicité, vous pouvez omettre l’argument nommé facultatif `query` et l’opérateur flèche `=>`.

```
SELECT * FROM TABLE(catalog.system.query('query string'))
```

Vous pouvez encore simplifier la requête en supprimant le nom `catalog` si la requête est exécutée dans le contexte du catalogue cible.

```
SELECT * FROM TABLE(system.query('query string'))
```

Si la source de données nécessite davantage que la chaîne de requête, utilisez des arguments nommés dans l’ordre attendu par la source de données. Par exemple, l’expression `arg1 => 'arg1Value'` contient le premier argument et sa valeur. Le nom *arg1* est spécifique à la source de données et peut varier d'un connecteur à l'autre.

```
SELECT * FROM TABLE(
        system.query(
            arg1 => 'arg1Value',
            arg2 => 'arg2Value',
            arg3 => 'arg3Value'
        ));
```

La requête ci-dessus peut également être simplifiée en omettant les noms des arguments. Vous devez cependant suivre l’ordre de signature de la méthode. Consultez la documentation relative à chaque connecteur pour plus d’informations sur la signature de la fonction.

```
SELECT * FROM TABLE(catalog.system.query('arg1Value', 'arg2Value', 'arg3Value'))
```

Vous pouvez exécuter plusieurs requêtes de transmission sur différents connecteurs Athena en utilisant le chemin de résolution complet de la fonction, comme illustré dans l’exemple suivant.

```
SELECT c_customer_sk 
    FROM TABLE (postgresql.system.query('select * from customer limit 10'))
UNION
SELECT c_customer_sk 
    FROM TABLE(dynamodb.system.query('select * from customer')) LIMIT 10
```

Vous pouvez utiliser des requêtes de transmission dans le cadre d’une vue fédérée. Les mêmes limitations s’appliquent. Pour plus d’informations, consultez [Interrogation de vues fédérées](https://docs.aws.amazon.com/athena/latest/ug/running-federated-queries.html#running-federated-queries-federated-views).

```
CREATE VIEW catalog.database.ViewName AS
    SELECT * FROM TABLE (
        catalog.system.query('query')
    )
```

Pour plus d’informations sur la syntaxe exacte à utiliser avec un connecteur particulier, consultez la documentation de chaque connecteur.

### Utilisation des guillemets
<a name="federated-query-passthrough-syntax-quotation-marks"></a>

Les valeurs des arguments, y compris la chaîne de requête que vous transmettez, doivent être placées entre guillemets simples, comme illustré dans l’exemple suivant.

```
SELECT * FROM TABLE(system.query(query => 'SELECT * FROM testdb.persons LIMIT 10'))
```

Lorsque la chaîne de requête est entourée de guillemets doubles, la requête échoue. La requête suivante échoue avec le message d’erreur COLUMN\$1NOT\$1FOUND: line 1:43: Column 'select \$1 from testdb.persons limit 10' cannot be resolved.

```
SELECT * FROM TABLE(system.query(query => "SELECT * FROM testdb.persons LIMIT 10"))
```

Pour échapper un guillemet simple, ajoutez un guillemet simple à l’original (par exemple, `terry's_group` à `terry''s_group`).

## Exemples
<a name="federated-query-passthrough-sql-based-connectors-examples"></a>

L’exemple de requête suivant transmet une requête à une source de données. La requête sélectionne toutes les colonnes dans la table `customer`, en limitant les résultats à 10.

```
SELECT * FROM TABLE(
        catalog.system.query(
            query => 'SELECT * FROM customer LIMIT 10;'
        ))
```

L’instruction suivante exécute la même requête, mais supprime l’argument nommé facultatif `query` et l’opérateur flèche `=>`.

```
SELECT * FROM TABLE(
        catalog.system.query(
            'SELECT * FROM customer LIMIT 10;'
        ))
```

Elle peut également être encapsulée dans une vue fédérée pour faciliter sa réutilisation. Lorsque vous l’utilisez avec une vue, vous devez utiliser le chemin de résolution complet de la fonction.

```
CREATE VIEW AwsDataCatalog.default.example_view AS
    SELECT * FROM TABLE (
        catalog.system.query('SELECT * FROM customer LIMIT 10;')
    )
```

## Désactivation de la fonctionnalité de transmission des requêtes
<a name="federated-query-passthrough-sql-based-connectors-opting-out"></a>

Pour désactiver les requêtes de transmission, ajoutez une variable d’environnement Lambda nommée `enable_query_passthrough` et définissez-la sur `false`.

# Présentation des qualificateurs de noms de table fédérés
<a name="tables-qualifiers"></a>

Athena utilise les termes suivants pour désigner les hiérarchies d'objets de données :
+ **Source de données** : un groupe de bases de données
+ **Base de données** : un groupe de tables
+ **Table** : des données organisées sous la forme d'un groupe de lignes ou de colonnes

Parfois, ces objets sont également désignés par des noms alternatifs mais équivalents, tels que les suivants :
+ Une source de données est parfois appelée catalogue.
+ Une base de données est parfois appelée schéma.

## Termes utilisés dans les sources de données fédérées
<a name="tables-qualifiers-terms-in-federated-data-sources"></a>

Lorsque vous interrogez des sources de données fédérées, notez que la source de données sous-jacente n'utilise peut-être pas la même terminologie qu'Athena. Gardez cette distinction à l'esprit lorsque vous rédigez vos requêtes fédérées. Les sections suivantes décrivent comment les termes des objets de données dans Athena correspondent à ceux des sources de données fédérées.

### Amazon Redshift
<a name="tables-qualifiers-redshift"></a>

Une *base de données* Amazon Redshift est un groupe de *schémas* Redshift contenant un groupe de *tables* Redshift.


****  

| Athena | Redshift | 
| --- | --- | 
| Source de données Redshift | Une fonction Lambda du connecteur Redshift configurée pour pointer vers une database Redshift. | 
| data\$1source.database.table | database.schema.table | 

Exemple de requête

```
SELECT * FROM 
Athena_Redshift_connector_data_source.Redshift_schema_name.Redshift_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour Redshift](connectors-redshift.md).

### Cloudera Hive
<a name="tables-qualifiers-cloudera-hive"></a>

Un *serveur* ou un *cluster* Cloudera Hive est un groupe de *bases de données* Cloudera Hive contenant un groupe de *tables* Cloudera Hive.


****  

| Athena | Hive | 
| --- | --- | 
| Source de données Cloudera Hive | Fonction Lambda du connecteur Cloudera Hive configurée pour pointer vers un server Cloudera Hive. | 
| data\$1source.database.table | server.database.table | 

Exemple de requête

```
SELECT * FROM 
Athena_Cloudera_Hive_connector_data_source.Cloudera_Hive_database_name.Cloudera_Hive_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour Cloudera Hive](connectors-cloudera-hive.md).

### Cloudera Impala
<a name="tables-qualifiers-cloudera-impala"></a>

Un *serveur* ou un *cluster* Impala est un groupe de *bases de données* Impala contenant un groupe de *tables* Impala.


****  

| Athena | Impala | 
| --- | --- | 
| Source de données Impala | Fonction Lambda du connecteur Impala configurée pour pointer vers un server Impala. | 
| data\$1source.database.table | server.database.table | 

Exemple de requête

```
SELECT * FROM 
Athena_Impala_connector_data_source.Impala_database_name.Impala_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour Cloudera Impala](connectors-cloudera-impala.md).

### MySQL
<a name="tables-qualifiers-mysql"></a>

Un *serveur* MySQL est un groupe de *bases de données* MySQL contenant un groupe de *tables* MySQL.


****  

| Athena | MySQL | 
| --- | --- | 
| Source de données MySQL | Fonction Lambda du connecteur MySQL configurée pour pointer vers un server MySQL. | 
| data\$1source.database.table | server.database.table | 

Exemple de requête

```
SELECT * FROM 
Athena_MySQL_connector_data source.MySQL_database_name.MySQL_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour MySQL](connectors-mysql.md).

### Oracle
<a name="tables-qualifiers-oracle"></a>

Un *serveur* (ou une *base de données*) Oracle est un groupe de *schémas* Oracle contenant un groupe de *tables* Oracle.


****  

| Athena | Oracle | 
| --- | --- | 
| Source de données Oracle | Fonction Lambda du connecteur Oracle configurée pour pointer vers un server Oracle. | 
| data\$1source.database.table | server.schema.table | 

Exemple de requête

```
SELECT * FROM 
Athena_Oracle_connector_data_source.Oracle_schema_name.Oracle_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour Oracle](connectors-oracle.md).

### Postgres
<a name="tables-qualifiers-postgres"></a>

Un *serveur* (ou *cluster*) Postgres est un groupe de *bases de données* Postgres. Une *base de données* Postgres est un groupe de *schémas* Postgres contenant un groupe de *tables* Postgres.


****  

| Athena | Postgres | 
| --- | --- | 
| Source de données Postgres | Fonction Lambda du connecteur Postgres configurée pour pointer vers un server et une database Postgres. | 
| data\$1source.database.table | server.database.schema.table | 

Exemple de requête

```
SELECT * FROM 
Athena_Postgres_connector_data_source.Postgres_schema_name.Postgres_table_name
```

Pour en savoir plus sur ce connecteur, consultez [Connecteur Amazon Athena pour PostgreSQL](connectors-postgresql.md).

# Développement d’un connecteur de source de données à l’aide du kit SDK Athena Query Federation
<a name="connect-data-source-federation-sdk"></a>

Pour écrire vos propres connecteurs de source de données, vous pouvez utiliser le [kit SDK Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk). Le kit Athena Query Federation SDK définit un ensemble d'interfaces et de protocoles filaire que vous pouvez utiliser pour permettre à Athena de déléguer des parties de son plan d'exécution de requêtes au code que vous écrivez et déployez. Le kit SDK comprend une suite de connecteurs et un exemple de connecteur.

Les connecteurs personnalisés n’utilisent pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.

Vous pouvez également personnaliser les [connecteurs prédéfinis](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors) d'Amazon Athena pour votre propre usage. Vous pouvez modifier une copie du code source depuis GitHub puis utiliser l'[outil de publication Connector](https://github.com/awslabs/aws-athena-query-federation/wiki/Connector_Publish_Tool) pour créer votre propre AWS Serverless Application Repository package. Une fois que vous avez déployé votre connecteur de cette manière, vous pouvez l'utiliser dans vos requêtes Athena.

Pour plus d'informations sur le téléchargement du SDK et pour obtenir des instructions détaillées sur l'écriture de votre propre connecteur, consultez [Example Athena](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-example) connector on. GitHub

# Utilisation des connecteurs de source de données pour Apache Spark
<a name="connectors-spark"></a>

Certains connecteurs de source de données Athena sont disponibles sous forme de connecteurs Spark DSV2 . Les noms des DSV2 connecteurs Spark ont un `-dsv2` suffixe (par exemple,`athena-dynamodb-dsv2`).

Vous trouverez ci-dessous les DSV2 connecteurs actuellement disponibles, le nom de leur `.format()` classe Spark et les liens vers leur documentation Amazon Athena Federated Query correspondante :


| DSV2 connecteur | Nom de classe .format () Spark | Documentation | 
| --- | --- | --- | 
| athena-cloudwatch-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.CloudwatchTableProvider | [CloudWatch](connectors-cloudwatch.md) | 
| athena-cloudwatch-metrics-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.metrics.CloudwatchMetricsTableProvider | [CloudWatch métriques](connectors-cwmetrics.md) | 
| athena-aws-cmdb-dsv2 | com.amazonaws.athena.connectors.dsv2.aws.cmdb.AwsCmdbTableProvider | [CMDB](connectors-cmdb.md) | 
| athena-dynamodb-dsv2 | com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider | [DynamoDB](connectors-dynamodb.md) | 

Pour télécharger `.jar` des fichiers pour les DSV2 connecteurs, rendez-vous [sur la DSV2 GitHub page Amazon Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation-dsv2) et consultez la section **Releases**, **Release *<version>***, **Assets**.

## Spécification du fichier jar dans Spark
<a name="connectors-spark-specifying-the-jar-to-spark"></a>

Pour utiliser les DSV2 connecteurs Athena avec Spark, vous devez envoyer le `.jar` fichier du connecteur à l'environnement Spark que vous utilisez. Les sections suivantes décrivent les cas spécifiques.

### Athena pour Spark
<a name="connectors-spark-ate"></a>

Pour plus d'informations sur l'ajout de fichiers `.jar` personnalisés et d'une configuration personnalisée dans Amazon Athena pour Apache Spark, consultez. [Utilisation de propriétés Spark pour spécifier une configuration personnalisée](notebooks-spark-custom-jar-cfg.md)

### General Spark
<a name="connectors-spark-general"></a>

Pour transmettre le fichier `.jar` du connecteur à Spark, utilisez la commande `spark-submit` et spécifiez le fichier `.jar` dans l'option `--jars`, comme dans l'exemple suivant :

```
spark-submit \ 
  --deploy-mode cluster \ 
  --jars https://github.com/awslabs/aws-athena-query-federation-dsv2/releases/download/some_version/athena-dynamodb-dsv2-some_version.jar
```

### Amazon EMR Spark
<a name="connectors-spark-emr"></a>

Pour exécuter une commande `spark-submit` avec le paramètre `--jars` sur Amazon EMR, vous devez ajouter une étape à votre cluster Amazon EMR Spark. Pour en savoir plus sur l'utilisation de `spark-submit` sur Amazon EMR, consultez [Ajouter une étape Spark](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html) dans le *Guide de version d'Amazon EMR.*

### AWS Glue ETL Spark
<a name="connectors-spark-glue-etl"></a>

Pour l' AWS Glue ETL, vous pouvez transmettre l'URL GitHub .com du `.jar` fichier à l'`--extra-jars`argument de la `aws glue start-job-run` commande. La AWS Glue documentation décrit le `--extra-jars` paramètre comme empruntant un chemin Amazon S3, mais il peut également prendre une URL HTTPS. Pour plus d'informations, consultez la [référence du paramètre de tâche](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html#w5aac32c13c11) dans le *Guide du développeur AWS Glue *.

## Interrogation du connecteur sur Spark
<a name="connectors-spark-querying-the-connector"></a>

Pour envoyer l'équivalent de votre requête fédérée Athena existante sur Apache Spark, utilisez la fonction `spark.sql()`. Supposons par exemple que vous ayez la requête Athena que vous souhaitez utiliser sur Apache Spark.

```
SELECT somecola, somecolb, somecolc 
FROM ddb_datasource.some_schema_or_glue_database.some_ddb_or_glue_table 
WHERE somecola > 1
```

Pour exécuter la même requête sur Spark à l'aide du DSV2 connecteur Amazon Athena DynamoDB, utilisez le code suivant :

```
dynamoDf = (spark.read 
    .option("athena.connectors.schema", "some_schema_or_glue_database") 
    .option("athena.connectors.table", "some_ddb_or_glue_table") 
    .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") 
    .load()) 
 
dynamoDf.createOrReplaceTempView("ddb_spark_table") 
 
spark.sql(''' 
SELECT somecola, somecolb, somecolc 
FROM ddb_spark_table 
WHERE somecola > 1 
''')
```

## Specify parameters
<a name="connectors-spark-parameters"></a>

Les DSV2 versions des connecteurs de source de données Athena utilisent les mêmes paramètres que les connecteurs de source de données Athena correspondants. Pour obtenir des informations sur les paramètres, reportez-vous à la documentation du connecteur de source de données Athena correspondant.

Dans votre PySpark code, utilisez la syntaxe suivante pour configurer vos paramètres.

```
spark.read.option("athena.connectors.conf.parameter", "value")
```

Par exemple, le code suivant définit le paramètre `disable_projection_and_casing` du connecteur Amazon Athena DynamoDB sur `always`.

```
dynamoDf = (spark.read 
    .option("athena.connectors.schema", "some_schema_or_glue_database") 
    .option("athena.connectors.table", "some_ddb_or_glue_table") 
    .option("athena.connectors.conf.disable_projection_and_casing", "always") 
    .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") 
    .load())
```

# Utiliser Amazon DataZone dans Athena
<a name="datazone-using"></a>

Vous pouvez utiliser [Amazon DataZone](https://aws.amazon.com/datazone) pour partager, rechercher et découvrir des données à grande échelle au-delà des frontières organisationnelles. DataZone simplifie votre expérience grâce à des services AWS d'analyse tels qu'Athena AWS Glue, et. AWS Lake Formation Par exemple, si vous avez des pétaoctets de données dans différentes sources de données, vous pouvez utiliser Amazon DataZone pour créer des regroupements de personnes, de données et d'outils basés sur des cas d'utilisation professionnels. Pour plus d'informations, consultez [Qu'est-ce qu'Amazon DataZone ?](https://docs.aws.amazon.com/datazone/latest/userguide/what-is-datazone.html) .

Dans Athena, vous pouvez utiliser l'éditeur de requêtes pour accéder aux environnements et les interroger DataZone . Un DataZone environnement définit une combinaison de DataZone projet et de domaine. Lorsque vous utilisez un DataZone environnement depuis la console Athena, vous assumez le rôle IAM de l' DataZoneenvironnement et vous ne voyez que les bases de données et les tables appartenant à cet environnement. Les autorisations sont déterminées par les rôles que vous spécifiez dans DataZone.

Dans Athena, vous pouvez utiliser le sélecteur d'**DataZone environnement** sur la page de l'éditeur de requêtes pour choisir un environnement. DataZone 

**Pour ouvrir un DataZone environnement dans Athena**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. **Dans le coin supérieur droit de la console Athena, à côté de **Workgroup**, choisissez environment. DataZone **
**Note**  
L'option d'**DataZone environnement** n'est présente que lorsqu'un ou plusieurs domaines sont disponibles dans DataZone.   
![\[Choisissez DataZone l'environnement.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/datazone-using-1.png)

1. Utilisez le sélecteur d'**DataZone environnement** pour choisir un DataZone environnement.  
![\[Choisissez un DataZone environnement\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/datazone-using-2.png)

1. Dans la boîte de dialogue **Basculer vers DataZone l'environnement**, vérifiez que l'environnement est celui que vous souhaitez, puis choisissez **Basculer vers DataZone l'environnement**.  
![\[Vérifiez la modification apportée à un DataZone environnement.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/datazone-using-3.png)

Pour plus d'informations sur la prise en main d'Athena DataZone et d'Athena, consultez le didacticiel de [démarrage](https://docs.aws.amazon.com/datazone/latest/userguide/getting-started.html) dans le guide de * DataZone l'utilisateur Amazon*.

# Utilisation d’un metastore Hive externe
<a name="connect-to-data-source-hive"></a>

Vous pouvez utiliser le connecteur de données Amazon Athena pour le métastore Hive externe afin d'interroger les jeux de données Simple Storage Service (Amazon S3) qui utilisent un métastore Apache Hive. Aucune migration des métadonnées vers le AWS Glue Data Catalog n'est nécessaire. Dans la console de gestion Athena, vous configurez une fonction Lambda pour communiquer avec le métastore Hive qui se trouve dans votre VPC privé, puis vous la connectez au métastore. La connexion de Lambda à votre métastore Hive est sécurisée par un canal privé Amazon VPC et n'utilise pas l'internet public. Vous pouvez fournir votre propre code de fonction Lambda ou utiliser l'implémentation par défaut du connecteur de données Athena pour le métastore Hive externe.

**Topics**
+ [Présentation des fonctions](#connect-to-a-data-source-hive-features)
+ [Flux de travail](#connect-to-data-source-hive-workflow)
+ [Considérations et restrictions](#connect-to-a-data-source-hive-considerations)
+ [Connexion d’Athena à un metastore Apache Hive](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md)
+ [Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données Hive](connect-data-source-sar-hive.md)
+ [Connexion d’Athena à un métastore Hive à l’aide d’un rôle d’exécution IAM existant](connect-data-source-hive-existing-iam-role.md)
+ [Configuration d'Athena pour utiliser un connecteur de métastore Hive déployé](connect-data-source-hive-existing-lambda.md)
+ [Omission du nom du catalogue dans des requêtes de métastore Hive externe](datastores-hive-default-catalog.md)
+ [Utilisation des vues Hive](hive-views.md)
+ [Utilisez les AWS CLI métastores with Hive](datastores-hive-cli.md)
+ [Modification du connecteur Athena pour métastore Hive externe](datastores-hive-reference-implementation.md)

## Présentation des fonctions
<a name="connect-to-a-data-source-hive-features"></a>

Avec le connecteur de données Athena pour métastore Hive externe, vous pouvez effectuer les tâches suivantes :
+ Utiliser la console Athena pour enregistrer des catalogues personnalisés et exécuter des requêtes à l'aide de ceux-ci.
+ Définir des fonctions Lambda pour différents métastores externes de Hive et les joindre dans des requêtes Athena.
+ Utilisez les métastores Hive AWS Glue Data Catalog et vos métastores externes dans la même requête Athena.
+ Spécifiez un catalogue dans le contexte d'exécution de requête en tant que catalogue par défaut actuel. Cela supprime la nécessité de préfixer les noms de catalogue aux noms de base de données dans vos requêtes. Au lieu d'utiliser la syntaxe `catalog.database.table`, vous pouvez utiliser `database.table`.
+ Utilisez une variété d'outils pour exécuter des requêtes qui font référence aux métastores Hive externes. Vous pouvez utiliser la console Athena, le AWS CLI AWS SDK, Athena et les pilotes JDBC APIs et ODBC Athena mis à jour. Les pilotes mis à jour prennent en charge les catalogues personnalisés.

### Prise en charge de l'API
<a name="connect-to-a-data-source-hive-features-api"></a>

Le connecteur de données Athena pour le métastore Hive externe comprend la prise en charge des opérations d'API d'enregistrement du catalogue et des opérations de l'API de métadonnées.
+ **Enregistrement de catalogue** – Enregistrez les catalogues personnalisés pour les métastores Hive externes et les [sources de données fédérées](federated-queries.md). 
+ **Métadonnées** : utilisez les métadonnées APIs pour fournir des informations de base de données AWS Glue et de table pour tout catalogue que vous enregistrez auprès d'Athena.
+ **Client Athena JAVA SDK** : utilisez l'enregistrement du catalogue APIs, les métadonnées APIs et la prise en charge des catalogues dans le cadre du `StartQueryExecution` fonctionnement du client Athena Java SDK mis à jour.

### Implémentation de référence
<a name="connect-to-a-data-source-hive-features-reference-implementation"></a>

Athena fournit une implémentation de référence pour la fonction Lambda qui se connecte aux métastores Hive externes. L'implémentation de référence est fournie sous GitHub forme de projet open source sur le [metastore Athena Hive](https://github.com/awslabs/aws-athena-hive-metastore).

L'implémentation de référence est disponible sous la forme AWS SAM des deux applications suivantes dans le AWS Serverless Application Repository (SAR). Vous pouvez utiliser l'une de ces applications dans le SAR pour créer vos propres fonctions Lambda.
+ `AthenaHiveMetastoreFunction` – Fichier `.jar` de fonction Lambda uber. Un JAR « uber » (également connu sous le nom de gros JAR ou JAR avec dépendances) est un fichier `.jar` qui contient à la fois un programme Java et ses dépendances dans un seul fichier. 
+ `AthenaHiveMetastoreFunctionWithLayer` – Couche Lambda et fichier `.jar` de fonction Lambda mince.

## Flux de travail
<a name="connect-to-data-source-hive-workflow"></a>

Le diagramme suivant montre comment Athena interagit avec votre métastore Hive externe.

![\[Mode d'interaction d'Athena avec votre métastore Hive externe.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connect-to-data-source-hive-workflow.png)


Dans ce flux de travail, votre métastore Hive connecté à une base de données se trouve à l'intérieur de votre VPC. Vous utilisez Hive Server2 pour gérer votre métastore Hive à l'aide de la CLI Hive.

Le flux de travail permettant d'utiliser des métastores Hive externes depuis Athena inclut les étapes suivantes.

1. Vous créez une fonction Lambda qui connecte Athena au métastore Hive se trouvant à l'intérieur de votre VPC.

1. Vous enregistrez un nom de catalogue unique pour votre métastore Hive et un nom de fonction correspondant dans votre compte.

1. Lorsque vous exécutez une requête DML ou DDL Athena qui utilise le nom du catalogue, le moteur de requête Athena appelle le nom de fonction Lambda que vous avez associé au nom du catalogue.

1. À l'aide de AWS PrivateLink, la fonction Lambda communique avec le métastore Hive externe de votre VPC et reçoit des réponses aux demandes de métadonnées. Athena utilise les métadonnées de votre métastore Hive externe tout comme il utilise les métadonnées du AWS Glue Data Catalog par défaut.

## Considérations et restrictions
<a name="connect-to-a-data-source-hive-considerations"></a>

Lorsque vous utilisez le connecteur de données Athena pour le métastore Hive externe, tenez compte des points suivants :
+ Vous pouvez utiliser l'instruction CTAS pour créer une table sur un métastore Hive externe.
+ Vous pouvez utiliser l'instruction INSERT INTO pour insérer des données dans un métastore Hive externe.
+ La prise en charge DDL pour le métastore Hive externe est limitée aux instructions suivantes.
  + ALTER DATABASE SET DBPROPERTIES
  + ALTER TABLE ADD COLUMNS
  + ALTER TABLE ADD PARTITION
  + ALTER TABLE DROP PARTITION
  + ALTER TABLE RENAME PARTITION
  + ALTER TABLE REPLACE COLUMNS
  + ALTER TABLE SET LOCATION
  + ALTER TABLE SET TBLPROPERTIES
  + CREATE DATABASE
  + CREATE TABLE
  + CREATE TABLE AS
  + DESCRIBE TABLE
  + DROP DATABASE
  + DROP TABLE
  + SHOW COLUMNS
  + SHOW CREATE TABLE
  + SHOW PARTITIONS
  + SHOW SCHEMAS
  + SHOW TABLES
  + SHOW TBLPROPERTIES
+ Le nombre maximal de catalogues enregistrés que vous pouvez avoir est de 1 000.
+ L'authentification Kerberos pour le métastore Hive n'est pas prise en charge.
+ Pour utiliser le pilote JDBC avec un metastore Hive externe ou des [requêtes fédérées](federated-queries.md), incluez `MetadataRetrievalMethod=ProxyAPI` dans votre chaîne de connexion JDBC. Pour plus d'informations sur le pilote JDBC, voir [Connexion à Amazon Athena avec JDBC](connect-with-jdbc.md).
+ Les colonnes cachées `$path`, `$bucket`, `$file_size`, `$file_modified_time`, `$partition`, `$row_id` de Hive ne peuvent pas être utilisées pour le filtrage du contrôle d'accès précis. 
+ Les tables cachées du système Hive comme `example_table$partitions` ou `example_table$properties` ne sont pas prises en charge par le contrôle d'accès précis.

### Permissions
<a name="connect-to-a-data-source-hive-considerations-permissions"></a>

Les connecteurs de données prédéfinis et personnalisés peuvent nécessiter l'accès aux ressources suivantes pour fonctionner correctement. Vérifiez les informations relatives au connecteur que vous utilisez pour vous assurer que vous avez correctement configuré votre VPC. Pour de plus amples informations sur les autorisations IAM requises pour exécuter des requêtes et créer un connecteur de source de données dans Athena, voir [Autorisation de l’accès à un connecteur de données Athena pour un metastore Hive externe](hive-metastore-iam-access.md) et [Autorisation d'accès des fonctions Lambda aux métastores Hive externes](hive-metastore-iam-access-lambda.md).
+ **Simple Storage Service (Amazon S3)** – Outre l'écriture des résultats des requêtes dans l'emplacement des résultats des requêtes Athena dans Simple Storage Service (Amazon S3), les connecteurs de données écrivent également dans un compartiment de déversement dans Simple Storage Service (Amazon S3). Une connectivité et des autorisations d'accès à cet emplacement Simple Storage Service (Amazon S3) sont requises. Pour plus d'informations, consultez [Emplacement de déversement dans Simple Storage Service (Amazon S3)](#connect-to-data-source-hive-spill-location) plus loin dans cette rubrique.
+ **Athena** – L'accès est nécessaire pour vérifier l'état de la requête et empêcher le surbalayage.
+ **AWS Glue**— L'accès est requis si votre connecteur utilise AWS Glue des métadonnées supplémentaires ou principales.
+ **AWS Key Management Service**
+ **Politiques** — Hive Metastore, Athena Query Federation et UDFs requière des politiques en plus des. [AWS politique gérée : AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) Pour de plus amples informations, veuillez consulter [Gestion des identités et des accès dans Athena](security-iam-athena.md).

### Emplacement de déversement dans Simple Storage Service (Amazon S3)
<a name="connect-to-data-source-hive-spill-location"></a>

En raison de la [limite](https://docs.aws.amazon.com/lambda/latest/dg/limits.html) de la taille des réponses des fonctions Lambda, les réponses supérieures au seuil sont déversées dans un emplacement Simple Storage Service (Amazon S3) que vous spécifiez lorsque vous créez votre fonction Lambda. Athena lit directement ces réponses de Simple Storage Service (Amazon S3). 

**Note**  
Athena ne supprime pas les fichiers de réponse sur Simple Storage Service (Amazon S3). Nous vous recommandons de configurer une politique de rétention pour supprimer automatiquement les fichiers de réponse. 

# Connexion d’Athena à un metastore Apache Hive
<a name="connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore"></a>

Pour connecter Athena à un métastore Apache Hive, vous devez créer et configurer une fonction Lambda. Pour une implémentation de base, vous pouvez effectuer toutes les étapes requises à partir de la console de gestion Athena.

**Note**  
La procédure suivante nécessite que vous ayez l'autorisation de créer un rôle IAM personnalisé pour la fonction Lambda. Si vous n'êtes pas autorisé à créer un rôle personnalisé, vous pouvez utiliser l'[implémentation de référence](connect-to-data-source-hive.md#connect-to-a-data-source-hive-features-reference-implementation) Athena pour créer une fonction Lambda séparément, puis utiliser la AWS Lambda console pour choisir un rôle IAM existant pour la fonction. Pour de plus amples informations, veuillez consulter [Connexion d’Athena à un métastore Hive à l’aide d’un rôle d’exécution IAM existant](connect-data-source-hive-existing-iam-role.md).

**Connexion d'Athena à un métastore Hive**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Sélectionnez **Sources de données et catalogues**.

1. Dans le coin supérieur droit de la console, choisissez **Create data source** (Créer une source de données).

1. Sur la page **Choose a data sources** (Choisir une sources de données), pour **Data source** (Source de données), choisissez **S3 - Apache Hive metastore** (S3 - Métastore Apache Hive).

1. Choisissez **Suivant**.

1. Dans la section **Data source details** (Détails sur la source de données), pour **Data source name** (Nom de la source de données), saisissez le nom que vous souhaitez utiliser dans vos instructions SQL lorsque vous interrogez la source de données à partir d'Athena. Le nom peut contenir jusqu'à 127 caractères et doit être unique dans votre compte. Il ne peut pas être modifié après sa création. Les caractères valides sont a-z, A-Z, 0–9, \$1 (trait de soulignement), @ (arobase) et - (trait d'union). Les noms `awsdatacatalog`, `hive`, `jmx` et `system` sont réservés par Athena et ne peuvent pas être utilisés pour les noms de source de données. 

1. Pour la **fonction Lambda**, choisissez Create **Lambda function**, puis Create **a new** Lambda function dans AWS Lambda

   La **AthenaHiveMetastoreFunction**page s'ouvre dans la AWS Lambda console. La page contient des informations détaillées sur le connecteur.  
![\[La AthenaHiveMetastoreFunctionpage de la AWS Lambda console.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connect-to-data-source-hive-4.png)

1. Sous **Application settings** (Paramètres de l'application), saisissez les paramètres de votre fonction Lambda.
   + **LambdaFuncName**— Donnez un nom à la fonction. Par exemple, **myHiveMetastore**.
   + **SpillLocation**— Spécifiez un emplacement Amazon S3 dans ce compte pour stocker les métadonnées dérivées si la taille de réponse de la fonction Lambda dépasse 4 Mo.
   + **HMSUris**— Entrez l'URI de votre hôte de métastore Hive qui utilise le protocole Thrift sur le port 9083. Utilisez la syntaxe `thrift://<host_name>:9083`.
   + **LambdaMemory**— Spécifiez une valeur comprise entre 128 Mo et 3 008 Mo. La fonction Lambda se voit allouer des cycles d'UC proportionnels à la quantité de mémoire que vous configurez. La valeur par défaut est 1024.
   + **LambdaTimeout**— Spécifiez le temps d'exécution d'appel Lambda maximal autorisé en secondes, de 1 à 900 (900 secondes correspondent à 15 minutes). La valeur par défaut est de 300 secondes (5 minutes).
   + **VPCSecurityGroupIds**— Entrez une liste de groupes de sécurité VPC séparés par des virgules IDs pour le métastore Hive.
   + **VPCSubnetIds** — Entrez une liste de IDs sous-réseaux VPC séparés par des virgules pour le métastore Hive.

1. Sélectionnez **I acknowledge that this app creates custom IAM roles** (Je comprends que cette application crée des rôles IAM personnalisés) puis choisissez **Deploy** (Déployer).  
![\[Déploiement de l'application de fonction Lambda à partir de la console AWS Lambda .\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connect-to-data-source-hive-4a.png)

   Une fois le déploiement terminé, votre fonction apparaît dans votre liste d'applications Lambda. Maintenant que la fonction de métastore Hive a été déployée sur votre compte, vous pouvez configurer Athena pour l'utiliser.

1. Revenez à la page **Enter data sources details** (Saisir les détails des sources de données) de la console Athena.

1. Dans la section **Lambda function** (fonction Lambda), choisissez l'icône d'actualisation située à côté de la zone de recherche de fonction Lambda. L'actualisation de la liste des fonctions disponibles entraîne l'apparition de la fonction nouvellement créée dans la liste.

1. Choisissez le nom de la fonction que vous venez de créer dans la console Lambda. L'ARN de la fonction Lambda s'affiche.

1. (Facultatif) Pour **Tags** (Identifications), ajoutez des paires clé-valeur à associer à cette source de données. Pour en savoir plus sur les identifications, consultez [Balisage des ressources Athena](tags.md).

1. Choisissez **Suivant**.

1. À la page **Review and create**, vérifiez les détails de la source de données, puis choisissez **Create data source** (Créer une source de données). 

1. La section **Data source details** (Détails de source de données) de la page de votre source de données affiche des informations sur votre nouveau connecteur. 

   Vous pouvez désormais utiliser le **nom de la source de données** que vous avez spécifié pour référencer le métastore Hive dans vos requêtes SQL dans Athena. Dans vos requêtes SQL, utilisez l'exemple de syntaxe suivant, en remplaçant `hms-catalog-1` par le nom de catalogue que vous avez spécifié précédemment.

   ```
   SELECT * FROM hms-catalog-1.CustomerData.customers 
   ```

1. Pour plus d'informations sur l'affichage, la modification ou la suppression des sources de données que vous créez, consultez [Gestion des sources de données](data-sources-managing.md).

# Utilisez le AWS Serverless Application Repository pour déployer un connecteur de source de données Hive
<a name="connect-data-source-sar-hive"></a>

Pour déployer un connecteur de source de données Athena pour Hive, vous pouvez utiliser le [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/) au lieu de commencer par la console Athena. Utilisez le AWS Serverless Application Repository pour trouver le connecteur que vous souhaitez utiliser, fournir les paramètres requis par le connecteur, puis déployez le connecteur sur votre compte. Ensuite, après avoir déployé le connecteur, vous utilisez la console Athena pour rendre la source de données disponible pour Athena.

**Pour utiliser le AWS Serverless Application Repository pour déployer un connecteur de source de données pour Hive sur votre compte**

1. Connectez-vous au **référentiel d'applications sans serveur AWS Management Console ** et ouvrez-le.

1. Dans le volet de navigation, choisissez **Applications**.

1. Sélectionnez l'option **Show apps that create custom IAM roles or resource policies** (Afficher les applications qui créent des rôles IAM ou des politiques de ressources personnalisés).

1. Dans la zone de recherche, saisissez **Hive**. Les connecteurs qui apparaissent incluent les deux connecteurs suivants :
   + **AthenaHiveMetastoreFunction** – Fichier `.jar` de fonction Lambda uber.
   + **AthenaHiveMetastoreFunctionWithLayer** – Couche Lambda et fichier `.jar` de fonction Lambda mince.

    Les deux applications ont les mêmes fonctionnalités et ne diffèrent que par leur implémentation. Vous pouvez utiliser l'une de ces deux méthodes pour créer une fonction Lambda qui connecte Athena à votre métastore Hive.

1. Choisissez le nom du connecteur que vous souhaitez utiliser. Ce tutoriel utilise **AthenaHiveMetastoreFunction**.  
![\[Choisissez le nom du connecteur de source de données Athena pour Hive.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connect-data-source-sar-hive-1.png)

1. Sous **Application settings** (Paramètres de l'application), saisissez les paramètres de votre fonction Lambda.
   + **LambdaFuncName**— Donnez un nom à la fonction. Par exemple, **myHiveMetastore**.
   + **SpillLocation**— Spécifiez un emplacement Amazon S3 dans ce compte pour stocker les métadonnées dérivées si la taille de réponse de la fonction Lambda dépasse 4 Mo.
   + **HMSUris**— Entrez l'URI de votre hôte de métastore Hive qui utilise le protocole Thrift sur le port 9083. Utilisez la syntaxe `thrift://<host_name>:9083`.
   + **LambdaMemory**— Spécifiez une valeur comprise entre 128 Mo et 3 008 Mo. La fonction Lambda se voit allouer des cycles d'UC proportionnels à la quantité de mémoire que vous configurez. La valeur par défaut est 1024.
   + **LambdaTimeout**— Spécifiez le temps d'exécution d'appel Lambda maximal autorisé en secondes, de 1 à 900 (900 secondes correspondent à 15 minutes). La valeur par défaut est de 300 secondes (5 minutes).
   + **VPCSecurityGroupIds**— Entrez une liste de groupes de sécurité VPC séparés par des virgules IDs pour le métastore Hive.
   + **VPCSubnetIds** — Entrez une liste de IDs sous-réseaux VPC séparés par des virgules pour le métastore Hive.

1. En bas à droite de la page **Application details** (Détails de l'application), sélectionnez **I acknowledge that this app creates custom IAM roles** (Je reconnais que cette application crée des rôles IAM personnalisés), puis choisissez **Deploy** (Déployer).

À ce stade, vous pouvez configurer le service Athena pour qu'il utilise votre fonction Lambda afin de se connecter à votre métastore Hive. Pour les étapes, consultez [Configuration d'Athena pour utiliser un connecteur de métastore Hive déployé](connect-data-source-hive-existing-lambda.md).

# Connexion d’Athena à un métastore Hive à l’aide d’un rôle d’exécution IAM existant
<a name="connect-data-source-hive-existing-iam-role"></a>

Pour connecter votre métastore Hive externe à Athena avec une fonction Lambda qui utilise un rôle IAM existant, vous pouvez utiliser l'implémentation de référence du connecteur Athena pour métastore Hive externe.

Les trois étapes principales sont les suivantes :

1. **[Cloner et créer](#connect-data-source-hive-existing-iam-role-clone-and-build-the-lambda-function)** – Clonez l'implémentation de référence Athena et créez le fichier JAR qui contient le code de la fonction Lambda.

1. **[AWS Lambda console](#connect-data-source-hive-existing-iam-role-aws-lambda-console)** — Dans la AWS Lambda console, créez une fonction Lambda, attribuez-lui un rôle d'exécution IAM existant et téléchargez le code de fonction que vous avez généré.

1. **[Console Amazon Athena](connect-data-source-hive-existing-lambda.md)** – Dans la console Amazon Athena, créez un nom de source de données que vous pourrez utiliser pour faire référence à votre métastore Hive externe dans vos requêtes Athena.

Si vous êtes déjà autorisé à créer un rôle IAM personnalisé, vous pouvez utiliser un flux de travail plus simple qui utilise la console Athena pour créer et AWS Serverless Application Repository configurer une fonction Lambda. Pour de plus amples informations, veuillez consulter [Connexion d’Athena à un metastore Apache Hive](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md).

## Conditions préalables
<a name="connect-data-source-hive-existing-iam-role-prerequisites"></a>
+ Git doit être installé sur votre système.
+ Vous devez avoir [Apache Maven](https://maven.apache.org/) installé.
+ Vous avez un rôle d'exécution IAM que vous pouvez attribuer à la fonction Lambda. Pour de plus amples informations, veuillez consulter [Autorisation d'accès des fonctions Lambda aux métastores Hive externes](hive-metastore-iam-access-lambda.md).

## Clonage et création de la fonction Lambda
<a name="connect-data-source-hive-existing-iam-role-clone-and-build-the-lambda-function"></a>

[Le code de fonction pour l'implémentation de référence Athena est un projet Maven situé sur GitHub awslabs/. aws-athena-hive-metastore](https://github.com/awslabs/aws-athena-hive-metastore) Pour des informations détaillées sur le projet, consultez le fichier README correspondant GitHub ou le [Modification du connecteur Athena pour métastore Hive externe](datastores-hive-reference-implementation.md) sujet de cette documentation.

**Clonage et création du code de fonction Lambda**

1. Saisissez la commande suivante pour cloner l'implémentation de référence Athena :

   ```
   git clone https://github.com/awslabs/aws-athena-hive-metastore
   ```

1. Exécutez la commande suivante pour créer le fichier `.jar` pour la fonction Lambda :

   ```
   mvn clean install
   ```

   Une fois le projet crée avec succès, le fichier `.jar` suivant est créé dans le dossier cible de votre projet :

   `hms-lambda-func-1.0-SNAPSHOT-withdep.jar`

   Dans la section suivante, vous allez utiliser la AWS Lambda console pour télécharger ce fichier sur votre compte Amazon Web Services.

## Création et configuration de la fonction Lambda dans la console AWS Lambda
<a name="connect-data-source-hive-existing-iam-role-aws-lambda-console"></a>

Dans cette section, vous allez utiliser la AWS Lambda console pour créer une fonction qui utilise un rôle d'exécution IAM existant. Après avoir configuré un VPC pour la fonction, vous téléchargez le code de la fonction et configurez les variables d'environnement pour la fonction.

### Créer la fonction Lambda
<a name="connect-data-source-hive-existing-iam-role-create-the-lambda-function"></a>

Au cours de cette étape, vous créez une fonction dans la AWS Lambda console qui utilise un rôle IAM existant.

**Création d'une fonction Lambda qui utilise un rôle IAM existant**

1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Dans le volet de navigation, choisissez **Fonctions**.

1. Choisissez **Créer une fonction**.

1. Choisissez **Créer à partir de zéro**.

1. Dans **Function name** (Nom de la fonction), saisissez le nom de votre fonction Lambda (par exemple, **EHMSBasedLambda**).

1. Pour **Runtime** (Exécution), choisissez **Java 8**.

1. Sous **Permissions** (Autorisations), développez **Change default execution role** (Modifier le rôle d'exécution par défaut).

1. Pour **Execution role (Rôle d'exécution)**, choisissez **Use an existing role (Utilisez un rôle existant)**.

1. Pour **Existing role** (Rôle existant), choisissez le rôle d'exécution IAM que votre fonction Lambda utilisera pour Athena (cet exemple utilise un rôle appelé `AthenaLambdaExecutionRole`).

1. Développez **Advanced settings** (Paramètres avancés).

1. Sélectionnez **Enable Network** (Activer le réseau).

1. Pour **VPC**, choisissez le VPC auquel votre fonction aura accès.

1. Pour **Subnets** (Sous-réseaux), choisissez les sous-réseaux VPC que Lambda doit utiliser.

1. Pour **Security groups** (Groupe de sécurité), choisissez les groupes de sécurité VPC à utiliser pour Lambda.

1. Sélectionnez **Create function** (Créer une fonction). La AWS Lambda console ouvre la page de configuration de votre fonction et commence à créer votre fonction.

### Chargement du code et configuration de la fonction Lambda
<a name="connect-data-source-hive-existing-iam-role-upload-and-configure"></a>

Lorsque la console vous informe que votre fonction a été créée avec succès, vous pouvez télécharger le code de la fonction et configurer ses variables d'environnement.

**Téléchargement du code de votre fonction Lambda et configuration de ses variables d'environnement**

1. Dans la console Lambda, assurez-vous que vous êtes sur l'onglet **Code** de la page de la fonction que vous avez spécifiée.

1. Pour **Code source** (Code source), choisissez **Upload from** (Charger depuis) puis choisissez **.zip or .jar file** (fichier .zip ou .jar).

1. Téléchargement du fichier `hms-lambda-func-1.0-SNAPSHOT-withdep.jar` généré précédemment.

1. Sur la page de la fonction Lambda, choisissez l'onglet **Configuration**.

1. Dans le panneau de gauche, choisissez **Environment variables** (Variables d'environnement).

1. Dans la section **Environment variables** (Variables d'environnement), choisissez **Edit** (Modifier).  
![\[Choisissez Edit (Modifier) pour modifier les variables d'environnement de la fonction Lambda.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connect-data-source-hive-existing-iam-role-5.png)

1. Sur la page **Edit environment variables** (Modifier les variables d'environnement), utilisez l'option **Add environment variable** (Ajouter une variable d'environnement) pour ajouter les clés et les valeurs des variables d'environnement suivantes :
   + **HMS\$1URIS** – Utilisez la syntaxe suivante pour saisir l'URI de votre hôte de métastore Hive qui utilise le protocole Thrift au port 9083.

     ```
     thrift://<host_name>:9083
     ```
   + **SPILL\$1LOCATION** – Spécifiez un emplacement Amazon S3 dans votre compte Amazon Web Services pour contenir les métadonnées de débordement si la taille de la réponse de la fonction Lambda dépasse 4 Mo.  
![\[Spécification des valeurs pour les variables d'environnement de la fonction Lambda.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/connect-data-source-hive-existing-iam-role-6.png)

1. Choisissez **Enregistrer**.

À ce stade, vous êtes prêt à configurer Athena pour qu'il utilise votre fonction Lambda afin de se connecter à votre métastore Hive. Pour les étapes, consultez [Configuration d'Athena pour utiliser un connecteur de métastore Hive déployé](connect-data-source-hive-existing-lambda.md).

# Configuration d'Athena pour utiliser un connecteur de métastore Hive déployé
<a name="connect-data-source-hive-existing-lambda"></a>

Une fois que vous avez déployé un connecteur de source de données Lambda comme `AthenaHiveMetastoreFunction` sur votre compte, vous pouvez configurer Athena pour l'utiliser. Pour ce faire, créez un nom de source de données qui fait référence à votre métastore Hive externe à utiliser dans vos requêtes Athena.

**Connexion d'Athena à votre métastore Hive à l'aide d'une fonction Lambda existante**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Sélectionnez **Sources de données et catalogues**.

1. Sur la page **Sources de données et catalogues**, sélectionnez **Créer une source de données**.

1. Sur la page **Choose a data sources** (Choisir une sources de données), pour **Data source** (Source de données), choisissez **S3 - Apache Hive metastore** (S3 - Métastore Apache Hive).

1. Choisissez **Suivant**.

1. Dans la section **Data source details** (Détails sur la source de données), pour **Data source name** (Nom de la source de données), saisissez le nom que vous souhaitez utiliser dans vos instructions SQL lorsque vous interrogez la source de données à partir d'Athena (par exemple, `MyHiveMetastore`). Le nom peut contenir jusqu'à 127 caractères et doit être unique dans votre compte. Il ne peut pas être modifié après sa création. Les caractères valides sont a-z, A-Z, 0–9, \$1 (trait de soulignement), @ (arobase) et - (trait d'union). Les noms `awsdatacatalog`, `hive`, `jmx` et `system` sont réservés par Athena et ne peuvent pas être utilisés pour les noms de source de données. 

1. Dans la section **Connection details** (Détails de connexion), utilisez la zone **Select or enter a Lambda function** (Sélectionner ou saisir une fonction Lambda) pour choisir le nom de la fonction que vous venez de créer. L'ARN de la fonction Lambda s'affiche.

1. (Facultatif) Pour **Tags** (Identifications), ajoutez des paires clé-valeur à associer à cette source de données. Pour en savoir plus sur les identifications, consultez [Balisage des ressources Athena](tags.md).

1. Choisissez **Suivant**.

1. À la page **Review and create**, vérifiez les détails de la source de données, puis choisissez **Create data source** (Créer une source de données). 

1. La section **Data source details** (Détails de source de données) de la page de votre source de données affiche des informations sur votre nouveau connecteur.

   Vous pouvez désormais utiliser le **nom de la source de données** que vous avez spécifié pour référencer le métastore Hive dans vos requêtes SQL dans Athena.

   Dans vos requêtes SQL, utilisez l'exemple de syntaxe suivant, en remplaçant `ehms-catalog` par le nom de la source de données que vous avez spécifié précédemment.

   ```
   SELECT * FROM ehms-catalog.CustomerData.customers 
   ```

1. Pour afficher, modifier ou supprimer les sources de données que vous créez, veuillez consulter [Gestion des sources de données](data-sources-managing.md).

# Omission du nom du catalogue dans des requêtes de métastore Hive externe
<a name="datastores-hive-default-catalog"></a>

Lorsque vous exécutez des requêtes DML et DDL sur des métastores Hive externes, vous pouvez simplifier la syntaxe de la requête en omettant le nom du catalogue si ce nom est sélectionné dans l'éditeur de requête. Certaines restrictions s'appliquent à cette fonctionnalité.

## Instructions DML
<a name="datastores-hive-default-catalog-dml-statements"></a>

**Pour exécuter des requêtes avec des catalogues enregistrés**

1. Vous pouvez placer le nom de la source de données avant la base de données en utilisant la syntaxe `[[data_source_name].database_name].table_name`, comme dans l'exemple suivant.

   ```
   select * from  "hms-catalog-1".hms_tpch.customer limit 10;
   ```

1. Lorsque la source de données que vous souhaitez utiliser est déjà sélectionnée dans l'éditeur de requêtes, vous pouvez omettre le nom dans la requête, comme dans l'exemple suivant.

   ```
   select * from hms_tpch.customer limit 10:
   ```  
![\[Requête DML utilisant une source de données par défaut.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/datastores-hive-default-catalog-2.png)

1. Lorsque vous utilisez plusieurs sources de données dans une requête, vous pouvez omettre uniquement le nom de la source de données par défaut et devez spécifier le nom complet de toutes les autres sources de données qui ne sont pas des sources de données par défaut. 

   Supposons par exemple que `AwsDataCatalog` est sélectionnée comme source de données par défaut dans l'éditeur de requêtes. L'`FROM`instruction contenue dans l'extrait de requête suivant qualifie entièrement les deux premiers noms de source de données, mais omet le nom de la troisième source de données car elle figure dans le catalogue de AWS Glue données.

   ```
   ...
   FROM ehms01.hms_tpch.customer,
            "hms-catalog-1".hms_tpch.orders,
            hms_tpch.lineitem
   ...
   ```

## Instructions DDL
<a name="datastores-hive-default-catalog-ddl-statements"></a>

Les instructions DDL Athena suivantes prennent en charge les préfixes de nom de catalogue. Les préfixes de nom de catalogue dans d'autres instructions DDL provoquent des erreurs de syntaxe.

```
SHOW TABLES [IN [catalog_name.]database_name] ['regular_expression']

SHOW TBLPROPERTIES [[catalog_name.]database_name.]table_name [('property_name')]

SHOW COLUMNS IN [[catalog_name.]database_name.]table_name

SHOW PARTITIONS [[catalog_name.]database_name.]table_name

SHOW CREATE TABLE [[catalog_name.][database_name.]table_name

DESCRIBE [EXTENDED | FORMATTED] [[catalog_name.][database_name.]table_name [PARTITION partition_spec] [col_name ( [.field_name] | [.'$elem$'] | [.'$key$'] | [.'$value$'] )]
```

Comme pour les instructions DML, vous pouvez omettre la source de données et les préfixes de base de données de la requête lorsque la source de données et la base de données sont sélectionnées dans l'éditeur de requêtes.

Dans l'image suivante, la source de données `hms-catalog-1` et la base de données `hms_tpch` sont sélectionnées dans l'éditeur de requêtes. L'instruction `show create table customer` réussit, même si le préfixe `hms-catalog-1` et le nom de base de données `hms_tpch` sont omis de la requête elle-même.

![\[Une instruction DDL utilisant le catalogue par défaut.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/datastores-hive-default-catalog-4.png)


## Spécification d'une source de données par défaut dans une chaîne de connexion JDBC
<a name="datastores-hive-default-catalog-jdbc"></a>

Lorsque vous utilisez le pilote JDBC Athena pour connecter Athena à un métastore Hive externe, vous pouvez utiliser le paramètre `Catalog` pour spécifier le nom de la source de données par défaut dans votre chaîne de connexion dans un éditeur SQL tel que [SQL Workbench](https://www.sql-workbench.eu/index.html).

**Note**  
Pour télécharger les pilotes les plus récents d'Athena JDBC, consultez [Utilisation d'Athena avec le pilote JDBC](https://docs.aws.amazon.com/athena/latest/ug/connect-with-jdbc.html).

La chaîne de connexion suivante indique la source de données par défaut*hms-catalog-name*.

```
    jdbc:awsathena://AwsRegion=us-east-1;S3OutputLocation=s3://amzn-s3-demo-bucket/lambda/results/;Workgroup=AmazonAthenaPreviewFunctionality;Catalog=hms-catalog-name;
```

L'image suivante illustre un URL de connexion JDBC configuré dans SQL Workbench.

![\[Configurer une URL de connexion JDBC dans SQL Workbench.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/datastores-hive-default-catalog-jdbc-1.jpg)


# Utilisation des vues Hive
<a name="hive-views"></a>

Vous pouvez utiliser Athena pour interroger les vues existantes dans vos métastores Hive externes. Athena traduit vos vues pour vous on-the-fly lors de l'exécution sans modifier la vue d'origine ni enregistrer la traduction.

Par exemple, supposons que vous disposez d'une vue Hive comme la suivante qui utilise une syntaxe non prise en charge par Athena comme `LATERAL VIEW explode()` :

```
CREATE VIEW team_view AS 
SELECT team, score 
FROM matches 
LATERAL VIEW explode(scores) m AS score
```

Athena traduit la chaîne de requête de la vue Hive en une instruction semblable à la suivante qu'Athena peut exécuter :

```
SELECT team, score
FROM matches
CROSS JOIN UNNEST(scores) AS m (score)
```

Pour plus d'informations sur la connexion d'un métastore Hive externe à Athena, consultez [Utilisation d’un metastore Hive externe](connect-to-data-source-hive.md).

## Considérations et restrictions
<a name="hive-views-considerations-and-limitations"></a>

Lorsque vous interrogez les vues Hive d'Athena, tenez compte des points suivants :
+ Athena ne prend pas en charge la création de vues Hive. Vous pouvez créer des vues Hive dans votre métastore Hive externe, que vous pouvez ensuite interroger depuis Athena.
+ Athena ne prend pas en charge les vues personnalisées UDFs pour Hive.
+ En raison d'un problème connu dans la console Athena, les vues Hive apparaissent sous la liste des tables au lieu de la liste des vues.
+ Bien que le processus de traduction soit automatique, certaines fonctions Hive ne sont pas prises en charge pour les vues Hive ou nécessitent un traitement spécial. Pour plus d'informations, consultez la section suivante.

## Limitations du support de la fonction Hive
<a name="hive-views-function-limitations"></a>

Cette section met en évidence les fonctions Hive qu'Athena ne prend pas en charge pour les vues Hive ou qui nécessitent un traitement spécial. Actuellement, étant donné qu'Athena prend principalement en charge les fonctions de Hive 2.2.0, les fonctions disponibles uniquement dans les versions supérieures (telles que Hive 4.0.0) ne sont pas disponibles. Pour obtenir la liste complète des fonctions Hive, consultez les [fonctions définies par l'utilisateur LanguageManual Hive](https://cwiki.apache.org/confluence/display/hive/languagemanual+udf).

### Fonctions d’agrégation
<a name="hive-views-aggregate-functions"></a>

#### Fonctions d'agrégation qui nécessitent un traitement spécial
<a name="hive-views-aggregate-functions-special-handling"></a>

La fonction d'agrégation suivante pour les vues Hive nécessite un traitement spécial.
+ **Avg**– Au lieu de `avg(INT i)`, utilisez `avg(CAST(i AS DOUBLE))`.

#### Fonctions d'agrégation non prises en charge
<a name="hive-views-aggregate-functions-not-supported"></a>

Les fonctions d'agrégation Hive suivantes ne sont pas prises en charge dans les vues Athena pour Hive.

```
covar_pop
histogram_numeric
ntile
percentile
percentile_approx
```

Les fonctions de régression telles que `regr_count`, `regr_r2`, et `regr_sxx` ne sont pas prises en charge dans les vues Athena pour Hive.

### Fonctions de date non prises en charge
<a name="hive-views-date-functions-not-supported"></a>

Les fonctions de date Hive suivantes ne sont pas prises en charge dans les vues Athena pour Hive.

```
date_format(date/timestamp/string ts, string fmt)
day(string date)
dayofmonth(date)
extract(field FROM source)
hour(string date)
minute(string date)
month(string date)
quarter(date/timestamp/string)
second(string date)
weekofyear(string date)
year(string date)
```

### Fonctions de masquage non prises en charge
<a name="hive-views-masking-functions-not-supported"></a>

Les fonctions de masquage Hive telles que `mask()` et `mask_first_n()` ne sont pas pris en charge dans les vues Athena pour Hive.

### Fonctions diverses
<a name="hive-views-miscellaneous-functions"></a>

#### Fonctions diverses qui nécessitent un traitement spécial
<a name="hive-views-supported-miscellaneous-functions-special-handling"></a>

Les fonctions diverses suivantes pour les vues Hive nécessitent un traitement spécial.
+ **md5** – Athena prend en charge `md5(binary)`, mais pas `md5(varchar)`.
+ **Explose** – Athena prend en charge `explode` lorsqu'il est utilisé dans la syntaxe suivante :

  ```
  LATERAL VIEW [OUTER] EXPLODE(<argument>)
  ```
+ **Posexplose** – Athena prend en charge `posexplode` lorsqu'il est utilisé dans la syntaxe suivante :

  ```
  LATERAL VIEW [OUTER] POSEXPLODE(<argument>)           
  ```

  Dans la sortie `(pos, val)`, Athena traite la colonne `pos` comme `BIGINT`. Pour cette raison, vous devrez peut-être convertir la colonne `pos` en `BIGINT` pour éviter une vue obsolète. L'exemple suivant illustre cette technique.

  ```
  SELECT CAST(c AS BIGINT) AS c_bigint, d 
  FROM table LATERAL VIEW POSEXPLODE(<argument>) t AS c, d
  ```

#### Fonctions diverses non prises en charge
<a name="hive-views-unsupported-miscellaneous-functions-not-supported"></a>

Les fonctions Hive suivantes ne sont pas prises en charge dans les vues Athena pour Hive.

```
aes_decrypt
aes_encrypt
current_database
current_user
inline
java_method
logged_in_user
reflect
sha/sha1/sha2
stack
version
```

### Opérateurs
<a name="hive-views-operators"></a>

#### Opérateurs nécessitant un traitement spécial
<a name="hive-views-operators-special-handling"></a>

Les opérateurs suivants pour les vues Hive nécessitent un traitement spécial.
+ **Opérateur Mod (%)** – Parce que le type `DOUBLE` convertit implicitement en `DECIMAL(x,y)`, la syntaxe suivante peut entraîner un message d'erreur View is stale (La vue est obsolète) :

  ```
  a_double % 1.0 AS column
  ```

  Pour résoudre ce problème, utilisez `CAST`, comme dans l'exemple suivant.

  ```
  CAST(a_double % 1.0 as DOUBLE) AS column
  ```
+ **Opérateur de division (/)** – Dans Hive, `int` divisé par `int` produit un `double`. Dans Athena, la même opération produit un `int` tronqué.

#### Opérateurs non pris en charge
<a name="hive-views-operators-not-supported"></a>

Athena ne prend pas en charge les opérateurs suivants pour les vues Hive.

**\$1A** – au niveau du bit `NOT`

**A ^ b** – au niveau du bit `XOR`

**A & b** – au niveau du bit `AND`

**A \$1 b** – au niveau du bit `OR`

**A <=> b** – renvoie le même résultat que l'opérateur égal (`=`) pour opérandes non nuls. Renvoie `TRUE` si les deux sont `NULL`, `FALSE` si l'un d'eux est `NULL`.

### Fonctions de chaîne
<a name="hive-views-string-functions"></a>

#### Fonctions de chaîne qui nécessitent un traitement spécial
<a name="hive-views-string-functions-special-handling"></a>

Les fonctions de chaîne Hive suivantes pour les vues Hive nécessitent un traitement spécial.
+ **chr(bigint\$1double a)** – Hive autorise des arguments négatifs ; pas Athena.
+ **instr(string str, string substr)** – Parce que le mappage d'Athena pour la fonction `instr` renvoie `BIGINT` et non `INT`, utilisez la syntaxe suivante :

  ```
  CAST(instr(string str, string substr) as INT)         
  ```

  Sans cette étape, la vue sera considérée comme obsolète.
+ **length(string a)** – Parce que le mappage d'Athena pour la fonction `length` renvoie `BIGINT` et non `INT`, utilisez la syntaxe suivante pour que la vue ne soit pas considérée comme obsolète :

  ```
  CAST(length(string str) as INT)
  ```

#### Fonctions de chaîne non prises en charge
<a name="hive-views-string-functions-not-supported"></a>

Les fonctions de chaîne Hive suivantes ne sont pas prises en charge dans les vues Athena pour Hive.

```
ascii(string str)
character_length(string str)
decode(binary bin, string charset)
encode(string src, string charset)
elt(N int,str1 string,str2 string,str3 string,...)
field(val T,val1 T,val2 T,val3 T,...)
find_in_set(string str, string strList)
initcap(string A)
levenshtein(string A, string B)
locate(string substr, string str[, int pos])
octet_length(string str)
parse_url(string urlString, string partToExtract [, string keyToExtract])
printf(String format, Obj... args)
quote(String text)
regexp_extract(string subject, string pattern, int index)
repeat(string str, int n)
sentences(string str, string lang, string locale)
soundex(string A)
space(int n)
str_to_map(text[, delimiter1, delimiter2])
substring_index(string A, string delim, int count)
```

### XPath fonctions non prises en charge
<a name="hive-views-xpath-functions-not-supported"></a>

Les XPath fonctions Hive sont similaires à `xpath``xpath_short`, et ne `xpath_int` sont pas prises en charge dans les vues Athena for Hive.

## Résolution des problèmes
<a name="hive-views-troubleshooting"></a>

Lorsque vous utilisez les vues Hive dans Athena, vous pouvez rencontrer les problèmes suivants :
+ ***<view name>*La vue est périmée** — Ce message indique généralement une incompatibilité de type entre la vue dans Hive et Athena. Si la même fonction présente dans la documentation des [fonctions et opérateurs [Hive LanguageManual UDF](https://cwiki.apache.org/confluence/display/hive/languagemanual+udf) et Presto](https://prestodb.io/docs/current/functions.html) possède des signatures différentes, essayez de convertir le type de données incompatible.
+ **Fonction non enregistrée** – Athena ne prend pas actuellement en charge cette fonction. Pour obtenir des détails, consultez les informations plus haut dans ce document.

# Utilisez les AWS CLI métastores with Hive
<a name="datastores-hive-cli"></a>

Vous pouvez utiliser les commandes CLI `aws athena` pour gérer les catalogues de données de métastore Hive que vous utilisez avec Athena. Une fois que vous avez défini un ou plusieurs catalogues à utiliser avec Athena, vous pouvez les référencer dans vos commandes DDL et DML `aws athena`.

## Utilisation du AWS CLI pour gérer les catalogues de métastores Hive
<a name="datastores-hive-cli-manage-hive-catalogs"></a>

### Enregistrement d'un catalogue : Create-data-catalog
<a name="datastores-hive-cli-registering-a-catalog"></a>

Pour enregistrer un catalogue de données, utilisez la commande `create-data-catalog`. Utilisez le paramètre `name` pour spécifier le nom que vous souhaitez utiliser pour le catalogue. Passage de l'ARN de la fonction Lambda à l'option `metadata-function` de l'argument `parameters`. Pour créer des identifications pour le nouveau catalogue, utilisez le paramètre `tags` avec une ou plusieurs paires d'arguments `Key=key,Value=value` séparées par des espaces.

L'exemple suivant enregistre le catalogue de métastore Hive nommé `hms-catalog-1`. La commande a été formatée pour être lisible.

```
$ aws athena create-data-catalog 
 --name "hms-catalog-1" 
 --type "HIVE"
 --description "Hive Catalog 1"
 --parameters "metadata-function=arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-v3,sdk-version=1.0" 
 --tags Key=MyKey,Value=MyValue
 --region us-east-1
```

### Afficher les détails du catalogue : Get-data-catalog
<a name="datastores-hive-cli-showing-details-of-a-catalog"></a>

Pour afficher les détails d'un catalogue, passez le nom du catalogue à la commande `get-data-catalog`, comme dans l'exemple suivant.

```
$ aws athena get-data-catalog --name "hms-catalog-1" --region us-east-1
```

L'exemple de résultat suivant est au format JSON.

```
{
    "DataCatalog": {
        "Name": "hms-catalog-1",
        "Description": "Hive Catalog 1",
        "Type": "HIVE",
        "Parameters": {
            "metadata-function": "arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-v3",
            "sdk-version": "1.0"
        }
    }
}
```

### Liste des catalogues enregistrés : List-data-catalogs
<a name="datastores-hive-cli-listing-registered-catalogs"></a>

Pour répertorier les catalogues enregistrés, utilisez la commande `list-data-catalogs` et spécifiez éventuellement une région, comme dans l'exemple suivant. Les catalogues répertoriés incluent toujours AWS Glue.

```
$ aws athena list-data-catalogs --region us-east-1
```

L'exemple de résultat suivant est au format JSON.

```
{
    "DataCatalogs": [
        {
            "CatalogName": "AwsDataCatalog",
            "Type": "GLUE"
        },
        {
            "CatalogName": "hms-catalog-1",
            "Type": "HIVE",
            "Parameters": {
                "metadata-function": "arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-v3",
                "sdk-version": "1.0"
            }
        }
    ]
}
```

### Mettre à jour un catalogue : Update-data-catalog
<a name="datastores-hive-cli-updating-a-catalog"></a>

Pour mettre à jour un catalogue de données, utilisez la commande `update-data-catalog`, comme dans l'exemple suivant. La commande a été formatée pour être lisible.

```
$ aws athena update-data-catalog 
 --name "hms-catalog-1" 
 --type "HIVE"
 --description "My New Hive Catalog Description" 
 --parameters "metadata-function=arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new,sdk-version=1.0" 
 --region us-east-1
```

### Supprimer un catalogue : Delete-data-catalog
<a name="datastores-hive-cli-deleting-a-catalog"></a>

Pour supprimer un catalogue de données, utilisez la commande `delete-data-catalog`, comme dans l'exemple suivant.

```
$ aws athena delete-data-catalog --name "hms-catalog-1" --region us-east-1
```

### Afficher les détails de la base de données : Get-database
<a name="datastores-hive-cli-showing-details-of-a-database"></a>

Pour afficher les détails d'une base de données, passez le nom du catalogue et de la base de données à la commande `get-database`, comme dans l'exemple suivant.

```
$ aws athena get-database --catalog-name hms-catalog-1 --database-name mydb
```

L'exemple de résultat suivant est au format JSON.

```
{
    "Database": {
        "Name": "mydb",
        "Description": "My database",
        "Parameters": {
            "CreatedBy": "Athena",
            "EXTERNAL": "TRUE"
        }
    }
}
```

### Liste des bases de données dans un catalogue : List-databases
<a name="datastores-hive-cli-listing-databases"></a>

Pour répertorier les bases de données dans un catalogue, utilisez la commande `list-databases` et spécifiez éventuellement une région, comme dans l'exemple suivant.

```
$ aws athena list-databases --catalog-name AwsDataCatalog --region us-west-2
```

L'exemple de résultat suivant est au format JSON.

```
{
    "DatabaseList": [
        {
            "Name": "default"
        },
        {
            "Name": "mycrawlerdatabase"
        },
        {
            "Name": "mydatabase"
        },
        {
            "Name": "sampledb",
            "Description": "Sample database",
            "Parameters": {
                "CreatedBy": "Athena",
                "EXTERNAL": "TRUE"
            }
        },
        {
            "Name": "tpch100"
        }
    ]
}
```

### Affichage des détails du tableau : Get-table-metadata
<a name="datastores-hive-cli-showing-details-of-a-table"></a>

Pour afficher les métadonnées d'une table, y compris les noms de colonnes et les types de données, transmettez le nom du catalogue, de la base de données et de la table à la commande `get-table-metadata`, comme dans l'exemple suivant.

```
$ aws athena get-table-metadata --catalog-name AwsDataCatalog --database-name mydb --table-name cityuseragent
```

L'exemple de résultat suivant est au format JSON.

```
{
    "TableMetadata": {
        "Name": "cityuseragent",
            "CreateTime": 1586451276.0,
            "LastAccessTime": 0.0,
            "TableType": "EXTERNAL_TABLE",
            "Columns": [
                {
                    "Name": "city",
                    "Type": "string"
                },
                {
                    "Name": "useragent1",
                    "Type": "string"
                }
            ],
            "PartitionKeys": [],
            "Parameters": {
                "COLUMN_STATS_ACCURATE": "false",
                "EXTERNAL": "TRUE",
                "inputformat": "org.apache.hadoop.mapred.TextInputFormat",
                "last_modified_by": "hadoop",
                "last_modified_time": "1586454879",
                "location": "s3://amzn-s3-demo-bucket/",
                "numFiles": "1",
                "numRows": "-1",
                "outputformat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
                "rawDataSize": "-1",
                "serde.param.serialization.format": "1",
                "serde.serialization.lib": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
                "totalSize": "61"
            }
        }
}
```

### Affichage des métadonnées pour toutes les tables d'une base de données : List-table-metadata
<a name="datastores-hive-cli-showing-all-table-metadata"></a>

Pour afficher les métadonnées de toutes les tables d'une base de données, transmettez le nom du catalogue et celui de la base de données à la commande `list-table-metadata`. La commande `list-table-metadata` est similaire à la commande `get-table-metadata`, sauf que vous ne spécifiez pas de nom de table. Pour limiter le nombre de résultats, vous pouvez utiliser l'option `--max-results`, comme dans l'exemple suivant. 

```
$ aws athena list-table-metadata --catalog-name AwsDataCatalog --database-name sampledb --region us-east-1 --max-results 2
```

L'exemple de résultat suivant est au format JSON.

```
{
    "TableMetadataList": [
        {
            "Name": "cityuseragent",
            "CreateTime": 1586451276.0,
            "LastAccessTime": 0.0,
            "TableType": "EXTERNAL_TABLE",
            "Columns": [
                {
                    "Name": "city",
                    "Type": "string"
                },
                {
                    "Name": "useragent1",
                    "Type": "string"
                }
            ],
            "PartitionKeys": [],
            "Parameters": {
                "COLUMN_STATS_ACCURATE": "false",
                "EXTERNAL": "TRUE",
                "inputformat": "org.apache.hadoop.mapred.TextInputFormat",
                "last_modified_by": "hadoop",
                "last_modified_time": "1586454879",
                "location": "s3://amzn-s3-demo-bucket/",
                "numFiles": "1",
                "numRows": "-1",
                "outputformat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
                "rawDataSize": "-1",
                "serde.param.serialization.format": "1",
                "serde.serialization.lib": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
                "totalSize": "61"
            }
        },
        {
            "Name": "clearinghouse_data",
            "CreateTime": 1589255544.0,
            "LastAccessTime": 0.0,
            "TableType": "EXTERNAL_TABLE",
            "Columns": [
                {
                    "Name": "location",
                    "Type": "string"
                },
                {
                    "Name": "stock_count",
                    "Type": "int"
                },
                {
                    "Name": "quantity_shipped",
                    "Type": "int"
                }
            ],
            "PartitionKeys": [],
            "Parameters": {
                "EXTERNAL": "TRUE",
                "inputformat": "org.apache.hadoop.mapred.TextInputFormat",
                "location": "s3://amzn-s3-demo-bucket/",
                "outputformat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
                "serde.param.serialization.format": "1",
                "serde.serialization.lib": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
                "transient_lastDdlTime": "1589255544"
            }
        }
    ],
    "NextToken": "eyJsYXN0RXZhbHVhdGVkS2V5Ijp7IkhBU0hfS0VZIjp7InMiOiJ0Ljk0YWZjYjk1MjJjNTQ1YmU4Y2I5OWE5NTg0MjFjYTYzIn0sIlJBTkdFX0tFWSI6eyJzIjoiY2xlYXJpbmdob3VzZV9kYXRhIn19LCJleHBpcmF0aW9uIjp7InNlY29uZHMiOjE1ODkzNDIwMjIsIm5hbm9zIjo2NTUwMDAwMDB9fQ=="
}
```

## Exécution d'instructions DDL et DML
<a name="datastores-hive-cli-running-ddl-and-dml"></a>

Lorsque vous utilisez les instructions DDL et DML AWS CLI pour exécuter, vous pouvez transmettre le nom du catalogue de métastores Hive de deux manières :
+ Directement dans les déclarations qui le soutiennent.
+ Au paramètre `--query-execution-context` `Catalog`.

### Instructions DDL
<a name="datastores-hive-cli-ddl-statements"></a>

L'exemple suivant transmet le nom du catalogue directement dans le cadre de l'instruction `show create table` DDL. La commande a été formatée pour être lisible.

```
$ aws athena start-query-execution 
 --query-string "show create table hms-catalog-1.hms_tpch_partitioned.lineitem" 
 --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"
```

L'exemple suivant d'instruction `show create table` DDL utilise le paramètre `Catalog` de `--query-execution-context` pour transmettre le nom du catalogue de métastore Hive `hms-catalog-1`. La commande a été formatée pour être lisible.

```
$ aws athena start-query-execution 
 --query-string "show create table lineitem" 
 --query-execution-context "Catalog=hms-catalog-1,Database=hms_tpch_partitioned" 
 --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"
```

### Instructions DML
<a name="datastores-hive-cli-dml-statements"></a>

L'exemple suivant d'instruction `select` DML transmet directement le nom du catalogue dans la requête. La commande a été formatée pour être lisible.

```
$ aws athena start-query-execution
 --query-string "select * from hms-catalog-1.hms_tpch_partitioned.customer limit 100" 
 --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"
```

L'exemple suivant d'instruction `select` DML utilise le paramètre `Catalog` de `--query-execution-context` pour transmettre le nom du catalogue de métastore Hive `hms-catalog-1`. La commande a été formatée pour être lisible.

```
$ aws athena start-query-execution 
 --query-string "select * from customer limit 100" 
 --query-execution-context "Catalog=hms-catalog-1,Database=hms_tpch_partitioned" 
 --result-configuration "OutputLocation=s3://amzn-s3-demo-bucket/lambda/results"
```

# Modification du connecteur Athena pour métastore Hive externe
<a name="datastores-hive-reference-implementation"></a>

Si vous avez des exigences particulières, vous pouvez modifier le connecteur Athena pour métastore Hive externe pour votre propre usage. Athena fournit une implémentation de référence du connecteur sur GitHub .com à l'adresse. [https://github.com/awslabs/aws-athena-hive-metastore](https://github.com/awslabs/aws-athena-hive-metastore) La plupart des cas d'utilisation n'exigent pas que vous modifiiez l'implémentation de référence. Toutefois, si nécessaire, vous pouvez modifier le code source et créer les artefacts vous-même.

L'implémentation de référence est un projet [Apache Maven](https://maven.apache.org/) qui a les modules suivants :
+ `hms-service-api` – Contient les opérations d'API entre la fonction Lambda et les clients du service Athena. Ces opérations d'API sont définies dans l'interface `HiveMetaStoreService`. Comme il s'agit d'un contrat de service, vous ne devriez rien changer dans ce module.
+ `hms-lambda-handler` – Un ensemble de gestionnaires Lambda par défaut qui traitent tous les appels de l'API de métastore Hive. La classe `MetadataHandler` est le répartiteur pour tous les appels d'API. Vous n'avez pas besoin de modifier ce package.
+ `hms-lambda-func` – Exemple de fonction Lambda comportant les composants suivants.
  + `HiveMetaStoreLambdaFunc` – Exemple de fonction Lambda qui étend `MetadataHandler`.
  + `ThriftHiveMetaStoreClient` – Client Thrift qui communique avec le métastore Hive. Ce client est écrit pour Hive 2.3.0. Si vous utilisez une version différente de Hive, vous devrez peut-être mettre à jour cette classe pour vous assurer que les objets de réponse sont compatibles.
  + `ThriftHiveMetaStoreClientFactory` – Contrôle le comportement de la fonction Lambda. Par exemple, vous pouvez fournir votre propre ensemble de fournisseurs de gestionnaires en remplaçant la méthode `getHandlerProvider()`.
  + `hms.properties` – Configure la fonction Lambda. La plupart des cas nécessitent la mise à jour des deux propriétés suivantes uniquement.
    + `hive.metastore.uris` – l'URI du métastore Hive au format `thrift://<host_name>:9083`.
    + `hive.metastore.response.spill.location` : l'emplacement Amazon S3 pour stocker les objets de réponse lorsque leur taille dépasse un seuil donné (par exemple, 4 Mo). Le seuil est défini dans la propriété `hive.metastore.response.spill.threshold`. Il n'est pas recommandé de modifier la valeur par défaut.
**Note**  
Ces deux propriétés peuvent être remplacées par les [variables d'environnement Lambda](https://docs.aws.amazon.com/lambda/latest/dg/env_variables.html) `HMS_URIS` et `SPILL_LOCATION`. Utilisez ces variables au lieu de recompiler le code source de la fonction Lambda lorsque vous souhaitez utiliser la fonction avec un métastore Hive ou un emplacement de déversement différent.
+ `hms-lambda-layer` – Un projet d'assemblage Maven qui place `hms-service-api`, `hms-lambda-handler` et leurs dépendances dans un fichier `.zip`. Le fichier `.zip` est enregistré en tant que couche Lambda pour une utilisation par plusieurs fonctions Lambda.
+ `hms-lambda-rnp` – Enregistre les réponses d'une fonction Lambda, puis les utilise pour rejouer la réponse. Vous pouvez utiliser ce modèle pour simuler des réponses Lambda à des fins de test.

## Construire les artefacts vous-même
<a name="datastores-hive-reference-implementation-building-the-artifacts-yourself"></a>

Une fois le code source modifié, vous pouvez créer les artefacts vous-même et les télécharger dans un emplacement Amazon S3.

Avant de créer les artefacts, mettez à jour les propriétés `hive.metastore.uris` et `hive.metastore.response.spill.location` dans le fichier `hms.properties` du module `hms-lambda-func`.

Pour construire les artefacts, vous devez avoir Apache Maven installé et exécuter la commande `mvn install`. Cela génère le fichier `.zip` de couche dans le dossier de sortie appelé `target` dans le module `hms-lambda-layer` et le fichier `.jar` de fonction Lambda dans le module `hms-lambd-func`.

# Gestion des sources de données
<a name="data-sources-managing"></a>

Vous pouvez utiliser la page **Sources de données et catalogues** de la console Athena pour gérer les sources de données que vous créez.

**Pour afficher une source de données**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Dans le panneau de navigation, sélectionnez **Sources de données et catalogues**.

1. Dans la liste des sources de données, choisissez le nom de la source de données à afficher.
**Note**  
Les éléments de la colonne **Nom de la source de données** correspondent au résultat de l'action d'[ListDataCatalogs](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListDataCatalogs.html)API et de la commande [list-data-catalogs](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/list-data-catalogs.html)CLI.

**Pour modifier une source de données**

1. Sur la page **Sources de données et catalogues**, effectuez l’une des actions suivantes :
   + Sélectionnez le bouton près du nom du catalogue, puis choisissez **Actions**, **Edit** (Modifier). 
   + Choisissez le nom de la source de données. Ensuite, sur la page des détails, sélectionnez **Actions**, **Edit** (Modifier).

1. Sur la page **Edit** (Modifier), vous pouvez choisir une fonction Lambda différente pour la source de données, modifier la description ou ajouter des identifications personnalisées. Pour en savoir plus sur les identifications, consultez [Balisage des ressources Athena](tags.md).

1. Choisissez **Enregistrer**.

1. Pour modifier votre source de **AwsDataCatalog**données, cliquez **AwsDataCatalog**sur le lien pour ouvrir sa page de détails. Ensuite, sur la page de détails, choisissez le lien vers la AWS Glue console où vous pouvez modifier votre catalogue.

**Partage d'une source de données**  
Pour plus d'informations sur le partage des sources de données, visitez les liens suivants.
+ Pour connaître les sources de données non compatibles avec Hive et basées sur Lambda, consultez [Activation des requêtes fédérées entre comptes](xacct-fed-query-enable.md).
+ Pour AWS Glue Data Catalog nous, voir[Configuration de l'accès entre comptes aux catalogues de AWS Glue données](security-iam-cross-account-glue-catalog-access.md).

**Pour supprimer une source de données**

1. Sur la page **Sources de données et catalogues**, effectuez l’une des actions suivantes :
   + Sélectionnez le bouton à côté du nom du catalogue, puis choisissez **Actions**, **Delete** (Supprimer). 
   + Choisissez le nom de la source de données puis, sur la page de détails, choisissez **Actions**, **Delete** (Supprimer).
**Note**  
**AwsDataCatalog**Il s'agit de la source de données par défaut de votre compte et ne peut pas être supprimée.

   Soyez conscients que lorsque vous supprimez une source de données, son catalogue de données, ses tables et ses vues sont supprimés de l'éditeur de requêtes. Les requêtes enregistrées qui utilisaient la source de données supprimée ne s'exécuteront plus dans Athena.

1. Pour confirmer la suppression, saisissez le nom de la source de données, puis choisissez **Delete** (Supprimer).