Stellen Sie Ihre Anwendungen für das Hochladen und Ausführen in App Engine bereit. Bei der Bereitstellung von Anwendungen erstellen Sie in App Engine Versionen dieser Anwendungen und ihrer entsprechenden Dienste. Sie können vollständige Anwendungen bereitstellen, einschließlich aller Quellcode- und Konfigurationsdateien. Außerdem haben Sie die Möglichkeit, einzelne Versionen oder Konfigurationsdateien bereitzustellen und zu aktualisieren.
Wenn Sie Anwendungen programmatisch bereitstellen möchten, verwenden Sie die Admin API.
Vorbereitung
Beachten Sie vor dem Bereitstellen der Anwendung Folgendes:
Der Inhaber des Google Cloud-Projekts muss die App Engine-Anwendung erstellen.
Ihr Nutzerkonto enthält die erforderlichen Berechtigungen.
Erteilen Sie Cloud Build die Berechtigung zum Bereitstellen von Anwendungen in Ihrem Projekt. Wenn Sie Ihre Anwendung bereitstellen, erstellt App Engine mit Cloud Build die Anwendung in einem Container und stellt diesen für die Laufzeit in der Region der Anwendung bereit. Cloud Build verfügt nicht über die Berechtigung, Java 8-Anwendungen standardmäßig bereitzustellen. Daher müssen Sie die Berechtigung erteilen, bevor Sie Anwendungen bereitstellen können.
Maven-Build-Tool einrichten (empfohlen)
Zum Bereitstellen der Anwendung mit dem Maven-Build-Tool müssen Sie das Projekt zur Verwendung des Maven-Plug-ins für App Engine einrichten.
- Installieren Sie das gcloud CLI, die
app-engine-java
-Komponente und melden Sie sich an. - Kompilieren und erstellen Sie Ihr Projekt mit dem Maven-Plug-in.
gcloud-CLI installieren
Zum Bereitstellen der Anwendung mit der gcloud CLI müssen Sie die gcloud CLI herunterladen, installieren und initialisieren.
Wenn die gcloud CLI bereits installiert ist und für eine andere Google Cloud-Projekt-ID konfiguriert werden soll, als Sie bei der Initialisierung der CLI angegeben haben, finden Sie entsprechende Erläuterungen unter gcloud CLI-Konfigurationen verwalten.
Proxy verwenden
Wenn Sie den Bereitstellungsbefehl von einem System mit HTTP- oder HTTPS-Proxy ausführen, müssen Sie das Tool für die Kommunikation über den Proxy konfigurieren.
Führen Sie folgende Befehle aus, um die gcloud CLI zu konfigurieren:
gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]
Sie können für den Proxy auch username
und password
festlegen. Weitere Informationen finden Sie unter gcloud config.
Eine App bereitstellen
Stellen Sie Ihre Anwendung in App Engine entweder mit dem Maven-Build-Tool (empfohlen) oder dem Befehl gcloud app deploy
aus dem Stammverzeichnis Ihrer Anwendung bereit.
Mit Maven (empfohlen)
Im Projektverzeichnis der obersten Ebene, in dem sich die Datei pom.xml
befindet, führen Sie den folgenden Befehl aus. Damit erstellen Sie die Anwendung mit dem Maven-Build-Tool.
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts. Wenn in der Datei pom.xml
bereits Ihre Projekt-ID angegeben ist, müssen Sie das Attribut -Dapp.deploy.projectId
nicht in dem von Ihnen ausgeführten Befehl einfügen.
gcloud-Befehlszeile verwenden
gcloud app deploy [CONFIGURATION_FILES]
Ersetzen Sie [CONFIGURATION_FILES]
durch den Pfad zu einer oder mehreren Konfigurationsdateien.
Verwenden Sie ein einzelnes Leerzeichen, um Pfadnamen zu trennen.
Optionale Flags:
--version
: Gibt eine benutzerdefinierte Versions-ID an. Wenn Sie keine Versions-ID angeben, wird diese von App Engine generiert.--no-promote
: Stellt Ihre Anwendung bereit, ohne den gesamten Traffic automatisch an diese Version weiterzuleiten. Standardmäßig wird jede bereitgestellte Version automatisch so konfiguriert, dass sie 100 % des Traffics empfängt.--project
: Gibt eine andere Google Cloud-Projekt-ID als jene an, die Sie in der gcloud CLI als Standard initialisiert haben.
Weitere Informationen erhalten Sie in der gcloud app deploy
-Referenz oder bei Ausführen von gcloud help
über die Befehlszeile.
Eindeutige Versions-IDs auswählen
Bei manuell skalierten Instanzen sollte die ID Ihrer Version zur Unterscheidung von numerischen Instanz-IDs mit einem Buchstaben beginnen. Auf diese Weise werden Anfragen zum richtigen Ziel weitergeleitet und die Mehrdeutigkeit von URL-Mustern wie123-dot-my-service.[REGION_ID].r.appspot.com
, die auf zwei Arten interpretiert werden können, wird vermieden.
- Wenn die Version
123
existiert, wird die Anfrage an die Version123
des Dienstsmy-service
weitergeleitet. - Falls die Version
123
nicht vorhanden ist, wird die Anfrage stattdessen an die Instanz mit der ID123
weitergeleitet, auf der die Versionen des Dienstesmy-service
ausgeführt werden.
Sie können Ihre Versionen für die Instanzen beliebig benennen, die für automatische oder grundlegende Skalierung konfiguriert sind, weil das Verweisen auf diese Instanzen nicht unterstützt wird.
Mehrere Dienstanwendungen bereitstellen
Wenn Ihre Anwendung in mehrere Dienste einbezogen wird, können Sie einzelne Dienste zielgerichtet oder alle Dienste gleichzeitig bereitstellen und aktualisieren. Beim Bereitstellen von Aktualisierungen für Dienste können einzelne Konfigurationsdateien aktualisiert werden. Sie können auch in den entsprechenden Versionen den Quellcode aktualisieren.
Sie können beispielsweise zwei Versionen in App Engine bereitstellen und erstellen, wobei jede Version in einem eigenen Dienst ausgeführt wird. Die erste Version dient als Frontend-Dienst und die andere als Backend Ihrer Anwendung. Sie können dann einzelne Konfigurationsdateien bereitstellen und nur die Einstellungen eines Dienstes aktualisieren. Es ist auch möglich, eine neue Version für einen Dienst bereitzustellen und den Quellcode des Front-Ends, des Back-Ends oder sowohl des Front-Ends als auch des Back-Ends zu aktualisieren.
Anforderungen für mehrere Dienste
Dieselben Bereitstellungsbefehle verwenden Sie, um die verschiedenen Dienste Ihrer Anwendung mit den folgenden Anforderungen bereitzustellen oder zu aktualisieren:
Wichtig ist, dass Sie zuerst eine Version Ihrer Anwendung für den
default
-Dienst bereitstellen, um nachfolgende Dienste erstellen und bereitstellen zu können.Sie müssen die ID des Dienstes in der Konfigurationsdatei
appengine-web.xml
der entsprechenden Version angeben. Fügen Sie dazu in jede Konfigurationsdatei die Elementdefinitionmodule: [YOUR_SERVICE_ID]
ein. Wenn Sie die Elementdefinition in der Konfigurationsdatei nicht angeben, wird standardmäßig die Version für den Dienstdefault
bereitgestellt.Sie müssen alle entsprechenden
appengine-web.xml
-Konfigurationsdateien im Bereitstellungsbefehl angeben, damit Sie mehrere Dienste gleichzeitig bereitstellen können. Derdefault
-Dienst muss zuerst aufgeführt werden.
So stellen Sie mehrere Dienste bereit:
Im Stammverzeichnis der Anwendung, in dem sich die Konfigurationsdateien befinden, führen Sie den Bereitstellungsbefehl aus und geben die relativen Pfade und Dateinamen für die appengine-web.xml
-Datei jedes Diensts an:
Maven-Build-Tool verwenden
Enthält das Stammverzeichnis Ihres Projekts nur Ihre Dienste, können Sie mit einem Maven-Befehl alle auf einmal bereitstellen.
Der Maven-Bereitstellungsbefehl durchläuft die Dienste des Projekts, um die Konfigurationsdateien zu finden und anschließend jeden Dienst bereitzustellen.
So stellen Sie mehrere Dienste mit dem Maven-Plug-in bereit:
- Prüfen Sie, ob appengine-maven-plugin zur übergeordneten Datei
pom.xml
hinzugefügt wurde. Führen Sie dazu diesen Befehl aus:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts. Wenn in der Datei
pom.xml
bereits Ihre Projekt-ID angegeben ist, müssen Sie das Attribut-Dapp.deploy.projectId
nicht in dem von Ihnen ausgeführten Befehl einfügen.
gcloud verwenden
gcloud app deploy [CONFIGURATION_FILES]
Ersetzen Sie [CONFIGURATION_FILES]
durch den Pfad zu einer oder mehreren Konfigurationsdateien.
Verwenden Sie ein einzelnes Leerzeichen, um Pfadnamen zu trennen.
Sie erhalten eine Bestätigung über die Befehlszeile, sobald jeder Dienst erfolgreich bereitgestellt wurde.
Build-Logs ansehen
Cloud Build streamt Build- und Bereitstellungslogs, die im Abschnitt „Cloud Build-Verlauf“ der Cloud Console angezeigt werden können. Wählen Sie im Drop-down-Menü Region oben auf der Seite die Region aus, nach der Sie filtern möchten, um Builds in der Region der Anwendung aufzurufen.
Indexe aktualisieren
Sie laden die Konfigurationsdatei datastore-indexes.xml
in Datastore hoch, um die von Ihrer Anwendung verwendeten Indexe zu erstellen oder zu aktualisieren. Noch nicht existierende Indexe werden nach dem Hochladen der Konfigurationsdatei erstellt.
Es kann eine Weile dauern, bis Datastore alle Indexe erstellt und diese Indizes App Engine zur Verfügung stehen. Wenn Ihre Anwendung bereits für Traffic konfiguriert ist, können bei Abfragen Ausnahmen auftreten, für die ein Index benötigt wird, der noch erstellt wird.
Sie müssen genügend Zeit für das Erstellen aller Indexe einräumen. Beispiel:
Laden Sie die Konfigurationsdatei
index.xml
in Datastore hoch, bevor Sie Ihre Version bereitstellen:Laden Sie die Datei
index.xml
in Datastore hoch: Weitere Informationen finden Sie in dergcloud datastore indexes create index.yaml
gcloud datastore
-Referenz.Verwenden Sie die Google Cloud Console, um den Status aller Indexe zu beobachten:
Nachdem alle Indexe erstellt wurden, stellen Sie die neue Version in App Engine bereit.
Erstellen Sie die Indexe, bevor Sie den Traffic auf Ihre Version migrieren oder aufteilen:
- Definieren Sie in der Datei
appengine-web.xml
Ihrer Anwendung eine neue Versions-ID. - Stellen Sie die neue Version bereit.
- Verwenden Sie die Google Cloud Console, um den Status aller Indexe zu beobachten:
- Nachdem alle Ihre Indizes erstellt wurden, können Sie den Traffic mit der Google Cloud Console auf Ihre Version migrieren oder aufteilen:
- Definieren Sie in der Datei
Weitere Informationen zu Indexen finden Sie unter Datastore-Indexe konfigurieren.
Fehlerbehebung
Nachfolgend finden Sie einige Beispiele für allgemeine Fehlermeldungen:
PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
- Wenn das Google Cloud-Projekt nicht die erforderliche App Engine-Anwendung enthält, kann der Befehl
gcloud app deploy
beim Ausführen des Befehlsgcloud app create
fehlschlagen. Nur Konten mit der Rolle „Inhaber“ haben die erforderlichen Berechtigungen zum Erstellen von App Engine-Anwendungen. Command not found
- Eine Anleitung zum Einrichten des lokalen Entwicklungsserver-Tools finden Sie unter Lokalen Entwicklungsserver verwenden.
Import Error
- Wenn Sie sowohl die gcloud CLI als auch das ursprüngliche App Engine SDK installiert haben, können die Einträge in Ihrem PATH einen Konflikt und Importfehler verursachen. Wenn bei der Ausführung von Befehlen der gcloud CLI Fehler aufgetreten sind, folgen Sie der Anleitung zum Ausführen des lokalen Entwicklungsservers.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
- Damit Sie die Dienste der Anwendung erstellen und bereitstellen können, muss zuvor der
default
-Dienst erstellt und bereitgestellt werden. Weitere Informationen zum Bereitstellen einer Version für dendefault
-Dienst finden Sie unter Mehrere Dienstanwendungen bereitstellen. Too Many Versions (403)
- In App Engine ist die Anzahl der bereitgestellten Versionen Ihrer Anwendung begrenzt. Die Grenzen für kostenlose und bereitgestellte Anwendungen unterscheiden sich.
Sie können mit der Google Cloud Console eine ältere Version löschen und danach den neuesten Code hochladen.
You do not have permission to modify this app (403)
- Dieser Fehler kann auftreten, wenn das von Ihnen verwendete Konto keine Berechtigung zum Bereitstellen der Anwendungs-ID hat, die Sie im Befehl oder in der
appengine-web.xml
angeben. Prüfen Sie, ob die Anwendungs-ID richtig ist und mit dem Wert der Projekt-ID in der Google Cloud Console übereinstimmt. Prüfen Sie dann die Berechtigungen in der Console und achten Sie darauf, dass Ihr Konto eine ausreichende Berechtigungsstufe zum Bereitstellen von Anwendungen hat. [13] An internal error occurred while creating a Cloud Storage bucket.
App Engine erstellt einen multiregionalen Cloud Storage-Standard-Bucket in Ihrem Namen in derselben Region, in der Ihre Anwendung erstellt wird. Dieser Bucket ist erforderlich, um den Inhalt Ihrer Anwendung zu speichern. Dieser Fehler wird zurückgegeben, wenn dieser Bucket in den folgenden Szenarien nicht erstellt werden kann:
Das App Engine-Standarddienstkonto ist in Ihrem Projekt nicht vorhanden. Wenn Ihr Konto vor Ablauf von 30 Tagen seit seinem Löschen entfernt wurde, können Sie es wiederherstellen.
Ihr Projekt befindet sich in einer Organisation, die die Richtlinie
constraints/gcp.resourceLocations
erzwingt. Die Organisation lässt das Erstellen von Ressourcen in derselben Region, in der Ihre App Engine-Anwendung erstellt wurde, nicht zu. Sie müssen die erzwungeneconstraints/gcp.resourceLocations
-Richtlinie für Ihr Projekt überschreiben und die multiregionalen Standorte in derselben Region zulassen, in der Ihre App Engine-Anwendung erstellt wurde.
[13] An internal error occurred
Dieser Fehler kann auftreten, wenn die
app.yaml
-Konfigurationsdatei von App Engine unter dem Schlüsselvpc_access_connector
eine ungültigename
-Ressource enthält. Achten Sie darauf, dass das Feldname
das richtige Projekt und die richtige Region enthält, in der der Connector für serverlosen VPC-Zugriff erstellt wird.Wenn das Problem weiterhin besteht, nachdem Sie sichergestellt haben, dass die
app.yaml
-Konfiguration gültig ist, stellen Sie mit dem Google Cloud SDK den Dienst noch einmal bereit, fügen Sie das Flag--verbosity=debug
hinzu und wenden Sie sich an den Cloud Support durch Angeben der Befehlsausgabe.- Andere Bereitstellungsfehler
Wenn Ihre Bereitstellung fehlschlägt, sorgen Sie dafür, dass die Cloud Build API in Ihrem Projekt aktiviert ist. App Engine aktiviert diese API automatisch, wenn Sie eine Anwendung zum ersten Mal bereitstellen. Wenn die API seither deaktiviert wurde, schlagen Bereitstellungen fehl.
Weitere Informationen
- Dienste verwenden, um eine große Anwendung zu erstellen
- Traffic aufteilen oder Traffic migrieren, um Traffic an die von Ihnen bereitgestellten Versionen weiterzuleiten
gcloud app deploy
-Befehlszeilenargumente und -Flags prüfen