Erste Schritte mit dem API-Gateway und App Engine

Auf dieser Seite wird beschrieben, wie Sie API Gateway zum Verwalten und Sichern eines App Engine-Back-End-Dienstes einrichten.

Aufgabenliste

Verwenden Sie beim Durcharbeiten der Anleitung die folgende Aufgabenliste. Alle Aufgaben sind erforderlich, um ein API-Gateway für Ihren App Engine-Backend-Dienst bereitzustellen.

  1. Google Cloud-Projekt erstellen oder auswählen.
  2. Wenn Sie keine eigene App Engine-Anwendung bereitgestellt haben, stellen Sie eine Beispielanwendung bereit. Siehe Vorbereitung.
  3. Aktivieren Sie die erforderlichen API-Gateway-Dienste.
  4. Konfigurieren Sie den IAP, um Ihre Anwendung zu sichern. Siehe IAP konfigurieren.
  5. Erstellen Sie eine OpenAPI-Spezifikation, die Ihre API beschreibt, und konfigurieren Sie die Routen zu Ihrer App Engine. Siehe API-Konfiguration erstellen.
  6. Stellen Sie ein API-Gateway mithilfe Ihrer API-Konfiguration bereit. Siehe API-Gateway bereitstellen.
  7. Überwachen Sie die Aktivitäten der Anwendungen. Siehe API-Aktivitäten verfolgen.
  8. Vermeiden Sie Gebühren, die Ihrem Google Cloud-Konto in Rechnung gestellt werden. Siehe Bereinigen.

Hinweise

  1. Rufen Sie in der Google Cloud Console die Seite Dashboard auf und wählen Sie ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Seite "Dashboard" öffnen

  2. Die Abrechnung für Ihr Projekt muss aktiviert sein.

    Weitere Informationen zum Aktivieren der Abrechnung

  3. Notieren Sie sich die Projekt-ID, die Sie für diese Anleitung verwenden möchten. Nachstehend wird hier die Projekt-ID als PROJECT_ID bezeichnet.

  4. Laden Sie die Google Cloud CLI herunter und installieren Sie sie.

    gcloud CLI herunterladen

  5. Aktualisieren Sie die gcloud-Komponenten:

    gcloud components update
  6. Legen Sie das Standardprojekt fest. Ersetzen Sie PROJECT_ID durch Ihre Google Cloud-Projekt-ID.

    gcloud config set project PROJECT_ID

  7. Wenn Sie noch keine eigene App Engine-Anwendung bereitgestellt haben, führen Sie die Schritte in der App Engine-Kurzanleitung für Ihre Sprache aus, um mithilfe der Google Cloud CLI ein Google Cloud-Projekt auszuwählen oder zu erstellen und eine Beispielanwendung bereitzustellen. Notieren Sie sich die Anwendungs-URL sowie die Region und die Projekt-ID, in der die Anwendung bereitgestellt wird.

Erforderliche Dienste aktivieren

Für API Gateway müssen Sie die folgenden Google-Dienste aktivieren:

Name Titel
apigateway.googleapis.com API Gateway API
servicemanagement.googleapis.com Service Management API
servicecontrol.googleapis.com Service Control API

Mit dem folgenden Befehl bestätigen Sie, dass die erforderlichen Dienste aktiviert sind:

gcloud services list

Wenn die erforderlichen Dienste nicht aufgeführt sind, müssen Sie sie aktivieren:

gcloud services enable apigateway.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

Weitere Informationen zu den gcloud-Diensten finden Sie unter gcloud-Dienste.

IAP konfigurieren, um die Anwendung zu sichern

Mit dem Identity-Aware Proxy (IAP) sichern Sie die App Engine-Anwendung und sorgen dafür, dass die Anfragen authentifiziert werden. Dieser Prozess umfasst die Angabe der Mitglieder, denen die für das Projekt erforderliche Rolle IAP-secured Web App User gewährt werden soll.

Folgen Sie den Schritten zum Aktivieren des IAP und überprüfen Sie, ob Sie sich in der Anwendung anmelden können.

API-Konfiguration erstellen

Bevor Sie das API-Gateway zur Verwaltung des Traffics zu Ihrem bereitgestellten App Engine-Backend verwenden können, ist eine API-Konfiguration erforderlich.

Sie können eine API-Konfiguration mithilfe einer OpenAPI-Spezifikation erstellen, die spezielle Annotationen enthält, um das gewünschte API-Gateway-Verhalten zu definieren. Sie müssen ein Google-spezifisches Feld hinzufügen, das die URL für jede App Engine-Anwendung enthält, damit API Gateway die zum Aufrufen einer Anwendung erforderlichen Informationen zur Verfügung stehen.

  1. Erstellen Sie eine Textdatei namens openapi2-appengine.yaml. (Der Einfachheit halber wird die OpenAPI-Spezifikation hier so genannt, Sie können sie jedoch auch beliebig anders benennen.)
  2. Listen Sie jede Ihrer Anwendungen im Abschnitt paths der Datei openapi2-appengine.yaml auf, wie unten gezeigt:
    # openapi2-appengine.yaml
    swagger: '2.0'
    info:
      title: API_ID optional-string
      description: Sample API on API Gateway with an App Engine backend
      version: 1.0.0
    schemes:
      - https
    produces:
      - application/json
    paths:
      /hello:
        get:
          summary: Greet a user
          operationId: hello
          x-google-backend:
            address: APP_URL
            jwt_audience: IAP_CLIENT_ID
          responses:
            '200':
              description: A successful response
              schema:
                type: string
  3. Ersetzen Sie im Feld title API_ID durch den Namen Ihrer API und ersetzen Sie optional-string durch eine kurze Beschreibung Ihrer Wahl. Wenn Ihre API noch nicht vorhanden ist, erstellt der Befehl zum Erstellen der API-Konfiguration auch die API mit dem von Ihnen angegebenen Namen. Der Wert des Felds title wird verwendet, wenn API-Schlüssel erstellt werden, die Zugriff auf diese API gewähren. Richtlinien zur API-ID
  4. Ersetzen Sie im Abschnitt x-google-backend im Feld address den Eintrag APP_URL durch die tatsächliche URL Ihres App Engine-Dienstes (den vollständigen Pfad der aufgerufenen API). Beispiel: https://myapp.an.r.appspot.com/hello

    Ersetzen Sie IAP_CLIENT_ID durch die OAuth-Client-ID, die Sie beim Einrichten des IAP erstellt haben.

  5. Geben Sie den folgenden Befehl ein. Dabei gilt:
    • CONFIG_ID gibt den Namen der API-Konfiguration an.
    • API_ID gibt den Namen der API an. Wenn die API nicht bereits vorhanden ist, wird sie von diesem Befehl erstellt.
    • PROJECT_ID gibt Namen Ihres Google Cloud-Projekts an.
    • SERVICE_ACCOUNT_EMAIL gibt das Dienstkonto an, das zum Signieren von Tokens für Back-Ends mit konfigurierter Authentifizierung verwendet wird.
    gcloud api-gateway api-configs create CONFIG_ID \
      --api=API_ID --openapi-spec=openapi2-appengine.yaml \
      --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

    Dieser Vorgang kann einige Minuten dauern, da die API-Konfiguration an nachgelagerte Systeme weitergegeben wird. Die Erstellung einer komplexen API-Konfiguration kann bis zu zehn Minuten dauern.

  6. Nachdem die API-Konfiguration erstellt wurde, können Sie mit dem folgenden Befehl die zugehörigen Details aufrufen:
    gcloud api-gateway api-configs describe CONFIG_ID \
      --api=API_ID --project=PROJECT_ID

API Gateway bereitstellen

Jetzt können Sie Ihre API auf API Gateway bereitstellen. Durch die Bereitstellung einer API in API Gateway wird auch eine externe URL definiert, mit der API-Clients auf Ihre API zugreifen können.

Führen Sie den folgenden Befehl aus, um die soeben erstellte API-Konfiguration in API Gateway bereitzustellen:

gcloud api-gateway gateways create GATEWAY_ID \
  --api=API_ID --api-config=CONFIG_ID \
  --location=GCP_REGION --project=PROJECT_ID

Dabei gilt:

  • GATEWAY_ID den Namen des Gateways angibt.
  • API_ID den Namen der API Gateway API angibt, die mit diesem Gateway verknüpft ist.
  • CONFIG_ID den Namen der im Gateway bereitgestellten API-Konfiguration angibt.
  • GCP_REGION die Google Cloud-Region für das bereitgestellte Gateway ist.

  • PROJECT_ID gibt Namen Ihres Google Cloud-Projekts an.

Nach erfolgreichem Abschluss können Sie den folgenden Befehl verwenden, um Details zum Gateway anzuzeigen:

gcloud api-gateway gateways describe GATEWAY_ID \
  --location=GCP_REGION --project=PROJECT_ID

Beachten Sie den Wert des Attributs defaultHostname in der Ausgabe dieses Befehls. Dies ist der Hostname in der Gateway-URL, mit dem Sie Ihre Bereitstellung im nächsten Schritt testen.

API-Bereitstellung testen

Jetzt können Sie Anfragen über die bei der Bereitstellung des Gateways generierte URL an Ihre API senden.

Geben Sie den folgenden curl-Befehl ein. Dabei gilt:

  • DEFAULT_HOSTNAME gibt den Hostnamen-Teil der bereitgestellten Gateway-URL an. Den Wert von defaultHostname finden Sie in der Ausgabe des oben dargestellten Befehls gateways describe.
  • hello ist der in Ihrer API-Konfiguration angegebene Pfad.
curl https://DEFAULT_HOSTNAME/hello

Beispiel:

curl https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

Es sollte folgende Ausgabe angezeigt werden:

My-AppEngineApp: Access denied for user gateway-1a2b3c@04d5e6f35FgdsT73dFrty-tp.iam.gserviceaccount.com requesting https://my-project.appspot.com/helloGET. If you should have access, contact myldap@google.com and include the full text of this message.

Fertig! Ihr API Gateway verwaltet den Zugriff auf Ihren App Engine-Backend-Dienst. Wenn Sie Zugriff auf Ihre App Engine-Anwendung gewähren möchten, müssen Sie ein Dienstkonto mit den entsprechenden Berechtigungen für Ihr API-Gateway konfigurieren.

API-Aktivität verfolgen

  1. Sehen Sie sich in der Google Cloud Console auf der Seite API Gateway die Aktivitätsgrafiken für Ihre API an. Klicken Sie auf die API, um die Aktivitätsgrafiken auf der Seite Übersicht aufzurufen. Es kann einen Moment dauern, bis die Anfragen in den Grafiken angezeigt werden.

  2. Sehen Sie sich auf der Seite Log-Explorer die Anfragelogs an. In der Google Cloud Console finden Sie auf der Seite API Gateway einen Link zur Seite Log-Explorer.

    Zur Seite "API Gateway"

    Auf der API Gateway-Seite:

    1. Wählen Sie die API aus, die Sie ansehen möchten.
    2. Klicken Sie auf den Tab Details.
    3. Klicken Sie auf den Link unter Logs.

Bereinigen

So vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Kurzanleitung verwendeten Ressourcen in Rechnung gestellt werden:

Alternativ können Sie auch das für diese Anleitung verwendete Google Cloud-Projekt löschen.