簡體   English   中英

將消息發送到具有2個SQS訂閱的SNS主題,每個訂閱都有一個lambda觸發器,將導致空隊列

[英]Sending message to SNS topic with 2 SQS subscriptions each with a lambda trigger results in empty queues

到目前為止,我已經設置了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中發生靜默錯誤的地方令人沮喪。

我有同樣的問題。 請檢查您是否在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上沒有錯誤消息。 希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM