W moim bieżącym projekcie muszę sprawdzić zawartość mojego zasobnika S3 co 4 sekundy w poszukiwaniu nowych plików.Umieszczanie "sort_by" na aws-php-sdk ListObjects
Ten skrypt będzie działać przez około 3 godziny za każdym razem, gdy usługa jest używana, i będzie mieć około 2700 plików na końcu z jednym prefiksem.
To jest moja funkcja notować te pliki:
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
Co ja potrzebuję to uzyskać pliki zamówienia przez pola LastModified, więc nie trzeba pobierać ponad plików 2K. Czy istnieje dodatkowy parametr jak
command['Query'] = 'sort_by(Contents,&LastModified)';
dodać w API PHP?
---------- EDITED ------------
Jak wskazano na Abhishek Meena odpowiedź, w powłoce możliwe jest użycie
aws s3api list-objects --bucket "bucket-name" --prefix "some-prefix" --query "Contents[?LastModified>=\`2017-03-08\`]"
To, czego szukam, to jak zaimplementować to w PHP.
PHP API: https://github.com/aws/aws-sdk-php
Tak, z dokumentacji powłoki, w której próbowałem coś podobnego do polecenia ['Zapytanie'] = 'sort_by (Spis treści i LastModified)'. Coś podobnego jest tym, czego szukam. W każdym razie dzięki. –
Ponieważ wszystko to jest konwertowane do tej samej definicji interfejsu API. Możesz to wypróbować i sprawdzić 'command ['Query'] =" Contents [? LastModified> = $ date ";' gdzie $ date będzie zawierać datetime, jak wspomniano w [aws-sdk-php] (http: // docs .aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html # listobjects) sekcja wyników. ** "LastModified" => ** –