Cloud-Lab: S3-Buckets, SQS-Warteschlangen und DynamoDB-Tabellen mit der AWS-Befehlszeile üben
Dieses Lab gibt jeder lernenden Person eine eigene Übungs-Cloud: MiniStack, einen Emulator, der dieselben Anfragen beantwortet wie drei Dienste von Amazon Web Services, S3 für Dateien, SQS für Warteschlangen von Nachrichten und DynamoDB für Tabellen. Man benutzt die AWS-Befehlszeile, dasselbe Werkzeug wie beim echten Dienst, sodass sich das Getippte übertragen lässt. Es gehört zum Modul Praxis des Cloud Computing, dessen Aufgaben über aufgezeichnete Antworten laufen.
Es ist kein Angriffs-Lab und nicht AWS. Jede Kopie hat keinen Weg ins Internet und keinen zu einer anderen lernenden Person, nichts darin wird berechnet, und es hat keine Webseite, also wird alles im Terminal daneben getippt. Nur die drei Dienste sind eingeschaltet: Lambda ist absichtlich aus, weil seine Funktionen den eigenen Code der Lernenden im Stack ausführen würden.
Was Lernende lernen
Wie man einen Cloud-Dienst über die Befehlszeile benutzt: Ein Bucket hält Objekte, die man über ihren Schlüssel findet (aws s3 mb, cp und ls), eine Warteschlange hält Nachrichten, die man empfängt und dann löscht, um sie zu beenden (aws sqs create-queue, send-message, receive-message und delete-message), und eine Tabelle hält Einträge unter einem Schlüssel, die eine Abfrage zusammen liest (aws dynamodb create-table, put-item, get-item und query). Sie lesen die Antworten, auch den Fehler für einen fehlenden Schlüssel, NoSuchKey bei S3, und lernen einen Unterschied zwischen Diensten kennen: Ein fehlender DynamoDB-Eintrag ist eine leere Antwort und kein Fehler. Sie sehen auch, was ein Emulator ist, eine Übungskopie, die nicht der echte Dienst ist. Es passt zu einer Einführung in Cloud Computing oder zum Speicher- und Nachrichtenteil eines Softwaretechnik-Kurses.
Im Browser ausführen
Das Lab startet einen einzigen Dienst, cloud, und wartet, bis er antwortet. Das Terminal hat die AWS-Befehlszeile, aber keine Schlüssel für den Stack, deshalb setzt die Lektion zuerst einen ausgedachten Schlüssel, eine Region und die Adresse des Stacks, http://cloud:4566. Der Stack prüft kein Passwort, und beim echten AWS würdest du die Adresse nicht setzen.
- Container-Seite öffnen. Öffnen Sie in der Leiste „Entwickeln“ und wählen Sie „Einen Container ausführen“. Die Seite kann jeder öffnen, und das Git-Lab und das SQL-Lab starten ohne Konto. Alle anderen Labs brauchen ein kostenloses Konto: Erstellen Sie eines, melden Sie sich an und klicken Sie dann auf „Starten“.
- Lab suchen. Die Karte „Beispiel-Labs“ listet alle Beispiele auf. Suchen Sie Cloud (MiniStack).
- Auf „Starten“ klicken. „Starten“ führt das Lab unverändert mit einem einzigen Klick aus. „Zuerst die Datei bearbeiten“ öffnet die Compose-Datei, damit Sie sie vor dem Start ändern können.
- Öffnen. Drücke auf der Seite des Labs auf „Terminal öffnen“. Unter „In deinem Browser“ gibt es keinen Link, weil der Stack keine Webseite hat. Tippe export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test AWS_DEFAULT_REGION=us-east-1 AWS_ENDPOINT_URL=http://cloud:4566, dann aws s3 mb s3://lab-bucket, und das Terminal antwortet make_bucket: lab-bucket. aws s3 ls listet ihn auf.
Was Lernende abgeben sollen
Die Antworten einer kurzen eigenen Sitzung: ein 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 der Fehler für einen fehlenden Schlüssel. Dazu ein Satz darüber, was MiniStack nicht ist. Eine gute Antwort sagt, dass es ein Emulator ist, eine Übungskopie, und nicht AWS.
A basic lesson on this lab
Cloud Services Basics ist eine kleine Lektion, die in diesem Lab durchgeführt wird. Darin setzt man Schlüssel und Adresse, legt einen Bucket an und speichert und liest ein Objekt, fragt nach einem fehlenden Schlüssel, legt eine Warteschlange an und sendet, empfängt und löscht eine Nachricht, legt eine Tabelle an und speichert, liest und fragt Einträge ab. Die Lektion sagt auch, dass nur drei Dienste eingeschaltet sind und dass erhalten bleibt, was man anlegt, wenn das Lab beendet und wieder gestartet wird.
Kostenlose persönliche Konten haben sie im Modul Basics, das auf der Startseite liegt, jede Einrichtung kann sie aus dem Basics-Ordner der Bibliothek kopieren, und eine neue Einrichtung startet mit ihr in einem Modul namens DevOps Labs (Sample). Sie ist bewusst klein: Sie zeigt Lehrkräften, was eine Lektion in einem Lab ist, und das Lab erledigt den Rest. Kopiere sie in ein eigenes Modul, um sie zu ändern.
Der Code auf GitHub
Die Compose-Datei hat kein Dockerfile: Sie startet ein öffentliches Standard-Image, ministackorg/ministack, auf eine Version festgelegt, mit 256 MB Speicher und seinem Zustand in einem benannten Volume. MiniStack steht unter der MIT-Lizenz und wird nicht von uns verteilt. Eine Einstellung in der Datei schaltet nur S3, SQS und DynamoDB ein, und jede Anfrage an einen anderen Dienst, Lambda eingeschlossen, wird mit einem Fehler abgelehnt. Das Lab hat keinen Weg ins Internet und kein Passwort, da nichts anderes den Stack erreichen kann. Es ist ein einzelner Dienst und ein Emulator: Einzelheiten der echten Dienste, etwa die Kontonummer in der Adresse einer Warteschlange, unterscheiden sich.
Als Aufgabe stellen
Sagen Sie in der Aufgabe, was abzugeben ist.
- Lab erstellen. Fügen Sie in Ihrem Modul eine Aufgabe hinzu und wählen Sie die Karte „Container-Lab“, dann „In einem GitHub-Repository“. Geben Sie https://github.com/mitsurutech/lab-cloud mit dem Branch main an. Die Compose-Datei ist standardmäßig compose.yaml. Forken Sie das Repository zuerst, wenn Sie es ändern möchten.
- Veröffentlichen und ausprobieren. „Veröffentlichen“ legt den Commit fest, den Sie gesehen haben. Eine spätere Änderung im Repository verändert also kein Lab, das Sie bereits gestellt haben. Starten Sie zuerst Ihre eigene Kopie.
- Zuweisen. Weisen Sie es wie jede Aufgabe zu, auf Wunsch mit Fälligkeitsdatum, und schreiben Sie in die Aufgabe, was zu tun ist und was abgegeben werden soll.
- Abgaben bewerten. Öffnen Sie die Kopie einer lernenden Person und die abgegebene Arbeit, bewerten Sie sie und geben Sie sie mit einer Begründung zur Überarbeitung zurück, wenn mehr nötig ist.
Dieses Lab ausprobieren, und was es kostet
Mit einem kostenlosen persönlichen Konto können Sie die Grundlagenlektionen in diesem Lab durcharbeiten, mit genug kostenlosem Guthaben pro Monat für die meisten Lektionen und ohne Karte. Für eine Klasse sind die ersten 365 Tage für eine Schule kostenlos, für bis zu 50 Lernende; danach zahlt sie je lernender Person und Jahr, alle Labs inklusive und Lehrkräfte kostenlos.
Häufige Fragen
- Ist das AWS?
- Nein. Es ist MiniStack, ein Emulator, der dieselben Anfragen für S3, SQS und DynamoDB beantwortet. Nichts darin wird berechnet oder verlässt die Kopie, und es prüft kein Passwort. Die AWS-Befehlszeile ist die echte, sodass sich das Getippte auf ein eigenes Konto übertragen lässt.
- Warum ist Lambda abgeschaltet?
- Eine Lambda-Funktion ist Code, den die lernende Person schreibt, und der Emulator würde ihn im eigenen Container des Stacks ausführen. Ist der Dienst abgeschaltet, gibt es nichts, womit er laufen könnte: Eine Anfrage an Lambda wird mit einem Fehler abgelehnt. Das Lab lehrt Speicher, Warteschlangen und Tabellen, die ihn nicht brauchen.
- Warum setzt die Lektion zuerst einen Schlüssel und eine Adresse?
- Das Terminal des Labs hat die AWS-Befehlszeile, aber keine Schlüssel für den Stack. Die Lektion setzt einen ausgedachten Schlüssel, den der Emulator nicht prüft, und die Adresse des Stacks, die das echte AWS nicht bräuchte.
- Was ist nach dem Beenden und Starten des Labs noch da?
- Die Buckets, Objekte, Warteschlangen und Tabellen, die du angelegt hast. Der Stack bewahrt seinen Zustand in einem benannten Volume auf, das die Plattform sichert, und liest ihn beim Start. Das Terminal vergisst Schlüssel und Adresse, also läuft der erste Befehl der Lektion erneut.