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

如何在CloudFormation中为AWS EventBridge单规则配置两个目标?

问题排查与解决方案

1. 目标ID重复(直接触发失败的核心原因)

你的EventBridge规则中两个Lambda目标的Id均为"eventRule",同一规则下的每个目标ID必须唯一——EventBridge依赖ID区分不同目标,重复ID会直接导致配置验证失败。

修正后的Targets段代码:

Targets:
  - Arn: !GetAtt lambdaA.Arn
    Id: "TargetLambdaA"  # 唯一标识
  - Arn: !GetAtt lambdaB.Arn
    Id: "TargetLambdaB"  # 唯一标识

2. S3事件未关联到自定义事件总线

默认情况下,S3会将对象创建事件发送到AWS默认事件总线,而非你定义的customEventBus。需为存储桶添加事件通知配置,明确将事件发送到自定义总线:

s3BucketEventConfig:
  Type: AWS::S3::BucketNotification
  Properties:
    Bucket: test-bucket  # 替换为你的存储桶名称或资源引用
    EventBridgeConfiguration:
      EventBridgeEnabled: true

3. Lambda权限缺失

EventBridge需要具备调用Lambda函数的权限,否则无法触发执行。需为每个Lambda添加权限资源:

lambdaAPermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName: !Ref lambdaA
    Action: lambda:InvokeFunction
    Principal: events.amazonaws.com
    SourceArn: !GetAtt eventRule.Arn

lambdaBPermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName: !Ref lambdaB
    Action: lambda:InvokeFunction
    Principal: events.amazonaws.com
    SourceArn: !GetAtt eventRule.Arn

完整修正后的核心配置示例

customEventBus:
  Type: AWS::Events::EventBus
  Properties:
    Name: "customEventBusName"

eventRule:
  Type: AWS::Events::Rule
  Properties:
    Name: eventRuleName
    EventBusName: !Ref customEventBus
    EventPattern:
      source:
          - "aws.s3"
      detail-type:
        - 'Object Created'
      detail:
        bucket:
           name:
             - test-bucket
    State: "ENABLED"
    Targets:
      - Arn: !GetAtt lambdaA.Arn
        Id: "TargetLambdaA"
      - Arn: !GetAtt lambdaB.Arn
        Id: "TargetLambdaB"

# S3事件关联自定义EventBus
s3BucketEventConfig:
  Type: AWS::S3::BucketNotification
  Properties:
    Bucket: test-bucket
    EventBridgeConfiguration:
      EventBridgeEnabled: true

# Lambda权限配置
lambdaAPermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName: !Ref lambdaA
    Action: lambda:InvokeFunction
    Principal: events.amazonaws.com
    SourceArn: !GetAtt eventRule.Arn

lambdaBPermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName: !Ref lambdaB
    Action: lambda:InvokeFunction
    Principal: events.amazonaws.com
    SourceArn: !GetAtt eventRule.Arn

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:22:32