使用AWS SDK for PHP 3.x:按最後修改時間取得S3儲存桶中最新的物件。
P粉262113569
P粉262113569 2023-07-28 11:50:32
0
1
544
<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請求。如果您想要同時獲取成千上萬個物件的元數據,您需要重新考慮您的方法,並且可能需要將此類數據儲存在一個適當的可查詢/可搜尋的資料庫中。
#
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板