AWS S3 ListObjectsV2返回MaxKeys仅设置为10的完整文件列表

时间:2017-04-07 17:55:57

标签: php amazon-s3

我正在尝试在PHP中实现S3客户端,它通过分页功能一次只列出10个文件。为了实现这一点,根据API文档,我正在进行以下调用:

$result = $this->s3->getPaginator('ListObjectsV2', [
            'Bucket'       => 'my_s3_bucket_name',
            'Delimiter'    => '/',
            'MaxKeys'      => 10,
            'StartAfter'   => urlencode($_SESSION['prev_key'])
        ]);

并使用JMESPath表达式提取我需要显示的数据子集。上面似乎“工作”但它似乎检索JSON集与子集包含每个10个文件。换句话说,如果我的存储桶中存储了26个文件,我将获得3个数组子集中的所有26个文件 - 所有这些都在单个请求中。显然,S3已经存在了很长时间,我确信我正在努力实现最佳实践。但是,我搜索过去几天无济于事。如果有人能指出我正确的方向请...

1 个答案:

答案 0 :(得分:1)

paginator 是为了获取所有内容 - 执行获取完整结果所需的分页。

当你使用它时,它将以10个为一组完成。

如果您想要制作特定请求(例如此处显示),请不要使用分页符,只需直接使用ListObjectsV2即可。

另外,我怀疑urlencode()以前的密钥是否合适或必要。如果需要,SDK应该为您完成。