2013-12-08 82 views
4

我正在使用PHP AWS SDK,并希望列出S3中可用的所有存储桶。使用PHP SDK列出AWS 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的存储桶列表?

回答

9

此调用的文档可以找到here

$result = $s3->listBuckets(array()); 
foreach ($result['Buckets'] as $bucket) { 
    echo $bucket['Name'], PHP_EOL; 
} 

我怀疑你是混合了两个不同的API :)

+0

具有AWS两个SDK 1.x和2.x的SDK工作,这是正确的答案。您正在尝试使用v1代码和v2代码。第二个文档链接是你应该指的......不是第一个。 –

+0

哦完美!谢谢 - 是的,我有种感觉, – slifty

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