【问题标题】:AWS SQS error : SignatureDoesNotMatch HTTP error: 403AWS SQS 错误:SignatureDoesNotMatch HTTP 错误:403
【发布时间】:2019-01-29 08:48:33
【问题描述】:

我正在制作面部跟踪思想视频AWS Rekognition (StartFaceSearch)。它将返回作业 ID。我已经设置了所有SQSSNS 部分。 我的问题是我无法使用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 秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。

这个请求的规范字符串应该是 '邮政 / .......

代码如下。 AWS PHP 开发工具包版本 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";
        }

提前致谢!

【问题讨论】:

  • 您是否按照建议进行操作,检查您的 AWS 密钥和签名方法?
  • @ChrisCousins 不!我按照上面的代码做到了。可以建议检查链接
  • 这里出了点问题;您的 POST 是“sqs.eu-west-1.amazonaws.com”,但在您的代码中却显示“sqs.eu-east-1.amazonaws.com”?
  • @ChrisCousins 你是对的,但我已经更改了该错误消息。这不是一个真正的问题。 :(

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


【解决方案1】:

我已经通过重新生成 access key 解决了问题。我不敢相信 但它有一些问题。我从这个封闭的issue 中找到了这个想法。这个问题几乎是 4 年前我得到了同样的错误。

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

AWS console 中重新生成密钥后。 SQS 所有方法都适用于新的credentials。在Github official repository 上将此报告为错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-22
    • 2019-04-29
    • 2016-11-02
    • 2016-10-12
    • 1970-01-01
    • 2017-01-19
    • 2012-05-02
    • 2016-12-23
    相关资源
    最近更新 更多