【问题标题】:InvalidSignatureException - Amazon Rekognition with PHP ClientInvalidSignatureException - 带有 PHP 客户端的 Amazon Rekognition
【发布时间】:2019-04-30 11:39:51
【问题描述】:

每当我通过部署在托管服务器 (hostgator) 上的 PHP 脚本连接到 Amazon Rekognition Service 时,我都会收到以下错误

AWS HTTP 错误:客户端错误:POST https://rekognition.us-east-2.amazonaws.com 导致 400 错误请求响应: {"__type":"InvalidSignatureException","message":"签名过期:20190430T075732Z 现在早于 20190430T105409 (截断...) InvalidSignatureexception(客户端):签名已过期:20190430T075732Z现在早于20190430T105409Z(20190430T105909Z(20190430T105909Z - 5分钟) - {“__Type”:“InvalidSignatureexception”,“消息”:“签名已过期:20190430T075732Z现在早于20190430T105409Z(20190430T105909Z - 5分钟.)"}'

我正在使用以下 PHP 脚本。

require 'aws/aws-autoloader.php';
use Aws\Rekognition\RekognitionClient;
//Credentials for access AWS Service code parameter
$credentials = new Aws\Credentials\Credentials('xxxx', 'yyyyy');
//Get Rekognition Access
$rekognitionClient = RekognitionClient::factory(array(
'region' => "us-east-2",
'version' => 'latest',
'correctClockSkew' => true,
'credentials' => $credentials
));

我尝试按照其他解决方案的建议添加“'correctClockSkew' => true”,但似乎对我不起作用。

我不确定这是否是解决这个问题的正确方法。

请帮忙

【问题讨论】:

  • 我也有同样的问题。我使用 AWS PHP SDK 2.7.27 版,无法更改服务器上的时间。所以得到同样的错误并试图找到一种方法来修复 PHP 所以它支持我的服务器和 AWS 之间的时差......你最后找到解决方案了吗?

标签: php amazon amazon-rekognition


【解决方案1】:

使用以下脚本,我可以从 XAMPP 服务器和 EC2 服务器成功调用/调用 Amazon Rekognition "listCollections""describeCollection" API。

<?php

require 'vendor/autoload.php';

use Aws\Rekognition\RekognitionClient;
use Aws\Exception\AwsException;

$RekognitionClient = \Aws\Rekognition\RekognitionClient::factory(array(
    'credentials' => [
        'key'    => 'AKIASZXXXXX',
        'secret' => '+TsIDJvkXXXXXX',
    ],
    'region' => 'us-east-2',
    'version'  => 'latest',
));

$result = $RekognitionClient->listCollections([
    'MaxResults' => 10,
    //'CollectionId' => 'rekVideoBlog', // REQUIRED
]);

print $result;


//This method also works correctly
/*
$result = $RekognitionClient->describeCollection([
    'CollectionId' => 'rekVideoBlog', // REQUIRED
]);

print $result;
*/

检查事项:

  • 您能否检查一下您是否同时指定了访问密钥和秘密密钥 正确,并且它们没有意外地被交换/旋转 也许是您的安全团队?如果你设置正确,你能 如果您的角色/权限允许,测试调用另一个服务,即 S3/SNS 看看是否可行

  • 为了消除您正在使用的服务器(例如 hostgator)的问题, 你能检查一下你是否可以从不同的地方运行相同的 PHP 脚本吗 服务器,即 XAMPP、WAMP、LAMP、EC2 等,看看是否有效

【讨论】:

    猜你喜欢
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多