シナリオは次のとおりです。
多数のフォルダとサブフォルダを再帰的に検索し、lsコマンドを使用して結果をログファイルに出力する必要がありますが、フォルダに10個以上のオブジェクトが含まれている場合は、フォルダの検索を停止する必要がありますか?その理由は、フォルダに10項目のサンプルがあると、そのフォルダに何があるのかがわかり、一部のフォルダには何万もの結果が含まれているため、時間がかかります。
なぜ「ls」に制限されるのですか? S3を検索しているので、そのコマンドはaws s3 ls
私aws s3 ls --summarize --recursive
のニーズに適しているので、フォルダ内のアイテム数に基づいて検索を制限する方法が必要です。
aws s3api list-bucketsやlist-objectsなどを使ってみましたが、--max-valuesタグを使用しても私の要件には合いません。ご協力ありがとうございます。
答え1
Emma Luoの言葉は正しいです。 「aws s3 ls」は、人々が何をしているのか(ファイルのリスト)を知ることができるように、そのように名前が付けられています。これは実際にはlsコマンドではなく、非常に表面的なレベルで同じことをしようとしているだけです。
必要なタスクを実行する最善の方法は、boto3 APIを使用してスクリプトを作成することです。 s3.client.list_objects()には、パス内の検索を制限するために使用できるMaxKeysパラメータがあります。