完成后删除 AWS Glue Crawler

问题描述

我有一个用例,我需要创建一个 AWS glue Crawler 来爬取存储在 S3 中的一些数据,启动爬虫,然后在爬取完数据后删除爬虫。

我遇到的困境是,爬虫可能需要很长时间才能完成,有时需要 20-30 分钟才能完成对实际数据的爬取,然后才能将其删除

最初我打算用 AWSglueAsyncclient 来解决这个问题,这样我就不会阻塞调用线程 20-30 分钟,我只需编写一个回调,这样当爬虫完成时,它会立即被删除

这样做的问题是,如果服务器在 20 到 30 分钟的时间内出现故障或中断,爬虫程序将不会再将其删除

什么是持久化爬虫删除步骤的好方法,这样即使服务器宕机,它仍然会在重新启动后尝试删除爬虫?数据库似乎有点矫枉过正。

解决方法

您可以设置 EventBridge rule 以在爬虫完成时触发 lambda 函数。然后该函数将删除爬虫。示例规则是:

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