Direkt zum Inhalt

Warum schlägt meine Testverbindung in AWS Glue fehl?

Lesedauer: 6 Minute
0

Ich möchte eine fehlgeschlagene Testverbindung in AWS Glue beheben.

Behebung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version von AWS CLI verwendest.

Um die fehlgeschlagene Testverbindung in AWS Glue zu beheben, überprüfe das Netzwerk und die Authentifizierungsverbindungen.

Probleme mit dem Netzwerk

Überprüfung der Konnektivität zu JDBC-Datenspeichern

AWS Glue erstellt Elastic-Network-Schinittstellen mit privaten IP-Adressen im Subnetz der Verbindung. Wenn du Daten außerhalb von Amazon Virtual Private Cloud (Amazon VPC) speicherst, muss die Routing-Tabelle des Subnetzes ein NAT-Gateway in einem öffentlichen Subnetz enthalten. Andernfalls tritt bei der Verbindung ein Timeout auf.

Hinweis: Die Daten, die du außerhalb von Amazon VPC speicherst, ist ein On-Premises-Datenspeicher oder eine Ressource von Amazon Relational Database Service (Amazon RDS) mit einem öffentlichen Hostnamen.

Prüfe, ob die Sicherheitsgruppen und die Netzwerk-Zugriffssteuerungsliste (Netzwerk-ACL) der Verbindung den Datenverkehr zu den in Amazon VPC gespeicherten Daten zulassen. Verwende daraufhin die AWSSupport-TroubleshootGlueConnection-Runbooks in AWS Systems Manager. Weitere Informationen findest du unter Beheben von Fehlern der AWS-Glue-Verbindung, die über eine JDBC-Quelle verfügt.

Wenn für die Verbindung ein NAT-Gateway oder der Zugriff auf AWS Secrets Manager und AWS Security Token Service (AWS STS) erforderlich ist, hänge die Endpunkte an. Weitere Informationen findest du unter Verbindung zu Daten herstellen.

Überprüfung der Sicherheitsgruppen der Verbindung

Eine der mit der Verbindung verknüpften Sicherheitsgruppen muss über eine selbstreferenzierte Regel für eingehenden Datenverkehr verfügen, die für alle TCP-Ports gültig ist. Eine der Sicherheitsgruppen muss für den gesamten ausgehenden Datenverkehr geöffnet sein. Du kannst eine selbstreferenzierte Regel verwenden, um den ausgehenden Datenverkehr zu VPC einzuschränken. Weitere Informationen findest du unter Amazon VPC für JDBC-Verbindungen zu Amazon RDS-Datenspeichern von AWS Glue aus einrichten.

Überprüfung der Anzahl der freien IP-Adressen

Die Anzahl der freien IP-Adressen im Subnetz muss größer sein als die Anzahl der Worker, die du für den Auftrag angegeben hast. Dadurch kann AWS Glue Netzwerkschnittstellen im angegebenen Subnetz erstellen.

Prüfen, ob das Subnetz auf Amazon S3 zugreifen kann

Gib in der Routing-Tabelle des Subnetzes einen Amazon-Simple-Storage-Service(Amazon S3)-Endpunkt oder eine Route zu einem NAT-Gateway in der Routing-Tabelle deines Subnetzes an. Weitere Informationen findest du unter Error: Could not find S3 endpoint or NAT Gateway for subnetId in VPC.

Prüfen, ob du über einen AWS-KMS-VPC-Endpunkt verfügst

Um Verbindungen für den AWS-Glue-Datenkatalog zu verschlüsseln, vergewissere dich, dass eine Route zu AWS Key Management Service (AWS KMS) vorliegt. Diese Route kann beispielsweise ein AWS-KMS-VPC-Schnittstellenendpunkt sein. Weitere Informationen findest du unter Herstellen einer Verbindung zu AWS KMS über einen VPC-Endpunkt.

Überprüfen, ob die AWS-Glue-Verbindung und die Datenbank unterschiedliche VPCs verwenden

Die Testverbindung schlägt mit einem Timeout-Fehler fehl, wenn die folgenden Bedingungen zutreffen:

  • Die Datenbank ist nicht öffentlich zugänglich.
  • Du hast den AWS-Glue-Auftrag an eine Verbindung angehängt, die eine andere VPC ohne VPC-Peering verwendet.

Um einen Testverbindungsfehler zu beheben, erstelle eine dedizierte AWS Glue VPC und richte die zugehörigen VPC-Peerings mit deinen anderen VPCs ein.

Überprüfung der Konnektivität zum On-Premises-Datenspeicher

Führe die folgenden Befehle aus, um die AWS-Glue-Verbindung zu einer On-Premises-Datenbank zu überprüfen, die mit einer Instance von Amazon Elastic Compute Cloud (Amazon EC2) verbunden ist:

$ telnet hostname port  
$ nc -zv hostname port  
$ dig hostname  
$ traceroute -AnT -p IP port

Überprüfe dein VPN und deine VPC-, Subnetz-, Sicherheitsgruppen- und Netzwerk-ACLs-Konfigurationen. Stelle sicher, dass diese Konfigurationen nicht die Verbindung von VPC zur On-Premises-Datenbank blockieren oder Firewall-Probleme von der On-Premises-Datenbank aus verursachen. Weitere Informationen findest du unter So greifst du mit AWS Glue auf On-Premises-Datenspeicher zu und analysierst sie.

Probleme mit der Authentifizierung

Auswählen der richtigen IAM-Rolle

Die AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Rolle, die du für die Testverbindung auswählst, muss eine Vertrauensbeziehung zu AWS Glue haben. Wähle eine serviceverknüpfte Rolle aus, an die die Richtlinie AWSGlueServiceRole angehängt ist, um die Vertrauensbeziehung herzustellen.

Überprüfung der IAM-Rolle der Verbindung

Wenn du das Verbindungspasswort mit AWS KMS verschlüsselt hast, überprüfe, ob die IAM-Rolle der Verbindung die Aktion kms:Decrypt für den Schlüssel zulässt. Weitere Informationen findest du unter Einrichten der Verschlüsselung in AWS Glue.

Überprüfung der Verbindungsprotokolle

Überprüfe die Protokolle auf Fehlermeldungen. Die Protokolle der Testverbindungen findest du in Amazon CloudWatch Logs unter /aws-glue/testconnection/output.

Überprüfung der SSL-Einstellungen

Wenn der Datenspeicher SSL-Konnektivität für den angegebenen Benutzer erfordert, wähle Require SSL connection (SSL-Verbindung erforderlich) aus, wenn du die Verbindung auf der Konsole herstellst. Wähle diese Option nur, wenn der Datenspeicher SSL unterstützt.

Überprüfung von JDBC-Benutzername und -Passwort

Benutzer müssen über ausreichende Berechtigungen verfügen, um auf den Java-Database-Connectivity(JDBC)-Datenspeicher zugreifen zu können. Beispielsweise benötigen AWS Glue Crawler SELECT-Berechtigungen. Bei einem Auftrag, der in einen Datenspeicher schreibt, sind die Berechtigungen INSERT, UPDATE und DELETE erforderlich.

Überprüfung der JDBC-URL-Syntax

Die Syntaxanforderungen variieren je nach Datenbank-Engine. Weitere Informationen findest du unter AWS-Glue-JDBC-Verbindungseigenschaften. Beispiele sind unter JDBC-URL verfügbar.

Zusätzliche Tipps

Überprüfung des Verbindungstyps

Achte darauf, den richtigen Verbindungstyp auszuwählen. Wenn du Amazon RDS oder Amazon Redshift als Verbindungstyp auswählst, füllt AWS Glue die VPC, das Subnetz und die Sicherheitsgruppe automatisch aus.

Das Testverbindungsfeature funktioniert nur für MySQL 5.x-Versionen. Der integrierte AWS-Glue-JDBC-Treiber unterstützt MySQL Version 8 nicht. Wenn du die Verbindung mit einer MySQL-Version testest, die neuer ist als Version 5.x, erhältst du möglicherweise einen Timeout-Fehler. Verwende die AWS Glue-Verbindung, um eine Verbindung zu MySQL Version 8 herzustellen. Gib den kompatiblen Treiber Java Archive (JAR) für MySQL Version 8 und höher ein, um die Verbindung für einen ETL-Auftrag (Extrahieren, Laden und Transformieren) zu verwenden. Lade dann die JAR-Datei in den Auftrag. Weitere Informationen findest du unter Verbindungstypen und Optionen für ETL in AWS Glue für Apache Spark.

Stelle sicher, dass nicht der DNS die Probleme verursacht

Um sicherzugehen, dass der DNS nicht für die Probleme verantwortlich ist, verwende die öffentliche oder private IP-Adresse des Datenspeichers als JDBC-URL für die AWS-Glue-Verbindung. Lösche das Feld Require SSL connection (SSL-Verbindung erforderlich), da ein Domain-Name nicht mehr verwendet wird.

Prüfen, ob der Treiber nicht kompatibel ist

Gib den richtigen Treiber zusammen mit dem Namen der fehlgeschlagenen Verbindung als zusätzliche JAR-Datei in den Auftragseigenschaften an. Wenn du den Verbindungsnamen als Auftragseigenschaft angibst, verwendet AWS Glue die Netzwerkeinstellungen der Verbindung, z. B. die VPC und Subnetze. Erstelle den Spark DataFrame mit der JAR-Datei in den Auftragseigenschaften, um die standardmäßigen AWS-Glue-Datenspeichertreiber zu überschreiben.

Du kannst den DataFrame auch in einen AWS Glue DynamicFrame umwandeln. Weitere Informationen findest du unter fromDF.

Überprüfen, ob der JDBC-Datenspeicher öffentlich zugänglich ist

Stelle mithilfe von MySQL Workbench und der JDBC-URL eine Verbindung zum Datenspeicher her. Du kannst auch eine Amazon-EC2-Instance starten, die SSH-Zugriff auf dasselbe Subnetz und dieselben Sicherheitsgruppen hat, die du für die Verbindung verwendest. Stelle danach mit SSH eine Verbindung zur Instance her und führe den folgenden Befehl aus, um die Konnektivität zu testen:

dig hostname$ nc -zv hostname port

Ähnliche Informationen

Beheben von Fehlern in Spark

AWS OFFICIALAktualisiert vor einem Jahr