Der Großteil der Funktionen der gebündelten Legacy-Dienste wird jetzt von den Cloud-Clientbibliotheken bereitgestellt. Weitere Informationen dazu finden Sie unter den folgenden empfohlenen Alternativen.
Wenn die Migration zu einer nicht gebündelten Lösung für Ihr Projekt nicht infrage kommt, können Sie weiterhin die gebündelten Legacy-Dienste in Ihren Python 3 Anwendungen als Fallback verwenden. Dieser Ansatz bietet Ihnen die Möglichkeit, später im Migrationszyklus zu ungebündelten Diensten zu wechseln.
Nachdem Sie die Migration von den Legacy-Bundle-Diensten abgeschlossen haben, können Sie App Engine weiterhin verwenden oder zu Cloud Run migrieren. Cloud Run wurde zur Verbesserung der Nutzererfahrung von App Engine entwickelt. Es beinhaltet viele der besten Features sowohl der Standardumgebung als auch der flexiblen Umgebung. Einen Vergleich der Funktionen und Informationen zur Migration finden Sie im Vergleichsleitfaden für App Engine und Cloud Run.
Google Cloud bietet eigenständige Produkte, die ähnliche Funktionen wie einige der gebündelten Dienste in der Python 2-Laufzeit bieten. Für gebündelte Dienste, die nicht als eigene Produkte in Google Cloudverfügbar sind, wie z. B. Bildverarbeitung, Suche und Messaging, enthält dieser Leitfaden Empfehlungen für Drittanbieter oder andere Problemumgehungen.
Auf dieser Seite wird der Migrationspfad für jeden gebündelten Dienst erläutert.
Google Cloud -Berechtigungen
Da Ihre migrierte App und die von ihr verwendeten Google Cloud Dienste nicht mehr in derselben Sandbox-Umgebung ausgeführt werden, benötigt Ihre App eine Autorisierung für den Zugriff auf die einzelnen Dienste. Beispiel: Wenn Sie mit Firestore im Datastore-Modus (Datastore) oder Cloud Tasks interagieren möchten, muss Ihre Anwendung die Anmeldedaten eines Kontos bereitstellen, das zum Zugriff auf diese Dienste berechtigt ist.
Anwendungen in der App Engine-Standardlaufzeit stellen standardmäßig die Anmeldedaten des App Engine-Standarddienstkontos bereit, das für den Zugriff auf Datenbanken im selben Projekt wie die Anwendung autorisiert ist.
Wenn eine der folgenden Bedingungen zutrifft, müssen Sie eine alternative Authentifizierungsmethode verwenden, die Anmeldedaten explizit bereitstellt:
Ihre App und die Memorystore-Datenbank befinden sich in verschiedenenGoogle Cloud -Projekten.
Sie haben die Rollen geändert, die dem App Engine-Standarddienstkonto zugewiesen sind.
Informationen zu alternativen Authentifizierungsmethoden finden Sie unter Authentifizierung für Server-zu-Server-Produktionsanwendungen einrichten.
Authentifizierung für die lokale Entwicklung
Wenn Sie Ihre Anwendung lokal entwickeln oder testen möchten, empfehlen wir die Verwendung eines Dienstkontos. Verwenden Sie aber nicht das App Engine-Standarddienstkonto, da es eine hohe Berechtigungsstufe für alle Aktivitäten in Ihrem Projekt hat. Erstellen und nutzen Sie stattdessen ein Dienstkonto mit der niedrigsten Berechtigungsstufe, die Sie für Ihre jeweilige Entwicklungs- und Testaufgabe benötigen.
Eine Anleitung zum Einrichten eines Dienstkontos und zum Verknüpfen des Dienstkontos mit Ihrer Anwendung finden Sie unter Dienstkonto-Anmeldedaten manuell abrufen und bereitstellen.
Clientbibliotheken installieren
Um Google Cloud -Dienste aus einer Python-Anwendung zu verwenden, ist es am einfachsten, wenn Sie die Python-Clientbibliothek des Dienstes installieren. Google Cloud -Dienste bieten auch JSON REST und andere Schnittstellen. Die Schritte zum Installieren der Clientbibliotheken in der App Engine-Laufzeit unterscheiden sich für Python 2- und Python 3-Anwendungen.
Bibliotheken für Python 2-Anwendungen installieren
So installieren Sie eine Bibliothek für Ihre Anwendung, wenn diese in der Python 2-Laufzeit ausgeführt wird:
Erstellen Sie ein Verzeichnis, in dem Sie die Bibliotheken von Drittanbietern speichern können, beispielsweise
lib/.Erstellen Sie im Ordner mit der Datei
app.yamleine Dateirequirements.txtund fügen Sie den Namen einer Clientbibliothek hinzu.Die folgende Datei kann beispielsweise zum Installieren von Bibliotheken für Pub/Sub und Cloud Tasks verwendet werden:
google-cloud-pubsub google-cloud-tasksZum Installieren von Bibliotheken in dem von Ihnen erstellten Ordner verwenden Sie
pip install. Beispiel:pip install -t lib -r requirements.txt
Geben Sie in der Datei
app.yamlIhrer Anwendung im Abschnittlibrariesdie erforderlichen Google RPC- undsetuptools-Bibliotheken sowie die optionale SSL-Bibliothek an:libraries: - name: grpcio version: 1.0.0 - name: setuptools version: 36.6.0 - name: ssl version: latestFür einige Clientbibliotheken ist die SSL-Bibliothek nicht erforderlich. Wenn Sie die SSL-Bibliothek für eine Clientbibliothek, die sie benötigt, nicht einbeziehen, wird im Logs Explorer ein SSL-Fehler angezeigt, wenn die Anwendung eine Anfrage erhält.
Erstellen Sie eine Datei
appengine_config.pyim selben Ordner wie die Dateiapp.yaml, falls Sie noch keine haben. Fügen Sie der Dateiappengine_config.pyFolgendes hinzu:# appengine_config.py import pkg_resources from google.appengine.ext import vendor # Set path to your libraries folder. path = 'lib' # Add libraries installed in the path folder. vendor.add(path) # Add libraries to pkg_resources working set to find the distribution. pkg_resources.working_set.add_entry(path)
Achten Sie darauf, dass das Modul
pkg_resourcesverwendet wird. Dieses Modul sorgt dafür, dass Ihre Anwendung die richtige Verteilung der Clientbibliotheken nutzt.Für die Datei
appengine_config.pyim obigen Beispiel wird davon ausgegangen, dass sich der Ordnerlibim aktuellen Arbeitsverzeichnis befindet. Wenn Sie nicht garantieren können, dass sichlibimmer im aktuellen Arbeitsverzeichnis befindet, geben Sie den vollständigen Pfad zum Ordnerliban. Beispiel:import os path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib')
App Engine lädt alle Bibliotheken im Verzeichnis, das Sie in der Datei appengine_config.py angegeben haben, in die Python 2-Laufzeit hoch.
Bibliotheken für Python 3-Anwendungen installieren
So installieren Sie eine Bibliothek für Ihre Anwendung, wenn diese in der Python 3-Laufzeit ausgeführt wird:
Fügen Sie den Bibliotheksnamen der Datei
requirements.txtIhrer Anwendung hinzu. Beispiel:google-cloud-ndb
App Engine lädt automatisch alle in der Datei requirements.txt aufgeführten Bibliotheken in die Python 3-Laufzeit hoch.
Migrationspfade für gebündelte App Engine-Dienste
Blobstore
Verwenden Sie zum Speichern und Abrufen von Daten Cloud Storage über die Cloud-Clientbibliotheken. Eine Einführung finden Sie unter Cloud Storage verwenden und im Leitfaden Von Blobstore zu Cloud Storage migrieren. Um diese Migration zu simulieren, fügen Sie einer Beispielanwendung die Blobstore-Nutzung hinzu und migrieren Sie zu Cloud Storage.
Datastore
Wenn Ihre Python 2-Anwendung NDB zur Interaktion mit Datastore verwendet, migrieren Sie zur Cloud NDB-Bibliothek. Cloud NDB ist hauptsächlich als Umstellungstool für die Migration von Python 2-Anwendungen gedacht. Wir empfehlen, dass Python 3-Anwendungen die Clientbibliothek im Datastore-Modus verwenden.
Weitere Informationen finden Sie unter Zu Cloud NDB migrieren. Informationen zum Simulieren dieser Migration mit einer Beispielanwendung finden Sie unter Von App Engine NDB zu Cloud NDB migrieren.
Bilder
Sie können Bilder aus Cloud Storage bereitstellen, entweder direkt oder mit einem Content Delivery Network (CDN) eines Drittanbieters.
Mit dem App Engine-Bilderdienst können Sie auch dynamische Anfragen an Ihre Anwendung vermeiden. Damit wird die Größe von Bildern mithilfe einer Bereitstellungs-URL geändert. Sie können stattdessen auch die Bilder mit der neuen Größe im Voraus generieren und dann zur Bereitstellung in Cloud Storage hochladen. Alternativ haben Sie die Möglichkeit, die Bildgröße mit einem entsprechenden externen CDN-Dienst (Content Delivery Network) zu ändern.
Logging
Wir empfehlen Ihnen, Ihre Anwendung auf die Verwendung von Cloud Logging zu aktualisieren. Diese unterstützt Funktionen wie das Aufrufen von Logs im Logs Explorer, das Herunterladen von Logs, das Filtern von Nachrichten nach Schweregrad und die Korrelation von Anwendungsnachrichten mit bestimmten Anfragen. Wenn Sie die Einfachheit der Datenerfassung der Datengenauigkeit vorziehen, können Sie strukturierte Logs auch in stdout oder stderr schreiben.
Weitere Informationen finden Sie unter Logs schreiben und ansehen und Zu Cloud Logging migrieren.
Memcache
Verwenden Sie Memorystore for Redis zum Speichern von Anwendungsdaten im Cache.
Weitere Informationen finden Sie unter Memcache zu Memorystore migrieren. Um diese Migration zu simulieren, fügen Sie einer Beispielanwendung die Memcache-Nutzung hinzu und migrieren Sie zu Memorystore for Redis.
Wenn Ihre Anwendung Memcache nur verwendet, um die Latenz für NDB- (oder Cloud NDB-)Anfragen zu verringern, verwenden Sie anstelle von Memcache oder Memorystore for Redis die integrierte Unterstützung von Cloud NDB für Redis.
Module
Zum Abrufen von Informationen und zum Ändern der ausgeführten Dienste Ihrer Anwendung verwenden Sie eine Kombination aus Umgebungsvariablen und der App Engine Admin API:
| Dienstinformation | Zugriff |
|---|---|
| Aktuelle Anwendungs-ID | Umgebungsvariable GAE_APPLICATION |
| Aktuelle Projekt-ID | Umgebungsvariable GOOGLE_CLOUD_PROJECT |
| Aktueller Dienstname | Umgebungsvariable GAE_SERVICE |
| Aktuelle Dienstversion | Umgebungsvariable GAE_VERSION |
| Aktuelle Instanz-ID | Umgebungsvariable GAE_INSTANCE |
| Standardhostname | Admin API-Methode apps.get |
| Liste der Dienste | Admin API-Methode apps.services.list |
| Liste der Versionen für einen Dienst | Admin API-Methode apps.services.versions.list |
| Standardversion für einen Dienst, inklusive Traffic-Aufteilung | Admin API-Methode apps.services.get |
| Liste der für eine Version ausgeführten Instanzen | Admin API-Methode apps.services.versions.instances.list |
Weitere Informationen zu den Daten, die zu den ausgeführten Diensten Ihrer Anwendung verfügbar sind, finden Sie unter Python 3 Laufzeitumgebung.
Namespaces
Mit der Namespaces API konnten mehrinstanzenfähige Anwendungen Daten nach Mandanten partitionieren. Dazu wurde für jeden Mandanten einfach ein eindeutiger Namespace-String festgelegt.
Datastore unterstützt die Mehrinstanzenfähigkeit direkt, andere Google Cloud-Dienste dagegen nicht. Wenn Ihre mehrinstanzenfähige Anwendung andere Google Cloud-Dienste verwendet, müssen Sie die Mehrinstanzenfähigkeit manuell festlegen. Sie können mit der Cloud Resource Manager API programmatisch neue Projekte erstellen und projektübergreifend auf Ressourcen zugreifen, um Dienstinstanzen vollständig zu isolieren.
OAuth
Verwenden Sie zum Prüfen von OAuth 2.0-Tokens nicht den App Engine-OAuth-Dienst, sondern die Methode oauth2.tokeninfo der OAuth 2.0-API.
Suche
Hosten Sie eine Volltextsuchdatenbank wie Elasticsearch in Compute Engine und greifen Sie von Ihrem Dienst aus darauf zu.
Aufgabenwarteschlange
Der App Engine-Dienst für Aufgabenwarteschlangen ist in zwei verschiedenen Modi verfügbar. Migration von einem Punkt zu zwei verschiedenen eigenständigen Cloud-Produkten.
Push-Aufgaben
Anstelle des Dienstes für Push-Aufgaben der Aufgabenwarteschlange von App Engine zur asynchronen Codeausführung verwenden Sie die Clientbibliotheken von Cloud Tasks mit einem Endpunkt der Python 3-Standardumgebung als Ziel. Weitere Informationen finden Sie unter Push-Warteschlangen zu Cloud Tasks migrieren.
Informationen zum Simulieren dieser Migration mit einer Beispielanwendung finden Sie unter App Engine-Push-Warteschlangen in Flask-Apps verwenden und zu Cloud Tasks migrieren.
Pull-Aufgaben
Wenn Sie beispielsweise den Pull-Aufgabendienst für Aufgabenwarteschlangen verwenden, um Aufgaben oder Nachrichten in die Warteschlange zu stellen, die von separaten Workern verarbeitet werden sollen, ist Cloud Pub/Sub eine gute Alternative. Cloud Pub/Sub bietet ähnliche Funktionen und Zustellgarantien. Wie bei anderen Clouddiensten bietet Pub/Sub praktische Clientbibliotheken für den Zugriff auf den Dienst. Weitere Informationen finden Sie unter Pub/Sub-Nachrichten schreiben und beantworten und in der Migrationsanleitung Pull-Aufgaben für Aufgabenwarteschlangen zu Pub/Sub.
Informationen zum Simulieren dieser Migration mit einer Beispielanwendung finden Sie unter App Engine-Pull-Aufgaben verwenden und zu Pub/Sub migrieren.
URL-Abruf
Standardmäßig verwendet die Python 2.7-Laufzeit den URL-Abrufdienst zur Verarbeitung ausgehender HTTP(S)-Anfragen, auch wenn Sie zur Verarbeitung dieser Anfragen Standard-Python-Bibliotheken verwenden.
Wenn Ihre Anwendung URL Fetch APIs direkt verwendet, z. B. für asynchrone Anfragen, empfehlen wir die Migration zu einer Standard-Python-Bibliothek, z. B. zur Bibliothek "requests".
Weitere Informationen finden Sie unter Ausgehende Anfragen migrieren.
Nutzerauthentifizierung
Verwenden Sie als Alternative zur Users API einen der HTTP-basierten Authentifizierungsmechanismen, die auf der Seite Nutzerauthentifizierung beschrieben werden.