Regions-ID
REGION_ID
ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r
in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.
Hier erfahren Sie, wie Sie eine Anwendung lokal ausführen, bereitstellen und in App Engine testen.
Lokal ausführen
Wenn Sie die Funktionsweise der Anwendung vor der Bereitstellung testen möchten, führen Sie sie in Ihrer lokalen Umgebung mit den Entwicklungstools aus, die Sie sonst auch verwenden.
Anwendung bereitstellen
Stellen Sie die Anwendung mit dem Befehl gcloud app deploy
in App Engine bereit.
Dieser Befehl legt mithilfe des Dienstes Cloud Build automatisch ein Container-Image an und stellt es anschließend in der flexiblen App Engine-Umgebung bereit. Der Container enthält alle von Ihnen lokal am Laufzeit-Image vorgenommenen Änderungen.
Wenn Sie Anwendungen programmatisch bereitstellen möchten, verwenden Sie die Admin API.
Hinweise
Für die Bereitstellung der Anwendung müssen folgende Voraussetzungen erfüllt sein:
Der Inhaber des Cloud-Projekts muss App Engine aktivieren.
Ihr Nutzerkonto enthält die erforderlichen Berechtigungen.
Dienst bereitstellen
Für die Bereitstellung Ihrer Anwendung in App Engine stellen Sie Versionen der Anwendungsdienste und alle zugehörigen Konfigurationsdateien bereit.
Führen Sie zum Bereitstellen einer Version Ihres Anwendungsdienstes den folgenden Befehl aus:
gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml
Standardmäßig wird mit dem Befehl deploy
automatisch jedes Mal eine neue Versions-ID generiert und der gesamte Traffic zur neuen Version weitergeleitet.
Um dieses Verhalten zu überschreiben, können Sie die Versions-ID mit dem Flag version
angeben:
gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml --version myID
Mit dem Flag --no-promote
können Sie auch verhindern, dass der gesamte Traffic sofort zur neuen Version geleitet wird.
gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml --no-promote
Dateien ignorieren
Sie können eine Datei .gcloudignore
verwenden, um Dateien und Verzeichnisse anzugeben, die beim Bereitstellen Ihrer Dienste nicht in Google Cloud hochgeladen werden sollen. So lassen sich Build-Artefakte und andere Dateien ausschließen, die beim Bereitstellen nicht hochgeladen werden müssen.
Weitere Informationen zur Syntax der Datei .gcloudignore
finden Sie in der Referenz zu gcloud
.
Container manuell für die Bereitstellung erstellen
Wenn Sie die Container-Images außerhalb der Google Cloud Platform erstellen möchten, müssen Sie Ihre Images zuerst in ein Container-Image-Repository hochladen, bevor Sie sie mit dem Befehl gcloud app deploy
in App Engine bereitstellen können.
Wenn Sie die Container-Images beispielsweise lokal mit Docker erstellen, können Sie die Images zur Google Registry übertragen und dann die URL des Images im Flag --image-url
des Befehls angeben:
gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml --image-url gcr.io/YOUR_PROJECT_ID/YOUR_CONTAINER_IMAGE
Automatisierte kontinuierliche Bereitstellungspipelines verwenden
Sie können mit Cloud Build Bereitstellungen in kontinuierlichen Bereitstellungspipelines automatisieren. Weitere Informationen finden Sie in der Cloud Build-Dokumentation unter Artefakte bereitstellen und Builds mit Build-Triggern automatisieren.
Docker-Basis-Images für .NET
Wenn Sie eine benutzerdefinierte .NET-Laufzeit neu erstellen möchten, können Sie im Dockerfile ein Basis-Image verwenden:
Laufzeit | Docker-Befehl |
---|---|
.NET | FROM gcr.io/google-appengine/aspnetcore:1.0.11 |
.NET | FROM gcr.io/google-appengine/aspnetcore:1.1.8 |
.NET | FROM gcr.io/google-appengine/aspnetcore:2.0.7 |
.NET | FROM gcr.io/google-appengine/aspnetcore:2.1.0 |
App ansehen
Wenn Sie die Anwendung in App Engine bereitgestellt haben, können Sie mit dem folgenden Befehl den Browser starten und die Anwendung unter https://PROJECT_ID.REGION_ID.r.appspot.com
aufrufen:
gcloud app browse
In App Engine testen
Bevor Sie eine neue Version zum Empfang von Traffic konfigurieren, können Sie sie in App Engine testen. Eine neue Version des Dienstes default
wird beispielsweise so getestet:
Stellen Sie die neue Version bereit und fügen Sie das Flag
--no-promote
hinzu:gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml --no-promote
Greifen Sie über folgende URL auf die neue Version zu:
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com
Sie können die neue Version jetzt in der App Engine-Laufzeitumgebung testen. Sie können Ihre Anwendung debuggen, indem Sie deren Logs im Log-Explorer der Google Cloud Console aufrufen. Weitere Informationen finden Sie unter Anwendungslogs schreiben.
An
https://PROJECT_ID.REGION_ID.r.appspot.com
gesendete Anfragen werden weiterhin an die Version weitergeleitet, die zuvor für eingehenden Traffic konfiguriert wurde.Wenn Sie Traffic an die neue Version senden möchten, migrieren Sie den Traffic mithilfe der Google Cloud Console:
Wählen Sie die Version aus, die Sie gerade bereitgestellt haben, und klicken Sie auf Traffic migrieren.
Zum Testen neuer Versionen anderer Dienste können Sie ebenso vorgehen. Ersetzen Sie in der URL einfach default
durch den Namen des Dienstes:
Fehlerbehebung
Beim Bereitstellen von Anwendungen können folgende Fehlermeldungen angezeigt werden:
PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
- Wenn das 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. 502 Bad Gateway
- Das Cloud-Projekt kann nicht gestartet werden, wenn
app.yaml
falsch konfiguriert ist. Prüfen Sie die Anwendungslogs auf detailliertere Fehlermeldungen. [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:
Der standardmäßige Dienst-Agent für die flexible App Engine-Umgebung ist in Ihrem Projekt nicht vorhanden oder hat nicht die Rolle
App Engine flexible environment Service Agent
. Sie können das Dienstkonto des Agents wieder in Ihr Projekt aufnehmen, indem Sie ihm die richtigen IAM-Berechtigungen zuweisen.Das App Engine-Dienstkonto ist in Ihrem Projekt nicht vorhanden. Wenn das App Engine-Dienstkonto vor Ablauf von 30 Tagen 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 Sie Ihren Dienst mit einer Netzwerkkonfiguration über eine freigegebene VPC bereitstellen. Achten Sie darauf, dass Ihre flexible App Engine-Umgebung alle Anforderungen für diese Konfiguration erfüllt. Prüfen Sie dann, ob die konfigurierten Dienstkonten für diese Einrichtung in Ihrem Projekt vorhanden sind. Andernfalls müssen Sie die Konten wiederherstellen. Die Region des Subnetzes im Hostprojekt der freigegebenen VPC muss mit dem Standort übereinstimmen, an dem Ihre App Engine-Umgebung erstellt wurde.
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 GCP-Support durch Angeben der Befehlsausgabe.IP space of {USER_SUBNETWORK_NAME} is exhausted and needs to be expanded.
Wenn die Bereitstellung mit dieser Fehlermeldung fehlschlägt, bedeutet dies, dass das für den App Engine-Dienst konfigurierte Netzwerk keine Adressen mehr für die neuen Instanzen des Dienstes hat. Zum Beheben des Problems können Sie die VPC-Bereiche in dem Subnetz erweitern, das für den Dienst der flexiblen App Engine-Umgebung konfiguriert ist.