Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Beheben von Blueprint-Fehlern in AWS Glue
Sollten bei der Verwendung von AWS Glue-Blueprints Fehler auftreten, können Sie die folgenden Lösungen nutzen, um die Ursachen der Probleme zu finden und sie zu beheben.
Themen
- Fehler: PySpark-Modul fehlt
- Fehler: Blueprint-Konfigurationsdatei fehlt
- Fehler: fehlende importierte Datei
- Fehler: Nicht zum Durchführen von iamPassRole für Ressource autorisiert
- Fehler: Ungültiger Cron-Zeitplan
- Fehler: Ein Auslöser mit demselben Namen ist bereits vorhanden
- Fehler: Workflow mit Name: foo ist bereits vorhanden.
- Fehler: Modul im angegebenen layoutGenerator-Pfad nicht gefunden
- Fehler: Validierungsfehler im Feld „Connections“ (Verbindungen)
Fehler: PySpark-Modul fehlt
AWS Glue gibt den Fehler „Unknown error executing layout generator function ModuleNotFoundError: No module named 'pyspark'“ zurück.
Wenn Sie das Blueprint-Archiv entpacken, sind zwei Szenarien möglich:
$ unzip compaction.zip Archive: compaction.zip creating: compaction/ inflating: compaction/blueprint.cfg inflating: compaction/layout.py inflating: compaction/README.md inflating: compaction/compaction.py $ unzip compaction.zip Archive: compaction.zip inflating: blueprint.cfg inflating: compaction.py inflating: layout.py inflating: README.md
Im ersten Fall wurden alle zugehörigen Blueprint-Dateien unter einem Ordner namens „compaction“ (Komprimierung) abgelegt, der dann in eine ZIP-Datei namens compaction.zip konvertiert wurde.
Im zweiten Fall wurden alle für den Blueprint benötigten Dateien nicht in einen Ordner aufgenommen und als Stammdateien in die ZIP-Datei compaction.zip eingefügt.
Das Erstellen einer Datei in einem der oben genannten Formate ist erlaubt. Stellen Sie jedoch sicher, dass blueprint.cfg
den richtigen Pfad zum Namen der Funktion in dem Skript hat, das das Layout generiert.
Beispiele
In Fall 1: blueprint.cfg
sollte layoutGenerator
wie folgt enthalten:
layoutGenerator": "compaction.layout.generate_layout"
In Fall 2: blueprint.cfg
sollte layoutGenerator
wie folgt enthalten:
layoutGenerator": "layout.generate_layout"
Wenn dieser Pfad nicht korrekt enthalten ist, könnte wie angegeben ein Fehler angezeigt werden. Wenn Sie beispielsweise die Ordnerstruktur wie in Fall 2 haben und den layoutGenerator
wie in Fall 1, sehen Sie wahrscheinlich die obige Fehlermeldung.
Fehler: Blueprint-Konfigurationsdatei fehlt
AWS Glue gibt den Fehler „Unknown error executing layout generator function FileNotFoundError: [Errno 2] No such file or directory: '/tmp/compaction/blueprint.cfg'“ zurück.
Die blueprint.cfg sollte auf der Stammebene des ZIP-Archivs oder in einem Ordner platziert werden, der den gleichen Namen wie das ZIP-Archiv hat.
Wenn wir das Blueprint-ZIP-Archiv extrahieren, wird erwartet, dass sich die blueprint.cfg in einem der folgenden Pfade befindet. Wenn es nicht in einem der folgenden Pfade gefunden wird, sehen Sie wahrscheinlich die obige Fehlermeldung.
$ unzip compaction.zip Archive: compaction.zip creating: compaction/ inflating: compaction/blueprint.cfg $ unzip compaction.zip Archive: compaction.zip inflating: blueprint.cfg
Fehler: fehlende importierte Datei
AWS Glue gibt den Fehler „Unknown error executing layout generator function FileNotFoundError: [Errno 2] No such file or directory:* *'demo-project/foo.py'“ zurück.
Wenn Ihr Skript zur Layoutgenerierung Funktionen zum Lesen anderer Dateien hat, stellen Sie sicher, dass Sie einen vollständigen Pfad für die zu importierende Datei angeben. Beispielsweise kann das Skript „Conversion.py“ in Layout.py referenziert werden. Weitere Informationen finden Sie unter Blueprint-Beispielprojekt.
Fehler: Nicht zum Durchführen von iamPassRole für Ressource autorisiert
AWS Glue gibt den Fehler „User: arn:aws:sts::123456789012:assumed-role/AWSGlueServiceRole/GlueSession is not authorized to perform: iam:PassRole on resource: arn:aws:iam::123456789012:role/AWSGlueServiceRole“ zurück.
Wenn die Aufträge und Crawler im Workflow dieselbe Rolle übernehmen, die zum Erstellen des Workflows vom Blueprint übergeben wurde, muss die Blueprint-Rolle die Berechtigung iam:PassRole
für sich selbst enthalten.
Wenn die Aufträge und Crawler im Workflow eine Rolle übernehmen, die sich von der Rolle unterscheidet, die zum Erstellen der Entitäten des Workflows vom Blueprint übergeben wurde, muss die Blueprint-Rolle die Berechtigung iam:PassRole
für diese andere Rolle enthalten.
Weitere Informationen finden Sie unter Berechtigungen für Blueprint-Rollen.
Fehler: Ungültiger Cron-Zeitplan
AWS Glue gibt den Fehler „The schedule cron(0 0 * * * *) is invalid“ zurück.
Stellen Sie einen gültigen cron
Fehler: Ein Auslöser mit demselben Namen ist bereits vorhanden
AWS Glue gibt den Fehler „Trigger with name 'foo_starting_trigger' already submitted with different configuration“ zurück.
Für einen Blueprint müssen Sie keine Auslöser im Layoutskript für die Workflow-Erstellung definieren. Die Auslösererstellung wird von der Blueprint-Bibliothek verwaltet und basiert auf den Abhängigkeiten, die zwischen zwei Aktionen definiert sind.
Die Auslöser werden wie folgt benannt:
Für den Startauslöser im Workflow lautet das Namensformat <workflow_name>_starting_trigger.
Für einen Knoten (Auftrag/Crawler) im Workflow, der vom Abschluss eines oder mehrerer vorgelagerter Knoten abhängt, definiert AWS Glue einen Auslöser mit dem Namen <workflow_name>_<node_name>_trigger.
Dieser Fehler bedeutet, dass bereits ein Auslöser mit demselben Namen vorhanden ist. Sie können den vorhandenen Auslöser löschen und die Workflow-Erstellung erneut ausführen.
Anmerkung
Beim Löschen eines Workflows werden die Knoten im Workflow nicht gelöscht. Es ist möglich, dass beim Löschen eines Workflows Auslöser zurückbleiben. Sie können deshalb nicht die Fehlermeldung erhalten, dass ein Workflow bereits vorhanden ist. Es ist aber möglich, dass Sie die Fehlermeldung erhalten, dass ein Auslöser bereits vorhanden ist. Dies kann passieren, wenn Sie einen Workflow erstellen, wieder löschen und dann versuchen, ihn mit demselben Namen auf der Grundlage desselben Blueprints neu zu erstellen.
Fehler: Workflow mit Name: foo ist bereits vorhanden.
Der Workflow-Name muss eindeutig sein. Geben Sie einen anderen Namen ein.
Fehler: Modul im angegebenen layoutGenerator-Pfad nicht gefunden
AWS Glue gibt den Fehler „Unknown error executing layout generator function ModuleNotFoundError: No module named 'crawl_s3_locations'“ zurück.
layoutGenerator": "crawl_s3_locations.layout.generate_layout"
Wenn Sie beispielsweise den obigen layoutGenerator-Pfad haben, muss dieser beim Entpacken des Blueprint-Archivs wie folgt aussehen:
$ unzip crawl_s3_locations.zip Archive: crawl_s3_locations.zip creating: crawl_s3_locations/ inflating: crawl_s3_locations/blueprint.cfg inflating: crawl_s3_locations/layout.py inflating: crawl_s3_locations/README.md
Wenn Sie ein Blueprint-Archiv entpacken, das wie folgt aussieht, können Sie den obigen Fehler erhalten.
$ unzip crawl_s3_locations.zip Archive: crawl_s3_locations.zip inflating: blueprint.cfg inflating: layout.py inflating: README.md
Sie können sehen, dass kein Ordner namens crawl_s3_locations
vorhanden ist, und wenn der Pfad layoutGenerator
über das Modulcrawl_s3_locations
auf die Layoutdatei verweist, können Sie die obige Fehlermeldung erhalten.
Fehler: Validierungsfehler im Feld „Connections“ (Verbindungen)
AWS Glue gibt den Fehler „Unknown error executing layout generator function TypeError: Value ['foo'] for key Connections should be of type <class 'dict'>!“ zurück.
Dies ist ein Validierungsfehler. Im Feld Connections
in der Job
-Klasse wird statt dem erwarteten Wörterbuch eine Liste von Werten bereitgestellt. Dies verursacht den Fehler.
User input was list of values Connections= ['string'] Should be a dict like the following Connections*=*{'Connections': ['string']}
Um diese Laufzeitfehler beim Erstellen eines Workflows anhand eines Blueprints zu vermeiden, können Sie die Workflow-, Auftrags- und Crawlerdefinitionen überprüfen, wie in Testen eines Blueprints beschrieben.
In der Referenz zu AWS Glue-Blueprint-Klassen finden Sie Informationen zur Syntax beim Definieren von AWS Glue-Aufträgen, -Crawlern und -Workflows im Layoutskript.