GSP023
Übersicht
In diesem Lab lernen Sie, wie Sie eine Python Flask-Webanwendung für die flexible App Engine-Umgebung bereitstellen. Mit der Anwendung, in der die Vision API, Storage API und Datastore API von Google Cloud verwendet werden, können Sie ein Foto mit einem Gesicht hochladen und dann analysieren, wie hoch die Wahrscheinlichkeit ist, dass die Person glücklich ist.
App Engine
Google App Engine-Anwendungen lassen sich einfach erstellen, verwalten und skalieren, wenn sich Traffic und Datenspeicheranforderungen ändern. Mit der App Engine müssen keine Server verwaltet werden. Sie laden einfach Ihre Anwendung hoch und es kann losgehen.
App Engine-Anwendungen werden basierend auf dem eingehenden Traffic automatisch skaliert. Load-Balancing, Mikrodienste, Autorisierung, SQL- und NoSQL-Datenbanken, Trafficaufteilung, Logging, Suche, Versionsverwaltung, Rollouts und Rollbacks sowie Sicherheitsscans werden nativ unterstützt und können individuell angepasst werden.
Die flexible Umgebung von App Engine unterstützt verschiedene Programmiersprachen, darunter Java, Python, PHP, NodeJS, Ruby und Go. Die Standardumgebung von App Engine ist eine zusätzliche Option für bestimmte Sprachen, z. B. Python. Die beiden Umgebungen bieten Nutzern maximale Flexibilität beim Ausführen von Anwendungen, wobei jede ihre spezifischen Vorteile hat. Unter App Engine-Umgebung auswählen erhalten Sie weitere Informationen.
Lerninhalte
- Einfache Webanwendung in der flexiblen App Engine-Umgebung bereitstellen
- Google Cloud-Clientbibliotheken für die Vision, Storage und Datastore APIs verwenden
- Cloud Shell verwenden
Voraussetzungen
- Python-Vorkenntnisse
- Erfahrung mit standardmäßigen Linux-Texteditoren wie vim, emacs oder nano
- Zugriff auf ein Bild mit einem Gesicht
Einrichtung und Anforderungen
Vor dem Klick auf „Start Lab“ (Lab starten)
Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Für dieses Lab benötigen Sie Folgendes:
- Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
- Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.
Lab starten und bei der Google Cloud Console anmelden
-
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können.
Auf der rechten Seite befindet sich der Bereich Lab-Einrichtung und ‑Zugriff:
- Button Google Cloud Console öffnen
- Die temporären Anmeldedaten (Nutzername und Passwort), die Sie für dieses Lab verwenden müssen
- Gegebenenfalls weitere Informationen für dieses Lab
Der Lab-Timer befindet sich oben auf der Seite und zeigt die verbleibende Zeit an.
-
Klicken Sie auf Google Cloud Console öffnen. Wenn Sie Chrome verwenden, können Sie auch rechtsklicken und Link in Inkognitofenster öffnen auswählen.
Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.
Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.
Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
-
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
{{{user_0.username | "Username"}}}
Sie finden den Nutzernamen auch im Bereich Lab-Einrichtung und ‑Zugriff.
-
Klicken Sie auf Weiter.
-
Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.
{{{user_0.password | "Password"}}}
Sie finden das Passwort auch im Bereich Lab-Einrichtung und ‑Zugriff.
-
Klicken Sie auf Weiter.
Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos.
Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
-
Klicken Sie sich durch die nachfolgenden Seiten:
- Akzeptieren Sie die Nutzungsbedingungen.
- Fügen Sie keine Wiederherstellungsoptionen oder 2-Faktor-Authentifizierung hinzu, da dies nur ein temporäres Konto ist.
- Melden Sie sich nicht für kostenlose Testversionen an.
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein.
Cloud Shell aktivieren
Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.
-
Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren
.
-
Klicken Sie sich durch die folgenden Fenster:
- Fahren Sie mit dem Informationsfenster zu Cloud Shell fort.
- Autorisieren Sie Cloud Shell, Ihre Anmeldedaten für Google Cloud API-Aufrufe zu verwenden.
Wenn eine Verbindung besteht, sind Sie bereits authentifiziert und das Projekt ist auf Project_ID, eingestellt. Die Ausgabe enthält eine Zeile, in der die Project_ID für diese Sitzung angegeben ist:
Ihr Cloud-Projekt in dieser Sitzung ist festgelegt als {{{project_0.project_id | "PROJECT_ID"}}}
gcloud ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.
- (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
- Klicken Sie auf Autorisieren.
Ausgabe:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Um das aktive Konto festzulegen, führen Sie diesen Befehl aus:
$ gcloud config set account `ACCOUNT`
- (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
gcloud config list project
Ausgabe:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Hinweis: Die vollständige Dokumentation für gcloud finden Sie in Google Cloud in der Übersicht zur gcloud CLI.
Aufgabe 1: Beispielcode abrufen
- Führen Sie in Cloud Shell den folgenden Befehl aus, um den Beispielcode zu kopieren:
gcloud storage cp -r gs://spls/gsp023/flex_and_vision/ .
- Wechseln Sie zum Verzeichnis
flex_and_vision:
cd flex_and_vision
Aufgabe 2: API-Anfragen authentifizieren
Die Datastore, Storage und Vision APIs wurden für dieses Lab automatisch aktiviert. Für API-Anfragen sind Dienstkonto-Anmeldedaten erforderlich. Mit gcloud können Sie in Cloud Shell Anmeldedaten aus Ihrem Projekt generieren. Die Projekt-ID befindet sich auf dem Tab, auf dem Sie das Lab gestartet haben.
- Legen Sie eine Umgebungsvariable für Ihre Projekt-ID fest:
export PROJECT_ID=$(gcloud config get-value project)
- Erstellen Sie ein Dienstkonto, um die Google Cloud APIs bei lokalen Tests zu nutzen:
gcloud iam service-accounts create qwiklab \
--display-name "My Qwiklab Service Account"
- Weisen Sie dem neu erstellten Dienstkonto die entsprechenden Berechtigungen zu:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member serviceAccount:qwiklab@${PROJECT_ID}.iam.gserviceaccount.com \
--role roles/owner
- Wenn Sie das Dienstkonto eingerichtet haben, erstellen Sie einen Dienstkontoschlüssel:
gcloud iam service-accounts keys create ~/key.json \
--iam-account qwiklab@${PROJECT_ID}.iam.gserviceaccount.com
Mit diesem Befehl wird ein Dienstkontoschlüssel generiert, der in einer JSON-Datei mit dem Namen key.json in Ihrem Basisverzeichnis gespeichert wird.
- Legen Sie eine Umgebungsvariable für den Dienstkontoschlüssel fest und verwenden Sie dazu dessen absoluten Pfad:
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
Weitere Informationen zur Authentifizierung der Vision API finden Sie in der folgenden Ressource: Kurzanleitung: Vision API einrichten.
Klicken Sie unten auf Fortschritt prüfen.
API-Anfragen authentifizieren
Aufgabe 3: Anwendung lokal testen
Abhängigkeiten installieren
- Mit
pip installieren Sie über die Datei requirements.txt Abhängigkeiten für Ihr Projekt.
pip install -r requirements.txt
Die Datei requirements.txt enthält eine Liste mit Paketabhängigkeiten, die Sie für Ihr Projekt benötigen. Mit dem Befehl oben werden alle aufgeführten Paketabhängigkeiten in virtualenv heruntergeladen.
App Engine-Anwendung erstellen
- Erstellen Sie zuerst eine Umgebungsvariable mit der Ihnen zugewiesenen Region:
AE_REGION={{{project_0.startup_script.app_region|REGION}}}
- Als Nächstes erstellen Sie eine App Engine-Instanz:
gcloud app create --region=$AE_REGION
Storage-Bucket erstellen
- Legen Sie die Umgebungsvariable CLOUD_STORAGE_BUCKET auf Ihre PROJECT_ID fest. Grundsätzlich wird empfohlen, den Bucket nach der PROJECT_ID zu benennen.
export CLOUD_STORAGE_BUCKET=${PROJECT_ID}
- Führen Sie folgenden Befehl aus, um einen Bucket zu erstellen, der nach der PROJECT_ID benannt ist:
gcloud storage buckets create gs://${PROJECT_ID}
Klicken Sie unten auf Fortschritt prüfen.
Eine App Engine-Anwendung und einen entsprechenden Storage-Bucket erstellen
Anwendung ausführen
- Führen Sie folgenden Befehl aus, um Ihre Anwendung zu starten:
python main.py
- Klicken Sie anschließend in der Cloud Shell-Symbolleiste auf „Webvorschau“
und wählen Sie Vorschau auf Port 8080 aus.
Daraufhin wird ein neuer Browsertab geöffnet, in dem eine Verbindung zum soeben gestarteten Server hergestellt wird. Auf dem Bildschirm sollte Folgendes zu sehen sein:

Jetzt wird es spannend:
- Klicken Sie auf Datei auswählen, wählen Sie ein auf Ihrem Computer gespeichertes Bild aus, auf dem ein Gesicht zu sehen ist, und klicken Sie auf Senden.
Nach dem Hochladen des Fotos sollten Sie in etwa Folgendes sehen:

Hinweis: Drücken Sie in der Cloud Shell-Befehlszeile STRG+C, nachdem Sie Ihre Anwendung lokal getestet haben, um den lokalen Webserver herunterzufahren.
Klicken Sie unten auf Fortschritt prüfen.
Anwendung ausführen
Aufgabe 4: Code erforschen
Format des Beispielcodes
Der Beispielcode weist folgendes Layout auf:
templates/
homepage.html /* HTML template that uses Jinja2 */
app.yaml /* App Engine application configuration file */
main.py /* Python Flask web application */
requirements.txt /* List of dependencies for the project */
main.py
Diese Python-Datei ist eine Flask-Webanwendung. Nutzer können damit Fotos von Gesichtern hochladen, die in Cloud Storage gespeichert und mit der Gesichtserkennungsfunktion der Cloud Vision API analysiert werden. In Datastore werden wichtige Informationen zu jedem Foto gespeichert und jedes Mal abgerufen, wenn ein Nutzer die Website besucht. Datastore ist die NoSQL-Datenbank der Google Cloud Platform.
Die Anwendung nutzt die Google Cloud Platform-Clientbibliotheken für die Vision, Storage und Datastore APIs, sodass Sie ganz einfach mit Ihrer bevorzugten Programmiersprache auf die Cloud APIs zugreifen können.
Werfen wir einen Blick auf einige wesentliche Teile des Codes.
Über den ganz oben angezeigten Abschnitt „imports“ werden die verschiedenen Pakete importiert, die wir für unseren Code benötigen, z. B. die Google Cloud-Clientbibliotheken für die Datastore, Storage und Vision APIs:
from google.cloud import datastore
from google.cloud import storage
from google.cloud import vision
Code, der festlegt, was passiert, wenn jemand die Stamm-URL der Website besucht
Der folgende Code zeigt, was passiert, wenn jemand die Stamm-URL der Website besucht: Es wird ein Datastore-Clientobjekt erstellt, mit dem auf die Datastore-Clientbibliothek zugegriffen werden kann. Eine Abfrage auf Entitäten mit dem „kind“ Faces wird in Datastore ausgeführt. Schließlich wird die HTML-Vorlage gerendert. Dabei werden die image_entities übergeben, die dazu aus Datastore als Variable extrahiert werden.
@app.route('/')
def homepage():
# Create a Cloud Datastore client.
datastore_client = datastore.Client()
# Use the Cloud Datastore client to fetch information from Datastore about
# each photo.
query = datastore_client.query(kind='Faces')
image_entities = list(query.fetch())
# Return a Jinja2 HTML template and pass in image_entities as a parameter.
return render_template('homepage.html', image_entities=image_entities)
Sehen wir uns jetzt an, wie Entitäten in Datastore gespeichert werden. Datastore ist die NoSQL-Datenbanklösung von Google Cloud. Die Daten werden dort in Objekten gespeichert, die auch als Entitäten bezeichnet werden. Jeder Entität ist ein eindeutiges key-Element zugewiesen, das mit einem kind- und einem key name-String erstellt werden kann. Ein kind-Element beschreibt, worum es sich bei der Entität handelt, z. B. Fotos, Personen oder Tiere.
Jede Entität kann mehrere von den Entwicklern definierte Eigenschaften haben, denen unterschiedliche Werttypen zugeordnet sind, wie Ganzzahlen, Gleitkommazahlen, Strings, Datumsangaben oder Binärdaten:
# Create a Cloud Datastore client.
datastore_client = datastore.Client()
# Fetch the current date / time.
current_datetime = datetime.now()
# The kind for the new entity.
kind = 'Faces'
# The name/ID for the new entity.
name = blob.name
# Create the Cloud Datastore key for the new entity.
key = datastore_client.key(kind, name)
# Construct the new entity using the key. Set dictionary values for entity
# keys blob_name, storage_public_url, timestamp, and joy.
entity = datastore.Entity(key) entity['blob_name'] = blob.name entity['image_public_url'] = blob.public_url entity['timestamp'] = current_datetime entity['joy'] = face_joy
# Save the new entity to Datastore.
datastore_client.put(entity)
Auf die Storage- und Vision-Clientbibliothek kann ähnlich wie auf die Datastore-Clientbibliothek programmgesteuert zugegriffen werden. Öffnen Sie einfach die Datei main.py in vim, emacs oder nano, um sich den ganzen Beispielcode anzusehen.
homepage.html
Das Flask-Webframework nutzt Jinja2 als Vorlagen-Engine. Dadurch können Variablen und Ausdrücke von main.py an homepage.html übergeben werden, die beim Rendern der Seite durch konkrete Werte ersetzt werden.
Weitere Informationen zu Jinja2 finden Sie in der Dokumentation für Vorlagendesigner.
Diese Jinja2-HTML-Vorlage enthält ein Formular, mit dem Nutzer Fotos an die Datenbank senden können. Außerdem führt sie alle bisher gesendeten Bilder mit Angaben zum Dateinamen, zum Datum und zur Uhrzeit des Uploads und zur Wahrscheinlichkeit auf, dass das von der Vision API erkannte Gesicht einen glücklichen Menschen darstellt.
<h1>Google Cloud Platform - Face Detection Sample</h1>
<p>This Python Flask application demonstrates App Engine Flexible, Google Cloud
Storage, Datastore, and the Cloud Vision API.</p>
<br>
<html>
<body>
<form action="upload_photo" method="POST" enctype="multipart/form-data">
Upload File: <input type="file" name="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
{% for image_entity in image_entities %}
<img src="{{image_entity['image_public_url']}}" width=200 height=200>
<p>{{image_entity['blob_name']}} was uploaded {{image_entity['timestamp']}}.</p>
<p>Joy Likelihood for Face: {{image_entity['joy']}}</p>
{% endfor %}
</body>
</html>
Aufgabe 5: Anwendung in der flexiblen App Engine-Umgebung bereitstellen
In der flexiblen App Engine-Umgebung wird für die Konfiguration zur Bereitstellung der Anwendung die Datei app.yaml verwendet. Wenn diese Datei nicht vorhanden ist, versucht App Engine, die Konfiguration selbst zu bestimmen. Es ist allerdings besser, diese Datei zur Verfügung zu stellen.
- Als Nächstes ändern Sie
app.yaml mit einem Editor Ihrer Wahl, z. B. vim, nano oder emacs. Wir verwenden hier den Editor nano:
nano app.yaml
- In
app.yaml ersetzen Sie <your-cloud-storage-bucket> durch den Namen Ihres Cloud Storage-Buckets. Wenn Sie ihn nicht mehr wissen, können Sie die Projekt-ID aus dem Bereich „Details zum Lab“ kopieren.
Im Codeabschnitt env_variables werden Umgebungsvariablen eingerichtet, die nach der Bereitstellung der Anwendung in main.py verwendet werden.
- Legen Sie als Nächstes fest, dass Ihre Anwendung manuelle Skalierung verwenden soll, indem Sie am Ende der Datei Folgendes hinzufügen:
manual_scaling:
instances: 1
- Achten Sie außerdem darauf, dass
python_version auf 3.12 gesetzt ist, damit die App Engine erfolgreich bereitgestellt werden kann.
Ihre Datei sollte nun in etwa so aussehen:
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app
runtime_config:
operating_system: "ubuntu22"
runtime_version: "3.12"
env_variables:
CLOUD_STORAGE_BUCKET: <your-cloud-storage-bucket>
manual_scaling:
instances: 1
Das ist die Basiskonfiguration für die Bereitstellung einer Python 3-Anwendung in der flexiblen App Engine-Umgebung. Weitere Informationen zum Konfigurieren von App Engine finden Sie unter Anwendung mit app.yaml konfigurieren
- Speichern und schließen Sie die Datei in
nano:
- Drücken Sie Strg + X.
- Geben Sie in die Befehlszeile „Y“ ein und drücken Sie die Eingabetaste.
- Aktualisieren Sie das Cloud Build-Timeout:
gcloud config set app/cloud_build_timeout 1000
- Stellen Sie die Anwendung mit
gcloud in App Engine bereit:
gcloud app deploy
Falls die Frage Möchten Sie fortfahren (J/N)?) eingeblendet wird, geben Sie „J“ ein und drücken Sie die Eingabetaste.
In Cloud Shell können Sie verfolgen, wie die Anwendung erstellt wird. Dies dauert bis zu 10 Minuten. Die flexible App Engine-Umgebung stellt im Hintergrund automatisch eine virtuelle Maschine mit Compute Engine bereit, installiert die Anwendung und startet sie.
- Nachdem die Anwendung bereitgestellt wurde, können Sie sie mit folgender URL in Ihrem Webbrowser öffnen:
https://<PROJECT_ID>.appspot.com
Hinweis: Wenn Sie die PROJECT_ID nicht mehr wissen, geben Sie in Cloud Shell gcloud config list project ein.
Klicken Sie unten auf Fortschritt prüfen.
Anwendung bereitstellen
Gute Arbeit.
Das wars! Sie haben das Lab erfolgreich abgeschlossen. In diesem Lab haben Sie gelernt, eine Python-Webanwendung in der flexiblen App Engine-Umgebung zu schreiben und bereitzustellen.
Weitere Informationen
Google Cloud-Schulungen und -Zertifizierungen
In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.
Anleitung zuletzt am 20. Mai 2026 aktualisiert
Lab zuletzt am 24. Februar 2026 getestet
© 2026 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.