Cloud Endpoints Frameworks bietet API-Verwaltungsfunktionen, die mit den vom Extensible Service Proxy (ESP) für Cloud Endpoints bereitgestellten Funktionen vergleichbar sind. In Endpoints Frameworks ist ein API-Gateway eingebunden, das alle Anfragen abfängt und soweit notwendig überprüft, z. B. durch Authentifizierung, bevor sie an das API-Back-End weitergeleitet werden. Wenn das Back-End antwortet, erfasst und meldet Endpoints Frameworks telemetrische Messwerte. Sie können Messwerte für Ihre API auf der Seite Endpoints > Dienste in der Google Cloud Console ansehen.
In Endpoints Frameworks sind unter anderem die folgenden API-Verwaltungsfunktionen verfügbar:
Damit Ihre API von Endpoints verwaltet werden kann, müssen Sie ein OpenAPI-Dokument bereitstellen, das Ihre API mit Version 2.0 der OpenAPI-Spezifikation beschreibt. Auf dieser Seite wird beschrieben, wie Sie ein OpenAPI-Dokument generieren und bereitstellen, mit dem Endpoints Ihre API verwalten kann.
Wenn Sie keine API-Verwaltung hinzufügen, verarbeitet Ihre API zwar weiterhin Anfragen, allerdings ohne auf der Seite Endpoints > Dienste in der Google Cloud Console angezeigt zu werden. Die von Endpoints bereitgestellten Funktionen wie Logging, Monitoring und das Festlegen von Kontingenten stehen dann nicht zur Verfügung.
Erforderliche Software installieren und konfigurieren
Falls Sie es nicht bereits getan haben, installieren und konfigurieren Sie die Google Cloud CLI für Python. Fügen Sie anschließend Ihrem API-Projektverzeichnis die Python-Bibliothek für Endpoints Frameworks hinzu, damit beides bei der Bereitstellung mit dem API-Code hochgeladen wird.
gcloud CLI für Python installieren und konfigurieren
So installieren und initialisieren Sie die gcloud CLI:
Installieren Sie die Komponente
gcloud
, die die App Engine-Erweiterung für Python enthält:gcloud components install app-engine-python
gcloud CLI aktualisieren
gcloud components update
Achten Sie darauf, dass die gcloud CLI zum Zugriff auf Ihre Daten und Dienste in Google Cloud berechtigt ist:
gcloud auth login
Ein neuer Browsertab wird geöffnet und Sie werden aufgefordert, ein Konto auszuwählen.
Legen Sie für das Standardprojekt Ihre Projekt-ID fest: Ersetzen Sie
YOUR_PROJECT_ID
durch die ID Ihres Google Cloud-Projekts.gcloud config set project YOUR_PROJECT_ID
Legen Sie unter Linux für die Umgebungsvariable
ENDPOINTS_GAE_SDK
den Pfad Ihres App Engine SDK-Ordners fest:PATH_TO_CLOUD_SDK/platform/google_appengine
Ersetzen Sie
PATH_TO_CLOUD_SDK
durch die Ausgabe des folgenden Befehls:gcloud info --format="value(installation.sdk_root)"
Python-Bibliothek von Endpoints Frameworks einbinden
Vergewissern Sie sich, dass Sie C-Erweiterungen für Python kompilieren können.
Windows: Microsoft Visual C++ 9.0 oder höher ist erforderlich. Sie können den Microsoft Visual C++ Compiler für Python 2.7 im Microsoft Download Center herunterladen.
Andere Betriebssysteme: Abhängig von Ihrem Betriebssystem müssen Sie möglicherweise Compilertools (manchmal in einem Paket namens
build-essential
) und/oder die Python-Entwicklungsheader (manchmal in einem Paket namenspython-dev
) installieren.
Wählen Sie das Hauptverzeichnis Ihrer API als Verzeichnis aus.
Erstellen Sie im Hauptverzeichnis der API das Unterverzeichnis
/lib
:mkdir lib
Installieren Sie die Bibliothek:
pip install -t lib google-endpoints --ignore-installed
OpenAPI-Dokument generieren
Generieren Sie im Hauptverzeichnis der API mit den Framework-Tools ein OpenAPI-Dokument. Beispiel:
Einzelne Klasse
Ersetzen Sie im folgenden Befehl YOUR_PROJECT_ID
durch die ID Ihres Google Cloud-Projekts.
python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi \ --hostname YOUR_PROJECT_ID.appspot.com
Ignorieren Sie die angezeigten Warnungen.
Mehrere Klassen
Sie können mehrere Klassen in der Befehlszeile auflisten. Endpoints generiert für jede Kombination aus API-Name und API-Version ein OpenAPI-Dokument.
Wenn Sie mehrere API-Klassen mit unterschiedlichen API-Namen als Teile eines einzelnen Dienstes bereitstellen möchten, müssen Sie auch das Flag --x-google-api-name
angeben.
Damit werden zusätzliche Einschränkungen für die API-Namen festgelegt. Insbesondere müssen die Namen mit dem regulären Ausdruck [a-z][a-z0-9]{0,39}
übereinstimmen. Das heißt, der Name muss aus 1 bis 40 Zeichen bestehen. Dabei kann es sich entweder um Kleinbuchstaben oder um Zahlen handeln, mit der Ausnahme, dass das erste Zeichen keine Zahl sein darf. Beispiel:
Ersetzen Sie im folgenden Befehl YOUR_PROJECT_ID
durch die ID Ihres Google Cloud-Projekts.
python lib/endpoints/endpointscfg.py get_openapi_spec main.FooApi main.BarApi \ --hostname YOUR_PROJECT_ID.appspot.com \ --x-google-api-name
Ignorieren Sie die angezeigten Warnungen.
Endpoints verwendet den im Argument hostname
angegebenen Text als Dienstnamen. Wenn Sie die API in App Engine bereitstellen, wird automatisch ein DNS-Eintrag mit einem Namen im Format YOUR_PROJECT_ID.appspot.com
erstellt.
OpenAPI-Dokument bereitstellen
Einzelne Klasse
gcloud endpoints services deploy echov1openapi.json
Mehrere Klassen
Wenn Sie mehrere OpenAPI-Dokumente haben, listen Sie alle in der Befehlszeile auf. Beispiel:
gcloud endpoints services deploy foov1openapi.json barv1openapi.json
Bei der ersten Bereitstellung eines oder mehrerer OpenAPI-Dokumente wird ein neuer Endpoints-Dienst namens YOUR_PROJECT_ID.appspot.com
erstellt.
Bei erfolgreichem Abschluss des Vorgangs wird eine Zeile wie die folgende mit der Dienstkonfigurations-ID und dem Dienstnamen angezeigt:
Service Configuration 2017-02-13r0 uploaded for service example-project-12345.appspot.com
Im obigen Beispiel ist 2017-02-13r0
die Dienstkonfigurations-ID. Die Dienstkonfigurations-ID besteht aus einem Datumsstempel, gefolgt von einer Überarbeitungsnummer. Wenn Sie Ihr OpenAPI-Dokument neu bereitstellen, erhöht sich die Überarbeitungsnummer in der Dienstkonfigurations-ID.
Wenn Sie sich die Dienstkonfigurations-ID noch einmal anzeigen lassen müssen, führen Sie den folgenden Befehl aus, ersetzen dabei jedoch YOUR_PROJECT_ID
durch die Projekt-ID Ihres Google Cloud-Projekts:
gcloud endpoints configs list --service=YOUR_PROJECT_ID.appspot.com
Statt ein generiertes Dokument zu verwenden, können Sie ein eigenes OpenAPI-Dokument erstellen und bereitstellen. Ersetzen Sie echov1openapi.json
aus dem obigen Beispiel einfach durch den Pfad zu Ihrem OpenAPI-Dokument. Weitere Informationen zum Erstellen eines OpenAPI-Dokuments finden Sie in der OpenAPI-Übersicht.
API neu bereitstellen und testen
Bearbeiten Sie die Datei
app.yaml
Ihres Projekts und fügen Sie einen Abschnittenv_variables
hinzu:env_variables: ENDPOINTS_SERVICE_NAME: YOUR_PROJECT_ID.appspot.com ENDPOINTS_SERVICE_VERSION: YOUR_SERVICE_VERSION
Ersetzen Sie
YOUR_PROJECT_ID
durch die ID Ihres Google Cloud-Projekts undYOUR_SERVICE_VERSION
durch Ihre Dienstkonfigurations-ID aus dem vorherigen Abschnitt. Durch diese Ergänzung der Dateiapp.yaml
verwaltet Endpoints Ihre API, nachdem Sie die Anwendung wieder bereitstellen.Stellen Sie die Anwendung wieder bereit:
gcloud app deploy
Warten Sie kurz, bis die Bereitstellung abgeschlossen ist. Ignorieren Sie die Warnmeldungen. Nach Abschluss der Bereitstellung erhalten Sie in etwa folgende Meldung:
File upload done. Updating service [default]...done.
Testen Sie beispielsweise mithilfe von curl, ob die neue Bereitstellung erfolgreich war:
curl --request POST \ --header "Content-Type: application/json" \ --data '{"content":"echo"}' \ https://YOUR_PROJECT_ID.appspot.com/_ah/api/echo/v1/echo?n=2
Ersetzen Sie
echo
durch den Namen der API.Die Ergebnisse sollten so aussehen:
{ "content": "echo echo" }
Senden Sie weitere Anfragen an Ihre API.
Öffnen Sie zum Aufrufen der API-Messwerte in der Google Cloud Console für Ihr Projekt die Seite Endpoints > Dienste: