【发布时间】:2019-11-05 01:31:21
【问题描述】:
我可以使用我的 KEY/Secret 和 PATH 将 AWS s3 与 Cyberduck 连接起来,并且还可以在其中查看我的文件。但是当我尝试使用 PHP Api 连接并列出存储桶时,我得到了 0 个结果。我注意到没有路径变量 S3Client(这会有什么不同吗?)因为如果我不在 Cyberduck 中使用 PATH 我看不到文件。
$s3 = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => [
'key' => 'KEY',
'secret' => 'SECRET',
],
]);
当我这样做时:
$result = $s3->listBuckets();
var_dump($result);
返回是:(这里的“REMOVED”是我自己删除的。)
object(Aws\Result)#78 (1) {
["data":"Aws\Result":private]=>
array(3) {
["Buckets"]=>
array(0) {
}
["Owner"]=>
array(2) {
["DisplayName"]=>
string(8) "REMOVED"
["ID"]=>
string(64) "REMOVED"
}
["@metadata"]=>
array(4) {
["statusCode"]=>
int(200)
["effectiveUri"]=>
string(25) "https://s3.amazonaws.com/"
["headers"]=>
array(6) {
["x-amz-id-2"]=>
string(76) "REMOVED="
["x-amz-request-id"]=>
string(16) "REMOVED"
["date"]=>
string(29) "Mon, 29 Jan 2018 18:04:57 GMT"
["content-type"]=>
string(15) "application/xml"
["transfer-encoding"]=>
string(7) "chunked"
["server"]=>
string(8) "AmazonS3"
}
["transferStats"]=>
array(1) {
["http"]=>
array(1) {
[0]=>
array(0) {
}
}
}
}
}
}
我试图通过阅读 AWS S3 文档来弄清楚,但我只找到了使用存储桶选项列出文件的方法,但我不知道存储桶名称是什么。当存储桶名称列表为 0 时,我返回。但所有文件都在那里。 我做错了吗?
【问题讨论】:
-
您确定您的存储桶位于
us-east-1区域中吗? -
路径是:/logstorage-us-east-1 .. 所以,我想是的。有没有办法验证? @ceejayoz
-
那条路径没有任何意义——你可以把一个“文件夹”放在一个叫做
eu-west-2的桶里。查看您的 AWS 控制台。 “路径”对于 S3listBuckets命令应该完全没有意义。 -
我无权访问此 AWS 控制台。我只有访问某些日志文件的密钥/秘密
-
你可能没有访问
listBuckets。无论哪种方式,请询问管理密钥/秘密的人。