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

Was die Cloud verkauft: Dienste und Regionen

Nach dieser Lektion: Ich kann sagen, was eine Region, ein Dienst und ein API-Aufruf sind.

Lektion, 50 Min.Keine Befehle

Ein Foto-Upload ist eine Web-Anfrage

Ein Fahrradladen in Leipzig lässt Kunden ein Foto von einer kaputten Klingel hochladen. Das Foto landet in einem S3-Bucket, einem Platz für Dateien in der Cloud. Dein Code meldet sich dafür an keinem Rechner an. Er schickt eine Anfrage über das Web und liest die Antwort.

In dieser Lektion lernst du, was ein Cloud-Dienst ist, wo er läuft und wer wofür sorgt.

Am Ende dieser Lektion

Notiz

Ich kann sagen, was eine Region, ein Dienst und ein API-Aufruf sind.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Dienstein fertiges Werkzeug, das du über das Web benutzt
API-Aufrufeine einzelne Anfrage an einen Dienst samt Antwort
Regionder Teil der Welt, in dem ein Dienst läufteu-central-1
Bucketein benannter Behälter für Dateien in S3
Geteilte VerantwortungAnbieter und Kunde sorgen jeweils für einen Teil des Systems

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Was dieses Modul nicht ist

Notiz

Du brauchst kein AWS-Konto und nichts wird veröffentlicht. Du tippst nie einen echten Schlüssel, ein Passwort oder eine Kontonummer ein. Es geht auch nicht um Kosten oder Rechnungen. Du liest Antworten, die wie echte gebaut sind, und schreibst Python dafür, ganz ohne Netz.

Ein Dienst ist eine API, die du aufrufst

Ein Cloud-Anbieter betreibt riesige Rechner und vermietet, was sie können. Jedes gemietete Werkzeug ist ein Dienst. S3 speichert Dateien. SQS hält Nachrichten in einer Warteschlange. DynamoDB speichert Items in Tabellen.

Einen Dienst benutzt du mit einem API-Aufruf: eine Anfrage, die den Aufruf nennt, zum Beispiel list_objects_v2, und die nötigen Angaben. Die Antwort kommt als Daten zurück.

Run: ein Aufruf und seine Antwort

Code: python
aufruf = {"dienst": "s3", "operation": "list_objects_v2", "Bucket": "werkstatt-fotos"}
antwort = {
    "Name": "werkstatt-fotos",
    "KeyCount": 2,
    "IsTruncated": False,
    "Contents": [
        {"Key": "defekt/klingel.png", "Size": 2048, "StorageClass": "STANDARD"},
        {"Key": "defekt/bremse.png", "Size": 3072, "StorageClass": "STANDARD"},
    ],
}
print("Dienst:", aufruf["dienst"])
print("Aufruf:", aufruf["operation"])
print("Schlüssel:", antwort["KeyCount"])
for objekt in antwort["Contents"]:
    print(objekt["Key"], objekt["Size"])
# Ändere die Size der Bremse auf 5000 und drücke noch einmal Run.

Ein gescheiterter Aufruf ist auch eine Antwort

Nicht jeder Aufruf klappt. Ein Schlüssel kann fehlen oder ein Bucket gar nicht existieren. Dann antwortet der Dienst mit einem Fehler: einem Code, der das Problem nennt, und einem HTTP-Status.

Dein Code muss zuerst nach dem Fehler suchen. Eine Prüfung wie "Contents" in antwort taugt nur, wenn der Aufruf geklappt hat.

Run: gute Antwort oder Fehler?

Code: python
gut = {"KeyCount": 1, "Contents": [{"Key": "lies-mich.txt", "Size": 5}]}
schlecht = {"error": {"Code": "NoSuchBucket", "HTTPStatusCode": 404}}
for antwort in [gut, schlecht]:
    if "error" in antwort:
        print("gescheitert:", antwort["error"]["Code"], antwort["error"]["HTTPStatusCode"])
    else:
        print("geklappt, Schlüssel:", antwort["KeyCount"])
# Ändere "NoSuchBucket" in "NoSuchKey" und drücke noch einmal Run.

Ein häufiger Fehler

Warnung

Viele denken, eine leere Antwort sei ein Fehler. Das stimmt nicht. Fragst du DynamoDB nach einem Item, das es nicht gibt, kommt {} mit gutem Status. Such nach einem error-Eintrag mit einem Code. Eine leere Antwort heißt nur: nichts gefunden.

Eine Region ist der Ort eines Dienstes

Ein Anbieter hat Rechenzentren an vielen Orten. Eine Region ist ein Gebiet davon, zum Beispiel eu-central-1, das ist Frankfurt. Die Region wählst du, wenn du einen Bucket anlegst. Die Dateien bleiben dort.

Nimm eine Region nahe bei deinen Nutzern, damit Antworten schnell ankommen. In den Antworten steht auch, in welcher Region ein Bucket liegt.

Run: die Region jedes Buckets lesen

Code: python
antwort = {
    "Buckets": [
        {"Name": "werkstatt-fotos", "BucketRegion": "eu-central-1", "BucketArn": "arn:aws:s3:::werkstatt-fotos"},
        {"Name": "werkstatt-archiv", "BucketRegion": "us-east-1", "BucketArn": "arn:aws:s3:::werkstatt-archiv"},
    ],
    "Owner": {"DisplayName": "werkstatt", "ID": "besitzer-id"},
}
for bucket in antwort["Buckets"]:
    print(bucket["Name"], "liegt in", bucket["BucketRegion"])
# Gib nur die Buckets in eu-central-1 aus: setze ein if in die Schleife.

Anbieter und du teilen sich die Arbeit

Der Anbieter sorgt für Gebäude, Maschinen und die Software des Dienstes. Du sorgst für das, was du hineinlegst, und dafür, wer es benutzen darf.

Das heißt geteilte Verantwortung. Wenn du jedem erlaubst, einen Bucket zu lesen, war das deine Entscheidung. Fällt in einem Rechenzentrum der Strom aus, ist das Sache des Anbieters.

Wer sorgt wofür

SacheZuständig
Das Gebäude und der StromDer Anbieter
Die S3-Software selbstDer Anbieter
Welche Dateien du hochlädstDu
Wer einen Bucket lesen darfDu
Der Code, der den Dienst aufruftDu

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.