Konfigurationsdateien

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.

Hierarchiegrafik von YAML-Diensten

Für kleine und einfache Projekte können alle Dateien der Anwendung in einem Verzeichnis gespeichert werden:

Hierarchiegrafik für kleine YAML-Dienste

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 werden
  • queue.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 Back-End-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 in der 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 Back-End-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.

Sie können auch diese Python-Demoanwendung herunterladen und einen Blick darauf werfen.