AWS SQS错误:SignatureDoesNotMatch HTTP错误:403

时间:2018-08-23 03:22:20

标签: php laravel amazon-web-services amazon-sqs aws-php-sdk

我正在制作人脸跟踪思想视频AWS RekognitionStartFaceSearch)。它将返回作业ID。我已经设置了所有SQS SNS部分。 这是我的问题,我无法使用receiveMessage()从SQS接收消息。甚至listQueues()也不起作用。它给出以下错误。

  

https://sqs.us-east-1.amazonaws.com”上的“ ListQueues”; AWS HTTP错误:客户端错误:POST https://sqs.us-east-1.amazonaws.com导致了403 Forbidden响应:   发件人<代码> S(已截断...)   SignatureDoesNotMatch(客户端):我们计算出的请求签名与您提供的签名不匹配。检查您的AWS Secret Access密钥和签名方法。有关详细信息,请查阅服务文档。

     

此请求的规范字符串应为   '开机自检   / ....... <继续..........

代码如下。 AWS PHP SDK版本3.64.11。

$queueUrl = "https://sqs.us-east-1.amazonaws.com/xxxxxxx/facetrackingreceive";
        // Get the client from the builder by namespace
        $sqs_client = new SqsClient(array(
            'credentials' => array(
                'key'    => 'xxxxxxxxxx',
                'secret' => 'xxxxxxxxxxxxxxxxxxxxxxx',
            ),
            'version' => '2012-11-05',
            'region'  => 'us-east-1',
            'http' => [ 'verify' => false ],

        ));

        $result = $sqs_client->listQueues();

        foreach ($result->get('QueueUrls') as $queueUrl) {
            echo "$queueUrl\n";
        }

谢谢!

1 个答案:

答案 0 :(得分:0)

我已通过重新生成access key解决了问题。我不能相信 但是有一些问题。我从关闭的issue中发现了这个想法。这个问题将近4年了,现在我遇到了同样的错误。

  

由于访问/保密键中的特殊字符,可能会出现问题

重新生成AWS console中的密钥后。 SQS的所有方法都可以与新的credentials配合使用。将其报告为Github official repository上的错误。