1. Übersicht

Google App Engine-Anwendungen lassen sich einfach erstellen, verwalten und skalieren, wenn sich Traffic und Datenspeicheranforderungen ändern. Mit App Engine müssen keine Server verwaltet werden. Sie laden einfach Ihre Anwendung hoch und es kann losgehen.
In diesem Codelab erfahren Sie, wie Sie eine einfache Python-Webanwendung bereitstellen, die mit dem Web-Framework Flask geschrieben wurde. Auch wenn in diesem Beispiel Flask verwendet wird, können Sie andere Web-Frameworks wie Django, Pyramid, Bottle und web.py einsetzen.
Diese Anleitung basiert auf https://cloud.google.com/appengine/docs/standard/python3/quickstart.
Lerninhalte
- So erstellen Sie einen einfachen Python-Server in Google App Engine.
- Code aktualisieren, ohne den Server herunterzufahren
Voraussetzungen
- Python-Vorkenntnisse
- Erfahrung mit standardmäßigen Linux-Texteditoren wie vim, emacs oder nano
Umfrage
Wie werden Sie diese Anleitung verwenden?
Wie würden Sie Ihre Erfahrung mit Python bewerten?
Wie würden Sie Ihre Erfahrungen mit Google Cloud-Diensten bewerten?
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als
PROJECT_IDangegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testzeitraum mit einem Guthaben von 300$ teilnehmen.
Cloud Shell starten
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Cloud Shell aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren
.

Wenn Sie die Cloud Shell zum ersten Mal starten, wird ein Fenster mit einer Beschreibung eingeblendet. Klicken Sie in diesem Fall einfach auf Weiter.

Das Herstellen der Verbindung mit der Cloud Shell sollte nur wenige Augenblicke dauern.

Auf dieser virtuellen Maschine sind alle erforderlichen Entwicklungstools installiert. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Die meisten, wenn nicht sogar alle Aufgaben in diesem Codelab können mit einem Browser erledigt werden.
Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie authentifiziert sind und für das Projekt Ihre Projekt-ID eingestellt ist.
- Führen Sie in der Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list
Befehlsausgabe
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass der gcloud-Befehl Ihr Projekt kennt:
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:
gcloud config set project <PROJECT_ID>
Befehlsausgabe
Updated property [core/project].
3. Webanwendung schreiben
Nachdem Cloud Shell gestartet wurde, können Sie das Cloud SDK-Tool gcloud oder andere Tools, die in der virtuellen Maschine zur Verfügung stehen, über die Befehlszeile aufrufen. Sie können das Verzeichnis $HOME im nichtflüchtigen Festplattenspeicher verwenden, um Dateien projektübergreifend und nach Cloud Shell-Sitzungen zu speichern. Ihr $HOME-Verzeichnis ist privat und kann nicht von anderen Nutzern aufgerufen werden.
Erstellen Sie zuerst einen neuen Ordner im Verzeichnis $HOME für die Anwendung:
mkdir ~/helloworld cd ~/helloworld
Erstellen Sie eine Datei mit dem Namen main.py:
touch main.py
Bearbeiten Sie die Datei mit dem Befehlszeileneditor Ihrer Wahl (nano, vim oder emacs) oder indem Sie auf die Schaltfläche „Cloud Shell-Editor“ klicken:

Wenn Sie die Datei direkt mit dem Cloud Shell-Editor bearbeiten möchten, verwenden Sie diesen Befehl:
cloudshell edit main.py
main.py
import flask
# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
return "Hello World!\n"
if __name__ == "__main__":
# Used when running locally only. When deploying to Google App
# Engine, a webserver process such as Gunicorn will serve the app. This
# can be configured by adding an `entrypoint` to app.yaml.
app.run(host="localhost", port=8080, debug=True)
4. Abhängigkeiten definieren
Wenn Sie die Abhängigkeiten Ihrer Web-App angeben möchten, kehren Sie zum Terminal zurück und erstellen Sie im Stammverzeichnis Ihres Projekts eine requirements.txt-Datei mit der genauen Version von Flask, die verwendet werden soll:
touch requirements.txt
Verwenden Sie den folgenden Befehl, um die Datei mit dem Cloud Shell-Editor zu bearbeiten:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/Flask
Flask==3.0.2
5. Bereitstellung konfigurieren
Zum Bereitstellen Ihrer Webanwendung in App Engine benötigen Sie eine app.yaml-Datei. In dieser Konfigurationsdatei werden die Einstellungen Ihrer Webanwendung für App Engine festgelegt.
Erstellen und bearbeiten Sie die Datei app.yaml im Stammverzeichnis Ihres Projekts über das Terminal:
touch app.yaml
Verwenden Sie den folgenden Befehl, um die Datei mit dem Cloud Shell-Editor zu bearbeiten:
cloudshell edit app.yaml
app.yaml
runtime: python312
6. Webanwendung bereitstellen
Prüfen Sie im Terminal den Inhalt Ihres Verzeichnisses:
ls
Sie sollten die folgenden drei Dateien haben:
app.yaml main.py requirements.txt
Stellen Sie Ihre Web-App mit dem folgenden Befehl bereit:
gcloud app deploy
Beim ersten Mal müssen Sie eine Bereitstellungsregion auswählen:
Please choose the region where you want your App Engine application located: [1] asia-east2 ... [7] australia-southeast1 [8] europe-west [9] europe-west2 ... [12] northamerica-northeast1 [13] southamerica-east1 ... [19] us-west4 ... Please enter your numeric choice:
Bestätigen Sie, dass Sie das Deployment starten möchten:
Creating App Engine application in project [PROJECT_ID] and region [REGION]....done. Services to deploy: descriptor: [~/helloworld/app.yaml] source: [~/helloworld] target project: [PROJECT_ID] target service: [default] target version: [YYYYMMDDtHHMMSS] target url: [https://PROJECT_ID.REGION_ID.r.appspot.com] Do you want to continue (Y/n)?
Ihre App wird bereitgestellt:
Beginning deployment of service [default]... Created .gcloudignore file. See `gcloud topic gcloudignore` for details. Uploading 3 files to Google Cloud Storage 100% File upload done. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]
Ihre Webanwendung kann jetzt auf HTTP-Anfragen auf https://PROJECT_ID.REGION_ID.r.appspot.com reagieren.
7. Webanwendung testen
Ihre Webanwendung kann jetzt auf HTTP-Anfragen auf https://PROJECT_ID.REGION_ID.r.appspot.com reagieren.
Rufen Sie zuerst den Hostnamen Ihrer Web-App mit dem Befehl gcloud app describe ab:
APPENGINE_HOSTNAME=$(gcloud app describe --format "value(defaultHostname)")
Testen Sie Ihre Web-App mit dieser einfachen HTTP-GET-Anfrage:
curl https://$APPENGINE_HOSTNAME
Sie sollten die folgende Antwort erhalten:
Hello World!
Zusammenfassung
In den vorherigen Schritten haben Sie eine einfache Python-Webanwendung eingerichtet und sie in App Engine ausgeführt und bereitgestellt.
8. Webanwendung aktualisieren
Ändern Sie Ihre Web-App, indem Sie den Funktionskörper hello() in der Datei main.py ändern.
Verwenden Sie den folgenden Befehl, um die Datei mit dem Cloud Shell-Editor zu bearbeiten:
cloudshell edit main.py
main.py
import flask
# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
# return "Hello World!\n" # ← Replace this line
who = flask.request.args.get("who", "World")
return f"Hello {who}!\n"
if __name__ == "__main__":
# Used when running locally only. When deploying to Google App
# Engine, a webserver process such as Gunicorn will serve the app. This
# can be configured by adding an `entrypoint` to app.yaml.
app.run(host="localhost", port=8080, debug=True)
Stellen Sie die Web-App über das Terminal noch einmal bereit, um sie zu aktualisieren:
gcloud app deploy --quiet
Die neue Version Ihrer App wird bereitgestellt:
Beginning deployment of service [default]... Uploading 1 file to Google Cloud Storage ... Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]
Testen Sie die neue Version Ihrer Webanwendung genau wie zuvor:
curl https://$APPENGINE_HOSTNAME
Sie sollten dieselbe Antwort erhalten:
Hello World!
Testen Sie ihn mit dem optionalen Parameter:
curl https://$APPENGINE_HOSTNAME?who=Universe
Sie sollten die folgende Antwort erhalten:
Hello Universe!
Zusammenfassung
In diesem Schritt haben Sie Ihre Web-App aktualisiert und noch einmal bereitgestellt, ohne dass es zu einer Dienstunterbrechung kam.
9. Glückwunsch!
Sie haben Ihre erste App Engine-Webanwendung in Python geschrieben.
Weitere Informationen
- Dokumentation zu App Engine: https://cloud.google.com/appengine
- In dieser Anleitung erfahren Sie, wie Sie eine vollwertige Python-App in App Engine schreiben: https://cloud.google.com/appengine/docs/standard/python3/building-app
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.