私の現在のプロジェクトでは、新しいファイルのために私のS3バケツの内容を4秒ごとにチェックする必要があります。aws-php-sdkの "sort_by"をListObjects
このスクリプトは、サービスが使用されるたびに約3時間実行され、最後に2700個のファイルが1つの接頭辞に付きます。
この
は、それらのファイルを一覧表示する私の関数である。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
何が必要かは、LastModifiedのフィールドで、ファイル、順序を取得しているので、私は2kのファイルの上にフェッチする必要はありません。 PHPのAPIに追加する
command['Query'] = 'sort_by(Contents,&LastModified)';
のような追加のパラメータはありますか?
---------- 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
ええ、私はコマンド['Query'] = 'sort_by(Contents、&LastModified)'のようなものをシェルのドキュメントから試しました。似たようなものが私が探しているものです。しかし、ありがとう。 –
これはすべて同じAPI定義に変換されるためです。これを試して、[command ['Query'] = "Contents [?LastModified> = $ date"; '$ dateにはあなたのdatetimeが[aws-sdk-php](http:// docs .aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#listobjects)結果セクション。 ** 'LastModified' => ** –