我已经在网上搜索了两天以上,并且可能已经浏览了大多数在线记录的方案和解决方法,但是到目前为止,对我来说没有任何帮助。
我在运行于PHP 5.3的适用于PHP V2.8.7的AWS开发工具包上。
我正在尝试使用以下代码连接到我的S3存储桶:
// Create a `Aws` object using a configuration file
$aws = Aws::factory('config.php');
// Get the client from the service locator by namespace
$s3Client = $aws->get('s3');
$bucket = "xxx";
$keyname = "xxx";
try {
$result = $s3Client->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'Body' => 'Hello World!'
));
$file_error = false;
} catch (Exception $e) {
$file_error = true;
echo $e->getMessage();
die();
}
//
我的config.php文件如下:
<?php
return array(
// Bootstrap the configuration file with AWS specific features
'includes' => array('_aws'),
'services' => array(
// All AWS clients extend from 'default_settings'. Here we are
// overriding 'default_settings' with our default credentials and
// providing a default region setting.
'default_settings' => array(
'params' => array(
'credentials' => array(
'key' => 'key',
'secret' => 'secret'
)
)
)
)
);
它产生以下错误:
我们计算出的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。
我已经检查了我的访问密钥和机密至少20次,生成了新的密钥,并使用了不同的方法来传递信息(例如,配置文件并在代码中包括凭据),但目前没有任何效果。
secret
更高私钥),并使用该私钥根据您的访问密钥,当前时间戳以及许多其他因素来计算签名。参见docs.aws.amazon.com/general/latest/gr/…。这是一个长镜头,但是考虑到它们包括时间戳,也许您当地环境的时间不对?