You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为S3桶特定文件夹配置对象超7小时未处理的告警通知

S3指定文件夹未处理对象超时告警配置方案

前置准备

首先修改现有处理S3文件的Lambda逻辑:文件处理完成后,给对应S3对象添加标签,键为process_status,值为done,后续通过该标签区分已处理/未处理对象。如果Lambda处理完成后会直接删除源文件,可以跳过这步,直接通过对象是否存在判断处理状态。

方案1:EventBridge定时巡检(中小规模桶首选,部署成本最低)

  • 新建一个独立的巡检Lambda,核心逻辑如下:
    1. 调用S3的list_objects_v2接口,限定只查询你指定的文件夹前缀下的对象
    2. 遍历返回的对象列表,同时满足两个条件的即为异常未处理对象:
      • 对象最后修改时间距当前时间超过7小时
      • 调用get_object_tagging接口确认对象没有process_status=done标签
    3. 只要查询到符合条件的对象,直接调用SNS主题、企业微信/钉钉webhook等渠道发送告警,告警内容可附上未处理对象的S3路径方便排查
  • 在Amazon EventBridge中创建定时规则,触发频率设置为每30分钟/1小时执行一次巡检Lambda,可根据业务对告警延迟的容忍度调整频率
  • 额外给巡检Lambda配置CloudWatch错误告警,避免巡检脚本故障导致告警失效

注意:如果桶内对象数量超过10万,频繁调用list_objects_v2和get_object_tagging会产生额外API开销,建议选择下面的方案2。

方案2:S3 Inventory + Athena + CloudWatch告警(大规模桶首选,性能开销更低)

  • 为目标S3桶开启S3 Inventory配置,导出频率设置为每小时,导出字段包含对象前缀、最后修改时间、对象标签,导出路径指定到同账号下的另一个存储桶
  • 在Athena中创建外部表,关联S3 Inventory的导出路径,配置分区规则自动识别新增的导出文件
  • 创建CloudWatch告警,自定义查询逻辑为:统计指定前缀下、最后修改时间超过7小时、标签不含process_status=done的对象数量
  • 配置告警触发条件为统计值≥1时,推送通知到关联的SNS主题即可

可选优化方案

如果业务的对象上传频率很高,可以新增DynamoDB表做状态记录:

  • 配置S3事件通知,新对象上传到指定文件夹时,自动触发一个轻量Lambda,把对象路径、上传时间、处理状态初始值写入DynamoDB
  • 现有处理Lambda完成任务后,更新DynamoDB中对应记录的处理状态为已完成
  • 巡检逻辑直接查询DynamoDB筛选超时未处理的记录即可,完全不需要调用S3接口,开销更低查询速度更快

内容的提问来源于stack exchange,提问作者Aadhinarayanan J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:18:04