Boto3 使用新的 s3 输入启动胶水爬虫

Boto3 start glue crawler with new s3 input

我有一个亚马逊胶水爬虫,它查看特定的 s3 位置,其中包含 avro 文件。 我有一个在该位置的新子文件夹中输出文件的过程。

一旦我手动 运行 爬虫,新的子文件夹将被视为数据库中的新 table,并且它也可以从 Athena 查询。

有没有一种方法可以使该过程自动化,并以编程方式调用爬网程序,但只指定新的子文件夹,这样它就不必扫描整个父文件夹结构? 我想将 tables 添加到数据库,而不是将分区添加到现有的 table.

我一直在寻找 Python 选项,我确实看到了可以做到的:

import boto3
glue_client = boto3.client('glue', region_name='us-east-1')
glue_client.start_crawler(Name='avro-crawler')

我还没有看到通过文件夹来限制爬虫正在查看的位置的选项。因为那个位置有数百个 folders/tables,重新抓取所有内容需要很长时间,我正在努力避免这种情况。

我在这里有哪些选择?我是否需要以编程方式创建一个新的爬虫程序,并将每个新的子文件夹添加到 s3?

或者创建一个 lambda 函数,当新的子文件夹添加到 s3 时触发该函数?我看到了一个答案 ,但即使使用 lambda,它仍然意味着我调用 start_crawler,它会抓取所有内容?

感谢您的任何建议。

将 crawler_name 更新到您的 crawler_name 并将 update_path 更新到您的更新路径。

response = glue_client.update_crawler(Name=crawler_name,
                           Targets={'S3Targets': [{'Path':update_path}]})