Erste Schritte mit App Engine (Python 3)

1. Übersicht

befa7a877ccdd35d.png

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. In diesem Beispiel wird zwar Flask verwendet, Sie können aber auch andere Web-Frameworks verwenden, einschließlich Django, Pyramid, Bottle und web.py.

Dieses Tutorial basiert auf https://cloud.google.com/appengine/docs/standard/python3/quickstart

Lerninhalte

  • Anleitung zum Erstellen eines einfachen Python-Servers in Google App Engine.
  • Code aktualisieren, ohne den Server herunterzufahren

Voraussetzungen

  • Vertrautheit bei der Verwendung von Python
  • Erfahrung mit standardmäßigen Linux-Texteditoren wie Vim, Emacs oder Nano

Umfrage

Wie möchten Sie diese Anleitung nutzen?

<ph type="x-smartling-placeholder"></ph> Nur bis zum Ende lesen Lies sie dir durch und absolviere die Übungen

Wie würden Sie Ihre Erfahrung mit Python bewerten?

<ph type="x-smartling-placeholder"></ph> Neuling Mittel Kompetent

Wie würden Sie Ihre Erfahrung mit Google Cloud-Diensten bewerten?

<ph type="x-smartling-placeholder"></ph> Neuling Mittel Kompetent

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können sie jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf deine Projekt-ID verweisen, die üblicherweise als PROJECT_ID bezeichnet wird. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID generieren. Alternativ können Sie einen eigenen verwenden und nachsehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts erhalten.
  • Zur Information gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab ist kostengünstig. Sie können die von Ihnen erstellten Ressourcen oder das Projekt löschen, um Ressourcen herunterzufahren, um zu vermeiden, dass über diese Anleitung hinaus Kosten anfallen. Neue Google Cloud-Nutzer haben Anspruch auf das kostenlose Testprogramm mit 300$Guthaben.

Cloud Shell starten

Sie können Google Cloud zwar von Ihrem Laptop aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Cloud Shell aktivieren

  1. Klicken Sie in der Cloud Console auf Cloud Shell aktivieren 853e55310c205094.png.

5c1dabeca90e44e5.png

Wenn Sie Cloud Shell zum ersten Mal starten, wird ein Zwischenbildschirm mit einer Beschreibung der Funktion angezeigt. Wenn ein Zwischenbildschirm angezeigt wird, klicken Sie auf Weiter.

9c92662c6a846a5c.png

Die Bereitstellung und Verbindung mit Cloud Shell dauert nur einen Moment.

9f0e51b578fecce5.png

Diese virtuelle Maschine verfügt über alle erforderlichen Entwicklertools. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt. Dadurch werden die Netzwerkleistung und die Authentifizierung erheblich verbessert. Viele, wenn nicht sogar alle Arbeiten in diesem Codelab können mit einem Browser erledigt werden.

Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie authentifiziert sind und das Projekt auf Ihre Projekt-ID eingestellt ist.

  1. Führen Sie in 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`
  1. Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob 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

Nach dem Start von Cloud Shell können Sie mit der Befehlszeile den Cloud SDK-Befehl gcloud oder andere Tools aufrufen, die auf der VM-Instanz verfügbar sind. Sie können das Verzeichnis $HOME im nichtflüchtigen Speicher verwenden, um Dateien projektübergreifend und zwischen Cloud Shell-Sitzungen zu speichern. Ihr $HOME-Verzeichnis ist privat und kann nicht von anderen Nutzern aufgerufen werden.

Erstellen Sie zuerst einen neuen Ordner in Ihrem $HOME-Verzeichnis 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 Ihrem bevorzugten Befehlszeileneditor (Nano, Vim oder Emacs) oder klicken Sie auf die Schaltfläche „Cloud Shell-Editor“:

10af7b1a6240e9f4.gif

Verwenden Sie den folgenden Befehl, um die Datei direkt 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"


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

Um die Abhängigkeiten Ihrer Webanwendung anzugeben, kehren Sie zum Terminal zurück und erstellen im Stammverzeichnis Ihres Projekts eine requirements.txt-Datei mit der exakten 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 definiert.

Erstellen und bearbeiten Sie im Terminal die Datei app.yaml im Stammverzeichnis Ihres Projekts:

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 Webanwendung 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 den Start der Bereitstellung:

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 Anwendung 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 an https://PROJECT_ID.REGION_ID.r.appspot.com antworten.

7. Webanwendung testen

Ihre Webanwendung ist bereit, auf HTTP-Anfragen am https://PROJECT_ID.REGION_ID.r.appspot.com zu antworten.

Rufen Sie zuerst den Hostnamen Ihrer Webanwendung mit dem Befehl gcloud app describe ab:

APPENGINE_HOSTNAME=$(gcloud app describe --format "value(defaultHostname)")

Testen Sie Ihre Webanwendung 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 die Anwendung in App Engine ausgeführt und bereitgestellt.

8. Web-App aktualisieren

Passen Sie Ihre Webanwendung an, indem Sie den Funktionstext 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 sie im Terminal noch einmal bereit, um die Webanwendung zu aktualisieren:

gcloud app deploy --quiet

Die neue Version Ihrer Anwendung 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 es 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 Webanwendung ohne Dienstunterbrechung aktualisiert und noch einmal bereitgestellt.

9. Glückwunsch!

Sie haben gelernt, Ihre erste App Engine-Webanwendung in Python zu schreiben.

Weitere Informationen

Lizenz

Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.