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.
Erstellen des Blueprint-Layoutskripts
Das Blueprint-Layoutskript muss eine Funktion enthalten, die die Entitäten in Ihrem Workflow generiert. Sie können diese Funktion benennen, wie immer Sie möchten. AWS Glue verwendet die Konfigurationsdatei, um den vollständig qualifizierten Namen der Funktion zu ermitteln.
Die Layoutfunktion führt Folgendes durch:
-
(Optional) Instanziiert die
Job
-Klasse, umJob
-Objekte zu erstellen, und übergibt Argumente wieCommand
undRole
. Dies sind Auftragseigenschaften, die Sie angeben, wenn Sie den Auftrag mit der AWS Glue-Konsole oder der API erstellen. -
(Optional) Instanziiert die
Crawler
-Klasse, umCrawler
-Objekte zu erstellen, und übergibt Argumente wie Name, Rolle und Ziel. -
Übergibt die zusätzlichen Argumente
DependsOn
undWaitForDependencies
anJob()
undCrawler()
, um Abhängigkeiten zwischen den Objekten (Workflow-Entitäten) anzugeben. Diese Argumente werden später in diesem Abschnitt erläutert. -
Instanziiert die
Workflow
-Klasse, um das Workflow-Objekt zu erstellen, das an AWS Glue zurückgegeben wird. Dabei werden einName
-Argument, einEntities
-Argument und ein optionalesOnSchedule
-Argument übergeben. DasEntities
-Argument gibt alle Aufträge und Crawler an, die im Workflow enthalten sein sollen. Um zu erfahren, wie man einEntities
-Objekt aufbaut, sehen Sie sich das Beispielprojekt weiter unten in diesem Abschnitt an. -
Gibt das
Workflow
-Objekt zurück.
Definitionen der Klassen Job
, Crawler
und Workflow
finden Sie unter Referenz zu AWS Glue-Blueprint-Klassen.
Die Layoutfunktion muss die folgenden Eingabeargumente akzeptieren.
Argument | Beschreibung |
---|---|
user_params |
Python-Wörterbuch der Blueprint-Parameternamen und -werte. Weitere Informationen finden Sie unter Angeben der Blueprint-Parameter. |
system_params |
Python-Wörterbuch, das zwei Eigenschaften enthält: region und accountId . |
Hier ist ein Layoutgenerator-Beispielskript in einer Datei namens Layout.py
:
import argparse import sys import os import json from awsglue.blueprint.workflow import * from awsglue.blueprint.job import * from awsglue.blueprint.crawler import * def generate_layout(user_params, system_params): etl_job = Job(Name="{}_etl_job".format(user_params['WorkflowName']), Command={ "Name": "glueetl", "ScriptLocation": user_params['ScriptLocation'], "PythonVersion": "2" }, Role=user_params['PassRole']) post_process_job = Job(Name="{}_post_process".format(user_params['WorkflowName']), Command={ "Name": "pythonshell", "ScriptLocation": user_params['ScriptLocation'], "PythonVersion": "2" }, Role=user_params['PassRole'], DependsOn={ etl_job: "SUCCEEDED" }, WaitForDependencies="AND") sample_workflow = Workflow(Name=user_params['WorkflowName'], Entities=Entities(Jobs=[etl_job, post_process_job])) return sample_workflow
Das Beispielskript importiert die erforderlichen Blueprint-Bibliotheken und enthält eine generate_layout
-Funktion, die einen Workflow mit zwei Aufträgen generiert. Dies ist ein sehr einfaches Skript. Ein komplexeres Skript könnte zusätzliche Logik und Parameter verwenden, um einen Workflow mit vielen Aufträgen und Crawlern oder sogar einer variablen Anzahl von Aufträgen und Crawlern zu generieren.
Verwenden des DependsOn-Arguments
Das DependsOn
-Argument ist eine Wörterbuchdarstellung einer Abhängigkeit dieser Entität von anderen Entitäten innerhalb des Workflows. Es hat das folgende Format.
DependsOn = {dependency1 : state, dependency2 : state, ...}
Die Schlüssel in diesem Wörterbuch stellen die Objektreferenz, nicht den Namen, der Entität dar, während die Werte Zeichenfolgen sind, die dem Zustand entsprechen, auf den geachtet werden soll. AWS Glue leitet die richtigen Auslöser ab. Informationen zu den gültigen Zuständen finden Sie unter Bedingungsstruktur.
Beispielsweise kann ein Auftrag vom erfolgreichen Abschluss eines Crawlers abhängen. Wenn Sie ein Crawler-Objekt namens crawler2
wie folgt festlegen:
crawler2 = Crawler(Name="my_crawler", ...)
Dann enthält ein Objekt, das von crawler2
abhängig ist, ein Konstruktor-Argument wie folgt:
DependsOn = {crawler2 : "SUCCEEDED"}
Zum Beispiel:
job1 = Job(Name="Job1",
...
, DependsOn = {crawler2 : "SUCCEEDED", ...})
Wenn DependsOn
für eine Entität weggelassen wird, hängt diese Entität vom Workflow-Startauslöser ab.
Verwenden des Arguments WaitForDependencies
Das WaitForDependencies
-Argument definiert, ob eine Auftrags- oder Crawler-Entität warten soll, bis alle Entitäten, von denen sie abhängig ist, abgeschlossen sind, oder bis irgendeine abgeschlossen ist.
Die zulässigen Werte sind „AND
“ oder „ANY
“.
Verwenden des Arguments OnSchedule
Das OnSchedule
-Argument für den Workflow
-Klassenkonstruktor ist ein cron
-Ausdruck, der die Startauslöserdefinition für einen Workflow definiert.
Wenn dieses Argument angegeben wird, erstellt AWS Glue einen Zeitplanauslöser mit dem entsprechenden Zeitplan. Wenn es nicht angegeben wird, ist der Startauslöser für den Workflow ein On-Demand-Auslöser.