Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bewährte Methoden zur Optimierung der Leistung von S3 Express One Zone
Bei der Entwicklung von Anwendungen, die Objekte zu Amazon S3 Express One Zone hochladen und daraus abrufen, sollten Sie unsere bewährten Methoden befolgen, um die Leistung zu optimieren. Um die Speicherklasse S3 Express One Zone zu verwenden, müssen Sie einen S3-Verzeichnis-Bucket erstellen. Die Speicherklasse S3 Express One Zone wird für die Verwendung mit S3-Allzweck-Buckets nicht unterstützt.
Leistungsrichtlinien für alle anderen Amazon-S3-Speicherklassen und S3-Allzweck-Buckets finden Sie unter Bewährte Methoden für Designmuster: Optimieren der Leistung von Amazon S3.
Für optimale Leistung und Skalierbarkeit mit S3 Express One Zone-Speicherklassen- und Verzeichnis-Buckets bei umfangreichen Workloads ist es wichtig zu verstehen, wie sich Verzeichnis-Buckets von Allzweck-Buckets unterscheiden. Anschließend stellen wir bewährte Methoden zur Verfügung, mit denen Sie Ihre Anwendungen an die Funktionsweise von Directory-Buckets anpassen können.
Wie funktionieren Directory-Buckets
Die Speicherklasse Amazon S3 Express One Zone kann Workloads mit bis zu 2.000.000 GET- und bis zu 200.000 PUT-Transaktionen pro Sekunde (TPS) pro Verzeichnis-Bucket unterstützen. Mit S3 Express One Zone werden Daten in S3-Verzeichnis-Buckets in Availability Zones gespeichert. Auf Objekte in Verzeichnis-Buckets kann innerhalb eines hierarchischen Namespace zugegriffen werden, ähnlich wie in einem Dateisystem und im Gegensatz zu S3-Allzweck-Buckets, die einen flachen Namespace haben. Im Gegensatz zu Allzweck-Buckets organisieren Verzeichnis-Buckets Schlüssel hierarchisch in Verzeichnissen statt nach Präfixen. Ein Präfix ist eine Zeichenfolge am Anfang des Objektschlüsselnamens. Sie können Präfixe verwenden, um Ihre Daten zu organisieren und eine flache Objektspeicherarchitektur in Allzweck-Buckets zu verwalten. Weitere Informationen finden Sie unter Organisieren von Objekten mit Präfixen.
In Verzeichnis-Buckets werden Objekte in einem hierarchischen Namespace organisiert, wobei der Schrägstrich (/
) das einzige unterstützte Trennzeichen ist. Wenn Sie ein Objekt mit einem Schlüssel wie hochladendir1/dir2/file1.txt
, dir2/
werden die Verzeichnisse dir1/
automatisch von Amazon S3 erstellt und verwaltet. Verzeichnisse werden während PutObject
CreateMultiPartUpload
Oder-Operationen erstellt und automatisch entfernt, wenn sie nach DeleteObject
AbortMultiPartUpload
Oder-Vorgängen leer werden. Es gibt keine Obergrenze für die Anzahl der Objekte und Unterverzeichnisse in einem Verzeichnis.
Die Verzeichnisse, die beim Hochladen von Objekten in Verzeichnis-Buckets erstellt werden, können sofort skaliert werden, um die Wahrscheinlichkeit von HTTP-Fehlern zu verringern. 503 (Slow Down)
Diese automatische Skalierung ermöglicht Ihren Anwendungen, Lese- und Schreibanforderungen innerhalb von Verzeichnissen und zwischen Verzeichnissen nach Bedarf zu parallelisieren. Für S3 Express One Zone sind einzelne Verzeichnisse so konzipiert, dass sie die maximale Anforderungsrate eines Verzeichnis-Buckets unterstützen. Es ist nicht erforderlich, Schlüsselpräfixe nach dem Zufallsprinzip zu sortieren, um eine optimale Leistung zu erzielen, da das System Objekte automatisch verteilt, um eine gleichmäßige Lastverteilung zu gewährleisten. Aus diesem Grund werden Schlüssel jedoch nicht lexikografisch in Verzeichnis-Buckets gespeichert. Dies steht im Gegensatz zu S3-Buckets für allgemeine Zwecke, bei denen sich Schlüssel, die lexikografisch näher beieinander liegen, eher auf demselben Server befinden.
Weitere Hinweise zu Beispielen für Directory-Bucket-Operationen und Verzeichnisinteraktionen finden Sie unter. Beispiele für den Betrieb von Verzeichnis-Buckets und die Interaktion mit Verzeichnissen
Bewährte Methoden
Folgen Sie den bewährten Methoden, um die Leistung Ihres Directory-Buckets zu optimieren und Ihre Workloads im Laufe der Zeit skalieren zu lassen.
Verwenden Sie Verzeichnisse, die viele Einträge enthalten (Objekte oder Unterverzeichnisse)
Verzeichnis-Buckets bieten standardmäßig eine hohe Leistung für alle Workloads. Für eine noch bessere Leistungsoptimierung bei bestimmten Vorgängen führt die Konsolidierung von mehr Einträgen (bei denen es sich um Objekte oder Unterverzeichnisse handelt) in Verzeichnissen zu einer geringeren Latenz und einer höheren Anforderungsrate:
Mutierende API-Operationen wie
PutObject
,CreateMultiPartUpload
und erzielen eine optimale LeistungAbortMultiPartUpload
, wenn sie mit weniger, dichteren Verzeichnissen mit Tausenden von Einträgen implementiert werden, anstatt mit einer großen Anzahl kleinerer Verzeichnisse.DeleteObject
ListObjectsV2
Operationen funktionieren besser, wenn weniger Verzeichnisse durchsucht werden müssen, um eine Ergebnisseite zu füllen.
Verwenden Sie keine Entropie in Präfixen
Bei Amazon S3 S3-Vorgängen bezieht sich Entropie auf die Zufälligkeit bei der Benennung von Präfixen, die dazu beiträgt, Arbeitslasten gleichmäßig auf Speicherpartitionen zu verteilen. Da Verzeichnis-Buckets die Lastverteilung jedoch intern verwalten, ist es nicht empfehlenswert, Entropie in Präfixen zu verwenden, um eine optimale Leistung zu erzielen. Dies liegt daran, dass bei Verzeichnis-Buckets die Entropie dazu führen kann, dass Anfragen langsamer werden, da die bereits erstellten Verzeichnisse nicht wiederverwendet werden.
Ein Schlüsselmuster, wie es dazu führen $HASH/directory/object
könnte, dass viele Zwischenverzeichnisse entstehen. Im folgenden Beispiel sind alle job-1
s unterschiedliche Verzeichnisse, da ihre übergeordneten Verzeichnisse unterschiedlich sind. Verzeichnisse werden spärlich sein und Mutations- und Listenanfragen werden langsamer sein. In diesem Beispiel gibt es 12 Zwischenverzeichnisse, die alle einen einzigen Eintrag haben.
s3://my-bucket/0cc175b9c0f1b6a831c399e269772661/job-1/file1 s3://my-bucket/92eb5ffee6ae2fec3ad71c777531578f/job-1/file2 s3://my-bucket/4a8a08f09d37b73795649038408b5f33/job-1/file3 s3://my-bucket/8277e0910d750195b448797616e091ad/job-1/file4 s3://my-bucket/e1671797c52e15f763380b45e841ec32/job-1/file5 s3://my-bucket/8fa14cdd754f91cc6554c9e71929cce7/job-1/file6
Um die Leistung zu verbessern, können wir stattdessen die $HASH
Komponente entfernen und job-1
sie zu einem einzigen Verzeichnis machen, wodurch die Dichte eines Verzeichnisses verbessert wird. Im folgenden Beispiel kann das einzelne Zwischenverzeichnis mit 6 Einträgen im Vergleich zum vorherigen Beispiel zu einer besseren Leistung führen.
s3://my-bucket/job-1/file1 s3://my-bucket/job-1/file2 s3://my-bucket/job-1/file3 s3://my-bucket/job-1/file4 s3://my-bucket/job-1/file5 s3://my-bucket/job-1/file6
Dieser Leistungsvorteil besteht darin, dass, wenn ein Objektschlüssel anfänglich erstellt wird und sein Schlüsselname ein Verzeichnis enthält, das Verzeichnis automatisch für das Objekt erstellt wird. Bei nachfolgenden Objekt-Uploads in dasselbe Verzeichnis muss das Verzeichnis nicht erstellt werden, wodurch die Latenz beim Hochladen von Objekten in bestehende Verzeichnisse reduziert wird.
Verwenden Sie ein anderes Trennzeichen als das Trennzeichen/, um Teile Ihres Schlüssels zu trennen, wenn Sie Objekte bei Aufrufen nicht logisch gruppieren müssen ListObjectsV2
Da das /
Trennzeichen speziell für Verzeichnis-Buckets verwendet wird, sollte es mit Absicht verwendet werden. Verzeichnis-Buckets ordnen Objekte zwar nicht lexikografisch, aber Objekte innerhalb eines Verzeichnisses werden dennoch in Ausgaben gruppiert. ListObjectsV2
Wenn Sie diese Funktion nicht benötigen, können Sie sie durch ein anderes Zeichen als Trennzeichen /
ersetzen, damit keine Zwischenverzeichnisse entstehen.
Gehen Sie beispielsweise davon aus, dass sich die folgenden Schlüssel in einem YYYY/MM/DD/HH/
Präfixmuster befinden
s3://my-bucket/2024/04/00/01/file1 s3://my-bucket/2024/04/00/02/file2 s3://my-bucket/2024/04/00/03/file3 s3://my-bucket/2024/04/01/01/file4 s3://my-bucket/2024/04/01/02/file5 s3://my-bucket/2024/04/01/03/file6
Wenn Sie Objekte in den ListObjectsV2
Ergebnissen nicht nach Stunden oder Tagen gruppieren müssen, sondern Objekte nach Monaten gruppieren müssen, YYYY/MM/DD-HH-
führt das folgende Schlüsselmuster von zu deutlich weniger Verzeichnissen und zu einer besseren Leistung des ListObjectsV2
Vorgangs.
s3://my-bucket/2024/04/00-01-file1 s3://my-bucket/2024/04/00-01-file2 s3://my-bucket/2024/04/00-01-file3 s3://my-bucket/2024/04/01-02-file4 s3://my-bucket/2024/04/01-02-file5 s3://my-bucket/2024/04/01-02-file6
Verwenden Sie nach Möglichkeit Operationen mit getrennten Listen
Eine ListObjectsV2
Anfrage ohne a delimiter
führt eine rekursive Durchquerung aller Verzeichnisse nach der Tiefe durch. Eine ListObjectsV2
Anfrage mit a delimiter
ruft nur Einträge in dem durch den prefix
Parameter angegebenen Verzeichnis ab, wodurch die Latenz der Anfrage reduziert und die Anzahl der aggregierten Schlüssel pro Sekunde erhöht wird. Verwenden Sie für Verzeichnis-Buckets nach Möglichkeit Operationen mit getrennten Listen. Durch getrennte Listen werden Verzeichnisse seltener besucht, was zu mehr Schlüsseln pro Sekunde und einer geringeren Latenz bei Anfragen führt.
Zum Beispiel für die folgenden Verzeichnisse und Objekte in Ihrem Verzeichnis-Bucket:
s3://my-bucket/2024/04/12-01-file1 s3://my-bucket/2024/04/12-01-file2 ... s3://my-bucket/2024/05/12-01-file1 s3://my-bucket/2024/05/12-01-file2 ... s3://my-bucket/2024/06/12-01-file1 s3://my-bucket/2024/06/12-01-file2 ... s3://my-bucket/2024/07/12-01-file1 s3://my-bucket/2024/07/12-01-file2 ...
Verwenden Sie für eine bessere ListObjectsV2
Leistung eine durch Trennzeichen getrennte Liste, um Ihre Unterverzeichnisse und Objekte aufzulisten, sofern die Logik Ihrer Anwendung dies zulässt. Sie können beispielsweise den folgenden Befehl für die Operation mit getrennten Listen ausführen:
aws s3api list-objects-v2 --bucket my-bucket --prefix '2024/' --delimiter '/'
Die Ausgabe ist die Liste der Unterverzeichnisse.
{ "CommonPrefixes": [ { "Prefix": "2024/04/" }, { "Prefix": "2024/05/" }, { "Prefix": "2024/06/" }, { "Prefix": "2024/07/" } ] }
Um jedes Unterverzeichnis mit besserer Leistung aufzulisten, können Sie einen Befehl wie das folgende Beispiel ausführen:
Befehl:
aws s3api list-objects-v2 --bucket my-bucket --prefix '2024/04' --delimiter '/'
Ausgabe:
{ "Contents": [ { "Key": "2024/04/12-01-file1" }, { "Key": "2024/04/12-01-file2" } ] }
Platzieren Sie den S3-Express-One-Zone-Speicher gemeinsam mit Ihren -Computingressourcen
Bei S3 Express One Zone befindet sich jeder Verzeichnis-Bucket in einer einzigen Availability Zone, die Sie bei der Erstellung des Buckets auswählen. Sie können damit beginnen, indem Sie neuen Verzeichnis-Bucket in einer Availability Zone erstellen, die für Ihre Computing-Workloads oder Ressourcen lokal ist. Sie können dann sofort mit Lese- und Schreibvorgängen mit sehr niedriger Latenz beginnen. Directory-Buckets sind eine Art von S3-Buckets, in denen Sie die Availability Zone auswählen können, AWS-Region um die Latenz zwischen Datenverarbeitung und Speicher zu reduzieren.
Wenn Sie in verschiedenen Availability Zones auf Verzeichnis-Buckets zugreifen, kann es zu einer leicht erhöhten Latenz kommen. Um die Leistung zu optimieren, empfehlen wir, dass Sie von Amazon Elastic Container Service-, Amazon Elastic Kubernetes Service- und Amazon Elastic Compute Cloud-Instances, die sich nach Möglichkeit in derselben Availability Zone befinden, auf einen Directory-Bucket zugreifen.
Verwenden Sie gleichzeitige Verbindungen, um bei Objekten über 1 MB einen hohen Durchsatz zu erzielen
Sie erreichen die beste Leistung durch die Ausgabe mehrerer gleichzeitiger Anfragen an Verzeichnis-Buckets zur Verteilung Ihrer Anforderungen auf separate Verbindungen und zur Maximierung der verfügbaren Bandbreite. Wie bei Allzweck-Buckets gibt es auch bei S3 Express One Zone keine Beschränkungen für die Anzahl der Verbindungen, die zu Ihrem Verzeichnis-Bucket hergestellt werden. Einzelne Verzeichnisse können die Leistung horizontal und automatisch skalieren, wenn eine große Anzahl gleichzeitiger Schreibvorgänge in dasselbe Verzeichnis stattfindet.
Einzelne TCP-Verbindungen zu Verzeichnis-Buckets haben eine feste Obergrenze für die Anzahl der Byte, die pro Sekunde hoch- oder heruntergeladen werden können. Wenn Objekte größer werden, werden die Anforderungszeiten eher vom Byte-Streaming als von der Transaktionsverarbeitung dominiert. Wenn Sie mehrere Verbindungen verwenden möchten, um den Upload oder Download größerer Objekte zu parallelisieren, können Sie die Latenz reduzieren end-to-end. Wenn Sie das Java 2.x
SDK verwenden, sollten Sie die Verwendung des S3 Transfer Managers in Betracht ziehen, der Leistungsverbesserungen wie die mehrteiligen Upload-API-Operationen und Bytebereichs-Abrufe für den parallel Zugriff auf Daten nutzt.
Verwenden Sie Gateway-VPC-Endpunkte
Gateway-Endpunkte bieten eine direkte Verbindung von Ihrer VPC zu Directory-Buckets, ohne dass ein Internet-Gateway oder ein NAT-Gerät für Ihre VPC erforderlich ist. Um die Zeit zu reduzieren, die Ihre Pakete im Netzwerk verbringen, sollten Sie Ihre VPC mit einem Gateway-VPC-Endpunkt für Directory-Buckets konfigurieren. Weitere Informationen finden Sie unter Netzwerke für Verzeichnis-Buckets.
Verwenden Sie die Sitzungsauthentifizierung und verwenden Sie Sitzungstoken erneut, solange sie gültig sind
Verzeichnis-Buckets bieten einen Authentifizierungsmechanismus für Sitzungstoken, um die Latenz bei leistungsabhängigen API-Vorgängen zu reduzieren. Sie können einen einzigen Aufruf tätigen, CreateSession
um ein Sitzungstoken zu erhalten, das dann in den folgenden 5 Minuten für alle Anfragen gültig ist. Um die geringste Latenz bei Ihren API-Aufrufen zu erzielen, stellen Sie sicher, dass Sie ein Sitzungstoken erwerben und es für die gesamte Lebensdauer dieses Tokens wiederverwenden, bevor Sie es aktualisieren.
Wenn Sie diese Option verwenden AWS SDKs, werden SDKs die Aktualisierungen des Sitzungstokens automatisch durchgeführt, um Dienstunterbrechungen zu vermeiden, wenn eine Sitzung abläuft. Wir empfehlen, dass Sie den verwenden, AWS SDKs um Anfragen an den CreateSession
API-Vorgang zu initiieren und zu verwalten.
Mehr über CreateSession
erfahren Sie unter Autorisieren zonaler Endpunkt-API-Operationen mit CreateSession.
Verwenden Sie einen CRT-basierten Client
Die AWS Common Runtime (CRT) besteht aus modularen, performanten und effizienten Bibliotheken, die in C geschrieben wurden und als Grundlage für die dienen sollen. AWS SDKs Die CRT bietet einen verbesserten Durchsatz, ein verbessertes Verbindungsmanagement und schnellere Startzeiten. Das CRT ist auf allen Geräten AWS SDKs außer Go verfügbar.
Weitere Informationen zur Konfiguration der CRT für das von Ihnen verwendete SDK finden Sie unter AWS Common Runtime (CRT) -Bibliotheken, Beschleunigen Sie den Amazon S3 S3-Durchsatz mit der AWS Common Runtime
Verwenden Sie die neueste Version von AWS SDKs
AWS SDKs Sie bieten integrierte Unterstützung für viele der empfohlenen Richtlinien zur Optimierung der Amazon S3 S3-Leistung. Sie SDKs bieten eine einfachere API zur Nutzung der Vorteile von Amazon S3 innerhalb einer Anwendung und werden regelmäßig aktualisiert, um den neuesten Best Practices zu entsprechen. Beispielsweise werden Anfragen nach 503
HTTP-Fehlern SDKs automatisch wiederholt und langsame Verbindungsantworten verarbeitet.
Wenn Sie das Java 2.x
SDK verwenden, sollten Sie den S3 Transfer Manager in Betracht ziehen, der Verbindungen automatisch horizontal skaliert, um Tausende von Anfragen pro Sekunde zu erreichen, wobei gegebenenfalls Bytebereichsanforderungen verwendet werden. Bytebereichsanforderungen können die Leistung verbessern, da Sie gleichzeitige Verbindungen zu S3 verwenden können, um verschiedene Bytebereiche aus demselben Objekt abzurufen. Dies hilft beim Erreichen eines höheren aggregierten Durchsatzes als bei einer einzelnen Anforderung eines ganzen Objekts. Daher ist es wichtig, die neueste Version von zu verwenden, AWS SDKs um die neuesten Funktionen zur Leistungsoptimierung zu erhalten.
Fehlerbehebung bei der Leistung
Richten Sie Wiederholungsanforderungen für latenzempfindliche Anwendungen ein?
S3 Express One Zone wurde speziell für gleichbleibende Leistung ohne zusätzliche Anpassungen entwickelt. Die Festlegung aggressiver Timeout-Werte und Wiederholungsversuche kann jedoch weiter zu einer gleichbleibenden Latenz und Leistung beitragen. AWS SDKs Sie verfügen über konfigurierbare Timeout- und Wiederholungswerte, die Sie an die Toleranzen Ihrer spezifischen Anwendung anpassen können.
Verwenden Sie AWS Common Runtime (CRT) -Bibliotheken und optimale EC2 Amazon-Instance-Typen?
Anwendungen, die eine große Anzahl von Lese- und Schreibvorgängen ausführen, benötigen wahrscheinlich mehr Arbeitsspeicher oder Computing-Kapazitäten als Anwendungen, bei denen dies nicht der Fall ist. Wenn Sie Ihre Amazon Elastic Compute Cloud (Amazon EC2) -Instances für Ihre leistungsintensive Arbeitslast starten, wählen Sie Instance-Typen aus, die über die Menge dieser Ressourcen verfügen, die Ihre Anwendung benötigt. S3 Express One Zone Hochleistungsspeicher lässt sich ideal mit größeren und neueren Instance-Typen kombinieren, die über mehr Systemspeicher verfügen und leistungsfähiger sind CPUs und GPUs die Vorteile von leistungsfähigerem Speicher nutzen können. Wir empfehlen außerdem, die neuesten Versionen von CRT-Enabled zu verwenden AWS SDKs, wodurch Lese- und Schreibanforderungen besser parallel beschleunigt werden können.
Verwenden Sie AWS SDKs für die sitzungsbasierte Authentifizierung?
Mit Amazon S3 können Sie auch die Leistung optimieren, wenn Sie HTTP-REST-API-Anfragen verwenden, indem Sie dieselben bewährten Methoden befolgen, die Teil von sind AWS SDKs. Angesichts des sitzungsbasierten Autorisierungs- und Authentifizierungsmechanismus, der von S3 Express One Zone verwendet wird, empfehlen wir Ihnen jedoch dringend, das Token für die Verwaltung CreateSession
und das zugehörige verwaltete Sitzungstoken AWS SDKs zu verwenden. Sie erstellen und aktualisieren Tokens AWS SDKs automatisch in Ihrem Namen mithilfe der CreateSession
API-Operation. Bei der Autorisierung der einzelnen Anfragen wird die AWS Identity and Access Management Round-Trip-Latenz pro Anfrage (IAM) CreateSession
eingespart.
Beispiele für den Betrieb von Verzeichnis-Buckets und die Interaktion mit Verzeichnissen
Im Folgenden werden drei Beispiele zur Funktionsweise von Verzeichnis-Buckets gezeigt.
Beispiel 1: Wie PutObject
S3-Anfragen an einen Verzeichnis-Bucket mit Verzeichnissen interagieren
-
Wenn die Operation in einem leeren Bucket ausgeführt
PUT(<bucket>, "documents/reports/quarterly.txt")
wird, wird das Verzeichnisdocuments/
im Stammverzeichnis des Buckets erstellt, das Verzeichnisreports/
darindocuments/
wird erstellt und das Objektquarterly.txt
darinreports/
wird erstellt. Für diesen Vorgang wurden zusätzlich zum Objekt zwei Verzeichnisse erstellt. -
Wenn dann eine weitere Operation ausgeführt
PUT(<bucket>, "documents/logs/application.txt")
wird, ist das Verzeichnisdocuments/
bereits vorhanden, das Verzeichnislogs/
darin istdocuments/
nicht vorhanden und wird erstellt, und daslogs/
darinapplication.txt
enthaltene Objekt wird erstellt. Für diesen Vorgang wurde zusätzlich zu dem Objekt nur ein Verzeichnis erstellt. -
Wenn schließlich eine
PUT(<bucket>, "documents/readme.txt")
Operation ausgeführt wird, ist das Verzeichnisdocuments/
im Stammverzeichnis bereits vorhanden und das Objektreadme.txt
wird erstellt. Für diesen Vorgang werden keine Verzeichnisse erstellt.
Beispiel 2: Wie ListObjectsV2
S3-Anfragen an einen Verzeichnis-Bucket mit Verzeichnissen interagieren
Bei ListObjectsV2
S3-Anfragen ohne Angabe eines Trennzeichens wird ein Bucket zuerst in die Tiefe durchsucht. Die Ausgaben werden in einer konsistenten Reihenfolge zurückgegeben. Diese Reihenfolge bleibt zwar zwischen den Anfragen gleich, die Reihenfolge ist jedoch nicht lexikografisch. Für den Bucket und die Verzeichnisse, die im vorherigen Beispiel erstellt wurden:
-
Wenn a ausgeführt
LIST(<bucket>)
wird,documents/
wird das Verzeichnis eingegeben und das Traversieren beginnt. -
Das Unterverzeichnis
logs/
wird eingegeben und das Traversieren beginnt. -
Das Objekt
application.txt
befindet sich darin.logs/
-
Darin sind keine weiteren Einträge vorhanden
logs/
. Der Listenvorgang wird beendetlogs/
unddocuments/
erneut eingegeben. -
Das
documents/
Verzeichnis wird weiterhin durchsucht und das Objektreadme.txt
wird gefunden. -
Das
documents/
Verzeichnis wird weiterhin durchsucht und das Unterverzeichnisreports/
wird aufgerufen und die Durchquerung beginnt. -
Das Objekt befindet sich darin.
quarterly.txt
reports/
-
Darin sind keine weiteren Einträge vorhanden
reports/
. Die Liste wird verlassenreports/
unddocuments/
wieder eingegeben. -
In der Liste sind keine weiteren Einträge vorhanden
documents/
und die Liste kehrt zurück.
In diesem Beispiel logs/
wird vorher bestellt readme.txt
und readme.txt
wird vorher bestelltreports/
.
Beispiel 3: Wie DeleteObject
S3-Anfragen an einen Verzeichnis-Bucket mit Verzeichnissen interagieren

-
Wenn der Vorgang in demselben Bucket ausgeführt
DELETE(<bucket>, "documents/reports/quarterly.txt")
wird,quarterly.txt
wird das Objekt gelöscht, sodass das Verzeichnisreports/
leer bleibt und es sofort gelöscht wird. Dasdocuments/
Verzeichnis ist nicht leer, da es sowohl das Verzeichnislogs/
als auch dasreadme.txt
Objekt enthält, sodass es nicht gelöscht wird. Für diesen Vorgang wurden nur ein Objekt und ein Verzeichnis gelöscht. -
Wenn der Vorgang ausgeführt
DELETE(<bucket>, "documents/readme.txt")
wird,readme.txt
wird das Objekt gelöscht.documents/
ist immer noch nicht leer, weil es das Verzeichnis enthältlogs/
, also wurde es nicht gelöscht. Bei diesem Vorgang werden keine Verzeichnisse gelöscht und nur das Objekt wird gelöscht. -
Wenn die Operation ausgeführt
DELETE(<bucket>, "documents/logs/application.txt")
wird,application.txt
wird sie schließlich gelöscht, sodass sielogs/
leer bleibt und sofort gelöscht wird. Dadurch bleibt esdocuments/
leer und es wird auch sofort gelöscht. Für diesen Vorgang werden zwei Verzeichnisse und ein Objekt gelöscht. Der Bucket ist jetzt leer.