我正在使用PHP AWS SDK,并想列出S3中可用的所有存储桶。
我发现了几个不同的文档块看起来很有希望:
以下是我尝试使用AWS Service Builder初始化S3客户端...
use Aws\Common\Aws;
// Instantiate an S3 client
$aws = Aws::factory(array( 'key' => "MY_KEY", 'secret' => "MY_SECRET"));
$s3 = $aws->get('s3');
$s3->get_bucket_list();
不幸的是,当我运行代码时,我被告知它没有什么特别之处。提示" get_buckets_list"是。更具体地说它
Fatal error: Uncaught exception 'Guzzle\Common\Exception\InvalidArgumentException' with message 'Command was not found matching GetBucketList' in vendor/guzzle/guzzle/src/Guzzle/Service/Client.php:87
所以我的问题如下:
答案 0 :(得分:9)
可以找到此调用的文档here。
$result = $s3->listBuckets(array());
foreach ($result['Buckets'] as $bucket) {
echo $bucket['Name'], PHP_EOL;
}
我怀疑你混合了两种不同的API:)
答案 1 :(得分:2)
我发现了如何实际做到这一点,但我通过逆向工程来到这里,而不是实际发现正确的文档。因此,我认为这只是一个部分答案。
此代码将遍历您的存储桶并输出每个名称。
use Aws\Common\Aws;
// Instantiate an S3 client
$aws = Aws::factory(array( 'key' => "MY_KEY", 'secret' => "MY_SECRET"));
$s3 = $aws->get('s3');
$s3->get_bucket_list();
$iterator = $s3->getIterator('ListBuckets');
foreach ($iterator as $bucket) {
echo $bucket['Name'] . "\n";
}