Warum schlägt meine Testverbindung in AWS Glue fehl?

Lesedauer: 6 Minute
0

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

Lösung

Suchen Sie nach den folgenden häufig auftretenden Problemen.

Netzwerkprobleme

  • Überprüfen der Konnektivität zu JDBC-Datenspeichern: AWS Glue erstellt elastische Netzwerkschnittstellen mit privaten IP-Adressen im Subnetz der Verbindung. Das bedeutet, dass AWS Glue das öffentliche Internet nicht verwenden kann, um eine Verbindung zum Datenspeicher herzustellen.

  • Wenn sich der Datenspeicher außerhalb der Amazon Virtual Private Cloud (Amazon VPC) befindet, muss die Routing-Tabelle des Subnetzes eine Route zu einem NAT-Gateway in einem öffentlichen Subnetz enthalten. Andernfalls tritt für die Verbindung ein Timeout auf.
    Hinweis: Der Datenspeicher außerhalb der Amazon VPC kann ein On-Premises-Datenspeicher oder eine Amazon Relational Database Service (Amazon RDS)-Ressource mit einem öffentlichen Hostnamen sein.

  • Wenn sich der Datenspeicher in der Amazon VPC befindet, stellen Sie sicher, dass die Sicherheitsgruppen und die Netzwerk-Zugriffssteuerungsliste (Netzwerk-ACL) der Verbindung den Datenverkehr zum Datenspeicher zulassen.

  • Überprüfen der Sicherheitsgruppen der Verbindung: Eine der mit der Verbindung verknüpften Sicherheitsgruppen muss über eine selbstreferenzierende Regel für eingehenden Datenverkehr verfügen, die für alle TCP-Anschlüsse gültig ist. Ebenso muss eine der Sicherheitsgruppen auch für den gesamten ausgehenden Verkehr geöffnet sein. Sie können eine selbstreferenzierende Regel verwenden, um den ausgehenden Datenverkehr zur Amazon VPC einzuschränken. Weitere Informationen finden Sie unter Einrichten einer VPC für die Verbindung zu JDBC Data Stores.

  • Überprüfen der Anzahl der freien IP-Adressen: Die Anzahl der freien IP-Adressen im Subnetz muss größer sein als die Anzahl der für den Job angegebenen Datenverarbeitungseinheiten (DPUs). Dadurch kann AWS Glue elastische Netzwerkschnittstellen im angegebenen Subnetz erstellen.

  • Vergewissern Sie sich, dass das Subnetz auf Amazon Simple Storage Service (Amazon S3) zugreifen kann: Geben Sie einen Amazon S3-Endpunkt oder eine Route zu einem NAT-Gateway in der Routing-Tabelle Ihres Subnetzes an. Weitere Informationen finden Sie unter Fehler: Der S3-Endpunkt oder das NAT-Gateway für subnetId konnte in VPC nicht gefunden werden.

  • Überprüfen, ob ein AWS KMS-VPC-Endpunkt vorhanden ist: Wenn Ihr AWS-Glue-Datenkatalog Verbindungen verschlüsselt, stellen Sie sicher, dass Sie eine Route zu AWS KMS haben. Diese Route kann beispielsweise ein AWS KMS-VPC-Schnittstellenendpunkt sein. Weitere Informationen finden Sie unter Herstellen einer Verbindung zu AWS KMS über einen VPC-Endpunkt.

  • Überprüfen, ob die AWS-Glue-Verbindung und die Datenbank unterschiedliche VPCs verwenden: Ihre Testverbindung schlägt mit einem Timeout-Fehler fehl, wenn die folgenden Bedingungen zutreffen:
    Die Datenbank ist nicht öffentlich zugänglich.
    Der AWS-Glue-Job ist an eine Verbindung angehängt, die eine andere VPC ohne VPC-Peering verwendet.
    Dieses Problem kann gelöst werden, indem Sie eine dedizierte AWS-Glue-VPC erstellen und bei Bedarf die entsprechenden VPC-Peerings mit Ihren anderen VPCs einrichten. Weitere Informationen finden Sie unter Herstellen einer Verbindung zu und Ausführen von ETL-Jobs auf mehreren VPCs mithilfe einer dedizierten AWS-Glue-VPC.

  • Überprüfen der Konnektivität zum lokalen Datenspeicher: Wenn Sie die AWS-Glue-Verbindung zu einer lokalen Datenbank testen, empfiehlt es sich, eine Verbindung zu einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance in derselben VPC, demselben Subnetz und derselben Sicherheitsgruppe herzustellen, die für die Verbindung verwendet wurde. Führen Sie dann die folgenden Tests von der Amazon EC2-Instance aus. Wenn Sie Probleme beim Ausführen der Befehle haben, überprüfen Sie Ihr VPN und die Konfigurationen von VPC, Subnetz, Sicherheitsgruppen und Netzwerkzugriffssteuerungslisten (ACLs). Stellen Sie sicher, dass diese Konfigurationen nicht die Konnektivität von VPC zu Ihrer On-Premises-Datenbank blockieren oder Firewallprobleme von der On-Premises-Datenbank aus verursachen. Weitere Informationen finden Sie unter So greifen Sie mit AWS Glue auf On-Premises-Datenspeicher zu und analysieren sie.

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

Probleme mit der Authentifizierung

  • Auswählen der richtigen IAM-Rolle: Die Rolle AWS Identity and Access Management (IAM), die Sie für die Testverbindung auswählen, muss eine Vertrauensbeziehung zu AWS Glue haben. Eine einfache Möglichkeit, dies zu tun, besteht darin, eine serviceverknüpfte Rolle auszuwählen, an die die AWSGlueServiceRole-Richtlinie angehängt ist.
  • Überprüfen der IAM-Rolle der Verbindung: Wenn das Verbindungskennwort mit dem AWS Key Management Service (AWS KMS) verschlüsselt ist, stellen Sie sicher, dass die IAM-Rolle der Verbindung die Aktion kms:Decrypt für den Schlüssel zulässt. Weitere Informationen finden Sie unter Einrichten der Verschlüsselung in AWS Glue.
  • Überprüfen der Verbindungsprotokolle: Protokolle von Testverbindungen befinden sich in Amazon CloudWatch Logs unter /aws-glue/testconnection/output. Überprüfen Sie die Protokolle auf Fehlermeldungen.
  • Überprüfen der SSL-Einstellungen: Wenn der Datenspeicher SSL-Konnektivität für den angegebenen Benutzer benötigt, achten Sie darauf, SSL-Verbindung erforderlich zu wählen, wenn Sie die Verbindung auf der Konsole herstellen. Wählen Sie diese Option nicht aus, wenn der Datenspeicher SSL nicht unterstützt.
  • Überprüfen des JDBC-Benutzernamens und des Kennworts: Der Benutzer, der auf den JDBC-Datenspeicher zugreift, muss über ausreichende Zugriffsberechtigungen verfügen. Beispielsweise benötigen AWS-Glue-Crawler SELECT-Berechtigungen. Für einen Job, der in einen Datenspeicher schreibt, sind die Berechtigungen INSERT, UPDATE und DELETE erforderlich.
  • Überprüfen der JDBC-URL-Syntax: Die Syntaxanforderungen variieren je nach Datenbank-Engine. Weitere Informationen finden Sie unter Hinzufügen einer AWS-Glue-Verbindung und sehen Sie sich die Beispiele unter JDBC-URL an.

Zusätzliche Problembehebung

  • Überprüfen des Verbindungstyps:

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

  • Wenn Sie eine Verbindung zu MySQL herstellen müssen, beachten Sie, dass die Funktion zum Testen der Verbindung nur für MySQL 5.x-Versionen funktioniert. MySQL Version 8 wird mit dem integrierten AWS Glue JDBC-Treiber nicht unterstützt. Wenn Sie die Verbindung mit einer MySQL-Version testen, die neuer als Version 5.x ist, erhalten Sie möglicherweise einen Verbindungs-Timeout-Fehler. Sie können Ihre AWS-Glue-Verbindung jedoch weiterhin verwenden, um mit einer Problemumgehung eine Verbindung zu MySQL Version 8 herzustellen. Verwenden Sie die Verbindung für einen ETL-Job (Extrahieren, Laden und Transformieren), indem Sie das kompatible Treiber-JAR für MySQL Version 8 und höher manuell bereitstellen. Laden Sie dann diese JAR-Datei in Ihren Job, ähnlich wie Sie einen beliebigen JDBC-Treiber in einem Spark-Job laden. Weitere Informationen finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue.

  • Ausschließen von DNS-Problemen: Um DNS-Probleme auszuschließen, verwenden Sie die öffentliche oder private IP-Adresse des Datenspeichers als JDBC-URL für die AWS-Glue-Verbindung. Wenn Sie dies tun, müssen Sie das Kontrollkästchen SSL-Verbindung erforderlich deaktivieren, da Sie keinen Domain-Namen mehr verwenden.

  • Überprüfen, ob der Treiber nicht kompatibel ist: Wenn die Verbindung aufgrund eines inkompatiblen Treibers fehlschlägt, geben Sie den richtigen Treiber zusammen mit dem Namen der fehlgeschlagenen Verbindung als zusätzliche JAR-Datei in den Jobeigenschaften an. (Wenn Sie den Verbindungsnamen als Jobeigenschaft angeben, verwendet AWS Glue die Netzwerkeinstellungen der Verbindung, z. B. die VPC und Subnetze.) Überschreiben Sie dann die standardmäßigen AWS Glue-Datenspeichertreiber, indem Sie den Apache Spark-Datenrahmen mithilfe der JAR-Datei, die Sie in den Jobeigenschaften angegeben haben, manuell erstellen. Nachdem Sie den Datenrahmen erstellt haben, können Sie ihn optional in einen AWS Glue DynamicFrame konvertieren. Weitere Informationen finden Sie unter fromDF.

  • Überprüfen, ob der JDBC-Datenspeicher öffentlich zugänglich ist: Stellen Sie mithilfe von MySQL Workbench und der JDBC-URL eine Verbindung zum Datenspeicher her. Sie können auch eine Amazon EC2-Instance starten, die SSH-Zugriff auf dasselbe Subnetz und dieselben Sicherheitsgruppen hat, die für die Verbindung verwendet wurden. Stellen Sie dann mithilfe von SSH eine Verbindung zur Instance her und führen Sie die folgenden Befehle aus, um die Konnektivität zu testen.

$ dig hostname
$ nc -zv hostname port

Verwandte Informationen

Definieren der Verbindungen im AWS-Glue-Datenkatalog

Beheben von Fehlern in AWS Glue

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren