AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Wie kann ich eine Lambda-Funktion verwenden, um automatisch einen AWS-Glue-Job zu starten, wenn ein Crawler-Lauf abgeschlossen ist?
Ich möchte eine AWS-Lambda-Funktion verwenden, um automatisch einen AWS-Glue-Job zu starten, wenn ein Crawler-Lauf abgeschlossen ist.
Kurzbeschreibung
Um einen Job zu starten, wenn ein Crawler-Lauf abgeschlossen ist, erstelle eine AWS-Lambda-Funktion und eine Amazon-EventBridge-Regel.
Hinweis: Du kannst zudem AWS-Glue-Workflows verwenden, um automatisch einen Job zu starten, wenn ein Crawler-Lauf abgeschlossen ist. Weitere Informationen findest du unter Wie verwende ich AWS-Glue-Workflows, um automatisch einen Auftrag zu starten, wenn ein Crawler-Lauf abgeschlossen ist?
Lösung
Voraussetzungen:
Du musst über Folgendes verfügen:
- AWS Glue Extract, Transform, Load (ETL)-Job
- AWS-Glue-Crawler
- AWS Identity and Access Management (IAM)-Rolle für Lambda mit der Berechtigung zur Ausführung von AWS-Glue-Jobs. Richte beispielsweise eine serviceverknüpfte Rolle für Lambda ein, an die die Richtlinie AWSGlueServiceRole, die an die Rolle angehängt war, angehängt ist.
Erstellen der Lambda-Funktion
Führe die folgenden Schritte aus:
- Öffne die Lambda-Konsole.
- Wähle Funktion erstellen aus.
- Gib auf der Seite Funktion erstellen die folgenden Informationen ein:
Wähle Ohne Vorgabe erstellen aus.
Gib unter Funktionsname den Namen deiner Funktion ein.
Wähle für Laufzeit eine Python-Option aus.
Verwenden Sie für Architektur die Standardoption x86_64.
Wähle unter Standardausführungsrolle ändern für Ausführungsrolle die Option Eine vorhandene Rolle verwenden aus.
Wähle für Bestehende Rolle die IAM-Rolle aus, die über die Berechtigung zur Ausführung von AWS-Glue-Jobs verfügt. - Wähle Funktion erstellen aus.
- Gib auf der Seite mit den Funktionsdetails unter Codequelle den folgenden Code ein:
Hinweis: Ersetze MyTestJob durch den Namen des AWS-Glue-ETL-Jobs.# Set up loggingimport json import os import logging logger = logging.getLogger() logger.setLevel(logging.INFO) # Import Boto 3 for AWS Glue import boto3 client = boto3.client('glue') # Variables for the job: glueJobName = "MyTestJob" # Define Lambda function def lambda_handler(event, context): logger.info('## INITIATED BY EVENT: ') logger.info(event['detail']) response = client.start_job_run(JobName = glueJobName) logger.info('## STARTED GLUE JOB: ' + glueJobName) logger.info('## GLUE JOB RUN ID: ' + response['JobRunId']) return response - Wähle unter Codequelle die Option Testen aus.
- Öffne die AWS-Glue-Konsole und dann bestätige, dass der Job gestartet wurde.
Führe den AWS Glue-Crawler aus, um die Lambda-Funktion zu testen. Überprüfe dann die Ressourcenliste für die Jobs werden ausgeführt des AWS Glue-ETL-Jobs. Der Ausführungsstatus zeigt Wird gestartet oder Wird ausgeführt an.
Die EventBridge-Regel erstellen
Führe die folgenden Schritte aus:
- Öffnen Sie die EventBridge-Konsole.
- Wähle im Navigationsbereich Regeln und dann Regel erstellen aus.
- Gib einen Namen und eine Beschreibung für die Regel ein und wähle dann Weiter aus.
- Verwende die Standardwerte für Ereignisquelle und Beispielereignis.
- Wähle im Abschnitt Ereignismuster die Option Benutzerdefinierte Muster aus (JSON-Editor).
- Gib den folgenden Code in das Feld Ereignismuster ein:
Hinweis: Ersetze MyTestCrawl durch den Namen des AWS-Glue-Crawlers.{ "detail-type": [ "Glue Crawler State Change" ], "source": [ "aws.glue" ], "detail": { "crawlerName": [ "MyTestCrawl" ], "state": [ "Succeeded" ] } } - Gib für Ziele auswählen die folgenden Informationen ein:
Wähle für Ziel die Lambda-Funktion aus.
Wähle als **Funktion ** deine Lambda-Funktion aus. - Wähle Erstellen aus.
Führe den AWS-Glue-Crawler aus, um die Lambda-Funktion und die EventBridge-Regel zu testen. Überprüfe dann die Ressourcenliste für die Jobs werden ausgeführt des AWS Glue-ETL-Jobs. Der Ausführungsstatus zeigt Wird gestartet oder Wird ausgeführt an.
Ähnliche Informationen
Regeln erstellen, die auf Ereignisse in Amazon EventBridge reagieren
