Holen Sie sich alle Dateien (oder Dateinamen) aus dem S3-Bucket für ein bestimmtes Datum

Holen Sie sich alle Dateien (oder Dateinamen) aus dem S3-Bucket für ein bestimmtes Datum

Ich muss alle Dateien von gestern aus dem S3-Bucket abrufen. Ich weiß, wie das in der CLI geht, wenn ich den Dateinamen kenne: #aws s3 cp s3:{Path}/{FileName} {diretoryToCopyTo}

aber wie mache ich das für Dateien mit einem bestimmten Datum? Es reicht auch, einfach die Liste der Dateinamen für ein bestimmtes Datum abzurufen, mit welcher Methode auch immer, es muss nicht die CLI sein.

Der Fang:Der Bucket enthält mehrere Millionen Dateien, deshalb suche ich auch nach einer kostengünstigen Lösung.

Antwort1

Wenn der Dateiname das Datum enthält, können Sie verwendenEinschluss- und Ausschlussfilter: aws s3 cp s3:{path}/ {directoryToCopyTo} --exclude "*" --include "*2019-09-09*"

Wenn das Datum nur in den Dateimetadaten enthalten ist, gibt es derzeit keine Möglichkeit, serverseitig nach Datum zu filtern. Es gibt eine Diskussion auf GitHub, in derAbonnierenhat eine Methode, die Folgendes verwendet s3api:

Hier ist eine Möglichkeit, dies mit der s3apiund der --queryFunktion zu tun. Dies wurde unter OSX getestet: aws s3api list-objects --bucket "bucket-name" --query 'Contents[?LastModified>=2016-05-20][].{Key: Key}'Sie können dann mit jq oder grep filtern, um die Verarbeitung mit den anderen s3api-Funktionen durchzuführen. Bearbeiten: Ich bin nicht sicher, warum sie nicht angezeigt werden, aber Sie müssen Backticks verwenden, um das Datum zu umgeben, das Sie abfragen

... dies reduziert jedoch nicht die Anzahl der API-Aufrufe, da die Filterung auf der Clientseite erfolgt.

verwandte Informationen