【问题标题】:SAM template for an EventBridge that triggers SQS触发 SQS 的 EventBridge 的 SAM 模板
【发布时间】:2021-04-24 19:12:27
【问题描述】:

我有一个 EventBridge 接收事件并希望将其发布到使用 sam 模板触发 Lambdafunction 的 SQS

在 EventBridge 上放置事件是可以的,但是 SQS 没有被 EventBridge 触发

我下面yaml有什么错误吗

eventSqsQueue:
    Type: AWS::SQS::Queue

  eventSynchronizer:
    Type: AWS::Serverless::Function 
    Properties:
      CodeUri: build/eventSynchronizer
      Handler: eventSynchronizer.Handler      
      Events:
        MySQSEvent:
          Type: SQS
          Properties:
            Queue: !GetAtt eventSqsQueue.Arn
            BatchSize: 10

  eventEventRule: 
    Type: AWS::Events::Rule
    Properties:      
      EventPattern: 
        account: 
          - !Sub '${AWS::AccountId}'
        source:
          - "microserviceName"
        DetailType:
          - "event Created"
          - "event Updated"
          - "event Deleted"
      Targets: 
        - Arn: !GetAtt eventSqsQueue.Arn
          Id: "SQSqueue"

  EventBridgeToToSqsPolicy:
    Type: AWS::SQS::QueuePolicy
    Properties:
      PolicyDocument:
        Statement:
        - Effect: Allow
          Principal:
            Service: events.amazonaws.com
          Action: SQS:SendMessage
          Resource:  !GetAtt eventSqsQueue.Arn          
      Queues:
        - Ref: eventSqsQueue

【问题讨论】:

    标签: amazon-sqs aws-sam aws-event-bridge


    【解决方案1】:

    DetailType 应该是 detail-type 并删除一些额外的书面代码

    这是最终的解决方案

    eventSqsQueue:
        Type: AWS::SQS::Queue
    
      eventSynchronizer:
        Type: AWS::Serverless::Function 
        Properties:
          CodeUri: build/eventSynchronizer
          Handler: eventSynchronizer.Handler
          # ReservedConcurrentExecutions: 1      
          Events:
            MySQSEvent:
              Type: SQS
              Properties:
                Queue: !GetAtt eventSqsQueue.Arn
                BatchSize: 10
    
      eventEventRule: 
        Type: AWS::Events::Rule
        Properties:
          Description: "eventEventRule"
          EventPattern:       
            source:
              - "microserviceName"
            detail-type:
              - "event Created"
              - "event Updated"
              - "event Deleted"
          Targets: 
            - Arn: !GetAtt eventSqsQueue.Arn
              Id: "SQSqueue"
    
      EventBridgeToToSqsPolicy:
        Type: AWS::SQS::QueuePolicy
        Properties:
          PolicyDocument:
            Statement:
            - Effect: Allow
              Principal:
                Service: events.amazonaws.com
              Action: SQS:SendMessage
              Resource:  !GetAtt eventSqsQueue.Arn          
          Queues:
            - Ref: eventSqsQueue
    ```
    

    【讨论】:

      【解决方案2】:

      如果要检查模板是否有错误,请使用

      $ sam validate

      更多信息在这里: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-validate.html

      【讨论】:

        猜你喜欢
        • 2019-04-03
        • 2019-11-15
        • 2022-06-14
        • 2020-07-18
        • 1970-01-01
        • 1970-01-01
        • 2019-07-29
        • 2018-10-12
        • 1970-01-01
        相关资源
        最近更新 更多