使用PHP SDK列出AWS S3存储桶

4
我正在使用PHP AWS SDK,并希望列出所有可用于S3的存储桶。
我发现几个不同的文档块看起来很有前途:

这是我尝试的方法,使用AWS服务生成器来初始化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个回答

9
这个调用的文档可以在这里找到:这里
$result = $s3->listBuckets(array());
foreach ($result['Buckets'] as $bucket) {
    echo $bucket['Name'], PHP_EOL;
}

我猜你可能混淆了两个不同的API :)

在 AWS 工作过 SDK 1.x 和 SDK 2.x,这是正确的答案。你试图同时使用 v1 代码和 v2 代码。第二个文档链接是你应该参考的... 而不是第一个链接。 - Ryan Parman
哦,太好了!谢谢 - 是的,我有种感觉出了些问题。 - 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";
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接