Einführung
Ein Bestelldienst benötigt einen Ort, um Bestelldetails zu speichern und anhand der Bestell-ID nachzuschlagen. Du erstellst eine DynamoDB-Tabelle, speicherst zwei typisierte Elemente, aktualisierst eine verpackte Bestellung und entfernst eine temporäre Bestellung. Abschließend löschst du nur deine eigene Tabelle und erhältst dabei eine unbeteiligte Referenztabelle.
Dieses Lab beginnt unabhängig in einer neuen Umgebung. Beginne mit den AWS-Foundations-Labs zu Terminalbefehlen, Aufruferidentität und Ressourcennamen. Verwende /home/labex/project und die vorbereitete entbehrliche Verbindung. AWS View zeigt den tatsächlichen Tabellen- und Elementzustand; es ist nicht die AWS Console.
Bezug zu Zertifizierungen
| Zertifizierung | Prüfungsaufgabe | Übung |
|---|---|---|
| Cloud Practitioner (CLF-C02) | Aufgabe 3.4 | DynamoDB-Schlüssel, typisierte Elemente und Datenoperationen. |
| Solutions Architect – Associate (SAA-C03) | Aufgabe 3.3 | DynamoDB-Schlüssel, typisierte Elemente und Datenoperationen. |
| Developer – Associate (DVA-C02) | Aufgabe 1.3 | DynamoDB-Schlüssel, typisierte Elemente und Datenoperationen. |
| Data Engineer – Associate (DEA-C01) | Aufgabe 2.4 | Grundlagenübung: DynamoDB-Schlüssel, typisierte Elemente und Datenoperationen. |
Lab-Überblick

Erstelle eine Bestellungstabelle
In diesem Schritt erstellst du eine Tabelle für einen kleinen Bestelldienst. DynamoDB speichert Elemente statt Zeilen, die durch ein vollständiges Spaltenschema eingeschränkt sind. Die Tabelle deklariert ihren Primärschlüssel; jedes Element kann zusätzliche Attribute haben. Ein Partitionsschlüssel identifiziert ein Element in dieser einfachen Tabelle.
Die offizielle AWS CLI und eine entbehrliche Verbindung sind vorbereitet. Verwende diesen Arbeitsbereich und untersuche dann den Aufrufer. Gib keine persönlichen Zugangsdaten ein.
cd /home/labex/project
aws sts get-caller-identity
Die Aufrufer-ARN endet mit user/dynamodb-operator. Kontokennung und ARN identifizieren die Verbindung und keinen Bestellschlüssel.
Erstelle labex-d01-orders mit order_id als String-Partitionsschlüssel (S, HASH). --attribute-definitions deklariert nur Schlüsselattribute und nicht jedes Elementfeld. PAY_PER_REQUEST wählt On-Demand-Kapazität statt bereitgestellter Lese- und Schreibeinheiten. Bei AWS verursachen Anfragen und Speicher Kosten; diese Auswahl bedeutet keinen kostenlosen Speicher.
aws dynamodb create-table \
--table-name labex-d01-orders \
--attribute-definitions AttributeName=order_id,AttributeType=S \
--key-schema AttributeName=order_id,KeyType=HASH \
--billing-mode PAY_PER_REQUEST
Die Tabellenerstellung gibt Metadaten zurück. Ein Waiter fragt den Dienst wiederholt ab, bis die Tabelle verfügbar ist; dies ist sicherer als anzunehmen, die erste Antwort bedeute bereits, dass die Ressource bereit ist.
aws dynamodb wait table-exists --table-name labex-d01-orders
aws dynamodb describe-table \
--table-name labex-d01-orders \
--query 'Table.{State:TableStatus,Keys:KeySchema,Billing:BillingModeSummary.BillingMode}'
Erwarte ACTIVE, den Partitionsschlüssel order_id und PAY_PER_REQUEST. Betrachte AWS View oben in LabEx. Die Bestellkarte hat noch keine Elemente; die separate Referenztabelle gehört zur vorbereiteten Umgebung und muss unverändert bleiben.
Schreibe und lies typisierte Elemente
In diesem Schritt speicherst du zwei Bestellungen und rufst eine anhand ihres genauen Schlüssels ab. Die DynamoDB-API auf niedriger Ebene verwendet typisierte Attribute: S für Zeichenfolgen und N für Zahlen. Der N-Wert wird als JSON-Zeichenfolge codiert, aber DynamoDB behandelt ihn als Zahl. Geldbeträge sind hier ganze Einheiten für ein kleines synthetisches Beispiel.

Einfache Anführungszeichen lassen die Shell JSON unverändert weitergeben, einschließlich der doppelten Anführungszeichen darin. Jedes put-item erstellt ein vollständiges Element mit eigenem Schlüssel. Ein erfolgreicher Schreibvorgang hat normalerweise keine Ausgabe.
aws dynamodb put-item \
--table-name labex-d01-orders \
--item '{"order_id":{"S":"O100"},"customer":{"S":"Ada"},"amount":{"N":"145"},"status":{"S":"NEW"}}'
aws dynamodb put-item \
--table-name labex-d01-orders \
--item '{"order_id":{"S":"O101"},"customer":{"S":"Ada"},"amount":{"N":"50"},"status":{"S":"NEW"}}'
Rufe O100 anhand seines Primärschlüssels ab. --consistent-read fordert einen stark konsistenten Lesezugriff auf die Basistabelle an, was beim unmittelbaren Prüfen eines Schreibvorgangs nützlich ist. Lesezugriffe sind standardmäßig letztendlich konsistent.
aws dynamodb get-item \
--table-name labex-d01-orders \
--key '{"order_id":{"S":"O100"}}' \
--consistent-read
Das Item enthält O100, Ada, Betrag 145 und Status NEW. Fehlende Nichtschlüsselattribute sind erlaubt; ein fehlender erforderlicher Schlüssel nicht. Klappe in AWS View O100 innerhalb der Bestellkarte auf, um das tatsächliche typisierte Element zu sehen, das derselbe Dienst zurückgibt.
Aktualisiere eine Bestellung und entferne ein temporäres Element
In diesem Schritt änderst du O100, ohne seine anderen Felder zu ersetzen, und entfernst dann die temporäre Bestellung O101. update-item wendet einen Ausdruck auf ein Element mit einem bestimmten Schlüssel an. SET weist Attribute zu. Ein Alias für einen Ausdrucksnamen vermeidet Konflikte mit reservierten Wörtern: #state steht für status. Ausdruckswerte tragen ihre DynamoDB-Typen.
Der Bestelldienst soll Verpackungsdaten ändern und dabei die Kundenidentität erhalten. PutItem würde das gesamte Element unter demselben Schlüssel ersetzen; UpdateItem ändert nur die angegebenen Attribute. Das zurückgegebene Feld customer belegt, dass andere Bestelldaten erhalten bleiben.
--return-values ALL_NEW gibt das vollständige aktualisierte Element zurück, damit du das Ergebnis sofort untersuchen kannst.
aws dynamodb update-item \
--table-name labex-d01-orders \
--key '{"order_id":{"S":"O100"}}' \
--update-expression 'SET amount = :amount, #state = :state' \
--expression-attribute-names '{"#state":"status"}' \
--expression-attribute-values '{":amount":{"N":"160"},":state":{"S":"PACKED"}}' \
--return-values ALL_NEW
Die zurückgegebenen Attribute erhalten den Kunden Ada, während der Betrag auf 160 und der Status auf PACKED geändert werden.
Lösche nur O101 anhand seines genauen Schlüssels und lies es dann erneut.
aws dynamodb delete-item \
--table-name labex-d01-orders \
--key '{"order_id":{"S":"O101"}}' \
--return-values ALL_OLD
aws dynamodb get-item \
--table-name labex-d01-orders \
--key '{"order_id":{"S":"O101"}}' \
--consistent-read
ALL_OLD zeigt das gelöschte Element. Der folgende Lesezugriff gibt {} zurück, weil unter diesem Schlüssel kein Element übrig ist; dies ist ein erfolgreicher Lesezugriff ohne Ergebnis. In AWS View verschwindet O101 und O100 behält seine aktualisierten Felder. Klappe O100 auf und vergleiche Betrag und Status.

Entferne nur die eigene Tabelle
In diesem Schritt entfernst du die Bestellungstabelle nach der Prüfung ihrer endgültigen Daten. Das Löschen einer Tabelle entfernt alle ihre Elemente und Indizes. Bestätige ihren genauen Namen vor der Löschung; durchlaufe niemals jede vom Dienst zurückgegebene Tabelle mit einer Schleife.
aws dynamodb scan --table-name labex-d01-orders --consistent-read
Der abschließende Scan gibt nur O100 mit Betrag 160 und Status PACKED zurück. Ein Scan untersucht eine Tabelle statt eines einzelnen Elements anhand seines Schlüssels; größere Zugriffsmuster verwenden im nächsten Lab Query.
aws dynamodb delete-table --table-name labex-d01-orders
aws dynamodb wait table-not-exists --table-name labex-d01-orders
aws dynamodb list-tables
aws dynamodb get-item \
--table-name labex-d01-reference \
--key '{"id":{"S":"platform"}}' \
--consistent-read
Das Inventar enthält labex-d01-reference und keine Bestellungstabelle. Die Referenznotiz bleibt keep unchanged. Ein erfolgreiches Inventar und ein erfolgreicher Referenzlesezugriff beweisen, dass die Verbindung weiterhin funktioniert; ein Authentifizierungs- oder Netzwerkfehler würde keine Löschung beweisen. AWS View zeigt jetzt nur die erhaltene Referenz und Orders table absent. Die entbehrliche Verbindung endet mit dieser VM; kopiere ihre Zugangsdaten nicht an einen anderen Ort.
Zusammenfassung
Du hast eine On-Demand-Tabelle mit einem String-Partitionsschlüssel erstellt, typisierte Elemente geschrieben, einen stark konsistenten Lesezugriff anhand eines Schlüssels ausgeführt, ausgewählte Attribute aktualisiert und ein Element entfernt. Anschließend hast du nur die eigene Tabelle gelöscht und nachgewiesen, dass die unbeteiligte Referenz lesbar blieb. Diese Operationen bilden die Grundlage für Abfragen mit zusammengesetzten Schlüsseln und alternative Zugriffsmuster in den nächsten Labs.
Weitere Informationen bietet die AWS-Dokumentation: Tabellen, Elemente, Attribute und Primärschlüssel.



