使用PHP SDK列出AWS S3存储桶

时间:2013-12-08 23:44:47

标签: php amazon-web-services amazon-s3

我正在使用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

所以我的问题如下:

  • 我看错了文件吗?
  • 在某处有其他文件吗?
  • 如何使用PHP AWS SDK获取存储桶列表?

2 个答案:

答案 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";
}