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

通过CloudFormation为Lambda添加S3触发器后控制台不显示问题咨询

S3触发器在Lambda控制台不显示的原因及修复方案

这不是正常现象,你当前的配置只完成了一半——仅在S3桶侧配置了通知规则和Lambda调用权限,但没在Lambda侧创建对应的事件源映射,所以Lambda控制台不会显示这个触发器。

为什么会这样?

AWS中S3触发Lambda有两种配置路径:

  • 只在S3桶配置NotificationConfiguration+Lambda权限:这种方式下S3能正常触发Lambda,但Lambda控制台不会展示该触发器,因为没有在Lambda服务侧建立关联记录。
  • 同时配置S3通知和Lambda的EventSourceMapping:这才是控制台添加触发器时的完整流程(控制台会自动帮你创建这两部分),只有这样Lambda控制台才会显示触发器条目。

修复步骤

在你的CloudFormation模板中添加AWS::Lambda::EventSourceMapping资源,同时优化现有权限配置,完整示例如下:

# 你的S3桶资源(保留原有通知配置)
YourS3Bucket:
  Type: AWS::S3::Bucket
  Properties:
    NotificationConfiguration:
      LambdaConfigurations:
        - Event: s3:ObjectCreated:*
          Filter:
            S3Key:
              Rules:
                - Name: prefix
                  Value: cft_sample/
          Function: !Ref YourLambdaFunctionArn

# Lambda权限配置(新增SourceArn限定具体桶,更安全)
rS3InvokeTestLambdaPermission:
  Type: AWS::Lambda::Permission
  Properties:
    Action: lambda:InvokeFunction
    FunctionName: !Ref YourLambdaFunctionName
    Principal: s3.amazonaws.com
    SourceAccount: !Ref AWS::AccountId
    SourceArn: !GetAtt YourS3Bucket.Arn

# 新增Lambda事件源映射,让控制台显示触发器
rS3LambdaEventSourceMapping:
  Type: AWS::Lambda::EventSourceMapping
  Properties:
    BatchSize: 10 # 可根据业务需求调整
    Enabled: true
    EventSourceArn: !GetAtt YourS3Bucket.Arn
    FunctionName: !Ref YourLambdaFunctionArn
    FilterCriteria:
      Filters:
        - Pattern: '{"s3":{"object":{"key":{"prefix":"cft_sample/"}}}}'

关键说明

  • EventSourceMapping里的FilterCriteria要和S3侧的前缀过滤逻辑一致,用JSON格式的事件匹配模式。
  • 给Lambda权限加上SourceArn可以限制只有指定的S3桶能调用该Lambda,避免权限过度开放。
  • 更新模板部署后,等待1-2分钟刷新Lambda控制台,就能看到这个S3触发器了,同时原有触发功能不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:07:10