在我當前的項目中,我需要每4秒檢查一次我的S3存儲桶內容是否有新文件。在aws-php-sdk上放置一個「sort_by」ListObjects
每次使用該服務時,該腳本將運行約3個小時,並且最終會在單個前綴處具有大約2700個文件。
這是我的功能列出這些文件:
public function listFiles($s3Prefix, $limit, $get_after = ''){
$command = $this->s3Client->getCommand('ListObjects');
$command['Bucket'] = $this->s3_bucket;
$command['Prefix'] = $s3Prefix;
$command['MaxKeys'] = $limit;
$command['Marker'] = $s3Prefix.'/'.$get_after;
//command['Query'] = 'sort_by(Contents,&LastModified)';
$ret_s3 = $this->s3Client->execute($command);
$ret['truncated'] = $ret_s3['IsTruncated'];
$ret['files'] = $ret_s3['Contents'];
return $ret;
}// listFiles
我所需要的是通過上次更改場拿到文件,命令,所以我並不需要在2K的文件來獲取。 是否有像
command['Query'] = 'sort_by(Contents,&LastModified)';
要添加在PHP API中的額外參數?
---------- ------------ EDITED
正如指出的阿布舍克米娜答案,外殼有可能使用
aws s3api list-objects --bucket "bucket-name" --prefix "some-prefix" --query "Contents[?LastModified>=\`2017-03-08\`]"
我在看的是如何在PHP中實現這一點。
PHP API:https://github.com/aws/aws-sdk-php
是的,從shell的文檔中,我嘗試了類似command ['Query'] ='sort_by(Contents,&LastModified)'。類似的東西是我正在尋找的東西。謝謝您的好意。 –
因爲所有這些都被轉換爲相同的API定義。您可以試試這個命令並檢查命令['Query'] =「Contents [?LastModified> = $ date」;'$ date將包含您在[aws-sdk-php]中提到的日期時間(http:// docs .aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#listobjects)結果部分。 **'LastModified'=> ** –