¿Cómo puedo utilizar una función de Lambda para iniciar automáticamente un trabajo de AWS Glue cuando se complete la ejecución de un rastreador?

4 minutos de lectura
0

Quiero utilizar una función de AWS Lambda para iniciar automáticamente un trabajo de AWS Glue cuando se complete la ejecución de un rastreador.

Breve descripción

Para iniciar un trabajo cuando se complete la ejecución de un rastreador, cree una función de AWS Lambda y una regla de Amazon EventBridge. También puede modificar este método para automatizar otras funciones de AWS Glue.

Nota: También puede utilizar los flujos de trabajo de AWS Glue para iniciar automáticamente un trabajo cuando se complete la ejecución de un rastreador. Este método requiere que inicie el rastreador desde la página Flujos de trabajo de la consola de AWS Glue. Para obtener más información, consulte ¿Cómo puedo utilizar los flujos de trabajo de AWS Glue para iniciar automáticamente un trabajo cuando finaliza la ejecución de un rastreador?

Solución

Antes de completar los pasos siguientes, asegúrese de tener:

  • Un trabajo de extracción, transformación y carga (ETL) de AWS Glue.
  • Un rastreador de AWS Glue.
  • Un rol de AWS Identity and Access Management (IAM) para Lambda con permiso para ejecutar trabajos de AWS Glue. Por ejemplo, configure un rol vinculado a un servicio para Lambda que tenga asociada la política AWSGlueServiceRole.

Creación de la función de Lambda

1.    Abra la consola de Lambda.

2.    Elija Crear una función.
Nota: Si no tiene ninguna función de Lambda, se mostrará la página Empezar. Elija Crear una función y continúe con el siguiente paso.

3.    Asegúrese de que la opción Crear desde cero esté seleccionada y, a continuación, configure las siguientes opciones:
En Nombre, introduzca un nombre para su función.
En Tiempo de ejecución, elija una de las opciones de Python.
En Arquitectura, utilice la opción predeterminada, x86_64.
En Rol, seleccione el menú desplegable en Cambiar el rol de ejecución predeterminado y elija Uso de un rol existente.
En Rol existente, seleccione un rol de IAM que tenga permiso para ejecutar trabajos de AWS Glue.

4.    Elija Crear una función.

5.    En Código de la función, pegue un código similar al siguiente. Asegúrese de sustituir MyTestJob por el nombre de su trabajo de ETL de 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.    En la parte superior de la interfaz de usuario para editar códigos, elija Desplegar y, a continuación, Probar.

7.    Abra la consola de AWS Glue y confirme si el trabajo se ha iniciado.

Creación de la regla de EventBridge

1.    Abra la consola de Amazon EventBridge.

2.    En el panel de navegación, elija Reglas y, a continuación, Crear regla.

3.    Introduzca un nombre y una descripción para la regla y seleccione Siguiente.

4.    Utilice los valores predeterminados para Origen del evento y Evento de muestra. En la sección Patrón de eventos, seleccione Patrones personalizados (editor JSON).

5.    Copie y pegue el siguiente código en el cuadro de texto Patrón de eventos. Asegúrese de sustituir MyTestCrawl por el nombre de su rastreador de AWS Glue.

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

6.    En la sección Seleccionar destinos, haga lo siguiente:

En Destino, seleccione Función de Lambda.

En Función, seleccione el nombre de la función de Lambda.

7.    Elija Crear.

Para probar la función de Lambda y la regla de EventBridge, ejecute el rastreador de AWS Glue. A continuación, consulte la pestaña Historial de su trabajo de ETL de AWS Glue. El Estado de ejecución debería ser Iniciando o En ejecución.


Información relacionada

Creating Amazon EventBridge rules that react to events

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años