SNS主题不发布到SQS
我正在尝试使用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,它工作正常。 任何想法为什么它不会发送到队列?
这是在AWS论坛上发布的:https://forums.aws.amazon.com/thread.jspa?messageID=202798
然后我给了SNS主题发送消息到SQS队列的权限。 这里的诀窍是允许所有的校长。 SNS不会从您的账户ID发送 - 它有自己的账户ID。
以下是Skyler答案的完整CloudFormation示例
"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"
}
}
}
}
]
}
}
}
Amazon在将Amazon SNS消息发送到Amazon SQS队列文档方面拥有更多选项。
链接地址: http://www.djcxy.com/p/32135.html