Amazon S3列表对象的顺序相反

Kha*_*han 5 php amazon-s3 amazon-web-services

目前,当我调用$s3->list_objects()方法时,它按照添加对象的顺序返回对象.我想以相反的顺序列出对象,以便我可以先拥有最新的对象.我找不到任何可以传递给$s3->list_objects()可以反转顺序的方法的参数.我正在使用Amazon S3 PHP SDK.有没有这样的参数或方法?

Mik*_*ant 0

返回的对象list_objects()是 a Guzzle\Service\Resource\Model,因此您需要使用该类提供的方法。为了执行下面评论中提到的分页请求,您可能需要执行以下操作:

$object_array = array();
$continue = true;
$list_params = array('Bucket' => 'your_aws_bucket', 'MaxKeys' => 1000);
while (true === $continue) {
    $result_obj = $s3->list_objects($list_params);
    $current_array = $result_obj->get('Contents');
    $object_array = array_merge($object_array, $current_array);
    $is_truncated = $result_obj->get('isTruncated');
    if ($is_truncated) {
        $list_params['Marker'] = $result_obj->get('NextKeyMarker');
    } else {
        $continue = false;
    }
}  
$reversed_array = array_reverse($object_array);
Run Code Online (Sandbox Code Playgroud)

请注意,如果您正在谈论 100,000 个文件,您可能会发现将所有文件的整个数组保留在内存中会出现问题,因此您可能需要重新考虑是否需要像您建议的那样将所有文件都保留在内存中。