AWS ohne Konto unterrichten: S3, DynamoDB und SQS für jede lernende Person

Cloud-Dienste sind der Teil moderner Software, den ein Klassenzimmer normalerweise gar nicht unterrichten kann. Über Objektspeicher zu lesen ist nicht dasselbe, wie eine Datei in einen Bucket zu legen, und der übliche Weg dorthin führt über ein AWS-Konto, eine Karte und eine Rechnung, die niemand der Buchhaltung erklären möchte. Die meisten Einrichtungen kommen nie über das Diagramm hinaus.

Lernende klicken hier im Tab „Cloud“ auf „Starten“ und haben drei Dienste: einen Objektspeicher, eine NoSQL-Tabelle und eine Nachrichtenwarteschlange, die die APIs von Amazon S3, DynamoDB und SQS sprechen. So funktionieren boto3, das AWS-SDK für JavaScript, Java oder Go und die AWS CLI unverändert damit, und der Code, den Lernende hier schreiben, ist der Code, den sie für ein echtes Konto schreiben würden.

Er ist privat für sie, verschwindet, wenn sie fertig sind, und ist kostenlos. Wir sind nicht mit Amazon Web Services verbunden, und dies ist kein AWS-Konto: Es läuft auf MiniStack, einem Open-Source-Emulator, auf derselben Maschine wie ihre App. AWS, Amazon S3, DynamoDB und Amazon SQS sind Marken von Amazon.com, Inc. oder seinen verbundenen Unternehmen und werden hier nur genannt, um zu sagen, welche APIs der Stack umsetzt.

Was Lernende bekommen

Je einen Stack, im selben privaten Netzwerk wie ihre App, ihre Datenbank und ihr Terminal. Alles in der Sitzung erreicht ihn unter dem Namen `cloud`, sodass die Konfiguration aus einem Tutorial unverändert funktioniert und keine URL zu kopieren ist.

Das Starten setzt die Variablen, die jedes AWS-SDK ohnehin liest: `AWS_ENDPOINT_URL`, einen für sie erzeugten Zugriffsschlüssel samt geheimem Schlüssel und `AWS_REGION`. So findet `boto3.client("s3")` ohne Argumente den Stack, ohne etwas zu konfigurieren und ohne eine URL zu kopieren.

Der Stack startet leer, so wie ein neues Konto: Lernende legen ihre eigenen Buckets, Tabellen und Warteschlangen an, aus ihrem Code oder im Tab „Cloud“, und `create_bucket` vor `put_object` gehört zu dem, was die Übung vermittelt.

Die Zugangsdaten werden erzeugt und nie selbst gewählt, und sie stehen auf der Seite, damit Lernende lesen können, was die Variablen bedeuten.

  1. Den Tab „Cloud“ öffnen. Unter „Bereitstellungen“, neben „App“ und „Datenbank“. Ein Stack pro lernender Person.
  2. Auf „Starten“ klicken. Der Stack ist in wenigen Sekunden da, leer, so wie ein neues Konto.
  3. Die Variablen lesen. Der Endpunkt, das Schlüsselpaar und die Region stehen auf der Seite. Jedes AWS-SDK liest sie von selbst aus der Umgebung.
  4. Den Code schreiben. In ihrer App oder im Terminal: `aws s3 ls`, `boto3.client("s3")` oder das SDK für JavaScript, Java oder Go. Nichts zu konfigurieren.
  5. Ansehen, was sie angelegt haben. Die Konsole auf derselben Seite listet Buckets, Schlüssel, Tabellen, Einträge und Nachrichten in der Warteschlange auf, während ihr Code sie schreibt.
Der Tab „Cloud“ einer lernenden Person, mit ihrer Sitzung aus App, Datenbank, Cloud-Stack und Terminal und einer Schaltfläche zum Anlegen eines Stacks
Je ein Stack, neben ihrer App und ihrer Datenbank im selben privaten Netzwerk.

Eine Konsole im Browser statt der AWS-Konsole

Ein laufender Stack hat auf der Seite eine Konsole mit drei Tabs: Objektspeicher (S3), NoSQL-Datenbank (DynamoDB) und Warteschlange (SQS). Jeder listet alles seiner Art im Stack auf, Buckets, Tabellen oder Warteschlangen, mit „Löschen“ neben jedem Eintrag und einem Feld zum Hinzufügen; wählen Sie einen aus, und er öffnet sich darunter. Der Objektspeicher listet alles in einem gewählten Bucket mit dem ganzen Schlüssel auf, mit einem Download neben jedem Eintrag, nimmt einen Upload unter einem Schlüssel an, den die lernende Person eintippt, und legt Buckets an und löscht sie. Die NoSQL-Datenbank listet die Tabellen auf, durchsucht eine und bearbeitet einen einzelnen Eintrag. Die Warteschlange zeigt, wie viele Nachrichten in jeder liegen, und lässt Lernende eine Nachricht senden, ansehen, was wartet, eine löschen oder alle leeren.

Der Objektspeicher zeigt Schlüssel, keine Ordner. Einen Ordner kennt er nicht: Was wie einer aussieht, ist jeder Schlüssel, der gleich beginnt, und photos/2026/cat.png ist ein einziger Name mit Schrägstrichen. Genau das liefert auch ihr eigenes list_objects_v2 zurück, also zeigt die Seite es so. Auch bearbeitet oder löscht dort nichts eine Datei: Den Inhalt eines Buckets zu ändern ist die Aufgabe der App, die sie schreiben. Das Löschen eines Buckets nimmt allerdings alles darin mit, und die Konsole fragt zuvor nach und nennt, was verschwindet.

Eine Warteschlange anzusehen entnimmt ihr nichts. Die Nachrichten gehen sofort zurück, sodass Lernende ihre Warteschlange beobachten können, während ihr eigenes Programm daraus liest. Das machen Konsolen meist falsch, und deshalb sieht ein funktionierendes Programm dann kaputt aus.

Die Konsole zeigt nicht nur, sie legt auch an: einen Bucket, eine Tabelle mit dem Schlüssel, nach dem sie geordnet ist, und eine Warteschlange, jeweils in denselben drei Tabs angelegt und gelöscht. So können Lernende ihren Speicher zuerst von Hand einrichten und danach den Code dagegen schreiben, was die Reihenfolge der meisten Tutorials ist.

Ein Eintrag wird in der typisierten Form angezeigt, in der die Tabelle ihn wirklich speichert, denn das liest ihr eigener Code später zurück.

Dateien bis 1,0 MB werden über die Konsole hochgeladen und bis 2,0 MB kommen zurück; eine Liste zeigt die ersten 200 Objekte, eine Suche die ersten 100 Zeilen und eine Vorschau zehn Nachrichten. Ihr eigenes Programm kennt solche Grenzen nicht, und für alles Größere ist das Terminal da.

Die AWS CLI im Browser-Terminal

„Terminal öffnen“ in einem der drei Tabs gibt eine echte Shell neben der Sitzung, in der die AWS CLI bereits auf den Stack zeigt: `aws s3 ls`, `aws s3 cp`, `aws dynamodb scan` und `aws sqs send-message` funktionieren ohne `configure` und ohne `--endpoint-url`. Was die Konsole nicht anbietet, lässt sich dort tun, und eine große Datei gehört dorthin und nicht in den Browser.

Die Konsole nimmt Dateien bis 1,0 MB an und liefert bis 2,0 MB zurück. Ihr eigenes Programm hat keine solche Grenze: Es schreibt direkt in den Stack.

Was aufbewahrt wird und wie lange

Der ganze Stack wird beim Beenden als ein Archiv gespeichert und beim Start zurückgespielt, bis zu 25 MB für alles darin zusammen. Die Seite zeigt, wie voll er ist, und warnt vor der Grenze statt danach, denn nichts kann einen Objektspeicher schreibgeschützt machen, und das Ehrliche ist, es kommen zu sehen.

Er läuft mit demselben Kontingent wie eine Datenbank, mit derselben Zusicherung, derselben Obergrenze und derselben Leerlaufregel, sodass ein laufen gelassener Stack nicht unbemerkt den Tag von jemandem verbraucht.

Als Aufgabe stellen

Setzen Sie im Bereitstellungsformular das Häkchen beim Stack, und er startet mit der App, die Variablen sind bereits gesetzt. So kann eine Aufgabe lauten „Eine Flask-App, die Uploads in einem S3-Bucket speichert“, „Ein Worker, der eine SQS-Warteschlange liest“ oder „Eine Seite auf Basis einer DynamoDB-Tabelle“. Das sind gewöhnliche Aufgaben aus der Praxis, die sich ohne ein AWS-Konto pro lernender Person zuvor gar nicht stellen ließen.

Wer eine bereitgestellte Abgabe bewertet, erhält den Stack der lernenden Person so, wie sie ihn hinterlassen hat, und er wird nie zurückgespeichert, sodass das Ausprobieren der App nichts ändert, wonach die Lernenden bewertet werden.

Häufige Fragen

Können Lernende AWS ohne AWS-Konto lernen?
Ja. Jede lernende Person erhält einen Objektspeicher, eine NoSQL-Tabelle und eine Nachrichtenwarteschlange, die die APIs von Amazon S3, DynamoDB und SQS umsetzen. Sie schreibt also denselben Code wie gegen AWS, mit boto3 oder den AWS-SDKs und der CLI. Es gibt kein AWS-Konto, keine Kreditkarte und keine Rechnung. Der Stack läuft auf MiniStack, einem Open-Source-Emulator, auf derselben Maschine wie ihre App und ist kein AWS-Konto: Nichts davon liegt im öffentlichen Internet.
Welches SDK sollen Lernende installieren?
Das übliche AWS-SDK ihrer Sprache. boto3 für Python, das AWS-SDK für JavaScript, Java oder Go, oder die AWS CLI v2 im Browser-Terminal. Alle lesen AWS_ENDPOINT_URL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY und AWS_REGION aus der Umgebung, und der Stack setzt alle vier, sodass der Code eines Tutorials unverändert läuft und nichts zu konfigurieren ist.
Welche AWS-Dienste werden unterstützt?
Die drei, die ein erster Kurs braucht: Amazon S3 für Objekte, DynamoDB für eine NoSQL-Tabelle und Amazon SQS für eine Warteschlange. Es sind auch die drei, die diese Plattform selbst nutzt. Was das MiniStack-Image sonst noch emuliert, kommt mit, aber diese drei zeigt die Konsole, und diese drei unterstützen wir.
Ist das mit Amazon Web Services verbunden?
Nein. MitsuruTech ist nicht mit Amazon Web Services verbunden und wird von Amazon Web Services weder empfohlen noch gesponsert. AWS, Amazon S3, DynamoDB und Amazon SQS sind Marken von Amazon.com, Inc. oder seinen verbundenen Unternehmen und werden hier nur genannt, um zu sagen, welche APIs der Stack umsetzt, so wie es jedes Tutorial oder jeder Emulator tut.
Können zwei Lernende die Stacks der jeweils anderen sehen?
Nein. Ein Stack liegt im eigenen privaten Netzwerk der jeweiligen lernenden Person, ohne Weg hinein oder hinaus, sodass ihn nichts außerhalb der Sitzung erreichen kann, auch nicht der Rest dieser Website. Die Konsole funktioniert, indem sie die eigene Sitzung bittet, den Aufruf auszuführen.
Bekommen auch Gäste einen?
Ja. Gäste können gleichzeitig einen Cloud-Stack und eine Datenbank haben: Der Stack wird nicht auf das Datenbankkontingent angerechnet, und „Dieses Beispiel bereitstellen“ auf der Seite „Bereitstellungen“ legt beide an. Das Konto eines Gasts wird 24 Stunden nach der letzten Nutzung aufbewahrt, und jede seiner Bereitstellungen läuft höchstens 30 Minuten, was auch den Stack begrenzt. „Dieses Konto behalten“ macht daraus ein echtes.