Jede Version eines Dienstes ist in einer .yaml
-Datei definiert. Sie gibt den Namen und die Version des Dienstes an. Die YAML-Datei hat in der Regel den gleichen Namen wie der durch sie definierte Dienst. Dies ist aber nicht unbedingt erforderlich. Wenn Sie mehrere Versionen eines Dienstes bereitstellen, können Sie mehrere YAML-Dateien (eine für jede Version) im selben Verzeichnis erstellen.
In der Regel erstellen Sie für jeden Dienst ein Verzeichnis, das die YAML-Dateien des Dienstes und den zugehörigen Quellcode enthält. Optionale Konfigurationsdateien auf Anwendungsebene (dispatch.yaml
, cron.yaml
, index.yaml
und queue.yaml
) befinden sich im übergeordneten Anwendungsverzeichnis. Das folgende Beispiel zeigt drei Dienste.
In service1
und service2
befinden sich die Quelldateien auf derselben Ebene wie die YAML-Datei. In service3
gibt es YAML-Dateien für zwei Versionen.
Für kleine und einfache Projekte können alle Dateien der Anwendung in einem Verzeichnis gespeichert werden:
Jede YAML-Datei muss einen Versionsparameter enthalten. Sie können den Parameter service: default
explizit in die Datei einfügen oder den Dienstparameter weglassen, um den Standarddienst zu definieren.
Die Konfigurationsdatei eines jeden Dienstes definiert den Skalierungstyp und die Instanzklasse für einen bestimmten Dienst bzw. eine bestimmte Version. Abhängig vom angegebenen Typ der Skalierung werden unterschiedliche Skalierungsparameter verwendet. Wenn Sie keine Skalierung angeben, wird Autoscaling als Standardeinstellung verwendet. Die Einstellungen für die Skalierung und die Instanzklasse werden in der Referenzdokumentation zu app.yaml
beschrieben.
Für jeden Dienst können Sie auch Einstellungen festlegen, die URL-Anfragen bestimmten Skripts zuordnen und statische Dateien für bessere Servereffizienz ermitteln. Diese Einstellungen sind auch in der YAML-Datei enthalten und werden in der Referenzdokumentation zu app.yaml
beschrieben.
Standarddienst
Jeder Anwendung ist ein einzelner Standarddienst zugeordnet. Sie können den Standarddienst in der Datei app.yaml
mit der Einstellung service: default
definieren. Dies ist jedoch nicht erforderlich. Alle für die Dienste relevanten Konfigurationsparameter können auch auf den Standarddienst angewendet werden.
Optionale Konfigurationsdateien
Die folgenden Konfigurationsdateien steuern optionale Funktionen, die für alle Dienste in einer Anwendung gelten:
dispatch.yaml
überschreibt Standardregeln für Routing, indem eingehende Anfragen anhand des Pfads oder Hostnamens in der URL an einen bestimmten Dienst gesendet werdenqueue.yaml
konfiguriert sowohl Push- als auch Pull-Warteschlangen.index.yaml
gibt an, welche Indexe Ihre Anwendung bei Verwendung von Datastore-Abfragen benötigt.cron.yaml
konfiguriert regelmäßig geplante Aufgaben, die zu festgelegten Zeiten oder in regelmäßigen Intervallen ausgeführt werden.
Wenn Sie Aktualisierungen dieser Konfigurationsdateien in App Engine bereitstellen möchten, führen Sie in dem Verzeichnis, in dem sie sich befinden, den folgenden Befehl aus:
gcloud app deploy [CONFIG_FILE]
Beispiel
Im Folgenden sehen Sie ein Beispiel für die Konfiguration von YAML-Dateien für eine Anwendung mit drei Diensten: einem Standarddienst, der Webanfragen verarbeitet, und zwei weiteren Diensten für Anfragen von Mobilgeräten und für die Backend-Verarbeitung.
Beginnen Sie mit der Definition einer Konfigurationsdatei namens app.yaml
, die alle webbezogenen Anfragen verarbeitet:
runtime: python27
api_version: 1
threadsafe: true
Wenn die Projekt-ID der Google Cloud Console für diese Anwendung simple-sample
ist, würde diese Konfiguration einen Standarddienst mit Autoscaling und der öffentlichen Adresse https://simple-sample.uc.r.appspot.com
erstellen.
Als Nächstes nehmen wir an, dass Sie einen Dienst zur Verarbeitung von Webanfragen von Mobilgeräten erstellen möchten.
Für Mobilgerätenutzer beträgt die maximale Latenzzeit der Warteschlange für ausstehende Abfragen (in diesem Beispiel) nur eine Sekunde und es sind immer mindestens zwei Instanzen inaktiv. Hierfür erstellen Sie eine Konfigurationsdatei namens mobile-frontend.yaml
mit folgendem Inhalt:
service: mobile-frontend
runtime: python27
api_version: 1
threadsafe: true
automatic_scaling:
min_idle_instances: 2
max_pending_latency: 1s
Der Dienst, den diese Datei erstellt, wäre dann unter https://mobile-frontend-dot-simple-sample.uc.r.appspot.com
erreichbar.
Fügen Sie zuletzt einen Dienst namens my-service
für die Verarbeitung statischer Backend-Vorgänge hinzu.
Dies könnte ein fortlaufender Job sein, der Daten von Datastore in BigQuery exportiert. Die Vorgänge haben in der Regel einen festen Umfang, daher benötigen Sie nicht mehr als einen residenten Dienst. Außerdem erfordern diese Jobs eine große Menge an speicherinterner Verarbeitung. Deshalb benötigen Sie Dienste mit erweiterter Speicherkonfiguration. Hierfür erstellen Sie eine Konfigurationsdatei namens my-service.yaml
mit folgendem Inhalt.
service: my-service
runtime: python27
api_version: 1
threadsafe: true
instance_class: B8
manual_scaling:
instances: 1
Der Dienst, den diese Datei erstellt, wäre dann unter https://my-service-dot-simple-sample.uc.r.appspot.com
erreichbar.
Beachten Sie die Einstellung manual_scaling:
. Der Parameter instances:
teilt App Engine mit, wie viele Instanzen für diesen Dienst erstellt werden sollen.