Php AWS获取S3中文件夹内的所有对象

Php AWS获取S3中文件夹内的所有对象,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,我想获取存储在文件夹中的所有对象的URL。我将只有一个文件夹级别,因此我不关心嵌套文件夹。我已经阅读了S3的PHP客户端API(),但似乎找不到实现这一点的方法 我从StackOverflow中找到以下代码以获取内容的大小: List<Bucket> buckets = s3.listBuckets(); long totalSize = 0; int totalItems = 0; for (Bucket bucket : buckets) { ObjectListin

我想获取存储在文件夹中的所有对象的URL。我将只有一个文件夹级别,因此我不关心嵌套文件夹。我已经阅读了S3的PHP客户端API(),但似乎找不到实现这一点的方法

我从StackOverflow中找到以下代码以获取内容的大小:

List<Bucket> buckets = s3.listBuckets();
long totalSize  = 0;
int  totalItems = 0;
for (Bucket bucket : buckets)
{
    ObjectListing objects = s3.listObjects(bucket.getName());
    do {
        for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) {
            totalSize += objectSummary.getSize();
            totalItems++;
        }
        objects = s3.listNextBatchOfObjects(objects);
    } while (objects.isTruncated());
    System.out.println("You have " + buckets.size() + " Amazon S3 bucket(s), " +
                    "containing " + totalItems + " objects with a total size of " + totalSize + " bytes.");
}
List bucket=s3.listbakes();
长totalSize=0;
int totalItems=0;
用于(铲斗:铲斗)
{
ObjectListing objects=s3.listObjects(bucket.getName());
做{
对于(S3ObjectSummary objectSummary:objects.getObjectSummaries()){
totalSize+=objectSummary.getSize();
totalItems++;
}
objects=s3.listenxtbatchofobjects(objects);
}while(objects.isTruncated());
System.out.println(“您有“+个bucket.size()+”个Amazon S3 bucket,”+
“包含“+totalItems+”对象,总大小为“+totalSize+”字节。”);
}

这接近于我想要的东西,除了我不想要bucket中的所有项目,我想要bucket文件夹中的所有项目。我的第二个问题是,我需要花多少钱才能完成这项工作,因为似乎没有使用get/put命令,所以我不确定Amazon为此项操作收取多少费用?

。这个前缀是bucket中的“目录”。

那么这个操作的财务成本是多少?同样,这个算法有效吗?假设我有10000000个对象,因为S3是平面的,它搜索所有对象吗?它几乎是免费的(就成本而言);每10k请求的1/2%。通常建议不要将此操作作为代码的标准部分来执行-通常有更好的方法来构造内容,因此这不是您需要经常执行的操作。感谢您提供的信息。那么什么是更好的练习呢?这取决于你想做什么。如果您将用例作为一个新问题发布,请将其链接到此处。您可以使用SNS/SQS,也可以使用Lambda。