2013-12-08 81 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"; 
}