DataSunrise Obtient le Statut Compétence DevOps AWS dans AWS DevSecOps et Surveillance, Journalisation, Performance

Démarrage avec le pilote JDBC d’Athena pour des requêtes de données fluides

Démarrage avec le pilote JDBC d’Athena pour des requêtes de données fluides

Êtes-vous un développeur Java cherchant à vous connecter à Amazon Athena depuis vos applications ? Le pilote JDBC d’Athena facilite l’interrogation des données dans Amazon S3 en utilisant le SQL standard.

Cet article va expliquer le pilote JDBC d’Athena. Il montrera comment l’utiliser avec des exemples de code. Il abordera également les fonctionnalités de sécurité qu’il offre. À la fin, vous disposerez d’une base solide pour utiliser Athena avec Java.

Qu’est-ce que le pilote JDBC d’Athena ?

Le pilote JDBC d’Athena est un pilote de type 4. Les applications Java l’utilisent pour se connecter à la source de données Athena. L’API JDBC établit cette connexion. Elle convertit les appels de méthodes JDBC en requêtes HTTP compréhensibles par Athena.

L’utilisation de l’API JDBC pour interroger Athena présente plusieurs avantages :

  • Elle masque les détails de la communication HTTP sous-jacente
  • Elle permet d’utiliser du code JDBC familier et du SQL pour travailler avec Athena
  • Elle permet d’intégrer Athena dans n’importe quelle application ou outil Java supportant JDBC

AWS fournit le pilote sous la forme d’un fichier JAR autonome. Pour l’utiliser, il suffit d’inclure le fichier JAR dans le classpath de votre application.

Se connecter à Athena

Pour se connecter à Athena en utilisant le pilote JDBC, vous devez construire une chaîne de connexion JDBC avec le format suivant :

jdbc:awsathena://AwsRegion=[Région];S3OutputLocation=[Sortie];[Propriété1]=[Valeur1];[Propriété2]=[Valeur2];...

Les composants clés sont :

  • La région AWS qui héberge votre instance d’Athena.
  • S3OutputLocation – L’emplacement S3 où Athena doit stocker les résultats des requêtes
  • Des propriétés supplémentaires optionnelles pour la configuration

Voici un exemple d’URL JDBC qui se connecte à Athena dans la région us-west-2. Le système enregistre les résultats dans un bucket S3 dédié :

jdbc:awsathena://AwsRegion=us-west-2;S3OutputLocation=s3://my-athena-results/output;

Pour établir réellement la connexion dans le code Java, utilisez la classe DriverManager :

String url = "jdbc:awsathena://AwsRegion=us-west-2;S3OutputLocation=s3://my-athena-results/output";
Connection conn = DriverManager.getConnection(url);

Cela crée un objet Connection que vous pouvez ensuite utiliser pour exécuter des requêtes.

Authentification avec Athena

Pour se connecter, le pilote JDBC a besoin d’identifiants AWS pour s’authentifier auprès d’Athena. Il existe plusieurs moyens de fournir ces identifiants :

  1. Variables d’environnement – Définir les variables d’environnement AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY.
  2. Propriétés système Java – Définir les propriétés système aws.accessKeyId et aws.secretKey.
  3. Fichier d’identifiants AWS – Placer la clé d’accès et le secret dans le fichier ~/.aws/credentials.
  4. Profil d’instance AWS – Si vous exécutez sur EC2, attribuez un rôle IAM à l’instance. Le pilote récupérera automatiquement des identifiants temporaires.

Le pilote JDBC recherche les identifiants dans cet ordre. Vous devriez utiliser un profil d’instance ou le fichier d’identifiants pour éviter d’intégrer en dur des clés sensibles.

Requêtes de base

Une fois que vous disposez d’une connexion, vous pouvez exécuter des requêtes SQL dessus. Utilisez la méthode createStatement pour créer un objet Statement, puis appelez executeQuery avec votre requête SQL :

Statement stmt = conn.createStatement();
String sql = "SELECT * FROM my_table LIMIT 10";
ResultSet rs = stmt.executeQuery(sql);

Cela envoie la requête à Athena, attend qu’elle se termine et renvoie les résultats dans un ResultSet. Vous pouvez ensuite parcourir les lignes et accéder aux valeurs des colonnes :

while (rs.next()) {
    String col1 = rs.getString(1);
    int col2 = rs.getInt(2);
    // ...
}

N’oubliez pas qu’Athena interroge des données stockées dans S3. Avant d’exécuter une requête, vous devez créer une table externe qui cartographie les données présentes dans S3 :

CREATE EXTERNAL TABLE my_table (
  col1 STRING,
  col2 INT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 's3://my-data-bucket/input/';

Cela crée une table my_table avec deux colonnes soutenues par un fichier CSV dans S3. Avec la table en place, vous pouvez l’interroger via JDBC comme indiqué ci-dessus.

Requêtes paramétrées

Pour les requêtes acceptant des paramètres, utilisez un PreparedStatement au lieu d’un Statement classique. Construisez le SQL avec des espaces réservés ? puis liez les valeurs :

String sql = "SELECT * FROM my_table WHERE col1 = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "foo");
ResultSet rs = pstmt.executeQuery();

Cela lie la valeur “foo” au premier espace réservé ?. L’utilisation d’un PreparedStatement présente plusieurs avantages :

  • Elle évite l’injection SQL en envoyant les paramètres séparément de la requête.
  • Athena peut mettre en cache et réutiliser le plan de requête
  • Vous pouvez exécuter la même requête plusieurs fois avec différentes valeurs de paramètres

Fonctionnalités de sécurité

Le pilote JDBC d’Athena prend en charge plusieurs fonctionnalités et configurations liées à la sécurité :

Chiffrement

Par défaut, le pilote se connecte à Athena via HTTPS pour assurer le chiffrement en transit. Toutes les données échangées entre l’application et Athena sont chiffrées à l’aide de TLS.

Contrôle d’accès

Athena respecte les autorisations IAM attachées aux identifiants AWS utilisés par le pilote JDBC. Vous pouvez restreindre les données auxquelles un utilisateur peut accéder en accordant des autorisations SELECT sur des bases de données et des tables spécifiques.

Par exemple, cette politique permet d’interroger uniquement les tables de la base de données « my_database » :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:GetQueryResults",
                "athena:StopQueryExecution"
            ],
            "Resource": [
                "arn:aws:athena:us-west-2:123456789012:workgroup/primary"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetTable",
                "glue:GetPartitions",
                "glue:GetPartition"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:123456789012:catalog",
                "arn:aws:glue:us-west-2:123456789012:database/my_database",
                "arn:aws:glue:us-west-2:123456789012:table/my_database/*"
            ]
        }
    ]
}

Attachez cette politique à l’utilisateur ou au rôle IAM utilisé par la connexion JDBC pour appliquer le contrôle d’accès.

Chiffrement S3

Le système stocke les résultats des requêtes à l’emplacement S3 spécifié dans l’URL JDBC. Pour protéger ces données au repos, vous pouvez configurer le bucket S3 pour utiliser le chiffrement.

Le pilote JDBC d’Athena prend en charge de manière transparente la lecture et l’écriture dans des buckets S3 chiffrés.

Conclusion

Le pilote JDBC d’Athena aide les applications Java à exécuter des requêtes SQL sur les données stockées dans Amazon S3. Il prend en charge diverses méthodes d’authentification et fonctionnalités de sécurité pour protéger les données.

Pour en savoir plus, consultez la documentation officielle du pilote JDBC d’Athena.

À propos de DataSunrise

Si vous avez besoin de fonctionnalités supplémentaires en matière de sécurité, de surveillance, d’audit et de conformité pour Athena, envisagez DataSunrise Database Security. DataSunrise offre des outils pour contrôler le masquage de données, auditer les requêtes en temps réel, surveiller et garantir la conformité avec les réglementations.

Pour découvrir DataSunrise en direct et obtenir une licence d’essai gratuite, contactez notre équipe pour planifier une démo en ligne. Nous vous montrerons comment DataSunrise peut améliorer la sécurité d’Athena.

Suivant

Configuration DataSunrise sur Azure Cloud avec OpenTOFU : Un guide étape par étape

Configuration DataSunrise sur Azure Cloud avec OpenTOFU : Un guide étape par étape

En savoir plus

Besoin de l'aide de notre équipe de support ?

Nos experts seront ravis de répondre à vos questions.

Informations générales :
[email protected]
Service clientèle et support technique :
support.datasunrise.com
Demandes de partenariat et d'alliance :
[email protected]