使用AWS SDK for PHP 3.x:按最後修改時(shí)間取得S3儲(chǔ)存桶中最新的物件。
P粉262113569
2023-07-28 11:50:32
<p>我正在嘗試使用AWS SDK for PHP 3.x按最後修改時(shí)間來(lái)獲取儲(chǔ)存桶中最新的物件。 </p>
<p>我已經(jīng)看到如何使用AWS CLI來(lái)實(shí)現(xiàn)此功能。在這裡:</p>
<ul>
<li>依最後修改時(shí)間取得S3儲(chǔ)存桶中最新的物件</li>
<li>使用AWS CLI從S3取得最後修改的物件</li>
</ul>
<p>但我不知道如何使用PHP SDK來(lái)實(shí)現(xiàn)這個(gè)功能。 </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>我有三個(gè)問(wèn)題。 </p><p><br /></p>
<ol>
<li><p>我該如何依照LastModified對(duì)結(jié)果進(jìn)行排序? (就像在CLI中可以做的那樣)</p>
</li>
<li><p>我有一些生命週期策略,這會(huì)影響到我的搜索,因?yàn)槲业玫搅艘恍┮苿?dòng)到GLACIER存儲(chǔ)的對(duì)象的結(jié)果,而我不想要這些結(jié)果。 </p>
</li>
<li><p>我想要取得物件的標(biāo)籤和元資料。我應(yīng)該如何獲取它?是否使用x-amz-optional-object-attributes?如何使用? </p>
</li>
</ol>
<p>順便說(shuō)一下,使用StartAfter參數(shù)似乎沒(méi)有改變?nèi)魏螙|西。 </p>
- 您需要在程式碼中實(shí)作該排序邏輯,S3Client / AWS不會(huì)預(yù)設(shè)支援此功能。這也意味著您需要列出所有物件(而不僅僅是前1000個(gè)),然後才能對(duì)它們進(jìn)行排序,找出最新的物件。
- 結(jié)果中包含了StorageClass屬性,您可以/需要在進(jìn)行排序或進(jìn)一步處理結(jié)果之前對(duì)其進(jìn)行過(guò)濾。
- 僅透過(guò)列出操作是不可能實(shí)現(xiàn)的。您需要為您感興趣的每個(gè)物件提交單獨(dú)的GetObject請(qǐng)求。如果您想要同時(shí)獲取成千上萬(wàn)個(gè)物件的元數(shù)據(jù),您需要重新考慮您的方法,並且可能需要將此類數(shù)據(jù)儲(chǔ)存在一個(gè)適當(dāng)?shù)目刹樵?可搜尋的資料庫(kù)中。
#
點(diǎn)贊 +0
P粉262113569