我使用 PHP 和 S3 SDK 连接到 Amazon S3 时出现什么问题?

Xtr*_*eme 5 php amazon-s3 amazon-web-services

我是 Amazon S3 的新手,并使用 Amazon S3 测试了几个不同的代码示例,但它不起作用。已尝试使其尽可能简单。在下面的示例中,我尝试列出存储桶中的所有对象。

<?php
require 'includes/aws.phar';
use Aws\S3\S3Client;

$bucket = '*** Bucket Name ***';

// Instantiate the S3 client with your AWS credentials
$s3 = S3Client::factory(array(
'key' => 'YOUR_AWS_ACCESS_KEY_ID',
'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY',
));

$objects = $s3->getIterator('ListObjects', array('Bucket' => $bucket));

echo "Keys retrieved!\n";
foreach ($objects as $object) {
    echo $object['Key'] . "\n";
}

?>
Run Code Online (Sandbox Code Playgroud)

错误信息

Keys retrieved! 
Fatal error: Uncaught Aws\S3\Exception\AccessDeniedException: AWS Error Code: AccessDenied, Status Code: 403, AWS Request ID: 34CD33C789DF53E7, AWS Error Type: client, AWS Error Message: Access Denied, User-Agent: aws-sdk-php2/2.7.12 Guzzle/3.9.2 curl/7.30.0 PHP/5.5.6 ITR thrown in phar://C:/xampp/htdocs/amazon-s3-fineupload/view/includes/aws.phar/Aws/Common/Exception/NamespaceExceptionFactory.php on line 91
Run Code Online (Sandbox Code Playgroud)

当我使用预签名 URL 的代码示例进行测试时,我收到一条错误消息,指出我生成的签名与他们的不匹配

我没有在亚马逊上进行任何设置。我需要在政策中添加一些内容吗?我已经检查了我的密钥(密钥和秘密),它们是正确的!与我的存储桶名称相同。

有人可以给我一个 PHP 的工作示例,例如在 S3 上显示一个文件,并告诉我是否需要在 S3 上进行一些设置?