通过AWS SDK拒绝访问SQS

时间:2013-11-27 16:58:39

标签: symfony amazon-web-services aws-sdk amazon-sqs

我目前正在开发一个使用Symfony2开发的网站,我需要在Amazon SQS中发送消息。为此,我添加到composer.json

"aws/aws-sdk-php": "2.4.*"

然后,当我尝试创建队列或列表队列时,我收到403错误说:

  

拒绝访问资源https://sqs.us-west-2.amazonaws.com/

修改 添加了完整的错误消息

  

AWS错误代码:AccessDenied,状态代码:403,AWS请求ID:   2fe34c11-7af8-5445-a768-070159a0953e,AWS错误类型:客户端,AWS   错误消息:访问资源   https://sqs.us-west-2.amazonaws.com/被拒绝。用户代理:   aws-sdk-php2 / 2.4.11 Guzzle / 3.7.4 curl / 7.25.0 PHP / 5.4.3

以下是我所做的示例代码:

$aws = Aws::factory(array(
  'key'    => 'my-key',
  'secret' => 'my-secret',
  'region' => 'us-west-2'
));

$sqs = $aws->get('sqs');

return new Response(var_dump($sqs->listQueues()));

如果出现此错误,我该怎么办?

3 个答案:

答案 0 :(得分:47)

挖掘后,我发现我使用的帐户未被授予对SQS服务的访问权限。

要授予SQS帐户访问权限,您必须转到亚马逊管理控制台。然后单击IAM。在此部分下单击“用户”,然后您可以管理您创建的每个帐户的权限。

答案 1 :(得分:5)

确保以下两个策略均允许访问SQS队列

  1. 基于资源(SQS)的策略:SQS队列应允许您的身份使用该队列。您可以使用队列策略(https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-sqs-policy)进行定义。默认队列策略将仅允许访问队列的所有者(队列的所有者是创建队列的标识)。
  2. 基于身份的策略:正在访问队列的身份的策略应具有调用队列上操作的权限。

确保访问权限不受其中任何一个的限制。

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-identity-based-policies.html

答案 2 :(得分:0)

我只是通过弄乱队列名称而遇到同样的问题,因此请确保这也是正确的。