在单独的CloudFormation脚本中更新EventBridge目标

0

【以下的问题经过翻译处理】 我有两个独立的serverless.yml项目,它们必须与一个EventBridge规则交互,而我正在思索如何更新这两个项目的资源部分以支持该规则。以下是我所说的示例:

Endpoint Lambda:

这个Lambda从前端获取请求,然后将消息提交给我们设置的EventBridge规则。EventBridge规则在serverless.yml文件中设置如下:

resources:
  Resources:
    RegisterEventBridge:
      Type: "AWS::Events::Rule"
      Properties:
        Name: "RegisterCloseEventBridge"
        Description: "Event rule for Closing Register event."
        State: "ENABLED"
        EventPattern:
          source:
            - "register.close.${self:provider.stage}"

消费者: 这个Lambda函数由SQS消息触发。SQS是EventBridge规则的目标,因此似乎队列本身应该在这个服务中创建。以下是资源部分:

resources:
  Resources:
    ClosingRegisterQueue:
      Type: "AWS::SQS::Queue"
      Properties:
        QueueName: "closing-register-sqs-${self:provider.stage}"
    RegisterEventBridge:
      Type: "AWS::Events::Rule"
      Properties:
        Name: "RegisterCloseEventBridge"
        EventPattern:
          source:
            - "register.close.${self:provider.stage}"
        Targets:
          - Arn: !GetAtt ClosingRegisterQueue.Arn
            Id: "SA"

但显然这不起作用,因为RegisterEventBridge规则已经存在于之前的堆栈中。有没有办法我可以简单地将它导入到这个堆栈中,以达到这个目的?

profile picture
专家
已提问 5 个月前10 查看次数
1 回答
0

【以下的回答经过翻译处理】 应将规则及其所有目标视为一个单一实体。这样做的目的是让事件消费者知道它对哪些事件感兴趣。

即使有不同的目标需要相同的规则,它们也应创建两个不同的规则。例外情况是,如果两个目标属于同一个子系统,并且定义在同一个模板中。在这种情况下,您可以为多个目标创建一条规则。

因此,在您的案例中,我会在同一个模板中创建包含 SQS 队列和 Lambda 函数的规则。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则