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.
Die Einstellungen einer App Engine-Anwendung werden in der Datei app.yaml
konfiguriert.
Diese Datei legt die URL-Pfade für Anfrage-Handler und statische Dateien fest.
Die Datei app.yaml
enthält außerdem Informationen zum Code der Anwendung, zur Node.js-Laufzeit und zur neuesten Versionskennzeichnung.
Jeder Dienst in der Anwendung hat eine eigene app.yaml
-Datei, die als Deskriptor für seine 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.
Verzeichnisstruktur
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 Python 2-Anwendung:
runtime: python27 api_version: 1 threadsafe: true handlers: - url: / script: home.app - url: /index\.html script: home.app - url: /stylesheets static_dir: stylesheets - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ - url: /admin/.* script: admin.app login: admin - url: /.* script: not_found.app
Eine script:
-Anweisung kann entweder einen Dateipfad mit der Endung .py
enthalten – das Skript nutzt dann CGI – oder einen Python-Modulpfad mit durch Punkte getrennten Paketnamen – das Skript nutzt in diesem Fall WSGI.
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 |
---|---|
application |
Es wird empfohlen, das Element
Weitere Informationen zur Verwendung dieser Befehle finden Sie unter Anwendung bereitstellen. Die Anwendungs-ID ist die Projekt-ID in der Google Cloud Console, die Sie beim Erstellen der Anwendung in der Google Cloud Console angegeben haben. |
api_version |
Erforderlich. Die Version der API in der Laufzeitumgebung, die von Ihrer Anwendung verwendet wird. Dieses Feld ist in neueren App Engine-Laufzeiten nicht verfügbar.
Wenn Google die Unterstützung für eine neue Version der API einer Laufzeitumgebung bekannt gibt, verwendet Ihre bereitgestellte Anwendung weiterhin die Version, für die sie geschrieben wurde. Ändern Sie diesen Wert und stellen Sie die Anwendung anschließend noch einmal in App Engine bereit, um die Anwendung auf eine neue API-Version zu aktualisieren. Wenn Sie den Wert
Derzeit ist für App Engine genau eine Version der |
auto_id_policy |
Optional. Wenn Sie Entitätenbezeichner automatisch festlegen, können Sie die verwendete Methode ändern, indem Sie die Richtlinie zur automatischen ID-Vergabe (auto ID policy) einrichten. Folgende Optionen sind gültig:
|
builtins |
Optional.
Das Python 2 SDK umfasst einige integrierte Handler für gebräuchliche Anwendungsfunktionen. Mit der Anweisung Dieses Feld wird in der Python 3-Laufzeit verworfen. Folgende integrierte Handler stehen zur Verfügung:
builtins: - deferred: on - appstats: on
Die builtins: - name: on entspricht: includes: - $PYTHON_LIB/google/appengine/ext/builtins/name/
Wenn Sie in der Datei Angenommen die folgende Datei handlers: - url: /.* script: main.app builtins: - appstats: on Die daraus resultierende Liste von Handlern ist: [/_ah/stats, /.*] Wenn includes: - included.yaml Und die handlers: - url: /.* script: main.app builtins: - appstats: on Dann ist die daraus resultierende Liste der Handler: [/.*, /_ah/stats] Die Reihenfolge der Platzierung der |
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 runtime: python27 api_version: 1 threadsafe: true default_expiration: "4d 5h" handlers: # ... Weitere Informationen finden Sie unter Cache-Ablauf. |
env_variables
|
Optional.
Sie können Umgebungsvariablen in Ihrer Umgebungsvariablen mit dem Präfix os.environ -Wörterbuch verfügbar:
env_variables: DJANGO_SETTINGS_MODULE: "myapp.settings" |
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_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html |
handlers |
Erforderlich. Eine Liste mit URL-Mustern und Beschreibungen ihrer Verarbeitung. In App Engine können URLs auf zwei Arten verarbeitet werden: durch Ausführung von Anwendungscode oder durch Bereitstellung von statischen Dateien, die mit dem Code hochgeladen wurden, z. B. Bilder, CSS- oder JavaScript-Dateien. |
includes
|
Optional.
Mit der Anweisung includes: - lib/user_admin.yaml App Engine löst den enthaltenen Pfad in dieser Reihenfolge auf:
Wenn die
Enthaltene |
inbound_services |
Optional.
Anwendungen müssen diese Dienste aktivieren, damit sie eingehende Anfragen empfangen können. Sie können den Dienst für eine Python 2-Anwendung aktivieren, indem Sie in der Datei Die folgenden eingehenden Dienste sind verfügbar:
inbound_services: - mail - warmup |
instance_class |
Optional. Die Instanzklasse für diesen Dienst. Die Verfügbarkeit folgender Werte hängt von der Skalierung Ihres Dienstes ab:
|
libraries |
Optional.
Die Python 2.7-Laufzeit enthält einige Bibliotheken von Drittanbietern. Einige davon sind standardmäßig verfügbar. Andere sind nur verfügbar, wenn sie konfiguriert wurden. Sie können angeben, welche Version Sie verwenden möchten. Dazu geben Sie die Werte Dieses Feld wird in der Python 3-Laufzeit verworfen. libraries: - name: PIL version: "1.1.7" - name: webob version: "latest"
Beachten Sie, dass das SDK die neueste Bibliotheksversion zum Zeitpunkt der Bereitstellung bestimmt, wenn Sie Wenn Sie eine Anwendung entwickeln, für die noch keine Nutzer vorhanden sind, brauchen Sie neue Versionen nicht zu kontrollieren. Wenn Ihre Anwendung jedoch aktiv genutzt wird, seien Sie auf der Hut: Möglicherweise stellen Sie überrascht fest, dass Ihre Anwendung beginnt, eine neue, nicht abwärtskompatible Version der Bibliothek zu verwenden. Eine Liste der enthaltenen Bibliotheken von Drittanbietern finden Sie unter Integrierte Drittanbieterbibliotheken. Sie können zusätzliche reine Python-Drittanbieterbibliotheken verwenden, wenn Sie sie in einem lokalen Verzeichnis installieren. Wenn Sie die flexible Umgebung verwenden, finden Sie weitere Informationen unter Python-Bibliotheken verwenden. |
module |
Hinweis: Module werden jetzt als Dienste bezeichnet. Wenn Sie die Anwendung mit der gcloud CLI verwalten möchten, verwenden Sie stattdessen das Element service. |
runtime |
Erforderlich. Der Name der Laufzeitumgebung, die von Ihrer Anwendung verwendet wird. Verwenden Sie zum Beispiel Folgendes, um Python 2.7 anzugeben: runtime: python27 |
service |
Dienste wurden früher als Module bezeichnet.
Wird nur von der gcloud CLI oder gcloud-basierten Plug-ins unterstützt, z. B.
Erforderlich, wenn Sie einen Dienst erstellen.
Optional für den Standarddienst service: service-name Hinweis: Der Befehl module: service-name |
service_account |
Optional. Mit dem Element service_account: [SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com |
skip_files |
Optional.
Mit dem Element Für skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$ Das Standardmuster schließt Folgendes aus: Emacs-Sicherungsdateien mit den Namensmustern
Wenn Sie die obige Liste regulärer Ausdrücke erweitern möchten, kopieren Sie sie in die Datei skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$ - ^(.*/)?.*\.bak$
Fügen Sie den Verzeichnisnamen zur Liste hinzu, um ein vollständiges Verzeichnis zu überspringen. Wenn zum Beispiel ein Verzeichnis namens skip_files: - logs/ |
threadsafe |
Erforderlich.
Konfiguriert die Anwendung für die Verwendung gleichzeitiger Anfragen. Wenn Sie die Threading-Bibliothek von Python verwenden, werden die von Dieses Feld wird in der Python 3-Laufzeit verworfen. threadsafe: [true | false]
Hinweis: Die Anweisung |
version |
Es wird empfohlen, das Element
Weitere Informationen zur Verwendung dieses Befehls finden Sie unter Anwendung bereitstellen. Eine Kennzeichnung für die Version Ihres Anwendungscodes, den Sie in App Engine bereitstellen.
Die Versions-ID kann Kleinbuchstaben, Ziffern und Bindestriche enthalten. Sie darf nicht mit dem Präfix
Hinweis: Versionsnamen sollten mit einem Buchstaben beginnen, damit sie sich von numerischen Instanzen unterscheiden, die immer durch eine Zahl angegeben werden. Damit wird das Problem der Mehrdeutigkeit umgangen, das bei URLs wie
Jede Version einer Anwendung behält eine eigene Kopie von |
vpc_access_connector |
Optional. Konfiguriert Ihre Anwendung für die Verwendung eines Connectors für serverlosen VPC-Zugriff, damit sie Anfragen an interne Ressourcen in Ihrem VPC-Netzwerk senden kann. Weitere Informationen finden Sie unter Verbindung zu einem VPC-Netzwerk herstellen.
vpc_access_connector: name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME" egress_setting: all-traffic |
Handlers-Element
Das Element handlers
ist ein erforderliches Element in der Konfigurationsdatei app.yaml
. Es enthält eine Liste von URL-Mustern und Beschreibungen zu deren Verarbeitung. In App Engine können URLs auf zwei Arten verarbeitet werden: durch Ausführung von Anwendungscode oder durch Bereitstellung von statischen Dateien, die mit dem Code hochgeladen wurden, z. B. Bilder, CSS- oder JavaScript-Dateien.
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 |
---|---|
application_readable |
Optional. Boolescher Wert. Standardmäßig werden Dateien, die in Handlern statischer Dateien deklariert sind, als statische Daten hochgeladen und ausschließlich Endnutzern bereitgestellt. Sie können nicht von Anwendungen gelesen werden. Wenn dieses Feld auf „true“ gesetzt ist, werden die Dateien außerdem als Codedaten hochgeladen, damit Ihre Anwendung sie lesen kann.
Beide Uploads werden Ihren Kontingenten für Code- und statische Datenspeicherressourcen angerechnet.
Dieses Feld ist in neueren App Engine-Laufzeiten nicht verfügbar. |
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 den handlers: - url: /images static_dir: static/images http_headers: X-Foo-Header: foo X-Bar-Header: bar value vary: Accept-Encoding # ... CORS-UnterstützungEin 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 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 |
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.
handlers: - url: /youraccount/.* script: accounts.app login: required secure: always redirect_http_response_code: 301
Wenn eine Nutzeranfrage umgeleitet wird, wird der HTTP-Statuscode auf den Wert des Parameters |
script |
Optional. Gibt den Pfad zum Skript aus dem Stammverzeichnis der Anwendung an: handlers: # The root URL (/) is handled by the WSGI application named # "app" in home.py. No other URLs match this pattern. - url: / script: home.app # The URL /index.html is also handled by the home.py script. - url: /index\.html script: home.app # A regular expression can map parts of the URL to the # path of the script. - url: /browse/(books|videos|tools) script: \1.catalog.app # All other URLs use the WSGI application named in "app" # in not_found.py. - url: /.* script: not_found.app
Die Anweisung Hinweis: Wie bei einer Python- In neueren App Engine-Laufzeiten hat sich das Verhalten dieses Feldes geändert. |
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:
handlers: - url: /youraccount/.* script: accounts.app login: required secure: always
Der Entwicklungs-Webserver unterstützt keine HTTPS-Verbindungen. Der Parameter Wenn Sie mithilfe der Domain 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
Jede Datei im statischen Verzeichnis wird mit dem MIME-Typ bereitgestellt, der der jeweiligen Dateiendung entspricht, sofern er nicht durch die Einstellung
Alle Dateien in diesem Verzeichnis werden mit Ihrer Anwendung als statische Dateien hochgeladen. Statische Dateien werden von App Engine getrennt von den Dateien Ihrer Anwendung gespeichert und bereitgestellt. Statische Dateien sind im Dateisystem der Anwendung nicht standardmäßig verfügbar. Setzen Sie die Option 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 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 werden von App Engine getrennt von Anwendungsdateien gespeichert und bereitgestellt. Standardmäßig sind statische Dateien im Dateisystem der Anwendung nicht verfügbar. Setzen Sie die Option Statische Dateien und Anwendungscodedateien dürfen nicht übereinstimmen. Wenn ein Pfad zu statischen Dateien mit einem Pfad zu einem Skript übereinstimmt, das von einem dynamischen Handler verwendet wird, kann der dynamische Handler nicht auf das Skript zugreifen. |
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 |
Erforderliches Element unter Das URL-Muster verhält sich etwas anders, wenn es mit den folgenden Elementen verwendet 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:
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 Dieses Element ermöglicht die einfache Skalierung von Instanzklassen des Typs B1 und höher. Es kann die folgenden Elemente enthalten:
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 Dieses Element ermöglicht die manuelle Skalierung von Instanzklassen des Typs B1 und höher. Es kann die folgenden Elemente enthalten:
manual_scaling: instances: 5 |