Löschen von Objekten in s3 mithilfe von Platzhaltern

8

Ich habe den folgenden Arbeitscode, um ein Objekt aus Amazon S3 zu löschen

%Vor%

Aber ich möchte alle Dateien unter einem Ordner mit Platzhalter ** löschen. Ich weiß, amazon s3 behandelt nicht "x / y / file.jpg" als einen Ordner y innerhalb von x, aber was ich erreichen möchte, ist durch Erwähnung von "x / y *" lösche alle nachfolgenden Objekte mit dem gleichen Präfix. Versucht amazon multi object delete

%Vor%

Ich weiß, dass es in PHP leicht gemacht werden kann durch s3- & gt; delete_all_objects wie in diese Antwort . Ist die gleiche Aktion in GOlang möglich.

    
Itachi 19.11.2015, 18:07
quelle

2 Antworten

2

Leider hat das goamz-Paket keine ähnliche Methode wie die delete_all_objects der PHP-Bibliothek.

Der Quellcode für PHP delete_all_objects ist jedoch hier verfügbar (Quellansicht wechseln): Ссылка

Hier sind die wichtigen Codezeilen:

%Vor%

Wie Sie sehen, wird der PHP-Code tatsächlich eine HTTP-Anfrage an den Bucket stellen, um zuerst alle Dateien zu erhalten, die mit PCRE_ALL übereinstimmen, was definiert ist woanders als const PCRE_ALL = '/.*/i'; .

Sie können nur 1000 Dateien gleichzeitig löschen, also erstellt delete_all_objects eine Stapelfunktion, um 1000 Dateien gleichzeitig zu löschen.

Sie müssen die gleiche Funktionalität in Ihrem Go-Programm erstellen, da das goamz-Paket dies noch nicht unterstützt. Zum Glück sollte es nur ein paar Zeilen Code sein, und Sie haben eine Anleitung aus der PHP-Bibliothek.

Es könnte sich lohnen, eine Pull-Anfrage für das goamz-Paket zu senden, sobald Sie fertig sind!

    
bvpx 19.11.2015 19:43
quelle
1

Mit dem Werkzeug mc können Sie Folgendes tun:

mc rm -r --force https://BucketName.s3.amazonaws.com/x/y

löscht alle Objekte mit dem Präfix "x / y"

Sie können dasselbe mit Go erreichen, indem Sie minio-go wie folgt verwenden:

%Vor%     
Krishna Srinivas 20.11.2015 08:37
quelle

Tags und Links