In che modo è possibile utilizzare la funzione Lambda per avviare automaticamente un processo AWS Glue quando l'esecuzione di un crawler viene completata?
Desidero utilizzare una funzione AWS Lambda per avviare automaticamente un processo AWS Glue al termine dell'esecuzione di un crawler.
Breve descrizione
Per avviare un processo al termine dell'esecuzione di un crawler, crea una funzione AWS Lambda e una regola Amazon EventBridge.
Nota: puoi anche utilizzare i flussi di lavoro AWS Glue per avviare automaticamente un processo al termine di un'esecuzione del crawler. Per ulteriori informazioni, consulta Come posso usare i flussi di lavoro AWS Glue per avviare automaticamente un processo al termine dell'esecuzione di un crawler?
Risoluzione
Prerequisiti:
Devi disporre di quanto segue:
- Processo di estrazione, trasformazione e caricamento (ETL) AWS Glue
- Crawler AWS Glue
- Ruolo AWS Identity and Access Management (AWS IAM) per Lambda con autorizzazione a eseguire processi AWS Glue. Ad esempio, configura un ruolo collegato al servizio per Lambda a cui è associata la policy AWSGlueServiceRole.
Crea la funzione Lambda
Completa i seguenti passaggi:
- Apri la console Lambda.
- Scegli Crea funzione.
- Nella pagina Crea funzione, inserisci le seguenti informazioni:
Scegli Crea da zero.
In Nome funzione, inserisci un nome per la funzione.
Per Runtime, scegli un'opzione Python.
Per Architettura, utilizzate l'opzione predefinita, x86_64.
In Modifica del ruolo di esecuzione predefinito, per Ruolo di esecuzione, scegli Utilizza un ruolo esistente.
Per Ruolo esistente, seleziona il ruolo IAM che ha l'autorizzazione per eseguire processi AWS Glue. - Scegli Crea funzione.
- Nella pagina dei dettagli della funzione, in Origine del codice, inserisci il seguente codice:
Nota: sostituisci MyTestJob con il nome del tuo processo ETL di AWS Glue.# 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 - In Origine del codice, scegli Test.
- Apri la console AWS Glue e verifica che il processo sia iniziato.
Per testare la funzione Lambda, esegui il crawler AWS Glue. Quindi controlla l'elenco di risorse Jobs run (Processi eseguiti) del processo ETL di AWS Glue. Stato di esecuzione indica Avvio in corso o In esecuzione.
Crea la regola EventBridge
Completa i seguenti passaggi:
- Apri la console EventBridge.
- Nel pannello di navigazione, scegli Regole, quindi seleziona Crea regola.
- Inserisci un nome e una descrizione per la regola e seleziona Avanti.
- Utilizza i valori predefiniti per Origine evento e Evento di esempio.
- Nella sezione Modello di eventi, seleziona Modelli personalizzati (editor JSON).
- Inserisci il seguente codice nel campo Modello di eventi:
Nota: sostituisci MyTestCrawl con il nome del tuo crawler AWS Glue.{ "detail-type": [ "Glue Crawler State Change" ], "source": [ "aws.glue" ], "detail": { "crawlerName": [ "MyTestCrawl" ], "state": [ "Succeeded" ] } } - Per Seleziona destinazioni, inserisci le seguenti informazioni:
Per Destinazione, seleziona Funzione Lambda.
Per Funzione Lambda, seleziona la funzione. - Scegli Crea.
Per testare la funzione Lambda e la regola EventBridge, esegui il crawler AWS Glue. Quindi controlla l'elenco di risorse Jobs run (Processi eseguiti) del processo ETL di AWS Glue. Stato di esecuzione indica Avvio in corso o In esecuzione.
Informazioni correlate
Creazione di regole che reagiscono agli eventi in Amazon EventBridge

Contenuto pertinente
AWS UFFICIALEAggiornata 4 anni fa