昨日からすべてのファイルをs3バケットから取得する必要があります。ファイル名がわかっている場合は、CLIでこれを行う方法を知っています:#aws s3 cp s3:{Path}/{FileName} {diretoryToCopyTo}
しかし、特定の日付のファイルに対してこれをどのように行うのでしょうか?特定の日付のファイル名のリストを取得するだけでも、どの方法からでも、CLIである必要はありません。
キャッチ:バケットには数百万のファイルがあるので、費用効果の高い方法も探しています。
ファイル名に日付が含まれている場合は、 フィルターの包含と除外 :aws s3 cp s3:{path}/ {directoryToCopyTo} --exclude "*" --include "*2019-09-09*"
を使用できます。
日付がファイルメタデータのみにある場合、現在、サーバー側で日付でフィルタリングする方法はありません。 willstruebing にs3api
を使用するメソッドがあるgithubの議論があります。
これを
s3api
関数と--query
関数で行う方法は次のとおりです。これはOSXでテストされています。aws s3api list-objects --bucket "bucket-name" --query 'Contents[?LastModified>=2016-05-20][].{Key: Key}'
次に、jqまたはgrepを使用してフィルタリングし、他のs3api関数で処理を行うことができます。編集:なぜそれらが表示されないのかわかりませんが、クエリしている日付を囲むためにバッククォートを使用する必要があります
...ただし、フィルタリングはクライアント側で行われるため、これによってapi呼び出しの数が減ることはありません。