¿Es posible activar un rastreador de AWS Glue en archivos nuevos, que se cargan en un depósito de S3, dado que el rastreador "apunta" a ese depósito? En otras palabras: la carga de un archivo genera un evento que hace que el rastreador de AWS Glue lo analice. Sé que existe un rastreo basado en programación, pero nunca encontré uno basado en eventos.
Como inicio rápido, aquí hay una cuenta detallada de cómo crear un Lambda en Python para hacer esto. Esta es la primera vez que creo un Lambda para YMMV.
"Action": "glue:StartCrawler", "Resource": "*"
from __future__ import print_function import json import boto3 print('Loading function') glue = boto3.client(service_name='glue', region_name='ap-southeast-2', endpoint_url='https://glue.ap-southeast-2.amazonaws.com') def lambda_handler(event, context): #print("Received event: " + json.dumps(event, indent=2)) try: glue.start_crawler(Name='my-glue-crawler') except Exception as e: print(e) print('Error starting crawler') raise eFinalmente, suponiendo que seleccionó que el disparador debe estar deshabilitado durante el desarrollo, haga clic en el disparador S3 desde el panel del diseñador y asegúrese de que esté habilitado (es posible que deba guardar la lambda después de realizar este cambio)
Eso es todo, pero tenga en cuenta que se lanzará una excepción si el rastreador ya se está ejecutando, por lo que querrá manejar eso si tiene cargas frecuentes o rastreos largos. Consulte: https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-crawling.html#aws-glue-api-crawler-crawling-StartCrawler
Editar:
Esto me ayudó con el manejo de excepciones (de AWS Glue): https://github.com/boto/boto3/issues/1606#issuecomment-401423567
No, actualmente no existe una forma directa de invocar un rastreador de AWS Glue en respuesta a una carga en un depósito de S3. Las notificaciones de eventos de S3 solo se pueden enviar a:
Sin embargo, sería trivial escribir un pequeño fragmento de código Lambda para invocar mediante programación un rastreador de Glue utilizando el SDK del lenguaje correspondiente.
Aquí hay una guía paso a paso (enlace a continuación) para una arquitectura similar. (Consulte la imagen de arriba para ver la arquitectura)