Die flexible App Engine-Umgebung bietet nicht die API-Bibliotheken des App Engine SDK. Wenn Sie Ihre Anwendung von der App Engine-Standardumgebung zur flexiblen Umgebung migrieren möchten, müssen Sie Ihren Code so aktualisieren, dass nur Dienste und APIs verwendet werden, die in allen Google Cloud-Umgebungen verfügbar sind.
In den folgenden Abschnitten finden Sie Anleitungen zur Migration bestimmter alter, gebündelter Dienste und APIs von der Standardumgebung zur flexiblen Umgebung.
Unterschiede zwischen Standardumgebung und flexibler Umgebung
Zusätzlich zu den hier dargestellten Hauptunterschieden werden Pfade mit /_ah/
in der flexiblen Umgebung nicht blockiert. Wenn Ihre Anwendung in der Standardumgebung für den Zugriff auf bestimmte Dienste Pfade mit /_ah/
verwendet, finden Sie Informationen im Abschnitt für den entsprechenden Dienst weiter unten.
Anwendungsidentität
In der flexiblen Umgebung können Sie mit einer Kombination aus Umgebungsvariablen und dem Compute Engine-Metadatendienst Informationen zur Anwendung abrufen:
Anwendungsdaten | Zugriff |
---|---|
Anwendungs-/Projekt-ID | Entweder die Umgebungsvariable GOOGLE_CLOUD_PROJECT oder die Ressource /project/project-id im Metadatenserver |
Standardhostname | apps.get -Methode der App Engine Admin API |
Name des Dienstkontos | Ressource /instance/service-accounts im Metadatenserver |
OAuth 2.0-Zugriffstoken | Ressource /instances/service-accounts im Metadatenserver. Weitere Informationen finden Sie in der Compute Engine-Dokumentation zur Authentifizierung mit den Anmeldedaten des Dienstkontos. |
Die folgende Funktionalität ist nicht direkt verfügbar:
- Für Ihr Projekt ist kein Cloud Storage-Standard-Bucket vorhanden. Sie können einen Cloud Storage-Bucket erstellen und die Projekt-ID als Bucket-Namen verwenden, um einen Bucket in Ihrer Anwendung zu nutzen. Sie haben dann die Möglichkeit, die Umgebungsvariable
GOOGLE_CLOUD_PROJECT
in der Anwendung als Bucket-Namen einzusetzen. - Sie können Blobs nicht mit dem Standarddienstkonto signieren. Stattdessen können Sie die Identity and Access Management (IAM) API verwenden oder bei der Bereitstellung für die Anwendung einen privaten Schlüssel für das Dienstkonto zur Verfügung stellen.
- Es ist auch keine integrierte API zum Abrufen öffentlicher Zertifikate für die Überprüfung von Signaturen vorhanden. Die öffentlichen Zertifikate aller Dienstkonten sind jedoch unter
https://www.googleapis.com/robot/v1/metadata/x509/{service account email}
verfügbar. - Wenn Sie die Java-Laufzeit verwenden, sind die App Engine SystemProperty APIs für die flexible App Engine-Umgebung nicht verfügbar. Sie können jedoch Umgebungsvariablen in
app.yaml
festlegen und die Werte mitSystem.env
abrufen, wie unter Umgebungsvariablen definieren beschrieben.
Weitere Informationen zu Umgebungsvariablen finden Sie auf den Laufzeitübersichtsseiten oder der app.yaml
-Referenzseite.
Hintergrundthreads
Da für die flexible Umgebung keine Sandbox-Beschränkungen gelten, können Sie Threads und Prozesse erstellen, die außerhalb der Anfrageumgebung ausgeführt werden. In der Regel benötigen Sie dazu nur die integrierten Threading- oder Multiprocessing-Tools Ihrer Sprache.
Blobstore
Die Nutzung des Blobstore-Dienstes wurde sowohl in der Standardumgebung als auch in der flexiblen Umgebung weitgehend durch Cloud Storage ersetzt. Verwenden Sie zum Speichern und Abrufen von Daten in Cloud Storage die Google Cloud-Clientbibliotheken.
Weitere Informationen finden Sie unter Cloud Storage verwenden.
Leistungsspektrum
Außerhalb der Standardumgebung ist keine dem Capabilities-Dienst vergleichbare Funktionalität verfügbar.
WebSockets
Die flexible App Engine-Umgebung unterstützt Websockets. Weitere Informationen finden Sie unter Nichtflüchtige Verbindungen mit WebSockets erstellen.
Firestore im Datastore-Modus (Datastore)
Sie können von überall aus mit der Datastore API auf Datastore zugreifen. Verwenden Sie die Google Cloud-Clientbibliotheken zum Speichern und Abrufen von Daten aus dem Datenspeicher.
Dieselben Datastore-daten sind verfügbar, unabhängig davon, ob Sie die App Engine-Bibliotheken oder die Google Cloud-Clientbibliotheken verwenden oder die API direkt aufrufen.
Wenn Sie die Python-Bibliothek ndb
verwenden und den NDB-ähnlichen Datastore-Zugriff bevorzugen, empfehlen wir, zu Cloud NDB zu migrieren. Weitere Informationen finden Sie im Cloud NDB-Repository.
Sowohl die Cloud NDB- als auch die Datastore-Clientbibliotheken werden von Python 2 und 3 unterstützt und funktionieren sowohl für die App Engine-Standardumgebung oder die flexible App Engine-Umgebung als auch für Nicht-App Engine-Anwendungen. So können sich Python 2-Entwickler von gebündelten Legacy-Diensten wie App Engine ndb
lösen.
Cloud NDB hat das zusätzliche Ziel, weiterhin die Nutzerfreundlichkeit von NDB zu gewährleisten.
Weitere Informationen finden Sie unter Datastore verwenden.
Bilder
Der Bildbearbeitungsdienst ist außerhalb der Standardumgebung nicht verfügbar. Sie können Bilder aber direkt aus Ihrer Anwendung oder direkt aus Cloud Storage bereitstellen.
Wenn Sie Bilder verarbeiten müssen, können Sie dazu eine Bildverarbeitungsbibliothek wie Pillow installieren und verwenden.
- Pillow für Python
- ImageJ2, imgscalr oder thumbnailator für Java
- imaging für Go
- GD oder ImageMagick für PHP
Der Bilderdienst bietet außerdem Funktionen zur Vermeidung dynamischer Anfragen an Ihre Anwendung. Dazu erfolgt die Änderung der Bildgröße über eine Bereitstellungs-URL. 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.
Weitere Informationen finden Sie in diesen Leitfäden:
Logging
Wie in der Standardumgebung ist das Logging in der flexiblen Umgebung automatisch aktiviert. Allerdings erfolgt die Erfassung der Logs in einem unterschiedlichen Format.
Sie werden nicht nach Anfragen gebündelt und Logs von stdout
und stderr
werden gesondert erfasst.
Wenn Sie mehr Kontrolle über das Anwendungs-Logging, die Möglichkeit zum Log-Gruppieren und die Möglichkeit haben möchten, zusätzliche Metadaten in Logs zu erfassen, können Sie die Cloud Logging API direkt mit den Google Cloud-Clientbibliotheken verwenden.
Weitere Informationen finden Sie unter Anwendungslogs schreiben.
Der App Engine Mail-Dienst ist außerhalb der Standardumgebung nicht verfügbar. Zum Senden von E-Mails benötigen Sie einen externen E-Mail-Anbieter wie SendGrid, Mailgun oder Mailjet. Diese Dienste bieten APIs zum Senden von E-Mails aus Anwendungen, die in beliebigen Umgebungen ausgeführt werden.
Weitere Informationen finden Sie unter Nachrichten mit Drittanbieterdiensten senden.
Memcache
Der Memcache-Dienst ist in der flexiblen App Engine-Umgebung nicht verfügbar. Verwenden Sie Memorystore for Redis zum Speichern von Anwendungsdaten im Cache.
Module
Die Modules API ist außerhalb der Standardumgebung nicht verfügbar. Sie können aber mit Umgebungsvariablen und der App Engine Admin API Informationen zu den ausgeführten Diensten der Anwendung abrufen und ändern:
Dienstinformation | Zugriff |
---|---|
Aktueller Dienstname | Umgebungsvariable GAE_SERVICE |
Aktuelle Dienstversion | Umgebungsvariable GAE_VERSION |
Aktuelle Instanz-ID | Umgebungsvariable GAE_INSTANCE |
Standardhostname | apps.get -Methode der App Engine Admin API |
Liste der Dienste | apps.services.list -Methode der App Engine Admin API |
Liste der Versionen für einen Dienst | apps.services.versions.list -Methode der App Engine Admin API |
Standardversion für einen Dienst, inklusive Traffic-Aufteilung | apps.services.get -Methode der App Engine Admin API |
Liste der für eine Version ausgeführten Instanzen | apps.services.versions.instances.list -Methode der App Engine Admin API |
Mit der App Engine Admin API können Sie auch Dienste und Versionen in der Anwendung bereitstellen und verwalten.
Weitere Informationen zu Umgebungsvariablen finden Sie auf den Laufzeitübersichtsseiten oder der app.yaml
-Referenzseite.
Namespaces
Außerhalb der Standardumgebung wird die Mehrinstanzenfähigkeit nur von Datastore direkt unterstützt. Bei anderen Diensten müssen Sie die Mehrinstanzenfähigkeit manuell verwalten. 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
Der OAuth-Dienst ist in der flexiblen Umgebung nicht verfügbar. Sie können OAuth 2.0-Tokens mit der oauth2.tokeninfo
-Methode der OAuth 2.0 API verifizieren.
Remote
Der Remote API-Dienst ist in der flexiblen Umgebung nicht anwendbar. Die überwiegende Anzahl der Datensicherungsdienste wie Cloud Datastore, auf die aus der flexiblen Umgebung zugegriffen werden kann, sind von überall aus zugänglich.
Suche
Der Suchdienst ist aktuell außerhalb der flexiblen Umgebung nicht verfügbar. Sie können eine beliebige Datenbank mit Volltextsuche wie Apache Solr in Compute Engine oder Elasticsearch Service in Elastic Cloud hosten und darauf sowohl von der Standard- als auch von der flexiblen Umgebung aus zugreifen.
Sockets
Für die flexible Umgebung gelten keine Sandbox-Beschränkungen. Sie können ausgehende Sockets ganz normal öffnen und verwenden.
Aufgabenwarteschlange
Mit Google Tasks können Sie den Push-Dienst der Aufgabenwarteschlange außerhalb der Standardumgebung der ersten Generation verwenden.
In vielen Fällen, in denen Sie Pull-Warteschlangen verwenden können, z. B. für Aufgaben oder Nachrichten, die von unterschiedlichen Workern abgerufen und verarbeitet werden, ist Pub/Sub eine empfehlenswerte Alternative, die ähnliche Funktionen und Zustellgarantien bietet.
URL-Abruf
Der URL-Abrufdienst ist in der flexiblen Umgebung nicht verfügbar. Es gibt aber keine Sandbox-Einschränkungen. Daher kann Ihre Anwendung eine beliebige HTTP-Bibliothek für die URL-Abruffunktion verwenden.
Wenn Sie Python verwenden, empfehlen wir die Verwendung von Anfragen. Wenn Sie Java verwenden, empfehlen wir die Verwendung der Google-HTTP-Clientbibliothek für Java oder OkHttp.
Nutzer
Der Nutzerdienst ist außerhalb der Standardumgebung nicht verfügbar. Sie können in der flexiblen Umgebung aber jeden HTTP-basierten Authentifizierungsmechanismus verwenden. Beispiele:
- Google Identity Platform bietet zahlreiche Optionen zur Authentifizierung und Autorisierung von Google-Nutzerkonten.
- Firebase Authentication ermöglicht die Authentifizierung mithilfe von Nutzername/Passwort oder einer föderierten Identität über Google, Facebook, Twitter und andere.
- Auth0 ermöglicht eine Authentifizierung mithilfe verschiedener Identitätsanbieter und mit Funktionen zur Einmalanmeldung (SSO).
- OAuth 2.0 und OpenID Connect bieten die föderierte Identität vom Anbieter Ihrer Wahl. Google ist dabei ein OpenID Connect-Identitätsanbieter. Außerdem ist eine Reihe weiterer Anbieter verfügbar.
Da der Nutzerdienst nicht zur Verfügung steht, kann appengine-web.xml
für Java bzw. app.yaml
für andere Laufzeiten nicht verwendet werden, um URLs nur für Administratoren zugänglich zu machen. Sie müssen dies über Ihre Anwendung festlegen.
Nächste Schritte
Eine Übersicht der wichtigsten Unterschiede zwischen der flexiblen Umgebung und der Standardumgebung mit Richtlinien für Anwendungen, die beide Umgebungen verwenden, finden Sie unter Flexible App Engine-Umgebung für Nutzer der Standardumgebung.