Direkt zum Inhalt

Wie kann ich eine Lambda-Funktion verwenden, um automatisch einen AWS-Glue-Job zu starten, wenn ein Crawler-Lauf abgeschlossen ist?

Lesedauer: 3 Minute
0

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:

  1. Öffne die Lambda-Konsole.
  2. Wähle Funktion erstellen aus.
  3. 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.
  4. Wähle Funktion erstellen aus.
  5. Gib auf der Seite mit den Funktionsdetails unter Codequelle den folgenden Code ein:
    # 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
    Hinweis: Ersetze MyTestJob durch den Namen des AWS-Glue-ETL-Jobs.
  6. Wähle unter Codequelle die Option Testen aus.
  7. Ö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:

  1. Öffnen Sie die EventBridge-Konsole.
  2. Wähle im Navigationsbereich Regeln und dann Regel erstellen aus.
  3. Gib einen Namen und eine Beschreibung für die Regel ein und wähle dann Weiter aus.
  4. Verwende die Standardwerte für Ereignisquelle und Beispielereignis.
  5. Wähle im Abschnitt Ereignismuster die Option Benutzerdefinierte Muster aus (JSON-Editor).
  6. Gib den folgenden Code in das Feld Ereignismuster ein:
    {
        "detail-type": [
            "Glue Crawler State Change"
        ],
        "source": [
            "aws.glue"
        ],
        "detail": {
            "crawlerName": [
                "MyTestCrawl"
            ],
            "state": [
                "Succeeded"
            ]
        }
    }
    Hinweis: Ersetze MyTestCrawl durch den Namen des AWS-Glue-Crawlers.
  7. 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.
  8. 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

AWS OFFICIALAktualisiert vor 9 Monaten