2017-02-06 110 views
0

我有一个IAM用户的策略,用于发送和接收来自特定SQS队列的消息。当使用AWS CLI并发出list-queues命令我得到的错误:AWS-CLI - SQS列表队列

An error occurred (AccessDenied) when calling the ListQueues operation: Access to the resource https://queue.amazonaws.com/ is denied.

我对IAM用户自定义策略来指定权限,如下图所示:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1485992560000", 
      "Effect": "Allow", 
      "Action": [ 
       "sqs:ReceiveMessage", 
       "sqs:SendMessage", 
       "sqs:ListQueues" 
      ], 
      "Resource": [ 
       "arn:aws:sqs:us-east-1:XXXX:TestQueue" 
      ] 
     } 
    ] 
} 

有了这个政策,我已验证我可以使用AWS CLI从此队列发送和接收消息。如果我修改了用户的权限并添加了一个语句,其中操作为sqs:ListQueues,资源为"*",则使用AWS CLI的list-queues命令会在响应中返回TestQueue的url。

我错了,认为list-queue应该只返回队列IAM用户已被授予该行动?

欢迎任何指导/建议!谢谢!

回答

3

诸如sqs:ListQueues之类的命令不能限制其资源。他们必须有一个资源规范*。这也意味着您无法限制返回值:即使用户无法对其执行操作,它们也会始终返回所有队列。

这与其他“列表”类型的方法类似,如ec2:DescribeInstances等。