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, Python 2-Anwendungen standardmäßig bereitzustellen. Daher müssen Sie die Berechtigung erteilen, bevor Sie Anwendungen bereitstellen können.
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.
Anwendung bereitstellen
Um Ihre Anwendung in App Engine bereitzustellen, verwenden Sie den Befehl gcloud app deploy
im Verzeichnis Ihrer Konfigurationsdatei, z. B. app.yaml
.
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.
gcloud app deploy [CONFIGURATION_FILES]
Standardmäßig wird mit dem Befehl die Konfigurationsdatei app.yaml
aus dem aktuellen Verzeichnis bereitgestellt. Wenn Sie den Befehl aus einem Verzeichnis ausführen, das die Datei app.yaml
Ihrer Anwendung nicht enthält, oder wenn Sie mehrere Anwendungen bereitstellen möchten, 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. App Engine generiert standardmäßig eine Versions-ID.--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.
Beispiele:
gcloud app deploy
gcloud app deploy app.yaml dos.yaml index.yaml
gcloud app deploy --version [YOUR_VERSION_ID] --no-promote --project [YOUR_PROJECT_ID]
Wenn die ID der bereitgestellten Version mit einer anderen Version übereinstimmt, die in App Engine bereits vorhanden ist, wird die vorhandene Version mit den neu bereitgestellten Dateien überschrieben. Dies kann problematisch sein, wenn die Version Traffic verarbeitet, da der Traffic zur Anwendung möglicherweise unterbrochen wird. Das können Sie vermeiden, wenn Sie die neue Version mit einer anderen Versions-ID bereitstellen und dann den Traffic auf diese Version verschieben.
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
app.yaml
der entsprechenden Version angeben. Fügen Sie dazu in jede Konfigurationsdatei die Elementdefinitionservice: [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
app.yaml
-Konfigurationsdateien im Bereitstellungsbefehl angeben, damit Sie mehrere Dienste gleichzeitig bereitstellen können.
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 app.yaml
-Datei jedes Diensts an:
gcloud app deploy [CONFIGURATION_FILES]
Bei [CONFIGURATION_FILES]
handelt es sich um den Pfad und den Namen einer oder mehrerer Konfigurationsdateien, die durch ein einzelnes Leerzeichen getrennt sind.
Beispiel
gcloud app deploy main/app.yaml service1/app.yaml service2/app.yaml
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 index.yaml
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.yaml
in Datastore hoch, bevor Sie Ihre Version bereitstellen:Laden Sie die Datei
index.yaml
in Datastore hoch:gcloud datastore indexes create index.yaml
Weitere Informationen finden Sie in der
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:
- Stellen Sie die neue Version bereit, ohne Traffic an diese Version weiterzuleiten: Sie müssen sowohl die
app.yaml
- als auch dieindex.yaml
-Datei sowie das Flag--no-promote
angeben, damit kein Traffic an die Version weitergeleitet wird:gcloud app deploy app.yaml index.yaml --no-promote
- 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:
- Stellen Sie die neue Version bereit, ohne Traffic an diese Version weiterzuleiten: Sie müssen sowohl die
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.
[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