Comment résoudre l'erreur « An error occurred while communicating with Amazon Athena » lorsque vous vous connectez à Amazon Athena avec un pilote JDBC/ODBC ?

Dernière mise à jour : 2021-05-05

Je rencontre des problèmes de délai d'expiration de connexion lorsque j'utilise Amazon Athena avec un pilote JDBC (Java Database Connectivity)/ODBC (Open Database Connectivity).

-ou-

Je ne parviens pas à voir les résultats de la requête Athena sur mon outil d'informatique décisionnelle.

Solution

La raison la plus fréquente de cette erreur est un problème de connexion entre l'hôte sur lequel vous avez installé le pilote JDBC/ODBC et les points de terminaison Athena ou AWS Glue.

Pour résoudre cette erreur, vérifiez la connectivité entre l'hôte que vous avez installé sur le pilote JDBC/ODBC et Athena/AWS Glue.

Connectivité à Athena

Votre hôte peut se connecter à Athena avec un point de terminaison Athena du service public ou un point de terminaison Athena privé. Pour plus d'informations sur la configuration du point de terminaison, consultez les sections Options de ligne de commande et documentation Boto3.

  • Athena utilise le port 443 pour se connecter à l'hôte.
  • L'API de streaming d'Athena utilise le port 444 pour diffuser les résultats de la requête. Lorsque vous utilisez un pilote JDBC/ODBC, Athena utilise ce port pour diffuser les résultats de la requête vers le pilote JDBC/ODBC installé sur l'hôte client. Par conséquent, vous devez débloquer ce port lorsque vous utilisez un pilote JDBC/ODBC pour vous connecter à Athena. Si ce port est bloqué, votre outil d'informatique décisionnelle peut expiré ou ne pas parvenir à afficher les résultats de la requête lorsque vous exécutez une requête.

Point de terminaison de la région publique d'Athena

Si vous utilisez un point de terminaison Athena du public service (exemple : athena.us-east-1.amazonaws.com), assurez-vous de mettre à jour le point de terminaison en fonction de la région à laquelle vous tentez de vous connecter.

  • Si vous utilisez Windows, testez la connectivité au point de terminaison public Athena à l'aide de Telnet ou de Test-netconnectionetConnection.
    Remarque : vous pouvez utiliser des commandes similaires pour tester la connectivité au port 444.
telnet athena.us-east-1.amazonaws.com 443

--ou--

Test-NetConnection -Computer_Name athena.us-east-1.amazonaws.com -Port 443
  • Si vous utilisez le système d'exploitation Linux ou MAC, exécutez une commande similaire à la suivante pour vérifier la connectivité Athena.
    Remarque : vous pouvez utiliser une commande similaire pour tester la connectivité au port 444.
nc -v athena.us-east-1.amazonaws.com 443

Point de terminaison d'un VPC d'interface privée Athena

  • Si vous utilisez un point de terminaison privé Athena au lieu du point de terminaison du service public, testez la connectivité au point de terminaison d'un VPC d'interface.
  • Si vous avez des noms d'hôtes DNS spécifiques aux points de terminaison, vérifiez la connectivité au nom d'hôte DNS spécifique au point de terminaison. Si ce n'est pas le cas, vérifiez la connectivité au nom d'hôte DNS par défaut.
    • Si vous avez activé le DNS privé pour le point de terminaison, utilisez vpce- .athena.us-east-1.vpce.amazonaws.com pour le nom d'hôte.
    • Si vous avez désactivé le DNS privé pour le point de terminaison, utilisez athena.us-east-1.amazonaws.com pour le nom d'hôte.
  • Si vous utilisez Windows, utilisez les commandes suivantes. Assurez-vous de tester la connectivité du port 444 en plus de tester le port 443.
    Remarque : utilisez Test-NetConnection pour tester la connectivité si vous rencontrez des difficultés pour exécuter la commande telnet.
    Vous pouvez utiliser ces commandes si vous avez désactivé le DNS privé pour le point de terminaison.
telnet vpce-<name>.athena.us-east-1.vpce.amazonaws.com 443

--ou--

Test-NetConnection -Computer_Name vpce-<name>.athena.us-east-1.vpce.amazonaws.com -Port 443
  • Si vous utilisez Linux/Mac, exécutez une commande similaire à la suivante pour vérifier la connectivité Athena. Si votre connexion est réussie, vous pouvez recevoir un message similaire à « Connection to athena.us-east-1.amazonaws.com port 443 [tcp/https] succeeded ».
nc -v vpce-<name>.athena.us-east-1.vpce.amazonaws.com 443
  • Utilisez les URL de connexion JDBC appropriées dans la configuration de votre outil métier en fonction de la configuration du DNS privé de votre terminal.
    • Utilisez la chaîne de connexion suivante si vous avez désactivé le DNS privé : jdbc:awsathena://vpce-.athena.us-east-1.vpce.amazonaws.com:443
    • Utilisez la chaîne de connexion suivante si vous avez activé le DNS privé : jdbc:awsathena://athena.us-east-1.amazonaws.com:443
  • Assurez-vous que le groupe de sécurité attaché à votre point de terminaison de VPC autorise le trafic à partir de l'hôte sur lequel vous avez installé le pilote JDBC/ODBC.
  • Assurez-vous que le port 444 n'est pas bloqué. Si vous utilisez un point de terminaison AWS PrivateLink pour vous connecter à Athena, assurez-vous que le groupe de sécurité attaché au point de terminaison AWS PrivateLink est ouvert au trafic entrant sur le port 444. Athena utilise le port 444 pour diffuser les résultats des requêtes. Si le port 444 est bloqué, les résultats ne sont pas retransmis en continu sur votre hôte client. Dans de telles situations, vous pouvez recevoir un message d'erreur similaire à « [Simba][AthenaJDBC](100123) An error has occurred. Exception during column initialization ». L'outil d'informatique décisionnelle peut cesser de répondre et ne peut afficher les résultats de la requête.

Connectivité à AWS Glue

Assurez-vous de vérifier la connectivité entre l'hôte que vous avez installé sur le pilote JDBC/ODBC et AWS Glue. Votre hôte peut se connecter à AWS Glue avec un point de terminaison AWS Glue du service public ou un point de terminaison AWS Glue privé. Pour plus d'informations, consultez la section Points de terminaison du service AWS Glue. Athena utilise le catalogue de données AWS Glue pour stocker et récupérer les métadonnées de table des données Amazon S3 de votre compte. Par conséquent, votre pilote JDBC/ODBC doit se connecter au catalogue AWS Glue pour obtenir les informations de métadonnées de table.

Si vous utilisez un point de terminaison AWS Glue du service public, testez la connectivité à l'aide d'une commande similaire à la suivante :

Remarque : vous devrez peut-être utiliser Test-NetConnection ou nc pour vérifier la connectivité des ports en fonction de votre système d'exploitation.

telnet glue.us-east-1.amazonaws.com 443

Si vous utilisez un point de terminaison d'un VPC d'interface AWS Glue, testez la connectivité à l'aide d'une commande similaire à la suivante :

Remarque : utilisez la commande suivante si vous avez désactivé le DNS privé pour le point de terminaison :

telnet vpce-<name>.glue.us-east-1.vpce.amazonaws.com 443

Utilisez la commande suivante si vous avez activé le DNS privé pour le point de terminaison :

telnet glue.us-east-1.amazonaws.com 443

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?