SQS 队列需要哪些权限才能通过 SNS 接收来自 SES 的通知?

What permissions are needed on an SQS queue in order to be able to receive notifications from SES over SNS?

我的方案:使用 SES 发送邮件并通过 SNS 将传递信息接收到 SQS 队列中。该队列需要具有什么权限?

我发现如果我不授予任何权限,所有通知都不会到达。当我授予 Everyone 权限时,通知确实会到达,但这是不安全的。

我应该设置什么权限?

您需要授予 SNS 队列调用 sqs:SendMessage API 调用的权限

为此,您向 SQS 队列添加一个策略,允许所有委托人,条件是他们的 ARN 是您的 SNS 的 ARN,有效地锁定来自您的 SNS 主题的特定调用。

您可以在下面找到示例 - 根据需要替换 Resource 和 SourceArn。

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"MySQSPolicy001",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"sqs:SendMessage",
      "Resource":"arn:aws:sqs:us-east-1:123456789012:MyQueue",
      "Condition":{
        "ArnEquals":{
          "aws:SourceArn":"arn:aws:sns:us-east-1:123456789012:MyTopic"
        }
      }
    }
  ]
}

来源:http://docs.aws.amazon.com/sns/latest/dg/SendMessageToSQS.html