Amazon web services SNS发布的消息未到达SQS

Amazon web services SNS发布的消息未到达SQS,amazon-web-services,amazon-sqs,amazon-sns,aws-serverless,Amazon Web Services,Amazon Sqs,Amazon Sns,Aws Serverless,我有一个加密的SQS队列和SNS主题,由自定义的KMS密钥管理。目前,我正在使用一种类似的SQS策略,该策略在下面的链接中说明,在那里工作良好 但是如果我使用下面的SQS策略,它将不起作用。由于安全原因,我不想将Principal作为“*”。有人能解释一下为什么会这样吗 { "Version":"2012-10-17", "Statement":[ { "Sid":"My

我有一个加密的SQS队列和SNS主题,由自定义的KMS密钥管理。目前,我正在使用一种类似的SQS策略,该策略在下面的链接中说明,在那里工作良好

但是如果我使用下面的SQS策略,它将不起作用。由于安全原因,我不想将Principal作为“*”。有人能解释一下为什么会这样吗

    {
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"MySQSPolicy001",
      "Effect":"Allow",
      "Principal":{
    "AWS": "arn:aws:iam::123456789012:root"
  },
      "Action":"sqs:SendMessage",
      "Resource":"arn:aws:sqs:us-east-1:123456789012:MyQueue"
    }
  ]
}

因此,如果您的队列策略中存在SNS arn的情况,当多个主题需要发布到同一队列时,您可能需要再次添加arn

因此,解决办法将是以下政策

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Queue1_SendMessage",
      "Effect": "Allow",
      "Principal": {
        "Service": "sns.amazonaws.com",
        "AWS": "arn:aws:iam::1234567890:root"
      },
      "Action": [
        "sqs:SendMessage",
        "sqs:ReceiveMessage",
        "sqs:DeleteMessage"
      ],
      "Resource": "arn:aws:sqs:eu-central-1:1234567890:test-queue",
  "Condition": {
    "StringEquals": {
      "aws:SourceAccount": "1234567890"
    }
  }
    }
  ]
}

这项政策不适用于SNS。SNS不是主要的AWS,而是服务。你链接中的策略是正确的,那么为什么不使用它呢?但是我允许所有资源都是我帐户的一部分,对吗?SNS不是你帐户的一部分。它的AWS服务,没问题。很高兴它成功了:-)