Saltar al contenido

¿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, crea una función de AWS Lambda y una regla de Amazon EventBridge.

Nota: También puedes utilizar los flujos de trabajo de AWS Glue para iniciar automáticamente un trabajo cuando se complete la ejecución de un rastreador. Para obtener más información, consulta ¿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?

Resolución

Requisitos previos:

Debes tener lo siguiente:

  • 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, configura un rol vinculado a un servicio para Lambda que tenga asociada la política AWSGlueServiceRole.

Creación de la función de Lambda

Sigue estos pasos:

  1. Abre la consola de Lambda.
  2. Selecciona Crear función.
  3. En la página Crear función, introduce la siguiente información:
    Selecciona Crear desde cero.
    En Nombre de la función, introduce un nombre para la función.
    En Tiempo de ejecución, elige una opción de Python.
    En Arquitectura, utiliza la opción predeterminada, x86_64.
    En Cambiar el rol de ejecución predeterminado, en Rol de ejecución, elija Usar un rol existente.
    En Rol existente, selecciona un rol de IAM que tenga permiso para ejecutar trabajos de AWS Glue.
  4. Selecciona Crear función.
  5. En la página de detalles de la función, en Código fuente, introduce el siguiente código:
    # 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
    Nota: Sustituye MyTestJob por el nombre de tu trabajo de ETL de AWS Glue.
  6. En Código fuente, selecciona Probar.
  7. Abre la consola de AWS Glue y, a continuación, confirma si el trabajo se ha iniciado.

Para probar la función de Lambda, ejecuta el rastreador de AWS Glue. A continuación, consulta la lista de recursos de ejecución de trabajos de tu trabajo de ETL de AWS Glue. El Estado de ejecución muestra Iniciando o En ejecución.

Creación de la regla de EventBridge

Sigue estos pasos:

  1. Abre la consola de EventBridge.
  2. En el panel de navegación, selecciona Reglas y, a continuación, selecciona Crear una regla.
  3. Introduce un nombre y una descripción para la regla y selecciona Siguiente.
  4. Utiliza los valores predeterminados para Origen del evento y Evento de muestra.
  5. En la sección Patrón de eventos, selecciona Patrones personalizados (editor JSON).
  6. Introduce el siguiente código en el campo Patrón de eventos:
    {
        "detail-type": [
            "Glue Crawler State Change"
        ],
        "source": [
            "aws.glue"
        ],
        "detail": {
            "crawlerName": [
                "MyTestCrawl"
            ],
            "state": [
                "Succeeded"
            ]
        }
    }
    Nota: Sustituye MyTestCrawl por el nombre de tu rastreador de AWS Glue.
  7. En Seleccionar destinos, introduce la siguiente información:
    En Destino, selecciona Función de Lambda.
    En Función, selecciona tu función de Lambda.
  8. Selecciona Crear.

Para probar la función de Lambda y la regla de EventBridge, ejecuta el rastreador de AWS Glue. A continuación, consulta la lista de recursos de ejecución de trabajos de tu trabajo de ETL de AWS Glue. El Estado de ejecución muestra Iniciando o En ejecución.

Información relacionada

Creación de reglas que reaccionen a los eventos en Amazon EventBridge

OFICIAL DE AWSActualizada hace 7 meses