私は現在、S3バケット内のフォルダをスキャンし、自分のデータベースに存在しないファイルを削除しようとしています。問題は、私は何百万ものファイルを持っているため、これをスキャンする方法がないことです。AWS SDK for PHPで結果を相殺する方法はありますか?
// get files
$files = $s3->getIterator('ListObjects', array(
"Bucket" => $S3Bucket,
"Prefix" => 'collections/items/',
"Delimiter" => '/'
), array(
'return_prefixes' => true,
'names_only' => true,
'limit' => 10
));
ドキュメントには結果の制限についての記載がありますが、オフセットについては何も見つかりません。 0から始まり、500項目をスキャンして削除し、最後にスキャンしたインデックスを保存してからスクリプトを再実行し、保存されたインデックス(501)から開始し、500項目をスキャンするなどしたい。
SDKにはある種のオフセットオプションがありますか?それは別のものと呼ばれていますか?または、そのような大きなフォルダをスキャンする別の方法をお勧めできますか?
なぜあなたはこれをしたいですか? s3-> getIerator()関数はフードの下で正確に行います。btw – at0mzk
スクリプトを実行してクラッシュした場合、最初からやり直す必要がありますか? – Norbert
処理した最後のキーを覚えておいてそこから開始してください。あなたのコード$ s3はs3Clientのインスタンスですか? $ s3-> getIterator( 'ListObjects'、array( 'Bucket' => 'my-bucket'、 'Marker' => 'lastkey'));最後に成功したキーをMarkerパラメータとしてフェッチしてください。 – at0mzk