Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Grundlagen der Cloud-Dienste

Die ganze Lektion steht hier zum Lesen. Erstellen Sie ein kostenloses Konto, um sie in einem Live-Lab auszuführen.

Container-Lab13 Min. Lesezeit14 Befehle

Wohin geht ein Foto, wenn du es hochlädst?

Eine Foto-App hält dein Bild nicht auf einem einzigen Handy. Sie schickt es an einen Speicherdienst in der Cloud, legt eine Nachricht in eine Warteschlange, damit ein anderes Programm es verkleinert, und trägt es in eine Tabelle ein. Diese drei Aufgaben erledigen S3, SQS und DynamoDB.

Am Ende dieser Lektion

Notiz

Ich kann die AWS-Befehlszeile benutzen, um in einer Übungs-Cloud Daten zu speichern, in eine Warteschlange zu stellen und nachzuschlagen.

Schlüsselwörter

  • Bucket (Eimer): ein benannter Behälter für Dateien in S3.
  • Objekt: eine gespeicherte Datei, die man über ihren Schlüssel findet.
  • Warteschlange (Queue): Nachrichten, die der Reihe nach auf ihre Bearbeitung warten.
  • Tabelle: Einträge, die in DynamoDB unter einem Schlüssel liegen.
  • Emulator: eine Kopie, die sich wie ein Dienst verhält, ohne der echte zu sein.

Zum Einstieg: was du schon weißt

Notiz

Antworte im Kopf. 1. Wozu dient ein Dateiname? 2. Wozu dient eine Schlange an der Bushaltestelle? 3. Was ist eine Zeile einer Datenbanktabelle? Antworten: um die Datei zu finden; damit die Leute der Reihe nach drankommen; ein Datensatz.

Bevor du anfängst

Notiz

Klicke oben in der Leiste dieser Lektion auf Lab starten und warte, bis dort steht, dass es läuft. Der Stack ist ein Dienst namens cloud, und das Terminal erreicht ihn unter diesem Namen. Hier sind nur S3, SQS und DynamoDB eingeschaltet: Frage einen anderen Dienst an, etwa Lambda, und du bekommst einen Fehler. Was du anlegst, bleibt erhalten, wenn das Lab beendet und wieder gestartet wird. Jede Schaltfläche Ausführen unten tippt ihren Befehl ins Terminal deines Labs, einen nach dem anderen in derselben Sitzung. Wenn du zuschauen oder eigene Befehle tippen willst, klicke in der Leiste auf Terminal öffnen (neuer Tab).

1. Ein Bucket enthält Objekte

Der erste Befehl gibt dem Befehl aws einen ausgedachten Schlüssel, weil der Stack keinen prüft, die Region us-east-1 und die Adresse deines eigenen Stacks, und gibt nichts aus. mb legt einen Bucket an und gibt make_bucket: lab-bucket aus. Der nächste schickt den Text hello cloud unter dem Schlüssel hello.txt dorthin und gibt nichts aus. Kopieren nach - gibt das Objekt aus: hello cloud. Der letzte fragt nach einem Schlüssel, der nie gespeichert wurde. Die Antwort ist ein Fehler, der NoSuchKey und The specified key does not exist. sagt, genau wie beim echten AWS.

Befehl
export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test AWS_DEFAULT_REGION=us-east-1 AWS_ENDPOINT_URL=http://cloud:4566

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
aws s3 mb s3://lab-bucket

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
echo "hello cloud" | aws s3 cp - s3://lab-bucket/hello.txt

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
aws s3 cp s3://lab-bucket/hello.txt -

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
aws s3api get-object --bucket lab-bucket --key nothing.txt /dev/null

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

2. Eine Warteschlange hält Nachrichten, bis sie gelöscht werden

Der erste Befehl legt eine Warteschlange an und behält ihre Adresse in Q, damit du sie nie tippst. Der zweite sendet eine Nachricht und gibt MD5OfBody und MessageId aus. Der dritte empfängt sie, gibt sie unter Messages mit ihrem Body, first message, aus und speichert die Antwort in reply.json. Der vierte schneidet ihr ReceiptHandle heraus, den Beweis, dass du sie empfangen hast, und behält es in H. delete-message gibt nichts aus. Viele denken, dass Empfangen die Nachricht aus der Warteschlange nimmt. Sie wird nur eine Weile versteckt und kommt zurück und wird zweimal bearbeitet, wenn du sie nicht löschst.

Befehl
Q=$(aws sqs create-queue --queue-name lab-queue --query QueueUrl --output text)

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
aws sqs send-message --queue-url $Q --message-body "first message"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
aws sqs receive-message --queue-url $Q | tee reply.json

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
H=$(grep -o '"ReceiptHandle": "[^"]*"' reply.json | cut -d'"' -f4)

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
aws sqs delete-message --queue-url $Q --receipt-handle "$H"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

3. Eine Tabelle hält Einträge unter einem Schlüssel

Der erste Befehl legt eine Tabelle Books an, deren Schlüssel aus author und title besteht, und gibt "ACTIVE" aus. Der zweite speichert zwei Einträge in einer Anfrage und gibt ein leeres UnprocessedItems aus. get-item fragt einen Eintrag über seinen ganzen Schlüssel ab und gibt ihn aus, jeder Wert in seinen Typ eingepackt: S für Text und N für eine Zahl. query liest alle Einträge eines Autors und gibt Count 2 und beide Titel aus. Frag get-item nach einem Schlüssel, den du nie gespeichert hast: Es gibt nichts aus, denn ein fehlender Eintrag ist hier eine leere Antwort, kein Fehler.

Befehl
aws dynamodb create-table --table-name Books --attribute-definitions AttributeName=author,AttributeType=S AttributeName=title,AttributeType=S --key-schema AttributeName=author,KeyType=HASH AttributeName=title,KeyType=RANGE --billing-mode PAY_PER_REQUEST --query TableDescription.TableStatus

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
aws dynamodb batch-write-item --request-items '{"Books":[{"PutRequest":{"Item":{"author":{"S":"Ada"},"title":{"S":"Notes"},"year":{"N":"1843"}}}},{"PutRequest":{"Item":{"author":{"S":"Ada"},"title":{"S":"Sketch"},"year":{"N":"1842"}}}}]}'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
aws dynamodb get-item --table-name Books --key '{"author":{"S":"Ada"},"title":{"S":"Notes"}}'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
aws dynamodb query --table-name Books --key-condition-expression "author = :a" --expression-attribute-values '{":a":{"S":"Ada"}}' --query '{Count:Count,Titles:Items[].title.S}'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Abschlusskontrolle

Tipp

Antworte, ohne zurückzublättern. 1. Was findet ein Objekt in einem Bucket? 2. Welchen Fehler gibt S3 für einen fehlenden Schlüssel? 3. Was musst du mit einer Nachricht tun, wenn sie bearbeitet ist? 4. Ist dieser Stack das echte AWS? Antworten: sein Schlüssel; NoSuchKey; sie löschen; nein, es ist ein Emulator, eine Übungskopie.

Für Lehrkräfte

Tipp

Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab durchgeführt wird: Die Schritte und die Schaltflächen „Ausführen“ sind die Lektion, und das Lab ist die Kopie jeder lernenden Person. Das Lab ist ein kleiner Dienst und ein benanntes Volume, und nichts hier bewertet sich selbst: Die lernende Person gibt die Antworten ihrer eigenen Sitzung ab, einen Bucket mit einem hochgeladenen, aufgelisteten und gelesenen Objekt, eine Warteschlange mit einer gesendeten, empfangenen und gelöschten Nachricht, eine Tabelle mit einem gespeicherten, gelesenen und abgefragten Eintrag und den Fehler für einen fehlenden Schlüssel, dazu einen Satz darüber, was MiniStack nicht ist. Wichtigste Lernpunkte: 1. S3 speichert Objekte unter Schlüsseln in einem Bucket. 2. Eine Warteschlange hält Nachrichten, und eine Nachricht wird durch Löschen beendet. 3. DynamoDB speichert Einträge unter einem Schlüssel, und eine Abfrage liest alle Einträge unter einem Teil davon. 4. Ein fehlender S3-Schlüssel ist ein Fehler, ein fehlender DynamoDB-Eintrag eine leere Antwort. 5. MiniStack ist ein Emulator, nicht AWS. Häufiger Fehler: zu glauben, Empfangen entferne die Nachricht. Material: das Lab und sein Terminal. Tipp: Lass die Lernenden jede Antwort vorhersagen, bevor sie auf „Ausführen“ klicken. Lambda ist absichtlich abgeschaltet, weil seine Funktionen den Code der Lernenden im Stack ausführen würden. Nachrichten-IDs, Empfangsbelege, Uhrzeiten und die Adresse der Warteschlange unterscheiden sich vom echten AWS und von Lauf zu Lauf. Kopiere die Lektion in dein eigenes Modul und ändere sie, oder baue im Lektionseditor über das Menü Lab eine neue von Grund auf.

Über dieses Lab und seinen Quellcode: Cloud-Lab: S3-Buckets, SQS-Warteschlangen und DynamoDB-Tabellen mit der AWS-Befehlszeile üben

Sie unterrichten eine Klasse? Weisen Sie diese Lektionen Ihren Lernenden zu, mit Bewertung und einem Lab für jede lernende Person.