[英]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.