Go 1.14 ist jetzt allgemein verfügbar.

Konfigurationsdatei app.yaml

Regions-ID

REGION_ID ist ein abgekürzter Code, den Google basierend auf 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. Das Einbinden von REGION_ID.r in App Engine-URLs ist für vorhandene Anwendungen optional und wird bald für alle neuen Anwendungen erforderlich sein.

Für einen reibungslosen Übergang wird App Engine nach und nach für die Verwendung von Regions-IDs aktualisiert. Wenn wir Ihr Google Cloud-Projekt noch nicht aktualisiert haben, wird für Ihre Anwendung keine Regions-ID angezeigt. Da die ID für vorhandene Anwendungen optional ist, müssen Sie keine URLs aktualisieren oder andere Änderungen vornehmen, sobald die Regions-ID für Ihre vorhandenen Anwendungen verfügbar ist.

Hier finden Sie weitere Informationen zu Regions-IDs.

Die Einstellungen einer App Engine-Anwendung werden in der Datei app.yaml konfiguriert. Die Datei app.yaml enthält außerdem Informationen zum Anwendungscode, z. B. zur Laufzeit und zur neuesten Versionskennung.

Jeder Dienst in der Anwendung hat eine eigene app.yaml-Datei, die als Deskriptor für die Bereitstellung dient. Erstellen Sie zuerst die Datei app.yaml für den Standarddienst default. Erst dann können Sie Dateien vom Typ app.yaml für zusätzliche Dienste in der Anwendung anlegen und bereitstellen.

Für Go 1.12 und höher muss app.yaml mindestens einen runtime: go114-Eintrag enthalten. Eine kurze Übersicht finden Sie unter Laufzeiteinstellungen definieren.

Verzeichnisstruktur

Der Ordner jedes Dienstes muss eine app.yaml-Datei und eine oder mehrere Go-Quelldateien enthalten, die am Anfang die Anweisung package main enthalten. Weitere Informationen zum Strukturieren mehrerer Dienste in der Anwendung finden Sie unter Webdienste in App Engine strukturieren.

Beispiel

Das folgende Beispiel zeigt eine app.yaml-Datei für eine Go-Anwendung ab Version 1.12:

runtime: go114  # or go112 or go113 for Go 1.12 or Go 1.13

instance_class: F2

env_variables:
  BUCKET_NAME: "example-gcs-bucket"

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /.*
  script: auto

Syntax

Die Syntax von app.yaml entspricht dem YAML-Format.

Das YAML-Format unterstützt Kommentare. Eine Zeile, die mit einem Rautezeichen (#) beginnt, wird ignoriert:

# This is a comment.

URL- und Dateipfadmuster verwenden die erweiterte POSIX-Syntax für reguläre Ausdrücke mit Ausnahme von Sortierelementen und -klassen. Rückverweise auf gruppierte Übereinstimmungen (z. B. \1) werden ebenso wie die folgenden Perl-Erweiterungen unterstützt: \w \W \s \S \d \D.

Laufzeit- und Anwendungselemente

Element Beschreibung
default_expiration

Optional. Legt einen globalen Standard-Cache-Zeitraum für alle Handler statischer Dateien einer Anwendung fest. Außerdem haben Sie die Möglichkeit, eine Cache-Dauer für bestimmte Handler statischer Dateien zu konfigurieren. Der Wert setzt sich aus einem String von Zahlen und Einheiten zusammen, die durch Leerzeichen voneinander getrennt sind. Bei den Einheiten kann es sich um "d" für Tage, "h" für Stunden, "m" für Minuten und "s" für Sekunden handeln. Beispielsweise legt "4d 5h" den Cache-Ablauf auf 4 Tage und 5 Stunden nach der ersten Anforderung der Datei fest. Wenn keine Angabe gemacht wird, legt der Produktionsserver die Dauer auf 10 Minuten fest.

Beispiel:

runtime: go114  # or go112 or go113 for Go 1.12 or Go 1.13

default_expiration: "4d 5h"

handlers:
  # ...

Weitere Informationen finden Sie unter Cache-Ablauf.

entrypoint

Optional: Überschreibt das standardmäßige Startverhalten, indem der Befehl entrypoint beim Start der Anwendung ausgeführt wird. Damit Ihre Anwendung HTTP-Anfragen empfängt, sollte das Element entrypoint einen Befehl enthalten, der einen Webserver startet, der Port 8080 beobachtet.

env_variables

Optional: Sie können Umgebungsvariablen in Ihrer app.yaml-Datei definieren, um sie der Anwendung zur Verfügung zu stellen.

Umgebungsvariablen mit dem Präfix GAE sind für die Verwendung durch das System reserviert und in der app.yaml-Datei nicht zulässig.

Beispiel:

env_variables:
  MY_VAR: "my value"
Dabei sind MY_VAR und my value der Name und Wert der Umgebungsvariablen, die Sie definieren möchten, und jeder Eintrag der Umgebungsvariablen ist um zwei Leerzeichen unter dem Element env_variables eingerückt.

Sie können diese Werte dann mit os.Getenv abrufen:


import "os"
//...
if v := os.Getenv("MY_VAR"); v != "" {
  //...
}

Sehen Sie sich auch die Liste der Laufzeitumgebungsvariablen an, die nicht überschrieben werden können.

error_handlers

Optional. Wird verwendet, um benutzerdefinierte Fehlerseiten zu konfigurieren, die für verschiedene Fehlertypen zurückgegeben werden.

Dieses Element kann folgende Elemente enthalten:

error_code
Optional. Der Wert für error_code kann einer der folgenden sein:
over_quota
Zeigt an, dass die Anwendung ein Ressourcenkontingent überschritten hat.
timeout
Zeigt an, dass eine Frist für das Senden einer Antwort durch Ihre Anwendung abgelaufen ist.

Die Angabe "error_code" ist optional. Wenn Sie nichts festlegen, ist die angegebene Datei die standardmäßige Fehlerantwort für Ihre Anwendung.

file
Jeder Eintrag mit "file" gibt eine statische Datei an, die anstelle der allgemeinen Fehlerantwort bereitgestellt werden soll. Wenn Sie ein file-Element ohne entsprechendes error_code-Element angeben, wird die statische Datei als Standardfehlerseite für Ihre Anwendung verwendet. Die benutzerdefinierten Fehlerdaten müssen kleiner als 10 KB sein.
Beispiel

error_handlers:
  - file: default_error.html

  - error_code: over_quota
    file: over_quota.html
handlers

Optional. Eine Liste mit URL-Mustern und Beschreibungen ihrer Verarbeitung. In App Engine können URLs durch Ausführen des Anwendungscodes oder Bereitstellen von statischen Dateien verarbeitet werden, die mit dem Code hochgeladen wurden, z. B. Bilder, CSS- oder JavaScript-Dateien.

Siehe Syntax von Handlern und Unterelementen

inbound_services

Optional. Anwendungen müssen diese Dienste aktivieren, damit sie eingehende Anfragen empfangen können. Sie können den Dienst für eine Go-Anwendung ab Version 1.12 aktivieren, indem Sie in der Datei app.yaml den Abschnitt inbound_services einfügen.

warmup
Aktiviert Aufwärmanfragen. Siehe Aufwärmanfragen konfigurieren.
Beispiel:

inbound_services:
- warmup
instance_class

Optional. Die Instanzklasse für diesen Dienst.

Die Verfügbarkeit folgender Werte hängt von der Skalierung Ihres Dienstes ab:

Autoscaling
F1, F2, F4, F4_1G
Standard: F1

Optional können Sie mit dem Element automatic_scaling die Standardeinstellungen für das Autoscaling ändern, z. B. Mindest- und Höchstzahl von Instanzen, Latenz und gleichzeitige Verbindungen.

Hinweis: Wenn instance_class auf F2 oder höher eingestellt ist, können Sie Ihre Instanzen optimieren, indem Sie max_concurrent_requests auf einen höheren Wert als den Standardwert von 10 setzen. Zum Ermitteln des optimalen Werts erhöhen Sie ihn schrittweise und überwachen die Leistung Ihrer Anwendung.

Einfache und manuelle Skalierung
B1, B2, B4, B4_1G, B8
Standard: B2

Bei einfachen und manuellen Instanzklassen muss entweder das Element basic_scaling oder das Element manual_scaling angegeben werden.

main

Optional Der Pfad oder der vollständig qualifizierte Paketname des main-Pakets.

Sie müssen den Pfad zum Hauptpaket angeben, wenn package main sich nicht im selben Verzeichnis wie Ihr app.yaml befindet. Das main-Element unterstützt Dateipfade, die relativ zu app.yaml oder vollständigen Paketnamen sind. Wenn Ihre App beispielsweise folgende Verzeichnisstruktur hat:


myapp/
├── app.yaml
├── go.mod
├── cmd
│   └── web
│       └── main.go
└── pkg
    └── users
        └── users.go

Dann verwenden Sie entweder


main: ./cmd/web

oder


main: example.com/myapp/cmd/web
runtime

Erforderlich: Der Name der Laufzeitumgebung, die von Ihrer Anwendung verwendet wird. Verwenden Sie zum Festlegen von Go 1.14:


runtime: go114
Weitere verfügbare Laufzeitwerte: go111, go112, go113
service

Erforderlich, wenn Sie einen Dienst erstellen. Optional für den Standarddienst default. Jeder Dienst und jede Version muss einen Namen haben. Ein Name kann Zahlen, Buchstaben und Bindestriche enthalten. Dienst- und Versionsname dürfen insgesamt nicht mehr als 63 Zeichen enthalten und beide Namen dürfen weder mit einem Bindestrich beginnen noch enden. Wählen Sie für jeden Dienst und jede Version einen eindeutigen Namen. Verwenden Sie nicht dieselben Namen für Dienste und Versionen.

Beispiel:

service: service-name

Handlers-Element

Das handlers-Element enthält eine Liste von URL-Mustern und Beschreibungen zu deren Verarbeitung. In App Engine können URLs durch das Ausführen von Anwendungscode oder das Bereitstellen von statischen Dateien, die mit dem Code hochgeladen wurden, z. B. Bilder, CSS- oder JavaScript-Dateien, verarbeitet werden.

Die Muster werden in der Reihenfolge ausgewertet, in der sie in der Datei app.yaml aufgeführt sind, und zwar von oben nach unten. Die erste mit der URL übereinstimmende Zuordnung wird zum Verarbeiten der Anfrage verwendet.

In der folgenden Tabelle sind die Unterelemente des Elements handlers aufgeführt, die das Verhalten von Skripts, statischen Dateien, statischen Verzeichnissen und anderen Einstellungen steuern.

Element Beschreibung
expiration Optional: Die Zeitdauer, für die eine von diesem Handler bereitgestellte statische Datei im Cache von Webproxys und Browsern gespeichert werden soll. Der Wert ist ein String aus Zahlen und Einheiten, die durch Leerzeichen getrennt sind. Als Einheiten können d für Tage, h für Stunden, m für Minuten und s für Sekunden verwendet werden. Beispielsweise legt "4d 5h" den Cache-Ablauf auf 4 Tage und 5 Stunden nach der ersten Anforderung der Datei fest. Wenn kein Wert angegeben ist, wird der Standardwert der Anwendung (default_expiration) verwendet. Weitere Informationen finden Sie unter Cache-Ablauf.
http_headers

Optional: Sie können HTTP-Header für Antworten Ihrer Handler für statische Dateien oder Verzeichnisse festlegen. Wenn Sie HTTP-Header in Ihren script-Handlern festlegen müssen, sollten Sie dies stattdessen im Code der Anwendung tun. Informationen darüber, welche Antwortheader das Caching beeinflussen, finden Sie unter Statische Inhalte im Cache speichern.

Beispiel

handlers:
- url: /images
  static_dir: static/images
  http_headers:
    X-Foo-Header: foo
    X-Bar-Header: bar value
    vary: Accept-Encoding
  # ...

CORS-Unterstützung

Ein wichtiger Nutzen dieser Funktion ist die Unterstützung von Cross-Origin Resource Sharing (CORS), z. B. beim Zugriff auf Dateien, die von einer anderen App Engine-Anwendung gehostet werden.

Sie können beispielsweise eine Spieleanwendung mygame.uc.r.appspot.com haben, die auf von myassets.uc.r.appspot.com gehostete Assets zugreift. Wenn mygame jedoch versucht, ein JavaScript-XMLHttpRequest an myassets zu senden, kann die Anfrage nur erfolgreich sein, wenn der Handler für myassets einen Antwortheader Access-Control-Allow-Origin: mit dem Wert http://mygame.uc.r.appspot.com zurückgibt.

So können Sie dafür sorgen, dass Ihr Handler für statische Dateien den erforderlichen Antwortheaderwert zurückgibt:


handlers:
- url: /images
  static_dir: static/images
  http_headers:
    Access-Control-Allow-Origin: https://mygame.uc.r.appspot.com
  # ...

Hinweis: Wenn Sie allen Nutzern Zugriff auf Ihre Assets gewähren möchten, können Sie anstelle von https://mygame.uc.r.appspot.com den Platzhalter '*' verwenden.

mime_type

Optional. Wenn angegeben, werden alle von diesem Handler bereitgestellten Dateien unter Verwendung des genannten MIME-Typs bereitgestellt. Wenn keine Angabe gemacht wurde, wird der MIME-Typ für eine Datei von der jeweiligen Dateiendung abgeleitet. Wenn dieselbe Datei mit mehreren Dateiendungen hochgeladen wird, kann die resultierende Endung von der Reihenfolge abhängen, in der die Uploads erfolgt sind.

Weitere Informationen zu den möglichen MIME-Medientypen finden Sie auf der IANA-Website für MIME-Medientypen.

redirect_http_response_code

Optional. redirect_http_response_code wird mit der Einstellung secure verwendet, um den HTTP-Antwortcode festzulegen, der zurückgegeben wird, wenn eine Weiterleitung gemäß Konfiguration der Einstellung secure erforderlich ist. Das Element redirect_http_response_code kann folgende Werte haben:

301
Antwortcode: Moved Permanently
302
Antwortcode: Found.
303
Antwortcode: See Other.
307
Antwortcode: Temporary Redirect.
Beispiel:

handlers:
- url: /youraccount/.*
  script: auto
  secure: always
  redirect_http_response_code: 301

Wenn eine Nutzeranfrage umgeleitet wird, wird der HTTP-Statuscode auf den Wert des Parameters redirect_http_response_code gesetzt. Wenn der Parameter nicht vorhanden ist, wird "302" zurückgegeben.

script

Optional. Gibt an, dass Anfragen an den spezifischen Handler auf Ihre Anwendung ausgerichtet werden sollen. Der einzige akzeptierte Wert für das script-Element ist auto, da der gesamte Traffic über den Befehl "entrypoint" bereitgestellt wird. Damit Sie statische Handler verwenden können, muss mindestens einer Ihrer Handler die Zeile script: auto enthalten oder ein entrypoint-Element zur Bereitstellung definieren.


handlers:
- url: /images
  static_dir: static/images

- url: /.*
  secure: always
  redirect_http_response_code: 301
  script: auto

secure Optional. Die Einstellung secure kann von jedem URL-Handler verwendet werden. Dazu zählen auch Skript-Handler und Handler für statische Dateien. Das Element secure kann folgende Werte haben:
optional
Sowohl HTTP- als auch HTTPS-Anfragen mit URLs, die dem Handler entsprechen, sind ohne Weiterleitungen erfolgreich. Die Anwendung kann die Anfrage untersuchen, um zu ermitteln, welches Protokoll verwendet wurde, und dann entsprechend reagieren. Dies ist die Standardeinstellung, wenn secure für einen Handler nicht angegeben wurde.
never
Anfragen für eine URL, die diesem Handler entsprechen und HTTPS verwenden, werden automatisch an die passende HTTP-URL weitergeleitet. Wenn die HTTPS-Anfrage eines Nutzers als HTTP-Anfrage umgeleitet wird, werden die Abfrageparameter aus der Anfrage entfernt. Dies verhindert, dass ein Nutzer versehentlich Abfragedaten, die für eine sichere Verbindung vorgesehen waren, über eine nicht sichere Verbindung sendet.
always
Anfragen für eine URL, die diesem Handler entsprechen und nicht über HTTPS gesendet werden, werden automatisch an die HTTPS-URL mit demselben Pfad weitergeleitet. Die Abfrageparameter werden für die Weiterleitung beibehalten.
Beispiel

handlers:
- url: /youraccount/.*
  script: auto
  secure: always

Wenn Sie mithilfe der Domain REGION_ID.r.appspot.com auf eine bestimmte Version der Anwendung verweisen möchten, ersetzen Sie die Punkte, mit denen normalerweise die Subdomainkomponenten der URL getrennt werden, durch den String "-dot-", z. B.:
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com

Zur Verwendung von benutzerdefinierten Domains mit HTTPS müssen Sie zuerst SSL-Zertifikate für diese Domain aktivieren und konfigurieren.

An- und Abmeldungen in bzw. von Google-Konten erfolgen unabhängig von der Konfiguration der Anwendungs-URLs immer über sichere Verbindungen.

static_dir

Optional. Der Pfad zum Verzeichnis mit den statischen Dateien, ausgehend vom Stammverzeichnis der Anwendung. Alle Informationen nach dem Ende des übereinstimmenden url-Musters werden an static_dir angehängt, um den vollständigen Pfad zur angeforderten Datei zu bilden.

Jede Datei im statischen Verzeichnis wird mit dem MIME-Typ bereitgestellt, der der jeweiligen Dateiendung entspricht, sofern er nicht durch die Einstellung mime_type des Verzeichnisses überschrieben wird. Alle Dateien im angegebenen Verzeichnis werden als statische Dateien hochgeladen und keine davon kann als Skript ausgeführt werden.

Beispiel:

handlers:
# All URLs beginning with /stylesheets are treated as paths to
# static files in the stylesheets/ directory.
- url: /stylesheets
  static_dir: stylesheets
  # ...
static_files

Optional. Ein Handler für Muster statischer Dateien verknüpft ein URL-Muster mit Pfaden zu statischen Dateien, die mit der Anwendung hochgeladen werden. Mit dem regulären Ausdruck des URL-Musters können Gruppierungen regulärer Ausdrücke definiert werden, die beim Erstellen des Dateipfads verwendet werden sollen. Dies stellt eine Alternative zur Verwendung von static_dir dar, um bestimmte Dateien in einer Verzeichnisstruktur zuzuordnen, ohne dass das gesamte Verzeichnis zugeordnet wird.

Beispiel:

handlers:
# All URLs ending in .gif .png or .jpg are treated as paths to
# static files in the static/ directory. The URL pattern is a
# regular expression, with a grouping that is inserted into the
# path to the file.
- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$
  # ...

Statische Dateien und Anwendungscodedateien dürfen nicht übereinstimmen.

upload

Optional. Ein regulärer Ausdruck, der mit den Dateipfaden aller Dateien übereinstimmt, auf die von diesem Handler verwiesen wird. Dies ist erforderlich, da mit dem Handler nicht ermittelt werden kann, welche Dateien im Anwendungsverzeichnis mit den angegebenen url- und static_files-Mustern übereinstimmen. Statische Dateien werden getrennt von Anwendungsdateien hochgeladen und verarbeitet. In obigem Beispiel könnte das folgende upload-Muster verwendet werden: archives/(.*)/items/(.*).

url

Erforderliches Element unter handlers. Das URL-Muster als regulärer Ausdruck. Der Ausdruck kann Gruppierungen enthalten, auf die im Dateipfad zum Skript mit Rückverweisen auf den regulären Ausdruck verwiesen wird. /profile/(.*)/(.*) stimmt zum Beispiel mit der URL /profile/edit/manager überein. edit und manager entsprechen dabei der ersten bzw. zweiten Gruppierung.

Das URL-Muster verhält sich etwas anders, wenn es mit den folgenden Elementen verwendet wird:

static_dir
Verwendet ein URL-Präfix. Das reguläre Expressmuster darf keine Gruppierungen enthalten, wenn es zusammen mit dem static_dir-Element verwendet wird. Alle URLs, die mit diesem Präfix beginnen, werden von diesem Handler verarbeitet. Dabei wird der Teil der URL nach dem Präfix als Bestandteil des Dateipfads verwendet.
static_files
Ein Handler für Muster statischer Dateien verknüpft ein URL-Muster mit Pfaden zu statischen Dateien, die mit der Anwendung hochgeladen werden. Mit dem regulären Ausdruck des URL-Musters können Gruppierungen regulärer Ausdrücke definiert werden, die beim Erstellen des Dateipfads verwendet werden sollen. Dies stellt eine Alternative zur Verwendung von static_dir dar, um bestimmte Dateien in einer Verzeichnisstruktur zuzuordnen, ohne dass das gesamte Verzeichnis zugeordnet wird.

Elemente skalieren

Mit den Elementen in der folgenden Tabelle konfigurieren Sie, wie Ihre Anwendung skaliert wird. Weitere Informationen zur Skalierung von App Engine-Anwendungen finden Sie unter Skalierungstypen.

Element Beschreibung
automatic_scaling

Optional: Gilt nur für Anwendungen, die eine Instanzklasse von F1 oder höher verwenden.

Geben Sie dieses Element an, um die Standardeinstellungen für Autoscaling zu ändern, z. B. Mindest- und Höchstwerte für die Anzahl der Instanzen, Latenz und gleichzeitige Verbindungen für einen Dienst.

Dieses Element kann folgende Elemente enthalten:

max_instances
Optional. Geben Sie einen Wert zwischen 0 und 2.147.483.647 an, wobei 0 die Einstellung deaktiviert.

Dieser Parameter gibt die maximale Anzahl der Instanzen an, die von App Engine für diese Modulversion erstellt werden sollen. Dies ist nützlich, um die Kosten eines Moduls zu begrenzen.

min_instances
Optional. Die Mindestanzahl der Instanzen, die von App Engine für diese Modulversion erstellt werden sollen. Diese Instanzen arbeiten den Traffic ab, wenn Anfragen eintreffen. Sie arbeiten den Traffic auch dann weiter ab, wenn zusätzliche Instanzen gestartet werden, die für die Verarbeitung des Traffics erforderlich sind.

Geben Sie einen Wert zwischen 0 und 1.000 an. Sie können den Parameter auf den Wert 0 setzen, um eine Skalierung auf 0 Instanzen zu ermöglichen und die Kosten zu senken, wenn gerade keine Anfragen verarbeitet werden. Ihnen wird die angegebene Anzahl von Instanzen in Rechnung gestellt, unabhängig davon, ob sie Traffic empfangen oder nicht.

max_idle_instances

Optional. Die maximale Anzahl inaktiver Instanzen, die App Engine für diese Version beibehalten soll. Geben Sie einen Wert zwischen 1 und 1.000 oder automatic an. Der Standardwert ist automatic. Beachten Sie Folgendes:

  • Ein hoher Höchstwert führt dazu, dass die Anzahl inaktiver Instanzen bei der Rückkehr zum normalen Lastniveau nach einem Lastanstieg langsamer reduziert wird. Dies ermöglicht der Anwendung, bei einem schwankenden Anfrageaufkommen gleichbleibend hohe Leistung zu erbringen. Allerdings erhöhen sich dadurch in Zeiträumen hoher Auslastung auch die Anzahl inaktiver Instanzen und die sich daraus ergebenden laufenden Kosten.
  • Mit einem niedrigen Höchstwert sind die laufenden Kosten niedriger. Schwankende Lastniveaus können dann jedoch zu Leistungseinbußen führen.

Hinweis: Wenn nach einem Lastanstieg wieder das normale Lastniveau erreicht wird, kann die Anzahl inaktiver Instanzen vorübergehend über dem angegebenen Höchstwert liegen. Es werden Ihnen jedoch nicht mehr Instanzen als die von Ihnen angegebene maximale Anzahl berechnet.

min_idle_instances

Optional. Die Anzahl der zusätzlichen Instanzen, die weiter ausgeführt werden und für die Verarbeitung von Traffic für diese Version bereitstehen sollen.

App Engine berechnet die Anzahl der Instanzen, die zum Verarbeiten des aktuellen Anwendungstraffics erforderlich sind, basierend auf Skalierungseinstellungen wie target_cpu_utilization und target_throughput_utilization. Mit der Einstellung min_idle_instances wird die Anzahl der Instanzen festgelegt, die zusätzlich zu dieser berechneten Anzahl ausgeführt werden sollen. Wenn App Engine beispielsweise berechnet, dass 5 Instanzen zum Verarbeiten von Traffic erforderlich sind, und min_idle_instances auf 2 eingestellt ist, werden von App Engine 7 Instanzen ausgeführt (5 berechnet auf der Grundlage von Traffic plus 2 weitere pro min_idle_instances).

Ihnen wird die angegebene Anzahl von Instanzen in Rechnung gestellt, unabhängig davon, ob sie Traffic empfangen oder nicht. Diese Einstellung gilt nur für die Version, die den Großteil des Traffics empfängt. Beachten Sie Folgendes:

  • Ein niedriger Mindestwert ermöglicht Ihnen, die laufenden Kosten bei Inaktivität gering zu halten, sorgt aber möglicherweise auch dafür, dass bei einem plötzlichen Anstieg des Lastniveaus weniger Instanzen unmittelbar verfügbar sind.
  • Ein hoher Mindestwert ermöglicht Ihnen, die Anwendung auf sprunghafte Anstiege des Lastniveaus vorzubereiten. App Engine führt die Mindestanzahl von Instanzen für die Verarbeitung eingehender Anfragen aus. Unabhängig davon, ob sie Anfragen verarbeiten oder nicht, wird Ihnen die Anzahl der angegebenen Instanzen berechnet.

    Wenn Sie eine Mindestanzahl inaktiver Instanzen festlegen, wirkt sich die Latenzzeit der Warteschlange für ausstehende Anfragen weniger stark auf die Leistung der Anwendung aus.

target_cpu_utilization
Optional. Geben Sie einen Wert zwischen 0,5 und 0,95 an. Der Standardwert ist 0.6.

Dieser Parameter gibt den Schwellenwert für die CPU-Nutzung an, ab dem neue Instanzen zur Verarbeitung des Traffics gestartet werden. Dadurch erreichen Sie ein ausgeglichenes Kosten-Leistungs-Verhältnis, wobei mit niedrigeren Werten die Leistung und die Kosten erhöht, bei höheren Werten die Leistung verringert, aber auch die Kosten gesenkt werden. Ein Wert von 0,7 bedeutet beispielsweise, dass neue Instanzen gestartet werden, sobald die CPU-Auslastung 70 % erreicht hat.

target_throughput_utilization
Optional. Geben Sie einen Wert zwischen 0,5 und 0,95 an. Der Standardwert ist 0.6.

Wird mit max_concurrent_requests verwendet, um festzulegen, wann eine neue Instanz aufgrund von gleichzeitigen Anfragen gestartet wird. Wenn die Anzahl gleichzeitiger Anfragen den Wert max_concurrent_requests mal target_throughput_utilization erreicht, versucht der Planer, eine neue Instanz zu starten.

max_concurrent_requests

Optional. Die Anzahl gleichzeitiger Anfragen, die eine Instanz mit automatischer Skalierung annehmen kann, bevor der Planer eine neue Instanz erstellt (Standardeinstellung: 10, Höchstwert: 80).

Wird mit target_throughput_utilization verwendet, um anzugeben, wann eine neue Instanz aufgrund von gleichzeitigen Anfragen gestartet wird. Wenn die Anzahl gleichzeitiger Anfragen den Wert max_concurrent_requests mal target_throughput_utilization erreicht, versucht der Planer, eine neue Instanz zu starten.

Wir empfehlen, max_concurrent_requests nicht auf einen Wert unter 10 zu setzen, es sei denn, Sie benötigen ein Einzel-Threading. Ein Wert unter 10 führt wahrscheinlich dazu, dass mehr Instanzen erstellt werden, als für eine threadsichere Anwendung erforderlich sind. Dies kann zu unnötigen Kosten führen.

Wenn diese Einstellung zu hoch ist, kann es zu einer erhöhten API-Latenz kommen. Der Planer erzeugt möglicherweise eine neue Instanz, bevor die maximal zulässige Anzahl an Anfragen erreicht wird.

max_pending_latency

Der Zeitraum, den eine Anfrage maximal in der Warteschlange für ausstehende Anfragen verbleiben kann, bevor App Engine zusätzliche Instanzen zur Verarbeitung von Anfragen startet, um die Latenzzeit für ausstehende Anfragen zu reduzieren. Wenn dieser Schwellenwert erreicht wird, gilt das als Signal zum Hochskalieren und die Anzahl der Instanzen wird erhöht. Der Standardwert ist 30ms.

Ein niedriger Höchstwert bedeutet, dass App Engine zum Verarbeiten ausstehender Anfragen schneller neue Instanzen startet. Dadurch wird zwar die Leistung verbessert, doch die laufenden Kosten steigen ebenfalls.

Ein hoher Höchstwert bedeutet, dass Nutzer möglicherweise länger auf die Verarbeitung ihrer Anfragen warten müssen, wenn ausstehende Anfragen, aber keine inaktiven Instanzen vorhanden sind. Allerdings fallen dadurch weniger Kosten für die Ausführung Ihrer Anwendung an.

min_pending_latency

Ein optionales Element, mit dem Sie festlegen können, wie lange eine Anfrage in App Engine mindestens in der Warteschlange warten muss, bevor eine neue Instanz gestartet wird. Wenn Sie einen Wert angeben, können die Kosten für die Ausführung geringer werden, aber die Nutzer müssen länger darauf warten, dass ihre Anfragen verarbeitet werden.

Bei kostenlosen Apps ist der Standardwert 500ms. Bei kostenpflichtigen Apps ist der Standardwert 0.

Dieses Element ermittelt zusammen mit dem Element max_pending_latency, wann App Engine neue Instanzen erstellt. Wenn sich ausstehende Anfragen in der Warteschlange befinden, gilt Folgendes:

  • Unter dem von Ihnen angegebenen Wert min_pending_latency erstellt App Engine keine neuen Instanzen.
  • Mehr als max_pending_latency versucht App Engine, eine neue Instanz zu erstellen.
  • Bei Zeiten zwischen min_pending_latency und max_pending_latency versucht App Engine, eine vorhandene Instanz wiederzuverwenden. Wenn keine Instanzen die Anfrage vor max_pending_latency verarbeiten können, erstellt App Engine eine neue Instanz.
Beispiel

automatic_scaling:
  target_cpu_utilization: 0.65
  min_instances: 5
  max_instances: 100
  min_pending_latency: 30ms
  max_pending_latency: automatic
  max_concurrent_requests: 50
basic_scaling

Für Anwendungen, die eine Instanzklasse B1 oder höher verwenden, muss entweder dieses Element oder manual_scaling angeben werden.

Dieses Element ermöglicht die einfache Skalierung von Instanzklassen des Typs B1 und höher. Es kann die folgenden Elemente enthalten:

max_instances
Erforderlich. Die maximale Anzahl von Instanzen, die App Engine für diese Dienstversion erstellen soll. Diese Beschränkung ist nützlich, um die Kosten eines Dienstes zu begrenzen.
idle_timeout
Optional. Gibt an, nach welcher Zeit ab Erhalt der letzten Anfrage die Instanz heruntergefahren wird. Die Standardeinstellung beträgt 5 Minuten (5m).
Beispiel:

basic_scaling:
  max_instances: 11
  idle_timeout: 10m
manual_scaling

Für Anwendungen, die eine Instanzklasse B1 oder höher verwenden, muss entweder dieses Element oder basic_scaling angeben werden.

Dieses Element ermöglicht die manuelle Skalierung von Instanzklassen des Typs B1 und höher. Es kann die folgenden Elemente enthalten:

instances
Die Anzahl der Instanzen, die dem Dienst beim Start zugewiesen werden.
Beispiel

manual_scaling:
  instances: 5