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

如何为Lambda函数添加S3触发器 SAM配置不生效如何解决

故障原因和修复方案

你当前的配置存在2个核心问题导致触发不生效:

  • 缺少Lambda访问S3桶的权限配置:你仅给函数配置了DynamoDB的访问权限,未授予S3桶的读取权限,S3推送事件后Lambda无权读取对象会直接报错,触发流程中断。
  • 未显式声明S3事件的资源范围(可选但建议补充,避免同桶其他事件冲突)

修正后的SAM模板如下:

Resources:
  SecondFunction:
    Type: AWS::Serverless::Function 
    Properties:
      CodeUri: second/
      Handler: app.lambda_handler
      Runtime: python3.8
      Policies:
        - DynamoDBCrudPolicy:
            TableName: "test_table"
        # 新增S3桶读取权限
        - S3ReadPolicy:
            BucketName: !Ref PracticeBucket
      Events:
        S3Bucket:
          Type: S3
          Properties:
            Bucket: !Ref PracticeBucket
            Events: 's3:ObjectCreated:*'
            # 可选:如果需要过滤前缀/后缀可以加下面的配置,不需要可以删除
            # Filter:
            #   S3Key:
            #     Rules:
            #       - Name: prefix
            #         Value: uploads/
  PracticeBucket:
    Type: AWS::S3::Bucket

部署后验证步骤

  • 前往Lambda控制台查看「配置」-「触发器」页,确认已经存在对应S3桶的触发器,状态为已启用
  • 前往S3桶控制台查看「属性」-「事件通知」,确认存在指向对应Lambda的通知规则
  • 测试时注意不要上传0字节对象,部分运行时的默认处理逻辑会跳过0字节对象触发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 02:48:02