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

如何在AWS SAM中使用现有S3及EventBridge规则触发Lambda

关于AWS SAM与现有S3桶、EventBridge规则集成的解决方案

问题1:在SAM中使用现有Amplify S3桶创建EventBridge规则触发Lambda

可以在SAM中使用现有S3桶,但需要先完成前置配置并修正代码:

  1. 开启S3桶的EventBridge事件通知
    登录AWS控制台,找到Amplify创建的S3桶 → 进入「属性」标签 → 找到「事件通知」模块 → 开启「发送到EventBridge」开关。

  2. 修正SAM代码
    需明确指定文件上传的事件类型,同时补充Lambda访问S3对象的权限(如果业务需要),示例代码如下:

MyLambda:
  Type: AWS::Serverless::Function
  Properties:
    FunctionName: 'MyLambda123'
    CodeUri: code/
    Handler: lambda_function.lambda_handler
    Runtime: python3.7
    Policies:
      - Statement:
          - Sid: SSMDescribeParametersPolicy
            Effect: Allow
            Action:
              - ssm:DescribeParameters
            Resource: '*'
          - Sid: S3ObjectAccessPolicy
            Effect: Allow
            Action:
              - s3:GetObject
            Resource: 'arn:aws:s3:::someexistingbucket/*' # 替换为你的桶ARN
    Events:
      S3UploadTrigger:
        Type: EventBridgeRule
        Properties:
          EventBusName: default
          Pattern:
            source:
              - "aws.s3"
            detail-type:
              - "Object Created" # 指定文件上传事件类型
            detail:
              bucket:
                name:
                  - "someexistingbucket" # 替换为你的Amplify S3桶名

问题2:在SAM中关联手动创建的现有EventBridge规则触发Lambda

不能直接通过Events字段的EventBridgeRule类型关联现有规则,需单独创建目标关联资源并配置Lambda调用权限:

MyLambda:
  Type: AWS::Serverless::Function
  Properties:
    FunctionName: 'MyLambda123'
    CodeUri: code/
    Handler: lambda_function.lambda_handler
    Runtime: python3.7
    Policies:
      - Statement:
          - Sid: SSMDescribeParametersPolicy
            Effect: Allow
            Action:
              - ssm:DescribeParameters
            Resource: '*'

# 将现有EventBridge规则与Lambda绑定为目标
ExistingRuleLambdaTarget:
  Type: AWS::Events::Target
  Properties:
    Rule: '你的手动规则名称' # 替换为已创建的EventBridge规则名
    Arn: !GetAtt MyLambda.Arn
    Id: 'LambdaTarget'

# 授予EventBridge调用Lambda的权限
LambdaInvokePermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName: !Ref MyLambda
    Action: lambda:InvokeFunction
    Principal: events.amazonaws.com
    SourceArn: !Sub 'arn:aws:events:${AWS::Region}:${AWS::AccountId}:rule/你的手动规则名称' # 替换为规则名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:55:05