Dateien in S3 speichern und abrufen

AWSBeginner
Jetzt üben

Einführung

Ein Berichtsteam muss einen täglichen Verkaufsbericht speichern und die aktuelle Kopie abrufen. Du erstellst einen S3-Bucket, lädst den Bericht hoch und aktualisierst ihn, prüfst einen Download und entfernst deine Übungsressourcen.

Schließe zuerst Erste Schritte mit AWS auf LabEx ab. Die CLI-Verbindung und report.txt sind in dieser neuen VM vorbereitet; du benötigst keine persönliche AWS-Anmeldung oder frühere Ressourcen. Verwende Terminal für Befehle und den Tab AWS View daneben, um den Speicher dieses Labs zu beobachten.

Bezug zu Zertifizierungen

Dieses Lab bietet praktische Übungen zu den folgenden Prüfungsthemen.

Erstelle deinen Speicher-Bucket

In diesem Schritt erstellst du einen Bucket für einen täglichen Verkaufsbericht und beobachtest ihn in AWS View.

Wechsle in den Arbeitsbereich. cd ändert das aktuelle Verzeichnis von Terminal; alle lokalen Dateien dieses Labs verwenden dieses Verzeichnis.

cd /home/labex/project

Bestätige die vorbereitete Version der offiziellen CLI:

aws --version

Die Ausgabe beginnt mit aws-cli/2.37.6. Das Image stellt die Werkzeuge bereits bereit, damit du dich auf Speicheroperationen konzentrieren kannst.

Amazon S3 speichert Dateiinhalte als Objekte. Ein Bucket enthält diese Objekte, und ein Schlüssel benennt ein Objekt darin. Du erstellst zuerst den Behälter und lädst dann den Bericht hoch.

Erstelle labex-backups. In aws s3 mb wählt s3 den Objektspeicher aus und mb bedeutet „make bucket“, also Bucket erstellen. Das Präfix s3:// identifiziert einen Speicherort und keinen lokalen Ordner.

aws s3 mb s3://labex-backups

Erwartete Ausgabe:

make_bucket: labex-backups

Liste Buckets mit ls auf, was für „list“ steht:

aws s3 ls

Du solltest eine Zeile sehen, die mit labex-backups endet; Datum und Uhrzeit variieren. In der AWS-View-Vorschau erscheint eine Karte labex-backups ohne Objekte. Die Pfeile zeigen, wie die CLI mit dem Speicher verbunden ist; der Bucket-Knoten spiegelt eine tatsächliche Ressourcenabfrage wider.

Lade den Bericht hoch und untersuche ihn

In diesem Schritt speicherst du einen Bericht als S3-Objekt und liest seinen tatsächlich gespeicherten Inhalt über die Vorschau.

Die lokale Datei und ihre gespeicherte Kopie sind getrennt; Upload und Download verbinden sie.

Lokale und gespeicherte Kopien

Untersuche die vorbereitete lokale Datei. cat gibt den Inhalt einer Textdatei aus:

cat report.txt

Erwartete Ausgabe:

Daily sales: 120 orders

cp bedeutet „copy“, also kopieren. Der erste Pfad unten ist die lokale Quelle und der zweite das Ziel. Der Teil nach dem Bucket-Namen, report.txt, ist der Schlüssel des Objekts.

aws s3 cp report.txt s3://labex-backups/report.txt

Die Ausgabe meldet einen Upload von report.txt nach s3://labex-backups/report.txt.

Liste die Objekte des Buckets auf:

aws s3 ls s3://labex-backups/

Die Zeile für report.txt zeigt Änderungszeit, Größe und Schlüssel. Ein Upload erstellt eine separate gespeicherte Kopie: Allein das Bearbeiten der lokalen Datei würde sie nicht ändern.

In AWS View zeigt die Bucket-Karte 1 Objekt. Klicke in der Karte auf report.txt, um seinen Inhalt aufzuklappen. Die Vorschau sollte Daily sales: 120 orders anzeigen. Sie liest das gespeicherte Objekt und nicht die lokale Quelldatei.

Das Beispiel unten zeigt den hochgeladenen Bericht aufgeklappt in seiner Bucket-Karte. Der Inhalt wird aus dem Speicher gelesen.

Gespeicherter Bericht und S3-Topologie

Aktualisiere die gespeicherte Kopie und rufe sie ab

In diesem Schritt ersetzt du den Bericht, lädst die aktuell gespeicherte Version herunter und weist nach, dass der Inhalt die Übertragung in beide Richtungen unverändert überstanden hat.

Der aktualisierte Bericht enthält 145 Bestellungen. printf schreibt Text; \n ergänzt einen Zeilenumbruch. Der Shell-Operator > ersetzt den Inhalt der benannten lokalen Datei.

printf 'Daily sales: 145 orders\n' > report.txt

Sieh dir die Berichtsvorschau vor dem erneuten Upload an. Sie zeigt weiterhin 120 orders, weil sich die gespeicherte Kopie nicht geändert hat.

Lade auf denselben Schlüssel hoch, um seinen aktuellen Inhalt zu ersetzen:

aws s3 cp report.txt s3://labex-backups/report.txt

Die Vorschau zeigt jetzt 145 orders, während die Objektanzahl 1 bleibt. Die Wiederverwendung eines Schlüssels aktualisiert dieses Objekt; sie erstellt in diesem Lab kein zweites benanntes Objekt.

Lade die Datei herunter, indem du die Richtung von cp umkehrst: Der S3-Pfad ist jetzt die Quelle und downloaded.txt ein neues lokales Ziel.

aws s3 cp s3://labex-backups/report.txt downloaded.txt

Untersuche die heruntergeladene Datei:

cat downloaded.txt

Erwartete Ausgabe:

Daily sales: 145 orders

cmp vergleicht zwei Dateien Byte für Byte. Es gibt nichts aus und endet erfolgreich, wenn sie identisch sind. && führt den folgenden Befehl nur aus, wenn dieser Vergleich erfolgreich ist.

cmp report.txt downloaded.txt && echo 'Round trip verified'

Erwartete Ausgabe:

Round trip verified

Dieser Vergleich beweist, dass der abgerufene Inhalt deiner aktualisierten Quelle entspricht. Die Schrittprüfung liest unabhängig S3 und vergleicht die gespeicherten und heruntergeladenen Inhalte.

Räume deinen Speicher auf

In diesem Schritt lernst du, warum ein nicht leerer Bucket nicht entfernt werden kann, und löschst dann die Objekte und den Bucket dieses Labs.

rb bedeutet „remove bucket“, also Bucket entfernen. Versuche zuerst, ihn zu entfernen, während der Bericht noch existiert:

aws s3 rb s3://labex-backups

Dieser Befehl soll fehlschlagen, mit BucketNotEmpty. Der Fehler verdeutlicht eine Ressourcenabhängigkeit: Ein Bucket enthält Objekte, also entferne diese Objekte, bevor du ihren Behälter entfernst. Bucket und Objekt sollten in der Vorschau sichtbar bleiben.

rm entfernt ein Objekt am genauen S3-Pfad:

aws s3 rm s3://labex-backups/report.txt

Die Ausgabe bestätigt delete: s3://labex-backups/report.txt. Das Objekt verschwindet aus der Vorschau; der Bucket bleibt leer bestehen.

Entferne jetzt den leeren Bucket:

aws s3 rb s3://labex-backups

Erwartete Ausgabe:

remove_bucket: labex-backups

Bestätige, dass der Dienst weiterhin antwortet und keine verbleibenden Buckets auflistet:

aws s3 ls

Der Befehl endet ohne Bucket-Zeilen. AWS View zeigt No buckets ohne Ressourcenkarten. Dieser Zustand stammt aus einer erfolgreichen Dienstabfrage; eine getrennte Seite würde keine Bereinigung beweisen. Deine lokalen Berichtsdateien bleiben verfügbar, während die Speicherressourcen entfernt wurden.

Die Bereinigungsansicht unten zeigt nach einer erfolgreichen Zustandsabfrage keine verbleibenden Bucket-Karten.

Leerer Speicher nach dem Aufräumen

Zusammenfassung

Du hast mit der offiziellen AWS CLI einen Bucket erstellt, ein Objekt hochgeladen und ersetzt, es heruntergeladen, Dateiinhalte verglichen und die Speicherressourcen entfernt. AWS View verknüpfte deine Befehle mit beobachtbaren Ressourcenänderungen, und die Vorschau zeigte tatsächlich gespeicherten Inhalt.

Du hast einen vollständigen Ablauf zur Berichtsspeicherung geübt: Dateien in einem Bucket organisieren, lokale und gespeicherte Kopien unterscheiden, einen Download prüfen und Objekte entfernen, bevor du ihren Bucket löschst.