繁体   English   中英

使用PHP SDK列出AWS S3存储桶

[英]Listing AWS S3 buckets using the PHP SDK

我正在使用PHP 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开发工具包获取存储桶列表?

可以在此处找到此调用的文档。

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

我怀疑您混淆了两种不同的API :)

我找到了实际执行此操作的方法,但是我是通过反向工程到达这里的,而不是真正地找到适当的文档。 因此,我认为这只是部分答案。

此代码将遍历您的存储桶并输出每个名称。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM