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, erstellen Sie eine AWS-Lambda-Funktion und eine Amazon-EventBridge-Regel. Sie können diese Methode ändern, um andere AWS-Glue-Funktionen zu automatisieren.

Anmerkung: Sie können zudem AWS-Glue-Workflows verwenden, um automatisch einen Job zu starten, wenn ein Crawler-Lauf abgeschlossen ist. Bei dieser Methode müssen Sie den Crawler von der Workflow-Seite der AWS-Glue-Konsole aus starten. Weitere Informationen finden Sie unter Wie kann ich AWS-Glue-Workflows verwenden, um automatisch einen Auftrag zu starten, wenn ein Crawler-Lauf abgeschlossen ist?

Lösung

Bevor Sie die folgenden Schritte ausführen, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Ein AWS Glue Extract, Transform, Load (ETL)-Auftrag.
  • Ein AWS-Glue-Crawler.
  • Eine AWS Identity and Access Management (IAM)-Rolle für Lambda mit der Berechtigung zur Ausführung von AWS-Glue-Jobs. Richten Sie beispielsweise eine serviceverknüpfte Rolle für Lambda ein, an die die Richtlinie AWSGlueServiceRole angehängt ist.

Erstellen der Lambda-Funktion

1.    Öffnen Sie die Lambda-Konsole.

2.    Wählen Sie Funktion erstellen.
Anmerkung: Wenn Sie keine Lambda-Funktionen haben, wird die Seite Erste Schritte angezeigt. Wählen Sie Funktion erstellen und fahren Sie dann mit dem nächsten Schritt fort.

3.    Vergewissern Sie sich, dass Ohne Vorgabe erstellen ausgewählt ist, und konfigurieren Sie dann die folgenden Optionen:
Geben Sie unter Name einen Namen für Ihre Funktion ein.
Wählen Sie für Laufzeit eine der Python-Optionen.
Verwenden Sie für Architektur die Standardoption x86_64.
Wählen Sie für Rolle das Drop-down-Menü unter Standard-Ausführungsrolle ändern und wählen Sie Bestehende Rolle verwenden aus.
Wählen Sie für Bestehende Rolle eine IAM-Rolle aus, die über die Berechtigung zur Ausführung von AWS-Glue-Jobs verfügt.

4.    Wählen Sie Funktion erstellen.

5.    Fügen Sie im Abschnitt Funktionscode einen Code ein, der dem folgenden ähnelt. Achten Sie darauf, MyTestJob durch den Namen Ihres AWS-Glue-ETL-Jobs zu ersetzen.

# Set up logging
import 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

6.    Wählen Sie oben in der Benutzeroberfläche zur Codebearbeitung Bereitstellen und dann Test aus.

7.    Öffnen Sie die AWS-Glue-Konsole und bestätigen Sie, dass der Job gestartet wurde.

Erstellen Sie die EventBridge-Regel

1.    Öffnen Sie die Amazon-EventBridge-Konsole.

2.    Wählen Sie im Navigationsbereich Regeln und dann Regel erstellen.

3.    Geben Sie einen Namen und eine Beschreibung für die Regel ein und wählen Sie Weiter.

4.    Verwenden Sie Standardwerte für Ereignisquelle und Sample even****t. Wählen Sie im Abschnitt Ereignismuster die Option Benutzerdefinierte Muster (JSON-Editor).

5.    Kopieren Sie den folgenden Code und fügen Sie ihn in das Feld Ereignismuster ein. Achten Sie darauf, MyTestCrawl durch den Namen Ihres AWS-Glue-Crawlers zu ersetzen.

{
    "detail-type": [
        "Glue Crawler State Change"
    ],
    "source": [
        "aws.glue"
    ],
    "detail": {
        "crawlerName": [
            "MyTestCrawl"
        ],
        "state": [
            "Succeeded"
        ]
    }
}

6.    Gehen Sie im Abschnitt Ziele auswählen wie folgt vor:

Wählen Sie für Ziel die Lambda-Funktion aus.

Wählen Sie für Funktion den Namen Ihrer Lambda-Funktion aus.

7.    Wählen Sie Erstellen.

Führen Sie Ihren AWS-Glue-Crawler aus, um die Lambda-Funktion und die EventBridge-Regel zu testen. Überprüfen Sie dann die Registerkarte Verlauf Ihres AWS-Glue-ETL-Jobs. Der Ausführungsstatus sollte Wird gestartet oder Wird ausgeführt anzeigen.


Weitere Informationen

Erstellen von Amazon-EventBridge-Regeln, die auf Ereignisse reagieren

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren