In che modo è possibile utilizzare la funzione Lambda per avviare automaticamente un processo AWS Glue quando l'esecuzione di un crawler viene completata?

4 minuti di lettura
0

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. Puoi anche modificare questo metodo per automatizzare altre funzioni di AWS Glue.

**Nota:**puoi anche utilizzare i flussi di lavoro AWS Glue per avviare automaticamente un processo al termine di un'esecuzione del crawler. Questo metodo richiede l'avvio del crawler dalla pagina Flussi di lavoro della console AWS Glue. Per ulteriori informazioni, consulta Come faccio ad avviare automaticamente un processo AWS Glue al termine di un'esecuzione del crawler?

Risoluzione

Prima di completare i seguenti passaggi, assicurati di avere:

  • Un processo di estrazione, trasformazione e caricamento (ETL) AWS Glue.
  • Un crawler AWS Glue.
  • Un ruolo AWS Identity and Access Management (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.

Creare la funzione Lambda

1.    Apri la console Lambda.

2.    Scegli Crea funzione.
**Nota:**se non disponi di funzioni Lambda, viene visualizzata la pagina Guida introduttiva. Scegli Crea una funzione e continua con il passaggio successivo.

3.    Assicurati che l'opzione Autore da zero sia selezionata, quindi configura le seguenti opzioni:
In Nome, inserisci un nome per la tua funzione.
Per Runtime, scegli una delle opzioni di Python.
Per Architettura, utilizzate l'opzione predefinita, x86_64.
Per Ruolo, seleziona il menu a tendina in Modifica il ruolo di esecuzione predefinito e seleziona Usa un ruolo esistente.
Per Ruolo esistente, seleziona un ruolo IAM che dispone dell'autorizzazione per eseguire lavori AWS Glue.

4.    Scegli Crea funzione.

5.    Nella sezione Codice funzione, incolla un codice simile al seguente. Assicurati di sostituire MyTestJob con il nome del processo ETL di AWS Glue.

# 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.    Nella parte superiore dell'interfaccia utente di modifica del codice, scegli Distribuisci, quindi scegli Test.

7.    Apri la console AWS Glue e conferma che il processo è iniziato.

Crea la regola EventBridge

1.    Apri la console Amazon EventBridge.

2.    Nel riquadro di navigazione, scegli Regole, quindi scegli Crea regola.

3.    Inserisci un nome e una descrizione per la regola e seleziona Avanti.

4.    Usa i valori predefiniti per Event source e **Sample even****t.**Nella sezione Pattern di eventi, seleziona Modelli personalizzati (editor JSON).

5.    Copia e incolla il codice seguente nella casella Schema. Assicurati di sostituire MyTestCrawl con il nome del crawler AWS Glue.

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

6.    Nella sezione Seleziona obiettivi, esegui le seguenti operazioni:

Per Target, seleziona la funzione Lambda.

In Funzione, seleziona il nome della tua funzione Lambda.

7.    Scegli Crea.

Per testare la funzione Lambda e la regola EventBridge, esegui il crawler AWS Glue. Quindi, controlla la scheda Cronologia del processo ETL di AWS Glue. Lo stato di esecuzione deve mostrare Avvio o In esecuzione.


Informazioni correlate

Creazione di regole Amazon EventBridge che reagiscono agli eventi

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa