使用AWS SDK for PHP 3.x:按最后修改时间获取S3存储桶中最新的对象。
P粉262113569
P粉262113569 2023-07-28 11:50:32
0
1
539
<p>我正在尝试使用AWS SDK for PHP 3.x按最后修改时间获取存储桶中最新的对象。</p> <p>我已经看到了如何使用AWS CLI来实现此功能。在这里:</p> <ul> <li>按最后修改时间获取S3存储桶中最新的对象</li> <li>使用AWS CLI从S3获取最后修改的对象</li> </ul> <p>但是我不知道如何使用PHP SDK来实现这个功能。</p> <pre class="brush:php;toolbar:false;">$S3Client = new AwsS3S3Client([ 'version' => 'latest', 'region' => 'eu-west-3', 'credentials' => [ 'key' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx', ] ]); $startTime = strtotime('-5 minutes'); $res = $S3Client->ListObjectsV2([ 'Bucket' => 'my-bucket', 'Prefix' => 'objects/', 'StartAfter' => $startTime ]) </pre> <p>我正在使用推荐的ListObjectsV2方法。</p><p>我有三个问题。</p><p><br /></p> <ol> <li><p>我应该如何按LastModified对结果进行排序?(就像在CLI中可以做的那样)</p> </li> <li><p>我有一些生命周期策略,这会影响到我的搜索,因为我得到了一些移动到GLACIER存储的对象的结果,而我不想要这些结果。</p> </li> <li><p>我想要获取对象的标签和元数据。我应该如何获取它?是否使用x-amz-optional-object-attributes?如何使用?</p> </li> </ol> <p>顺便说一下,使用StartAfter参数似乎没有改变任何东西。</p>
P粉262113569
P粉262113569

全部回复(1)
P粉068486220

  • 您需要在代码中实现该排序逻辑,S3Client / AWS不会默认支持此功能。这也意味着您需要列出所有对象(而不仅仅是前1000个),然后才能对它们进行排序,找出最新的对象。
  • 结果中包含了StorageClass属性,您可以/需要在进行排序或进一步处理结果之前对其进行过滤。
  • 仅通过列出操作是不可能实现的。您需要为您感兴趣的每个对象提交单独的GetObject请求。如果您想要同时获取成千上万个对象的元数据,您需要重新考虑您的方法,并且可能需要将此类数据存储在一个适当的可查询/可搜索的数据库中。
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板