【问题标题】:Sending message to SNS topic with 2 SQS subscriptions each with a lambda trigger results in empty queues使用 2 个 SQS 订阅向 SNS 主题发送消息,每个订阅都有一个 lambda 触发器导致空队列
【发布时间】:2019-10-22 13:57:12
【问题描述】:

到目前为止,我已经设置了一个包含 2 个 SQS 订阅的 SNS 主题。每个 SQS 都有一个与之关联的 lambda 触发器。

当我像这样通过 SNS.publish 发送消息以向第二个 SQS 订阅发送消息时:

response = sns.publish(
    TopicArn='arn:aws:sns:us-west-2:234723472:test',
    Message=json.dumps({'default': json.dumps({"c": code, "event_type": queuename})}),
    MessageAttributes={'event_type':{'DataType':'String', 'StringValue':queuename}
)

队列仍然是空的。

然而,当我直接向队列发送消息时,lambda 触发器起作用。但是一旦发送到 SNS,这些消息似乎就不会过去。不会触发任何错误。令人沮丧的是,SNS 没有显示它收到的消息日志,所以我无法在这里真正调试。

我可能会错过什么?

我也试过上面有和没有MessageStructure='json',没有区别。

不知道 AWS 中发生静默错误的位置令人沮丧。

【问题讨论】:

    标签: python aws-lambda boto3 amazon-sqs amazon-sns


    【解决方案1】:

    我遇到了同样的问题。请检查您是否在 SQS 上设置了权限,以便它可以接受来自 SNS 的消息。

    例子:

    # SQS Queue
    MyQueue: 
      Type: AWS::SQS::Queue 
        Properties: 
          QueueName: MyQueue
    
    # SNS Topic
    MyTopic: 
      Type: AWS::SNS::Topic 
      Properties: 
        TopicName: MyTopic
    
    # Topic Subscription 
    MyTypicSubscription: 
      Type: AWS::SNS::Subscription 
        Properties: 
          Endpoint: !GetAtt MyQueue.Arn 
          Protocol: sqs 
          RawMessageDelivery: true 
          TopicArn: !Ref MyTopic 
    
    #Permissions for SQS to receive SNS notifications 
    MyQueuePermissions: 
      Type: AWS::SQS::QueuePolicy 
      Properties:  
        PolicyDocument: 
          Statement: 
            Effect: Allow 
            Principal: 
              AWS: '*' 
            Action: SQS:SendMessage 
            Resource: 
            - !GetAtt MyQueue.Arn 
            Condition: 
              ArnEquals:  
                aws:SourceArn: !Ref MyTopic 
        Queues:  
        - !Ref MyQueue 
    

    在控制台中是这样的:

    SNS 服务会通知其订阅者,但“不关心”订阅者是否可用,因此 SNS 上不会出现错误消息。 希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      相关资源
      最近更新 更多