AWS sqs 限制为具有 iam 角色的 ec2

AWS sqs limit to ec2 with iam role

我有一个 SQS,我想将允许的服务访问限制为 send/receive。

阅读并尝试后,我发现这应该可以通过在 SQS 上使用访问策略来实现。

我写的政策:

"Version": "2012-10-17",
  "Id": "arn:aws:sqs:eu-west-1:123456789:HACKsqs03/SQSDefaultPolicy",
  "Statement": [
{
  "Sid": "Sid456789",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::123456789:role/HACKiam01"
  },
  "Action": "SQS:ReceiveMessage",
  "Resource": "arn:aws:sqs:eu-west-1:123456789HACKsqs03"
},
{
  "Sid": "Sid123456",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::123456789:role/HACKiam02"
  },
  "Action": "SQS:SendMessage",
  "Resource": "arn:aws:sqs:eu-west-1:123456789:HACKsqs03"
}
]

此政策已附加到 SQS。

这两个角色添加到我用于测试的两个不同的 EC2 实例。现在仍然可以发送和接收消息。我不明白为什么?

我的政策错了吗?还是我误解了文档?

澄清:我需要一个允许一个 instance/securitygroup/iam-role 发送消息和一个 instance/sg/iam-role 接收消息的策略。

还有其他明确允许的政策。感谢 John Rotenstein 为我指明了正确的方向: