我正在尝试在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已经存在了很长时间,我确信我正在努力实现最佳实践。但是,我搜索过去几天无济于事。如果有人能指出我正确的方向请...
答案 0 :(得分:1)
paginator 的点是为了获取所有内容 - 执行获取完整结果所需的分页。
当你使用它时,它将以10个为一组完成。
如果您想要制作特定请求(例如此处显示),请不要使用分页符,只需直接使用ListObjectsV2
即可。
另外,我怀疑urlencode()
以前的密钥是否合适或必要。如果需要,SDK应该为您完成。