在 S3 文件上传事件时触发 Java REST 端点

Trigger a Java REST endpoint upon S3 File Upload Event

我有一个 Spring 批处理应用程序,它执行以下操作,

  1. 另一个应用程序将一个 csv 文件放入 S3 存储桶 INBOUND
  2. Spring批处理应用程序读取一个csv文件
  3. 使用每一行的数据,它调用一个 API 端点并获得报价
  4. 将这些引号放入新创建的 csv 并放入 S3 存储桶 OUTBOUND

Spring 批量应用技术栈

我想做什么,

当其他应用程序将新文件放入 S3 INBOUND 存储桶时,它需要触发 Spring 批处理操作(调用启动作业的 REST 端点)

我可以使用由 S3 事件触发的 K8s Cron 作业来执行此操作吗?如果可以,有人可以解释一下吗? 或者我还有其他选择吗?

我不太熟悉 AWS 服务,但我知道他们为 S3 存储桶提供通知服务:https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-event-notifications.html

事件通知目的地之一是 AWS Lambda。因此,您可以尝试创建一个调用 rest 端点的函数,该函数在 ObjectCreated 类型的通知到达时触发。

我的解决方案是创建一个 lambda 函数,该函数在将 .txt 文件上传到 S3 存储桶的 INBOUND 文件夹时触发。

编写了一个 python 处理程序来处理 curl 命令以命中作业启动器 REST 端点。