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

Amplify React应用S3存储Lambda触发器未触发问题求助

问题排查与解决方案

1. 核对S3触发器的规则配置

  • 确认事件类型:必须勾选s3:ObjectCreated:*(覆盖所有文件创建场景),或者至少包含你上传时对应的事件(比如s3:ObjectCreated:Put/s3:ObjectCreated:Post),如果只选了其他类型事件,自然不会触发。
  • 检查路径过滤规则:如果触发器设置了前缀(比如仅匹配private/开头的文件),那上传到public/的文件会被过滤掉;后缀如果限定了非.pdf的格式,也会导致PDF上传不触发,先确认前缀/后缀和你的上传路径、文件类型匹配。
  • 确认绑定桶的正确性:Amplify会为不同环境创建独立S3桶,检查触发器是否绑定到你实际上传文件的那个桶。

2. 检查Lambda的权限策略

S3桶需要有调用Lambda的权限,去Lambda控制台的「配置」→「权限」→「资源策略」,确认存在类似以下的授权语句:

{
  "Version": "2012-10-17",
  "Id": "S3InvokeLambdaPolicy",
  "Statement": [
    {
      "Sid": "AllowS3Trigger",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:你的区域:账号ID:function:你的Lambda函数名",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:s3:::你的目标S3桶名"
        }
      }
    }
  ]
}

如果没有,要么手动添加该策略,要么删除现有触发器重新创建(AWS会自动生成权限)。

3. 确认Amplify的上传行为细节

  • Amplify上传大文件可能用分段上传,只有分段上传完成时才会触发s3:ObjectCreated:CompleteMultipartUpload事件,确保触发器包含该事件类型。
  • 去S3控制台确认文件已完全上传,状态为「已完成」,排除临时文件未触发的情况。

4. 验证CloudWatch日志的准确性

  • 检查Lambda对应的CloudWatch日志组,确认筛选的时间范围覆盖上传时段,或者查看Lambda「监控」页面的「调用次数」是否有增长——有时候不是没触发,是日志筛选没找到。

5. 检查S3桶的事件通知状态

直接进入S3桶的「属性」→「事件通知」,查看对应的通知规则是否处于「启用」状态,目标是否指向你的Lambda函数。偶尔会出现Lambda控制台配置触发器后,S3端规则未同步或被禁用的情况。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:05:20