调用ListQueues操作时AccessDenied

Adi*_*iii 4 amazon-sqs amazon-web-services aws-cli

当使用带有附加策略的 AWS-CLI 的调用列表队列命令不起作用时,除非我将Resource 的值设置为 ,否则这是很奇怪的arn:aws:sqs:*:*:*

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sqs:*",
            "Resource": "arn:aws:sqs:*:45*****65:local-*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

aws sqs list-queues --queue-name-prefix local-*
Run Code Online (Sandbox Code Playgroud)

但对于同一个队列,我能够获取它的属性。

aws sqs get-queue-attributes --queue-url https://us-west-2.queue.amazonaws.com/0****5/local-myqueue --attribute-names All
Run Code Online (Sandbox Code Playgroud)

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

提前致谢。

Joh*_*ein 5

根据Amazon SQS 的操作、资源和条件键 - AWS Identity and Access Management,SQS 命令不接受条件。因此,该ListQueues()命令要么完全工作(显示所有匹配的队列),要么不返回任何内容(由于访问被拒绝)。限制返回的队列的唯一方法是使用queue-name-prefix.

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