2011-05-08 74 views
4

我嘗試使用SNS原型分佈式應用和SQS.I有這樣的話題:SNS話題不會發布到SQS

arn:aws:sns:us-east-1:574008783416:us-east-1-live-auction

與此隊列:

arn:aws:sqs:us-east-1:574008783416:queue4

我使用JS Scratchpad創建隊列。我使用控制檯添加了訂閱。我使用暫存器將AddPermission添加到隊列中。現在的隊列策略是:

{ 
    "Version":"2008-10-17", 
    "Id":"arn:aws:sqs:us-east-1:574008783416:queue4/SQSDefaultPolicy", 
    "Statement":[ 
     { 
     "Sid":"RootPerms", 
     "Effect":"Allow", 
     "Principal":{ 
      "AWS":"574008783416" 
     }, 
     "Action":"SQS:*", 
     "Resource":"arn:aws:sqs:us-east-1:574008783416:queue4" 
     } 
    ] 
} 

我對同一主題的電子郵件訂閱和郵件到達正常,但郵件未曾到達隊列。我已經嘗試過SendMessage直接到隊列 - 而不是通過SNS - 使用Scratchpad,它工作正常。任何想法爲什麼它不會發送到隊列?

回答

8

這是張貼在AWS論壇而回:https://forums.aws.amazon.com/thread.jspa?messageID=202798

然後,我給了SNS主題發送消息到SQS隊列的權限。這裏的訣竅是允許所有的校長。 SNS不會從您的賬戶ID發送 - 它有自己的賬戶ID。

+0

謝謝,謝謝。有AWS支持的開放票證,並且請求他們將這個答案添加到文檔中的策略示例中。 – user427875 2011-05-11 00:05:38

0

這裏的斯凱勒的回答

"MyQueue": { 
    "Type": "AWS::SQS::Queue" 
}, 
"QueuePolicy": { 
    "Type": "AWS::SQS::QueuePolicy", 
    "Properties": { 
    "Queues": [ 
     { 
     "Ref": "MyQueue" 
     } 
    ], 
    "PolicyDocument": { 
     "Version": "2012-10-17", 
     "Statement": [ 
     { 
      "Sid": "allow-sns-messages", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "sqs:SendMessage", 
      "Condition": { 
      "ArnEquals": { 
       "aws:SourceArn": { 
       "Ref": "MyTopic" 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

亞馬遜有自己的Sending Amazon SNS Messages to Amazon SQS Queues文檔中的多個選項的完整CloudFormation例子。