调用ListQueues操作时为AccessDenied

时间:2019-06-17 11:52:19

标签: amazon-web-services amazon-sqs aws-cli

除非我将资源的值设置为arn:aws:sqs:*:*:*,否则在使用AWS-CLI且附加策略不起作用的呼叫列表队列命令时,这很奇怪。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sqs:*",
            "Resource": "arn:aws:sqs:*:45*****65:local-*"
        }
    ]
}

我希望以下命令应返回以local- *开头的所有队列,但我获得了AccessDenied。

aws sqs list-queues --queue-name-prefix local-*

但是对于相同的队列,我能够获取其属性。

aws sqs get-queue-attributes --queue-url https://us-west-2.queue.amazonaws.com/0****5/local-myqueue --attribute-names All

我需要更改策略中的某些内容还是列表队列的行为不同?

谢谢。

1 个答案:

答案 0 :(得分:2)

根据Actions, Resources, and Condition Keys for Amazon SQS - AWS Identity and Access Management,SQS命令不接受条件。因此,ListQueues()命令要么完全可以工作(显示 all 个匹配队列),要么不返回任何内容(由于访问被拒绝)。限制返回哪些队列的唯一方法是使用queue-name-prefix

策略中的Resource属性将确定各种命令可以在哪个队列上运行,这就是为什么您能够获得与local-*匹配的队列的属性的原因。如果您尝试获取名为public-xxx的队列的详细信息,它将被拒绝。 (但是ListQueues服务上运行,而不是在特定队列上运行。)