在单独的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
EXPERTE
gefragt vor 6 Monaten14 Aufrufe
1 Antwort
0

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

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

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

profile picture
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen