使用带有DynamoDB的php SDK会产生“STS_Exception”,但在S3中可以正常工作

时间:2012-06-23 22:48:15

标签: php sdk amazon-web-services

服务器设置:

CentOS 6.2 64位 Ngingx 1.2.1 PHP 5.3 + PHP FPM

我通过PEAR将SDK安装为一个包。我设置了config.inc.php。我将sdk包含在require_once 'AWSSDKforPHP/sdk.class.php';

我还设置了我的DynamoDB,并有一个包含一些示例项的表。

如果我执行$dynamodb = new AmazonDynamoDB();之类的操作,我会在浏览器中收到以下错误:

Fatal error: Uncaught exception 'STS_Exception' with message 'Temporary credentials from the AWS Security Token Service could not be retrieved using the provided long term credentials. It's possible that the provided long term credentials were invalid.' in /usr/share/pear/AWSSDKforPHP/sdk.class.php:763 Stack trace: #0 [internal function]: CFRuntime->cache_sts_credentials(Object(CacheFile), Array) #1 /usr/share/pear/AWSSDKforPHP/lib/cachecore/cachecore.class.php(136): call_user_func_array(Array, Array) #2 /usr/share/pear/AWSSDKforPHP/services/dynamodb.class.php(287): CacheCore->response_manager(Array, Array) #3 /var/www/picobama.com/public/canvas.php(14): AmazonDynamoDB->__construct(Array) #4 {main} thrown in /usr/share/pear/AWSSDKforPHP/sdk.class.php on line 763

但是,如果我启动S3或EC2类,则没有错误。

我甚至在config.inc.php中创建了一个新的密钥/秘密组合,认为默认密码可能有问题但是没有用。

我是SDK的新手,我不知道还有什么可以尝试,我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

显然,我的服务器时间与亚马逊服务器的时间之间存在差异,导致出现身份验证错误。

通过安装/配置NTP(网络时间协议)轻松修复。

请参阅下面的网址,了解CentOS中的说明:
http://www.cyberciti.biz/faq/howto-install-ntp-to-synchronize-server-clock/