Wie behebe ich AWS Marketplace-Verbindungsfehler in meinen AWS Glue-ETL-Aufträgen?

Lesedauer: 9 Minute
0

Wenn ich AWS Marketplace-Konnektoren in AWS Glue verwende, erhalte ich Fehler in den Protokollen.

Lösung

Konnektoren werden nicht angezeigt

Sie abonnieren einen Konnektor vom AWS Marketplace, können den Konnektor jedoch nicht auf der Konnektor-Seite von AWS Glue Studio finden.

Gehen Sie wie folgt vor, um dieses Problem zu beheben:

  1. Öffnen Sie den AWS Marketplace.
  2. Wählen Sie Produkte entdecken und suchen Sie dann den Konnektor, den Sie verwenden möchten.
  3. Wählen Sie Weiter zum Abonnieren und melden Sie sich dann bei Ihrem AWS-Konto an, wenn Sie dazu aufgefordert werden.
  4. Wählen Sie Weiter zur Konfiguration. Wenn diese Option ausgegraut ist und Sie sie nicht auswählen können, lesen Sie bitte die Allgemeinen Geschäftsbedingungen. Wählen Sie Bedingungen annehmen und warten Sie, bis die Schaltfläche Weiter zur Konfiguration verfügbar ist.
  5. Wählen Sie in der Dropdownliste Liefermethode und Softwareversion aus. Wenn Sie sich nicht sicher sind, welche Version Sie wählen sollen, wählen Sie die neueste Version.
  6. Wählen Sie Weiter zum Starten und dann Gebrauchsanweisung aus.
  7. Wählen Sie im Popup-Fenster Glue Konnektor von AWS Glue Studio aktivieren aus.
  8. (Optional) Um nur den Konnektor zu installieren, wählen Sie Nur Konnektor aktivieren. Weitere Informationen finden Sie unter Verwenden von Konnektoren und Verbindungen mit AWS Glue Studio. Wenn Sie stattdessen benutzerdefinierte Konnektoren verwenden, finden Sie weitere Informationen unter Benutzerdefinierte Konnektoren entwickeln.

Anmerkung: Sie können diese Schritte auch dann wiederholen, wenn Sie den Konnektor zuvor abonniert haben.

Probleme mit Ihrer IAM-Rolle

Wenn Sie versuchen, einen Konnektor im AWS Marketplace zu abonnieren, erhalten Sie eine Fehlermeldung für AWS Identity and Access Management (IAM)-Berechtigungen, die der Folgenden ähnelt:

„Sie haben nicht die richtigen Berechtigungen, um diese Anfrage zu stellen. Einige Steuerelemente wurden deaktiviert, da Ihnen die richtige(n) Berechtigung(en) fehlen. Die fehlende(n) Berechtigung(en) laute(n/t): aws-marketplace:Subscribe.“

Um dieses Problem zu beheben, fügen Sie dem IAM-Benutzer, der den Fehler erhalten hat, eine IAM-Richtlinie hinzu. Für AWS Marketplace fügen Sie Ihrem IAM-Benutzer die folgenden IAM-Richtlinien hinzu:

  • Um Berechtigungen zum Anzeigen von Abonnements zu gewähren, aber nicht zum Ändern dieser, wählen Sie AWSMarketplaceRead-only aus.
  • Um Berechtigungen zum Abonnieren und Abbestellen zu erteilen, wählen Sie AWSMarketplaceManageSubscriptions aus.
  • Um die vollständige Kontrolle über Ihre Abonnements zu gewähren, wählen Sie AWSMarketplaceFullAccess aus.

Weitere Informationen finden Sie unter Steuern des Zugriffs auf AWS Marketplace-Abonnements.

AccessDeniedException-Fehler

In den Protokollen des AWS Glue-Jobs erhalten Sie eine AccessDeniedException-Fehlermeldung ähnlich der Folgenden:

„Beim Aufrufen des Vorgangs GetAuthorizationToken ist ein Fehler aufgetreten (AccessDeniedException): Benutzer: arn:aws:sts::xxxxxxxxxxxx:assumed-role/<IamRole>/GlueJobRunnerSession ist nicht berechtigt, Folgendes auszuführen: ecr:GetAuthorizationToken on resource: *, da keine identitätsbasierte Richtlinie die ecr:getAuthorizationToken-Aktion zulässt
Glue ETL Marketplace - Konnektor konnte nicht heruntergeladen werden, Aktivierungsskript wurde mit Code 1 beendet
STARTFEHLER | Glue ETL Marketplace - Konnektor konnte nicht heruntergeladen werden. Einzelheiten finden Sie in den Protokollen.“

Dieser Fehler tritt auf, wenn die IAM-Rolle, die Ihrem AWS Glue-Job zugeordnet ist, bei der Ausführung des GetAuthorizationToken-Vorgangs über unzureichende Berechtigungen verfügt.

Um dieses Problem zu lösen, geben Sie Ihrem AWS Glue-Job die Berechtigung ecr:GetAuthorizationToken:

  1. Öffnen Sie die IAM-Konsole.
  2. Wählen Sie die IAM-Rolle aus, die Sie im AWS Glue-Job verwenden.
  3. Wählen Sie Richtlinien anhängen aus.
  4. Geben Sie unter Filterrichtlinien AmazonEC2ContainerRegistryReadOnly ein, und wählen Sie dann diese Richtlinie aus.
  5. Wählen Sie Richtlinie anhängen aus.

Nachdem Sie die erforderliche Richtlinie an die IAM-Rolle angehängt haben, führen Sie den AWS Glue-Job erneut aus.

Weitere Informationen finden Sie unter AmazonEC2ContainerRegistryReadOnly, Hinzufügen von IAM-Identitätsberechtigungen (Konsole) und Einrichten von IAM-Berechtigungen für AWS Glue.

Netzwerkprobleme - Kein Netzwerkpfad von der VPC

Ihre Netzwerkkonfiguration reicht möglicherweise nicht aus, damit die AWS Glue-Konnektoren ordnungsgemäß funktionieren, wenn sie in einem AWS Glue-Job verwendet werden. Möglicherweise erhalten Sie eine Fehlermeldung ähnlich der Folgenden:

„botocore.exceptions.ConnectTimeoutError: Verbindungs-Timeout auf der Endpunkt-URL: „https://api.ecr.us-east-1.amazonaws.com/"Glue ETL Marketplace — Konnektor konnte nicht heruntergeladen werden, Aktivierungsskript wurde mit Code 1 beendet
STARTFEHLER | Glue ETL Marketplace - Konnektor konnte nicht heruntergeladen werden. Einzelheiten finden Sie in den Protokollen.
Ausnahme im Thread „main“
java.lang.Exception: Glue ETL Marketplace - Konnektor konnte nicht heruntergeladen werden.“

Die vorstehende Beispielfehlermeldung weist darauf hin, dass kein Netzwerkpfad von der Virtual Private Cloud (VPC) die Komponenten des Jobs zum Amazon Elastic Container Registry (Amazon ECR)-Repository enthält. Das Amazon ECR-Repository enthält die Bilder für die Konnektoren. AWS Glue speichert alle Konnektoren in einem Amazon ECR-Repository in der AWS-Region us-east-1. Wenn der AWS Glue-Job einen Konnektor verwenden möchte, muss er ihn aus dieser Region herunterladen.

Wenn eine Verbindung zu einem AWS Glue-Job hinzugefügt wird, müssen Sie eine Netzwerkroute einrichten, über die der Datenverkehr zum oder vom Service fließen kann. AWS Glue verwendet private IP-Adressen, um mit den Komponenten des Jobs und Diensten wie Amazon ECR zu kommunizieren. Dieser Fehler kann auftreten, wenn Ihre Verbindung ein öffentliches Subnetz mit einem Internet-Gateway in der Routing-Tabelle verwendet. Weitere Informationen finden Sie unter Konfiguration für den Internetzugang.

Wenn Sie die Verbindung herstellen, sind die Netzwerkinformationen wie VPC, Subnetz und Sicherheitsgruppe optional. Wenn Sie die Verbindung nur mit dem Konnektor und einem AWS Secrets Manager-Schlüssel herstellen, verwendet der AWS Glue-Job ein internes NAT-Gateway. Der Job hängt nicht von einem NAT-Gateway in Ihrem Konto ab.

Um dieses Problem zu lösen, wählen Sie eine der folgenden Lösungen aus und integrieren Sie sie in Ihr Netzwerkdesign.

**Erstellen Sie ein NAT-Gateway und hängen Sie es an das Verbindungssubnetz an **

Verwenden Sie kein Internet-Gateway. Erstellen Sie stattdessen ein NAT-Gateway und hängen Sie es an das Verbindungssubnetz an:

  1. Weisen Sie Ihrem Konto eine nicht angehängte Elastic IP-Adresse zu. Stellen Sie sicher, dass Sie die IP-Adresse mit dem NAT-Gateway verknüpfen.
  2. Erstellen Sie ein NAT-Gateway und wählen Sie dann ein öffentliches Subnetz und die Elastic IP-Adresse aus, um das NAT-Gateway in einem öffentlichen Subnetz zu erstellen.
  3. Erstellen Sie ein privates Subnetz ohne Internet-Gateway-Route und eine zugehörige Routing-Tabelle. Fügen Sie in der Routing-Tabelle eine Regel mit 0.0.0.0/0 hinzu, die auf das NAT-Gateway verweist. Oder bearbeiten Sie eines der vorhandenen Subnetze, um die Routing-Tabelle mit der NAT-Gateway-Route zu verwenden. Stellen Sie sicher, dass keine Internet-Gateway-Route mit der NAT-Gateway-Route verwendet wird.
  4. Überarbeiten Sie das Subnetz der AWS Glue-Verbindung, um das private Subnetz zu verwenden.
  5. Führen Sie den AWS Glue-Job erneut aus, um sicherzustellen, dass der Fehler nicht erneut auftritt.

Verwenden Sie keine VPC-Informationen in der Verbindung

Nehmen Sie keine VPC-Informationen in die Verbindung auf. Verwenden Sie stattdessen ein Internet-NAT-Gateway:

  1. Erstellen Sie eine neue Verbindung für Ihren Konnektor in AWS Glue Studio.
  2. Geben Sie nur den Secrets Manager-Schlüssel an. Fügen Sie keine VPC-Optionen hinzu, damit AWS Glue das interne NAT anstelle des Subnetzes verwendet.
  3. Bearbeiten Sie den AWS Glue-Job, um die neue Verbindung zu verwenden, und führen Sie den Job dann erneut aus.

Erstellen Sie für private Netzwerk-Setups einen VPC-Endpunkt

Verwenden Sie einen VPC-Endpunkt mit Ihrem privaten Netzwerk-Setup anstelle eines NAT-Gateways. Führen Sie die folgenden Schritte aus, um einen VPC-Endpunkt zu verwenden.

VPC-Endpunkt erstellen

Erstellen Sie zunächst einen Amazon ECR-API-Endpunkt. Erstellen Sie als Nächstes einen VPC-Endpunkt für den **com.amazonaws.<region>.ecr.dkr ** Service und dann einen Amazon Simple Storage Service (Amazon S3)-Endpunkt.

Erstellen Sie den Amazon ECR-API-Endpunkt:

  1. Öffnen Sie die Amazon-VPC-Konsole.
  2. Wählen Sie im Navigationsbereich Endpunkte aus.
  3. Wählen Sie Endpunkt erstellen und fügen Sie dann einen Endpunktnamen für Ihren Amazon ECR-API-Endpunkt hinzu.
  4. Wählen Sie als Servicekategorie die Option AWS-Services aus.
  5. Fügen Sie für Services den Filter ECR hinzu und wählen Sie dann com.amazonaws.<region>ecr.api aus.
  6. Wählen Sie für VPC die VPC aus, in der Sie den Endpunkt erstellen möchten. Wählen Sie unter Zusätzliche Einstellungen die Option DNS-Namen aktivieren aus.
  7. Wählen Sie für Subnetze die Availability Zone aus, in der Sie das neue Subnetz erstellt haben.
  8. Wählen Sie für Subnetz-ID den ** Subnetznamen** aus.
  9. Wählen Sie für Sicherheitsgruppen Ihre Sicherheitsgruppe aus.
  10. Wählen Sie für Richtlinie die Option Vollzugriff aus, um alle Operationen nach allen Prinzipien auf allen Ressourcen über den VPC-Endpunkt zuzulassen.
  11. (Optional) Fügen Sie einen Tag hinzu.
  12. Wählen Sie Endpunkt erstellen aus.

Führen Sie dieselben Schritte aus, um einen weiteren VPC-Endpunkt für den Servicenamen com.amazonaws.<region>.ecr.dkr zu erstellen.

Gehen Sie wie folgt vor, um den Amazon S3-Endpunkt zu erstellen:

  1. Öffnen Sie die Amazon-VPC-Konsole.
  2. Wählen Sie im Navigationsbereich Endpunkte.
  3. Wählen Sie Endpunkt erstellen aus und fügen Sie dann einen Endpunktnamen hinzu.
  4. Wählen Sie als Servicekategorie die Option AWS-Services aus.
  5. Fügen Sie für Services den Filter Typ:Gateway hinzu und wählen Sie dann com.amazonaws.<region>.s3 aus.
  6. Wählen Sie für VPC die VPC aus, in der Sie den Endpunkt erstellen möchten.
  7. Wählen Sie für Routentabellen Ihre Routentabellen aus.
  8. Wählen Sie für Richtlinie die Option Vollzugriff aus, um alle Operationen nach allen Prinzipien auf allen Ressourcen über den VPC-Endpunkt zuzulassen.
  9. (Optional) Fügen Sie einen Tag hinzu.
  10. Wählen Sie Endpunkt erstellen aus.

**Konnektoren abonnieren und konfigurieren **

Wenn Sie Ihren Konnektor bereits in AWS Glue abonniert und konfiguriert haben, fahren Sie mit dem Abschnitt AWS Glue-Verbindung erstellen fort.

Wenn Sie Ihren Konnektor nicht in AWS Glue abonniert und konfiguriert haben, folgen Sie den Schritten unter AWS Marketplace-Konnektoren abonnieren. Wählen Sie im Popup-Fenster mit den Nutzungsanweisungen die Option Den Glue-Konnektor von AWS Glue Studio aktivieren aus, um zur Seite Glue-Verbindung erstellen zu gelangen.

Erstellen Sie eine AWS-Glue-Verbindung

Wenn Sie Ihren Konnektor bereits in der AWS-Glue-Konsole hinzugefügt haben, navigieren Sie zu Verbindungen und wählen Sie Ihren Konnektor aus. Wählen Sie dann Verbindung erstellen aus.

Wenn Sie die vorherigen Schritte zum Abonnieren und Konfigurieren von Konnektoren befolgt haben, führen Sie die folgenden Schritte aus, um Ihre Verbindung herzustellen:

  1. Öffnen Sie die AWS-Glue-Konsole.
  2. Fügen Sie auf der Seite ** Glue-Verbindung erstellen** einen Verbindungsnamen hinzu.
  3. Wählen Sie für Netzwerkoptionen Ihre VPC sowie das Subnetz und die Sicherheitsgruppen aus.
  4. Wählen Sie Verbindung erstellen und Konnektor aktivieren aus.

Netzwerkprobleme - zu viele Verbindungen im AWS Glue-Job

Wenn Sie auf Netzwerkprobleme stoßen, weil Ihr AWS Glue-Job zu viele Verbindungen hat, erhalten Sie die folgende Fehlermeldung in den Protokollen des Jobs:

„INFO — Glue ETL Marketplace — Beginne mit dem Herunterladen von Konnektor-Jars für die Verbindung: <connection name>Testverbindungsfunktion: „Verursacht durch: com.amazonaws.services.glue.exceptions.invalidInputException: Verbindung: existiert nicht“
STARTFEHLER | Glue ETL Marketplace - Konnektor konnte nicht heruntergeladen werden. Einzelheiten finden Sie in den Protokollen.“

AWS Glue unterstützt eine Verbindung pro Job oder Entwicklungsendpunkt. Wenn Sie in einem Job mehr als eine Verbindung angeben, verwendet AWS Glue die erste Verbindung. Wenn Sie auf mehr als eine VPC zugreifen müssen, finden Sie weitere Informationen unter Herstellen einer Verbindung zu und Ausführen von ETL-Jobs auf mehreren VPCs mithilfe einer dedizierten AWS Glue-VPC.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 4 Monaten