2011-05-08 72 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例子。