Pourquoi le test de connexion AWS Glue a-t-il échoué ?

Date de la dernière mise à jour : 27/07/2021

Je souhaite résoudre l'échec d'une connexion test dans AWS Glue.

Résolution

Vérifiez les problèmes courants suivants.

Problèmes de mise en réseau

  • Vérifier la connectivité aux magasins de données JDBC : AWS Glue crée des interfaces réseau Elastic avec des adresses IP privées dans le sous-réseau de la connexion. Dès lors, AWS Glue ne peut pas utiliser l'Internet public pour se connecter au magasin de données.
    • Si le magasin de données se trouve en dehors du Virtual Private Cloud Amazon (Amazon VPC), la table de routage du sous-réseau doit alors comporter une route vers une passerelle NAT au sein d'un sous-réseau public. Si ce n'est pas le cas, la connexion expire.
      Remarque : Le magasin de données en dehors d'Amazon VPC peut être un magasin de données sur site ou une ressource Amazon Relational Database Service (Amazon RDS) avec un nom d'hôte public.
    • Si le magasin de données se trouve dans l'Amazon VPC, vérifiez que les groupes de sécurité et la liste de contrôle d'accès réseau (ACL réseau) de la connexion autorisent le trafic vers le magasin de données.
  • Vérifier les groupes de sécurité de la connexion : l'un des groupes de sécurité associés à la connexion doit avoir une règle entrante avec référence circulaire ouverte à tous les ports TCP. De même, l'un des groupes de sécurité doit être ouvert à tout le trafic sortant. Vous pouvez utiliser une règle avec référence circulaire pour limiter le trafic sortant vers l'Amazon VPC. Pour plus d'informations, consultez Configuration d'un VPC pour se connecter aux magasins de données JDBC.
  • Vérifier le nombre d'adresses IP libres : le nombre d'adresses IP libres dans le sous-réseau doit être supérieur au nombre d'unités de traitement de données (DPU) spécifié pour la tâche. Cela permet à AWS Glue de créer des interfaces réseau Elastic dans le sous-réseau spécifié.
  • Confirmer que le sous-réseau peut accéder à Amazon Simple Storage Service (Amazon S3) : fournissez un point de terminaison Amazon S3 ou fournissez une route vers une passerelle NAT dans la table de routage de votre sous-réseau. Pour plus d'informations, consultez Erreur : impossible de trouver le point de terminaison S3 ou la passerelle NAT du subnetId dans le VPC.
  • Vérifier si vous disposez d'un point de terminaison de VPC AWS KMS : si votre catalogue de données AWS Glue chiffre les connexions, assurez-vous que vous disposez d'une route vers AWS KMS. Par exemple, cette route peut être un point de terminaison d'interface du VPC AWS KMS. Pour plus d'informations, consultez Connexion à AWS KMS via un point de terminaison de VPC.
  • Vérifier si la connexion AWS Glue et la base de données utilisent différents VPC : si votre test de connexion échoue en renvoyant une erreur de délai d'expiration lorsque les conditions suivantes sont remplies :
    La base de données n'est pas accessible publiquement.
    La tâche AWS Glue est associée à une connexion qui utilise un VPC différent sans appairage de VPC.
    Ce problème peut être résolu en créant un VPC AWS Glue dédié et en configurant les appairages de VPC correspondants avec vos autres VPC si nécessaire. Pour plus d'informations, consultez Se connecter à et exécuter des tâches ETL sur plusieurs VPC à l'aide d'un VPC AWS Glue dédié.
  • Vérifiez la connectivité au magasin de données local : si vous testez la connexion AWS Glue à une base de données sur site, il est recommandé de vous connecter à une instance Amazon Elastic Compute Cloud (Amazon EC2) dans les même VPC, sous-réseau et groupe de sécurité que ceux utilisés pour la connexion. Ensuite, exécutez les tests suivants à partir de l'instance Amazon EC2. Si vous rencontrez des problèmes lors de l'exécution des commandes, vérifiez votre VPN et la configuration du VPC, du sous-réseau, du groupe de sécurité et des listes de contrôle d'accès (ACL) réseau. Assurez-vous que ces configurations ne bloquent pas la connectivité du VPC à votre base de données sur site ou ne créent pas de problèmes de pare-feu à partir de la base de données locale. Pour plus d'informations, consultez Comment accéder à des magasins de données sur site et les analyser à l'aide d'AWS Glue.
$ telnet hostname port
$ nc -zv hostname port
$ dig hostname
$ traceroute -AnT -p IP port

Problèmes d'authentification

  • Choisissez le bon rôle IAM : le rôle AWS Identity and Access Management (IAM) que vous sélectionnez pour la connexion de test doit avoir une relation d'approbation avec AWS Glue. Pour ce faire, vous pouvez choisir un rôle lié à un service auquel la stratégie AWSGlueServiceRole est attachée.
  • Vérifier le rôle IAM de la connexion : si le mot de passe de connexion est chiffré avec AWS Key Management Service (AWS KMS), confirmez que le rôle IAM de la connexion autorise l'action kms:Decrypt pour la clé. Pour plus d'informations, consultez Configuration du chiffrement dans AWS Glue.
  • Vérifiez les journaux de connexion : les journaux des connexions test sont situés dans Amazon CloudWatch Logs sous /aws-glue/testconnection/output. Recherchez les messages d'erreur dans les journaux.
  • Vérifiez les paramètres SSL : si le magasin de données nécessite une connectivité SSL pour l'utilisateur spécifié, veillez à sélectionner « Require SSL connection » (Connexion SSL obligatoire) lorsque vous créez la connexion sur la console. Évitez de sélectionner pas cette option si le magasin de données ne prend pas en charge SSL.
  • Vérifier le nom d'utilisateur et le mot de passe JDBC : l'utilisateur qui accède au magasin de données JDBC doit disposer d'autorisations d'accès suffisantes. Par exemple, les analyseurs AWS Glue ont besoin des autorisations « SELECT » (SÉLECTIONNER). Une tâche qui écrit dans un magasin de données a besoin des autorisations « INSERT » (INSÉRER), « UPDATE » (METTRE À JOUR) et « DELETE » (EFFACER).
  • Vérifier la syntaxe de l'URL JDBC : les exigences de syntaxe varient en fonction du moteur de base de données. Pour plus d'informations, consultez Ajout d'une connexion AWS Glue et passez en revue les exemples sous URL JDBC.

Résolution de problèmes supplémentaires

  • Vérifier le type de connexion :
    • Veillez à choisir le type de connexion qui convient. Lorsque vous choisissez Amazon RDS ou Amazon Redshift comme « Connection type » (Type de connexion), AWS Glue renseigne automatiquement le VPC, le sous-réseau et le groupe de sécurité.
    • Si vous devez vous connecter à MySQL, sachez que la fonctionnalité de test de connexion ne fonctionne que pour les versions MySQL 5.x. La version 8 de MySQL n'est pas compatible avec le pilote JDBC intégré à AWS Glue. Si vous testez la connexion avec une version MySQL plus récente que la version 5.x, une erreur de délai d'expiration de connexion risque de se produire. Toutefois, vous pouvez toujours utiliser votre connexion AWS Glue pour vous connecter à la version 8 de MySQL avec une solution de contournement. Utilisez la connexion sur une tâche d'extraction, de chargement et de transformation (ETL) en fournissant manuellement le pilote JAR compatible pour MySQL version 8 et ultérieure. Ensuite, chargez ce fichier JAR dans votre tâche de la même manière que vous chargeriez un pilote JDBC dans une tâche Spark. Pour plus d'informations, consultez Types de connexion et options pour ETL dans AWS Glue.
  • Exclure les problèmes de DNS : pour exclure les problèmes de DNS, utilisez l'adresse IP publique ou privée du magasin de données en tant qu'URL JDBC pour la connexion AWS Glue. Dans ce cas, vous devez décocher « Require SSL connection » (Connexion SSL obligatoire) car vous n'utilisez plus de nom de domaine.
  • Vérifier si le pilote est compatible : si la connexion échoue en raison de l'incompatibilité d'un pilote, fournissez le pilote compatible en tant que fichier JAR supplémentaire dans les propriétés de la tâche, ainsi que le nom de connexion ayant échoué. (Lorsque vous spécifiez le nom de connexion comme propriété de tâche, AWS Glue utilise les paramètres de mise en réseau de la connexion, notamment le VPC et les sous-réseaux.) Remplacez ensuite les pilotes de magasin de données AWS Glue par défaut en créant manuellement la trame de données Apache Spark à l'aide du fichier JAR que vous avez fourni dans les propriétés de la tâche. Une fois la trame de données créée, vous avez la possibilité de la convertir en trame dynamique AWS Glue (AWS Glue DynamicFrame). Pour plus d'informations, consultez fromDF.
  • Vérifier si le magasin de données JDBC est accessible publiquement : connectez-vous au magasin de données à l'aide de MySQL Workbench et de l'URL JDBC. L'autre option consiste à lancer une instance Amazon EC2 dotée d'un accès SSH au même sous-réseau et aux mêmes groupes de sécurité que ceux utilisés pour la connexion. Ensuite, connectez-vous à l'instance à l'aide de SSH et exécutez les commandes suivantes pour tester la connectivité.
$ dig hostname
$ nc -zv hostname port

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


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