Zugriff auf über 700 Labs und Kurse nutzen

Anwendungen mit Apigee X modernisieren

Lab 1 Stunde 30 Minuten universal_currency_alt 5 Guthabenpunkte show_chart Mittelstufe
info Dieses Lab kann KI-Tools enthalten, die den Lernprozess unterstützen.
Zugriff auf über 700 Labs und Kurse nutzen

GSP842

Logo: Google Cloud-Labs zum selbstbestimmten Lernen

Übersicht

Mit der Apigee-API-Plattform von Google Cloud können Sie vorhandene Anwendungen modernisieren. Fügen Sie dazu Ihren vorhandenen APIs neue Funktionen hinzu.

In diesem Lab stellen Sie einen Backend-Dienst in Cloud Run bereit. Der Backend-Dienst implementiert eine REST API, die Bankdaten (Kunden, Konten, Geldautomaten und Transaktionen) in einer Firestore-Datenbank speichert und abruft. Sie erstellen einen Apigee-API-Proxy, der Anfragen an den Backend-Dienst weiterleitet. Außerdem erstellen Sie einen freigegebenen Ablauf, der Inhalte von einem externen Dienst abruft und im Cache speichert. Dann rufen Sie diesen freigegebenen Ablauf über Ihren API-Proxy auf und ändern mit einem JavaScript-Code eine API-Antwort.

Ziele

Aufgaben in diesem Lab:

  • Backend-Dienst in Cloud Run bereitstellen
  • Backend-Dienst über einen Apigee X-Proxy weiterleiten
  • Freigegebenen Ablauf für Funktionen erstellen, die von mehreren Proxys verwendet werden können
  • Konfigurationsdaten in einer Attributgruppe speichern
  • Eine Dienst-Callout-Richtlinie verwenden, um Inhalte von einem Dienst abzurufen
  • Mit Cache-Richtlinien wiederverwendbare Informationen im Cache speichern
  • Antwortnutzlast mit JavaScript-Code ändern

Einrichtung

Vor dem Klick auf „Start Lab“ (Lab starten)

Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.

In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.

Für dieses Lab benötigen Sie Folgendes:

  • Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
  • Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.

Lab starten und bei der Google Cloud Console anmelden

  1. Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich „Details zum Lab“ mit diesen Informationen:

    • Schaltfläche „Google Cloud Console öffnen“
    • Restzeit
    • Temporäre Anmeldedaten für das Lab
    • Ggf. weitere Informationen für dieses Lab
  2. Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).

    Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.

    Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.

    Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
  3. Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.

    {{{user_0.username | "Username"}}}

    Sie finden den Nutzernamen auch im Bereich „Details zum Lab“.

  4. Klicken Sie auf Weiter.

  5. Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.

    {{{user_0.password | "Password"}}}

    Sie finden das Passwort auch im Bereich „Details zum Lab“.

  6. Klicken Sie auf Weiter.

    Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
  7. Klicken Sie sich durch die nachfolgenden Seiten:

    • Akzeptieren Sie die Nutzungsbedingungen.
    • Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
    • Melden Sie sich nicht für kostenlose Testversionen an.

Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.

Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein. Symbol für das Navigationsmenü und Suchfeld

Cloud Shell aktivieren

Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.

  1. Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren Symbol für Cloud Shell-Aktivierung.

  2. Klicken Sie sich durch die folgenden Fenster:

    • Fahren Sie mit dem Informationsfenster zu Cloud Shell fort.
    • Autorisieren Sie Cloud Shell, Ihre Anmeldedaten für Google Cloud API-Aufrufe zu verwenden.

Wenn eine Verbindung besteht, sind Sie bereits authentifiziert und das Projekt ist auf Project_ID, eingestellt. Die Ausgabe enthält eine Zeile, in der die Project_ID für diese Sitzung angegeben ist:

Ihr Cloud-Projekt in dieser Sitzung ist festgelegt als {{{project_0.project_id | "PROJECT_ID"}}}

gcloud ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.

  1. (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
  1. Klicken Sie auf Autorisieren.

Ausgabe:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Um das aktive Konto festzulegen, führen Sie diesen Befehl aus: $ gcloud config set account `ACCOUNT`
  1. (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
gcloud config list project

Ausgabe:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Hinweis: Die vollständige Dokumentation für gcloud finden Sie in Google Cloud in der Übersicht zur gcloud CLI.

Aufgabe 1: Backend-Dienst in Cloud Run bereitstellen

In dieser Aufgabe stellen Sie einen Backend-Dienst in Cloud Run bereit.

Der Dienst implementiert eine API für SimpleBank. Diese API bietet eine einfache Darstellung einer Bank mit Kunden, Konten, Transaktionen und Geldautomaten. Der SimpleBank-Dienst basiert auf Node.js; die Daten werden in Firestore gespeichert. Der Code wird in einem Docker-Container verpackt und dieser Container in Cloud Run bereitgestellt.

Das Code-Repository klonen

  1. Um das Repository mit dem Code für den SimpleBank-Dienst zu klonen, führen Sie in Cloud Shell diesen Befehl aus:

    git clone --depth 1 https://github.com/GoogleCloudPlatform/training-data-analyst
  2. Erstellen Sie einen Softlink zum Arbeitsverzeichnis:

    ln -s ~/training-data-analyst/quests/develop-apis-apigee ~/develop-apis-apigee
  3. Um in das Verzeichnis mit dem REST-Backend zu wechseln, führen Sie diesen Befehl aus:

    cd ~/develop-apis-apigee/rest-backend
  4. Um die Region in der Konfigurationsdatei zu aktualisieren, führen Sie diesen Befehl aus:

    sed -i "s/us-west1/{{{ project_0.default_region | "REGION" }}}/g" config.sh

Das Projekt initialisieren

Mit dem Projektinitialisierungsscript init-project.sh aktivieren Sie APIs im Projekt. Diese APIs sind für die Bereitstellung von Cloud Run-Diensten erforderlich.

Die Datenbank für den Dienst ist Firestore im nativen Modus. In einem Projekt kann nur eine Firestore-Datenbank im nativen oder im Datastore-Modus gehostet werden. Mit diesem Script wird die Firestore-Datenbank im nativen Modus erstellt.

  1. Um die vom Script init-project.sh ausgeführten Befehle aufzurufen, geben Sie diesen Befehl ein:

    cat init-project.sh

    Das Script aktiviert APIs und erstellt die Firestore-Datenbank im nativen Modus.

  2. Um das Script auszuführen, geben Sie diesen Befehl ein:

    ./init-project.sh

Um das Ziel zu überprüfen, klicken Sie auf Fortschritt prüfen. Cloud Run API aktivieren und Firestore-Datenbank erstellen

Den Dienst initialisieren

Mit dem Dienstinitialisierungsscript init-service.sh erstellen Sie ein Dienstkonto mit dem Namen simplebank-rest. Dieses Dienstkonto wird als Identität für den Cloud Run-Dienst verwendet. Dem Dienstkonto wird die Rolle roles/datastore.user zugewiesen. Dadurch kann der Dienst Daten in Firestore lesen und aktualisieren.

Als Best Practice wird empfohlen, ein Dienstkonto für einen von Ihnen erstellten Dienst zu erstellen und dem Konto Berechtigungen nach dem Prinzip der geringsten Berechtigung zu erteilen. Dieses Prinzip besagt, dass ein Konto nur die Berechtigungen haben sollte, die zur Ausführung seiner eindeutigen Funktion erforderlich sind.

  1. Um die vom Script init-service.sh ausgeführten Befehle aufzurufen, geben Sie diesen Befehl ein:

    cat init-service.sh

    Das Script erstellt das vom Dienst verwendete Dienstkonto und fügt dem Dienstkonto Rollen hinzu.

  2. Um das Script auszuführen, geben Sie diesen Befehl ein:

    ./init-service.sh

Den Backend-Dienst bereitstellen

Mit dem Bereitstellungsscript deploy.sh erstellen Sie die simplebank-Dienstanwendung mit dem Code im aktuellen Verzeichnis und stellen den Dienst mit dem Dienstkonto simplebank-rest in Cloud Run bereit. Das Bereitstellungsscript wird jedes Mal ausgeführt, wenn Sie Ihren Anwendungscode aktualisieren.

Der Dienst wird so bereitgestellt, dass ein authentifizierter Zugriff erforderlich ist. Sie können den Dienst also nicht ohne ein gültiges OpenID-Connect-Identitätstoken aufrufen.

  1. Um die vom Script deploy.sh ausgeführten Befehle aufzurufen, geben Sie in Cloud Shell diesen Befehl ein:

    cat deploy.sh

    Das Script erstellt den Dienst simplebank-grpc und stellt ihn in Cloud Run bereit.

Hinweis: Im Bereitstellungsscript wird der Parameter „max-instances“ verwendet, um die Anzahl der Instanzen im Cloud Run-Cluster auf 1 zu begrenzen. Für einen realen Produktionsdienst sollten Sie kein so niedriges Limit festlegen.
  1. Um das Script in Cloud Run bereitzustellen, geben Sie diesen Befehl ein:

    ./deploy.sh

Um das Ziel zu überprüfen, klicken Sie auf Fortschritt prüfen. Den Backend-Dienst bereitstellen

Den Dienst testen

  1. Zur Überprüfung, ob der Dienst ausgeführt wird, senden Sie eine curl-Anfrage, mit der der Dienst aufgerufen wird:

    export RESTHOST=$(gcloud run services describe simplebank-rest --platform managed --region {{{project_0.default_region |REGION}}} --format 'value(status.url)') echo "export RESTHOST=${RESTHOST}" >> ~/.bashrc curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" -X GET "${RESTHOST}/_status"

    Der Befehl, mit dem die Variable RESTHOST festgelegt wird, verwendet gcloud, um den Hostnamen für den Cloud Run-Dienst simplebank-rest abzurufen. Die Variable wird dann der Datei .bashrc hinzugefügt. Dadurch wird die Variable RESTHOST neu geladen, wenn Cloud Shell neu gestartet wird.

    Der Befehl GET /_status gibt lediglich eine JSON-Antwort zurück, die anzeigt, dass die API betriebsbereit ist. In diesem Aufruf haben Sie gcloud auth print-identity-token verwendet, um ein OpenID-Connect-Identitätstoken für den in Cloud Shell angemeldeten Nutzer abzurufen. Sie sind mit der Rolle „Project Owner“ angemeldet. Der Project Owner hat sehr weitreichende Berechtigungen.

  2. Zur Überprüfung, ob der Dienst in Firestore schreiben kann, senden Sie eine curl-Anfrage, mit der ein Kunde angelegt wird:

    curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" -H "Content-Type: application/json" -X POST "${RESTHOST}/customers" -d '{"lastName": "Diallo", "firstName": "Temeka", "email": "temeka@example.com"}'

    Mit dem Befehl POST /customers wird ein Kunde angelegt. Die Parameter lastName, firstName und email sind alle erforderlich. Die E‑Mail-Adresse muss eindeutig sein und wird als Kennung für den Kunden verwendet. Der Kundendatensatz wird in Firestore gespeichert.

    Hinweis: Wenn Sie den Fehler „AlreadyExist“ erhalten, haben Sie die Firestore-Datenbank möglicherweise nicht erfolgreich erstellt. Die Datenbank wird durch Ausführen des Scripts „init-project.sh“ erstellt.
  3. Zur Überprüfung, ob der Dienst Daten aus Firestore lesen kann, senden Sie eine curl-Anfrage, um den gerade angelegten Kunden abzurufen:

    curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" -X GET "${RESTHOST}/customers/temeka@example.com"

    Mit dem Befehl GET /customers/ wird ein Kundendatensatz aus Firestore abgerufen.

  4. Um zusätzliche Beispieldaten in Firestore zu laden, geben Sie diesen Befehl ein:

    gcloud firestore import gs://spls/shared/firestore-simplebank-data/firestore/example-data

    Mit diesem gcloud-Befehl wird die Import-/Exportfunktion von Firestore zum Importieren von Kunden, Konten und Geldautomaten in die Datenbank verwendet.

  5. Um die Liste der Geldautomaten abzurufen, führen Sie diesen curl-Befehl aus:

    curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" -X GET "${RESTHOST}/atms"
  6. Um einen einzelnen Geldautomaten abzurufen, führen Sie diesen curl-Befehl aus:

    curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" -X GET "${RESTHOST}/atms/spruce-goose"

    Bei der Anfrage wird ein Geldautomat anhand des Namens abgerufen. Die Antwort enthält den Breiten- und Längengrad des Geldautomaten, aber keine Adresse:

    {"name":"spruce-goose","longitude":-118.408207,"description":"","latitude":33.977601}

    In einer späteren Aufgabe verwenden Sie Apigee und die Geocoding API, um der Antwort, die beim Abrufen eines bestimmten Geldautomaten zurückgegeben wird, eine Adresse hinzuzufügen.

Aufgabe 2: Backend-Dienst mit einem Apigee-API-Proxy weiterleiten

In dieser Aufgabe erstellen Sie einen Apigee-API-Proxy, der als Fassade für den Backend-Dienst fungiert. Der API-Proxy verwendet ein Dienstkonto, damit er OpenID-Connect-Identitätstokens für den Cloud Run-Dienst präsentieren kann.

Dienstkonto für den Apigee-API-Proxy erstellen

  1. Um ein Dienstkonto zu erstellen, das vom Apigee-API-Proxy verwendet werden kann, geben Sie diesen Befehl ein:

    gcloud iam service-accounts create apigee-internal-access \ --display-name="Service account for internal access by Apigee proxies" \ --project=${GOOGLE_CLOUD_PROJECT}

    Mit dem gcloud-Befehl wird ein Dienstkonto mit dem Namen apigee-internal-access erstellt, das von Ihrem Apigee-Proxy beim Aufrufen des Backend-Dienstes verwendet wird.

  2. Um die Rolle für den Zugriff auf den Dienst zuzuweisen, geben Sie diesen Befehl ein:

    gcloud run services add-iam-policy-binding simplebank-rest \ --member="serviceAccount:apigee-internal-access@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \ --role=roles/run.invoker --region={{{project_0.default_region |REGION}}} \ --project=${GOOGLE_CLOUD_PROJECT}

    Mit diesem gcloud-Befehl wird dem Dienstkonto die Rolle roles/run.invoker für den Cloud Run-Dienst simplebank-rest zugewiesen, sodass das Dienstkonto den Dienst aufrufen kann.

  3. Um die URL für den Backend-Dienst abzurufen, verwenden Sie diesen Befehl:

    gcloud run services describe simplebank-rest --platform managed --region {{{project_0.default_region |REGION}}} --format 'value(status.url)'

    Speichern Sie diese URL. Sie wird beim Erstellen des API-Proxys verwendet.

Um das Ziel zu überprüfen, klicken Sie auf Fortschritt prüfen. Es kann zu einer kurzen Verzögerung kommen, bis die zugewiesene Rolle erkannt wird. Dienstkonto für den Apigee-API-Proxy erstellen

Apigee-Konsole öffnen

So öffnen Sie die Apigee-Konsole:

  • Geben Sie in der Google Cloud Console in das Feld Suchen Apigee ein und klicken Sie dann in den Suchergebnissen auf Apigee API Management.

Die Apigee-Konsole wird geöffnet und auf der Landingpage werden Quick Links zu häufig verwendeten Standorten angezeigt.

  • Klicken Sie im Navigationsmenü (Navigationsmenü) neben Apigee auf Anpinnen (Symbol „Anpinnen“).

Apigee ist jetzt im Navigationsmenü angepinnt.

Den Apigee-Proxy erstellen

  1. Wählen Sie im Navigationsmenü Proxy-Entwicklung > API-Proxys aus.

  2. Wenn Sie einen neuen Proxy mit dem Proxy-Assistenten erstellen möchten, klicken Sie auf +Erstellen.

    Sie erstellen einen Reverse-Proxy für Ihren Backend-Dienst.

  3. Wählen Sie unter Proxy-Vorlage die Option Allgemeine Vorlage > Reverse-Proxy (häufigste Option) aus.

    Hinweis: Verwenden Sie im Abschnitt OpenAPI-Spezifikationsvorlage nicht die Option Reverse-Proxy (häufigste Option).
  4. Geben Sie für die Proxydetails Folgendes an:

    Attribut Wert
    Proxy-Name bank-v1
    Basispfad /bank/v1
    Ziel (vorhandene API) Backend-URL
    Hinweis: Prüfen Sie, ob Sie „/bank/v1“ für den Basispfad verwenden und nicht „/bank-v1“.

    Das Ziel sollte die Backend-URL sein, die Sie zuvor in der Aufgabe abgerufen haben. Sie sollte in etwa so aussehen:

    https://simplebank-rest-mtdtzt7yzq-ue.a.run.app
  5. Klicken Sie auf Weiter.

  6. Ändern Sie nicht die Einstellungen unter Bereitstellen (optional). Klicken Sie dann auf Erstellen.

Prüfen, ob die Laufzeitinstanz verfügbar ist

  1. Fügen Sie in der Cloud Shell diese Befehle ein und führen Sie sie aus:

    export INSTANCE_NAME=eval-instance; export ENV_NAME=eval; export PREV_INSTANCE_STATE=; echo "waiting for runtime instance ${INSTANCE_NAME} to be active"; while : ; do export INSTANCE_STATE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}" | jq "select(.state != null) | .state" --raw-output); [[ "${INSTANCE_STATE}" == "${PREV_INSTANCE_STATE}" ]] || (echo; echo "INSTANCE_STATE=${INSTANCE_STATE}"); export PREV_INSTANCE_STATE=${INSTANCE_STATE}; [[ "${INSTANCE_STATE}" != "ACTIVE" ]] || break; echo -n "."; sleep 5; done; echo; echo "instance created, waiting for environment ${ENV_NAME} to be attached to instance"; while : ; do export ATTACHMENT_DONE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}/attachments" | jq "select(.attachments != null) | .attachments[] | select(.environment == \"${ENV_NAME}\") | .environment" --join-output); [[ "${ATTACHMENT_DONE}" != "${ENV_NAME}" ]] || break; echo -n "."; sleep 5; done; echo "***ORG IS READY TO USE***";

    Diese Befehlsreihe stellt über die Apigee API fest, wann die Apigee-Laufzeitinstanz erstellt und die Testumgebung angehängt wurde.

  2. Warten Sie, bis die Instanz bereit ist.

    Wenn der Text ***ORG IS READY TO USE*** angezeigt wird, ist die Instanz bereit. Die Apigee-Organisation (Org) wurde möglicherweise vor dem Start des Labs erstellt. Sie müssen also vielleicht nicht warten, bis die Instanz erstellt wird.

    Während Sie darauf warten, dass die Org bereit ist, können Sie mehr über Apigee erfahren, die Apigee X-Architektur ansehen oder sich über APIs und API-Proxys informieren.

API-Proxy bereitstellen

  1. Wählen Sie im Navigationsmenü Proxy-Entwicklung > API-Proxys aus. Klicken Sie dann auf bank-v1.

  2. Klicken Sie auf Bereitstellen.

  3. Wählen Sie unter Umgebung die Option eval aus.

  4. Geben Sie unter Dienstkonto die E-Mail-Adresse des Dienstkontos an:

    apigee-internal-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
  5. Klicken Sie auf Bereitstellen und dann auf Bestätigen.

  6. Warten Sie, bis der Bereitstellungsstatus für eval anzeigt, dass der Proxy bereitgestellt wurde.

Den API-Proxy testen

Sie können die Testumgebung in der Apigee-Organisation über den Hostnamen eval.example.com aufrufen. Der DNS-Eintrag für diesen Hostnamen wurde in Ihrem Projekt erstellt und wird der IP-Adresse der Apigee-Laufzeitinstanz zugeordnet. Dieser DNS-Eintrag wurde in einer privaten Zone erstellt. Das heißt, er ist nur im internen Netzwerk sichtbar.

Die Cloud Shell befindet sich nicht im internen Netzwerk. Daher können Cloud-Shell-Befehle diesen DNS-Eintrag nicht zuordnen. Eine virtuelle Maschine (VM) in Ihrem Projekt kann auf die DNS-Einträge der privaten Zone zugreifen. Eine virtuelle Maschine mit dem Namen apigeex-test-vm wurde automatisch erstellt. Sie können den API-Proxy mithilfe dieser virtuellen Maschine aufrufen.

  1. Öffnen Sie in Cloud Shell eine SSH-Verbindung zu Ihrer Test-VM:

    TEST_VM_ZONE=$(gcloud compute instances list --filter="name=('apigeex-test-vm')" --format "value(zone)") gcloud compute ssh apigeex-test-vm --zone=${TEST_VM_ZONE} --force-key-file-overwrite

    Mit dem ersten gcloud-Befehl wird die Zone der Test-VM abgerufen. Mit dem zweiten wird die SSH-Verbindung zur VM geöffnet.

  2. Wenn Sie zur Autorisierung aufgefordert werden, klicken Sie auf Autorisieren.

    Drücken Sie für jede in Cloud Shell gestellte Frage die Eingabetaste bzw. Zurück-Taste, um die Standardeingabe zu übernehmen.

    Ihre angemeldete Identität ist der Projektinhaber. Daher ist eine SSH-Verbindung zu dieser virtuellen Maschine zulässig.

    Ihre Cloud-Shell-Sitzung wird jetzt in der VM ausgeführt.

  3. Rufen Sie den bereitgestellten API-Proxy bank-v1 in der Umgebung eval auf:

    curl -i -k "https://eval.example.com/bank/v1/_status"

    Die Option -k weist curl an, die Überprüfung des TLS-Zertifikats zu überspringen. In diesem Lab wird in der Apigee-Laufzeit ein selbst signiertes Zertifikat anstelle eines Zertifikats verwendet, das von einer vertrauenswürdigen Zertifizierungsstelle erstellt wurde.

    Hinweis: Sie sollten die Option -k nicht verwenden, um die Zertifikatsüberprüfung für Produktionsanwendungsfälle zu umgehen.

    Der Statuscode „403 Forbidden“ wird zusammen mit einer Fehlermeldung zurückgegeben, die anzeigt, dass Ihr Client keine Berechtigung zum Abrufen der URL hat. Die Anfrage an den Backend-Dienst wurde abgelehnt, weil der Client das erforderliche Token nicht mit der Anfrage bereitgestellt hat. Der API-Proxy wird mit der richtigen Identität ausgeführt, aber Sie müssen trotzdem erzwingen, dass das OpenID-Connect-Identitätstoken mit der Anfrage gesendet wird.

  4. Kehren Sie zum Proxy bank-v1 zurück und klicken Sie auf den Tab Entwickeln.

  5. Klicken Sie im Menü auf der linken Seite für den Proxy im Abschnitt Zielendpunkte > Standard auf PreFlow.

  6. Suchen Sie diesen Code (Ihre URL ist anders):

    <HTTPTargetConnection> <Properties/> <URL>https://simplebank-rest-zce6j3rjwq-uw.a.run.app</URL> </HTTPTargetConnection> Hinweis: Wenn der Abschnitt „HTTPTargetConnection“ nicht angezeigt wird, haben Sie möglicherweise auf „PreFlow“ im Abschnitt Zielendpunkte statt im Abschnitt Proxy-Endpunkte geklickt.
  7. Fügen Sie im Abschnitt HTTPTargetConnection unter der URL einen Authentifizierungs-Abschnitt wie den folgenden ein:

    <Authentication> <GoogleIDToken> <Audience>AUDIENCE</Audience> </GoogleIDToken> </Authentication>
  8. Ersetzen Sie AUDIENCE durch den URL-Wert, der bereits im Abschnitt HTTPTargetConnection enthalten ist. Ihr Code sollte jetzt so aussehen, wobei die URL- und Zielgruppenelemente Ihre spezifische URL enthalten:

    <TargetEndpoint name="default"> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <Flows/> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <HTTPTargetConnection> <Properties/> <URL>https://simplebank-rest-zce6j3rjwq-uw.a.run.app</URL> <Authentication> <GoogleIDToken> <Audience>https://simplebank-rest-zce6j3rjwq-uw.a.run.app</Audience> </GoogleIDToken> </Authentication> </HTTPTargetConnection> </TargetEndpoint>
  9. Klicken Sie auf Speichern und dann auf Als neue Version speichern.

  10. Klicken Sie auf Bereitstellen.

  11. Verwenden Sie unter Umgebung die Option eval.

  12. Geben Sie unter Dienstkonto die E-Mail-Adresse des Dienstkontos an:

    apigee-internal-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
  13. Klicken Sie auf Bereitstellen und dann auf Bestätigen.

  14. Klicken Sie auf den Tab Übersicht und warten Sie, bis der Bereitstellungsstatus für eval anzeigt, dass die neue Version bereitgestellt wurde.

Um das Ziel zu überprüfen, klicken Sie auf Fortschritt prüfen. Den Apigee-Proxy erstellen

  1. Wenn das Zeitlimit für die SSH-Anmeldung überschritten wurde, führen Sie diesen Befehl in Cloud Shell aus, um die Verbindung wiederherzustellen:

    TEST_VM_ZONE=$(gcloud compute instances list --filter="name=('apigeex-test-vm')" --format "value(zone)") gcloud compute ssh apigeex-test-vm --zone=${TEST_VM_ZONE} --force-key-file-overwrite
  2. Führen Sie den Statusbefehl in der VM noch einmal aus:

    curl -i -k "https://eval.example.com/bank/v1/_status"

    Sie sollten nun eine Erfolgsmeldung (200) wie die folgende sehen:

    HTTP/2 200 x-powered-by: Express content-type: application/json; charset=utf-8 etag: W/"41-x4uozCo6q/yN+kzizriXxryNZvc" x-cloud-trace-context: 5c810a7faa3353bcc085473fd58805b7 date: Thu, 11 Nov 2021 22:54:35 GMT server: Google Frontend content-length: 65 x-request-id: cf109193-6d6f-49a1-b323-7f66f63c5e28 via: 1.1 google {"serviceName":"simplebank-rest","status":"API up","ver":"1.0.0"}

    Diese Antwort weist darauf hin, dass der API-Proxy den Backend-Dienst erfolgreich aufruft.

  3. Um die SSH-Sitzung zu beenden und zur Cloud Shell zurückzukehren, geben Sie den Befehl exit ein.

Aufgabe 3: Verwendung der Google Geocoding API Cloud aktivieren

In dieser Aufgabe aktivieren Sie die Geocoding API, die in Ihrem API-Proxy zum Hinzufügen von Adressinformationen zur Antwort verwendet wird, wenn ein Geldautomat vom SimpleBank-Dienst abgerufen wird.

  1. Um die Geocoding API zu aktivieren, führen Sie in Cloud Shell diesen Befehl aus:

    gcloud services enable geocoding-backend.googleapis.com

    Als Nächstes erstellen Sie einen API-Schlüssel, mit dem auf die Geocoding API zugegriffen werden kann.

  2. Um den API-Schlüssel zu erstellen, führen Sie diesen Befehl aus:

    API_KEY=$(gcloud alpha services api-keys create --project=${GOOGLE_CLOUD_PROJECT} --display-name="Geocoding API key for Apigee" --api-target=service=geocoding_backend --format "value(response.keyString)") echo "export API_KEY=${API_KEY}" >> ~/.bashrc echo "API_KEY=${API_KEY}" Hinweis: Wenn Sie eine Fehlermeldung erhalten, die darauf hinweist, dass die Projekteigenschaft auf den leeren String gesetzt ist, haben Sie die VM-SSH-Sitzung beendet und sind zu Cloud Shell zurückgekehrt.

    Mit dem gcloud-Befehl wird der API-Schlüssel erstellt, mit dem Sie Anfragen an die Geocoding API senden können. Mit dem Parameter --format wählen Sie das Feld „keyString“ in der Antwort aus und speichern es in der Shell-Variablen API_KEY. Die Variable API_KEY wird dann in der Datei .bashrc in Cloud Shell gespeichert.

Um das Ziel zu überprüfen, klicken Sie auf Fortschritt prüfen. Verwendung der Google Cloud Geocoding API aktivieren

  1. Um die Geocoding-Informationen für einen bestimmten Breiten- und Längengrad abzurufen, führen Sie diesen curl-Befehl aus:

    curl "https://maps.googleapis.com/maps/api/geocode/json?key=${API_KEY}&latlng=37.404934,-122.021411"

    Mit diesem Befehl können Sie die Geocoding API aufrufen. Dabei werden der API-Schlüssel sowie der gewünschte Breiten- und Längengrad angegeben. Die Antwort enthält ein Array mit Ergebnissen, die jeweils eine formatierte Adresse haben. In Ihrem API-Proxy verwenden Sie die formatierte Adresse des ersten Ergebnisses, um der API-Antwort eine Adresse hinzuzufügen, wenn Sie die Details für einen einzelnen Geldautomaten abrufen.

Aufgabe 4: Freigegebenen Ablauf zum Aufrufen der Geocoding API erstellen

In dieser Aufgabe erstellen Sie einen freigegebenen Ablauf zum Aufrufen der Google Geocoding API. Mit freigegebenen Abläufen können Sie Richtlinien und Ressourcen in einem einzigen Ablauf kombinieren, sodass er von mehreren API-Proxys oder anderen freigegebenen Abläufen genutzt werden kann.

Für den freigegebenen Ablauf wird dieses Muster verwendet:

Für die Schritte „Cache suchen“, „Dienst-Callout“, „Variablen extrahieren“ und „Cache füllen“ werden CACHE-TREFFER und CACHE-FEHLER angezeigt.

Die Anzahl der Geldautomaten in unserer Datenbank ist begrenzt; die Breiten- und Längengrade von Geldautomaten ändern sich nicht. Um übermäßige Aufrufe der Geocoding API zu vermeiden, wird die abgerufene Adresse im Cache gespeichert. Als Cacheschlüssel werden dabei der Breiten- und der Längengrad verwendet. Wenn die Adresse für den angegebenen Längen- und Breitengrad nicht im Cache vorhanden ist, wird die Geocoding API aufgerufen und die zurückgegebene Adresse im Cache gespeichert.

Den freigegebenen Ablauf erstellen

  1. Wählen Sie im Navigationsmenü Apigee > Proxy-Entwicklung > Freigegebene Abläufe aus.
  2. Klicken Sie auf +Erstellen.
  3. Legen Sie den Namen auf get-address-for-location fest und klicken Sie dann auf Erstellen.
  4. Klicken Sie auf den Tab Entwickeln.

LookupCache-Richtlinie hinzufügen

Mit der LookupCache-Richtlinie wird eine Adresse abgerufen, wenn sie zuvor im Cache gespeichert wurde.

  1. Klicken Sie für den freigegebenen Ablauf im Menü auf der linken Seite im Abschnitt Freigegebene Abläufe auf Standard.

  2. Klicken Sie im Bereich sharedflows/default.xml auf Richtlinienschritt hinzufügen (Symbol für „Richtlinienschritt hinzufügen“).

  3. Wählen Sie Neue Richtlinie erstellen aus.

  4. Wählen Sie unter Richtlinie auswählen die Option Traffic-Management > Cache suchen aus.

  5. Geben Sie im Abschnitt Details Folgendes ein:

    Attribut Wert
    Name LC-LookupAddress
    Anzeigename LC-LookupAddress
  6. Klicken Sie auf Hinzufügen und dann auf LC-LookupAddress.

    Die Richtlinie wird dem Ablauf hinzugefügt; die XML-Konfiguration der Richtlinie wird im Bereich unter dem Ablauf angezeigt.

  7. Überprüfen Sie, ob die LookupCache-Konfiguration im Bereich vorhanden ist, und ersetzen Sie sie durch Folgendes:

    <LookupCache continueOnError="false" enabled="true" name="LC-LookupAddress"> <CacheResource>AddressesCache</CacheResource> <Scope>Exclusive</Scope> <CacheKey> <KeyFragment ref="geocoding.latitude"/> <KeyFragment ref="geocoding.longitude"/> </CacheKey> <AssignTo>geocoding.address</AssignTo> </LookupCache>

    Die Richtlinie sucht im AddressesCache nach einem Eintrag, der mit dem angegebenen Breiten- und Längengrad übereinstimmt. Wenn ein Eintrag gefunden wird, wird der Wert der Variablen „address“ zugewiesen.

Dienst-Callout-Richtlinie hinzufügen

Mit der Dienst-Callout-Richtlinie wird die Google Geocoding API aufgerufen.

  1. Klicken Sie für den freigegebenen Ablauf im Menü auf der linken Seite im Abschnitt Freigegebene Abläufe auf Standard.

  2. Klicken Sie im Bereich sharedflows/default.xml auf Richtlinienschritt hinzufügen (Symbol für „Richtlinienschritt hinzufügen“).

  3. Wählen Sie Neue Richtlinie erstellen aus.

  4. Wählen Sie unter Richtlinie auswählen die Option Erweiterung > Dienst-Callout aus.

  5. Geben Sie im Abschnitt Details Folgendes ein:

    Attribut Wert
    Name SC-GoogleGeocode
    Anzeigename SC-GoogleGeocode
  6. Lassen Sie das Feld „HTTP-Ziel“ unverändert. Klicken Sie auf Hinzufügen und dann auf SC-GoogleGeocode.

  7. Überprüfen Sie, ob die ServiceCallout-Konfiguration im Bereich vorhanden ist, und ersetzen Sie sie durch Folgendes:

    <ServiceCallout continueOnError="false" enabled="true" name="SC-GoogleGeocode"> <Request> <Set> <QueryParams> <QueryParam name="latlng">{geocoding.latitude},{geocoding.longitude}</QueryParam> <QueryParam name="key">{geocoding.apikey}</QueryParam> </QueryParams> <Verb>GET</Verb> </Set> </Request> <Response>calloutResponse</Response> <HTTPTargetConnection> <URL>https://maps.googleapis.com/maps/api/geocode/json</URL> </HTTPTargetConnection> </ServiceCallout>

    In dieser Richtlinie wird die Geocoding API mit den Variablen geocoding.latitude, geocoding.longitude und geocoding.apikey aufgerufen. Die Antwort des API-Aufrufs wird in der Variablen calloutResponse gespeichert.

ExtractVariables-Richtlinie hinzufügen

Mit der ExtractVariables-Richtlinie wird die formatierte Adresse aus der Antwort der Google Geocoding API extrahiert.

  1. Klicken Sie für den freigegebenen Ablauf im Menü auf der linken Seite im Abschnitt Freigegebene Abläufe auf Standard.

  2. Klicken Sie im Bereich sharedflows/default.xml auf Richtlinienschritt hinzufügen (Symbol für „Richtlinienschritt hinzufügen“).

  3. Wählen Sie Neue Richtlinie erstellen aus.

  4. Wählen Sie unter Richtlinie auswählen die Option Vermittlung > Variablen extrahieren aus.

  5. Geben Sie im Abschnitt Details Folgendes ein:

    Attribut Wert
    Name EV-ExtractAddress
    Anzeigename EV-ExtractAddress
  6. Klicken Sie auf Hinzufügen und dann auf EV-ExtractAddress.

  7. Überprüfen Sie, ob die ExtractVariables-Konfiguration im Bereich vorhanden ist, und ersetzen Sie sie durch Folgendes:

    <ExtractVariables continueOnError="false" enabled="true" name="EV-ExtractAddress"> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <JSONPayload> <Variable name="address"> <JSONPath>$.results[0].formatted_address</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">calloutResponse.content</Source> <VariablePrefix>geocoding</VariablePrefix> </ExtractVariables>

    In dieser Richtlinie wird mit JSONPath die formatted_address aus dem ersten Ergebnis in der JSON-Nutzlast der calloutResponse-Nachricht extrahiert. Die Adresse wird in der Variablen geocoding.address gespeichert.

PopulateCache-Richtlinie hinzufügen

Mit der PopulateCache-Richtlinie wird die Adresse im Cache gespeichert.

  1. Klicken Sie für den freigegebenen Ablauf im Menü auf der linken Seite im Abschnitt Freigegebene Abläufe auf Standard.

  2. Klicken Sie im Bereich sharedflows/default.xml auf Richtlinienschritt hinzufügen (Symbol für „Richtlinienschritt hinzufügen“).

  3. Wählen Sie Neue Richtlinie erstellen aus.

  4. Wählen Sie unter Richtlinie auswählen die Option Traffic-Management > Cache füllen aus.

  5. Geben Sie im Abschnitt Details Folgendes ein:

    Attribut Wert
    Name PC-StoreAddress
    Anzeigename PC-StoreAddress
  6. Klicken Sie auf Hinzufügen und dann auf PC-StoreAddress.

  7. Überprüfen Sie, ob die PopulateCache-Konfiguration im Bereich vorhanden ist, und ersetzen Sie sie durch Folgendes:

    <PopulateCache continueOnError="false" enabled="true" name="PC-StoreAddress"> <CacheResource>AddressesCache</CacheResource> <Scope>Exclusive</Scope> <Source>geocoding.address</Source> <CacheKey> <KeyFragment ref="geocoding.latitude"/> <KeyFragment ref="geocoding.longitude"/> </CacheKey> <ExpirySettings> <TimeoutInSec>3600</TimeoutInSec> </ExpirySettings> </PopulateCache>

    Die Richtlinie speichert den Wert in der Variablen address im AddressesCache. Dabei werden dieselben Breiten- und Längengrad-Schlüssel-Fragmente verwendet, die von der LookupCache-Richtlinie verwendet werden, und zwar in derselben Reihenfolge. Die Einstellung ExpirySettings/TimeoutInSec gibt an, dass gespeicherte Daten 3.600 Sekunden (1 Stunde) lang im Cache gespeichert werden.

Richtlinien bedingt überspringen

Wenn die Adresse für einen bestimmten Breiten- und Längengrad im Cache gefunden wird (Cache-Treffer), sind die Richtlinien „ServiceCallout“, „ExtractVariables“ und „PopulateCache“ nicht erforderlich und sollten übersprungen werden.

  1. Klicken Sie für den freigegebenen Ablauf im Menü auf der linken Seite im Abschnitt Freigegebene Abläufe auf Standard.

    Der Bereich „Code“ enthält den Standardablauf, in dem die vier angehängten Richtlinien aufgeführt sind:

    <SharedFlow name="default"> <Step> <Name>LC-LookupAddress</Name> </Step> <Step> <Name>SC-GoogleGeocode</Name> </Step> <Step> <Name>EV-ExtractAddress</Name> </Step> <Step> <Name>PC-StoreAddress</Name> </Step> </SharedFlow>

    Jeder Schritt gibt eine Richtlinie an, die angehängt wurde. Der Name gibt den Namen der angehängten Richtlinie an. Es kann auch ein Condition-Element hinzugefügt werden, das eine boolesche Bedingung zur Bestimmung angibt, ob die Richtlinie ausgeführt werden soll.

    Sehen Sie sich das freigegebene Ablaufmuster am Anfang der Aufgabe noch einmal an. Wenn die Adressensuche erfolgreich ist, müssen der Dienst nicht aufgerufen und die Daten nicht wieder im Cache gespeichert werden. In diesem Fall sollten die Richtlinienschritte 2 bis 4 übersprungen werden.

    Mit der LookupCache-Richtlinie wird eine Variable festgelegt, die angibt, ob das Element im Cache gefunden wurde. Wenn die Variable lookupcache.{policyName}.cachehit „false“ ist, wurde das Element nicht gefunden. Die Richtlinien in den Schritten 2 bis 4 sollten nur ausgeführt werden, wenn es keinen Cache-Treffer gab.

  2. Fügen Sie für die Schritte 2 bis 4 die folgende Bedingung in das „Step“-Element ein:

    <Condition>lookupcache.LC-LookupAddress.cachehit == false</Condition>

    Nachdem Sie alles hinzugefügt haben, sollte der freigegebene Ablauf so aussehen:

    <SharedFlow name="default"> <Step> <Name>LC-LookupAddress</Name> </Step> <Step> <Condition>lookupcache.LC-LookupAddress.cachehit == false</Condition> <Name>SC-GoogleGeocode</Name> </Step> <Step> <Condition>lookupcache.LC-LookupAddress.cachehit == false</Condition> <Name>EV-ExtractAddress</Name> </Step> <Step> <Condition>lookupcache.LC-LookupAddress.cachehit == false</Condition> <Name>PC-StoreAddress</Name> </Step> </SharedFlow>
  3. Klicken Sie auf Speichern.

  4. Klicken Sie auf Bereitstellen.

  5. Verwenden Sie unter Umgebung die Option eval.

  6. Lassen Sie das Dienstkonto leer. Klicken Sie auf Bereitstellen und dann auf Bestätigen.

    Im freigegebenen Ablauf wird ein API-Schlüssel zum Aufrufen der Geocoding API verwendet. Ein Dienstkonto ist daher nicht erforderlich.

    Ein freigegebener Ablauf kann nur getestet werden, indem er über einen API-Proxy aufgerufen wird.

Um das Ziel zu überprüfen, klicken Sie auf Fortschritt prüfen. Freigegebenen Ablauf zum Aufrufen der Geocoding API erstellen

Aufgabe 5: Beim Abrufen eines einzelnen Geldautomaten die Adresse des Geldautomaten hinzufügen

In dieser Aufgabe fügen Sie dem API-Proxy eine FlowCallout-Richtlinie hinzu, um den gerade erstellten freigegebenen Ablauf aufzurufen. Wenn Sie einen bestimmten Geldautomaten abrufen, muss Ihr API-Proxy den Breiten- und Längengrad aus der Antwort des Cloud Run-Dienstes extrahieren und den freigegebenen Ablauf aufrufen, um die entsprechende Adresse abzurufen. Anschließend wird die Adresse mit einer JavaScript-Richtlinie der API-Antwort hinzugefügt.

Attributsatz für den API-Schlüssel hinzufügen

Mit einem Attributsatz können Sie nicht ablaufende Daten speichern, auf die Sie problemlos über den API-Proxy zugreifen können. Ein Attributsatzwert enthält den API-Schlüssel.

  1. Wählen Sie im Navigationsmenü auf der linken Seite Proxy-Entwicklung > API-Proxys aus.

  2. Klicken Sie auf bank-v1. Wählen Sie dann den Tab Entwickeln aus.

  3. Klicken Sie für den Proxy im Abschnitt Ressourcen im Menü auf der linken Seite auf Ressource hinzufügen (Symbol für „Ressource hinzufügen“).

  4. Wählen Sie im Drop-down-Menü Ressourcentyp die Option Attributsatz aus.

  5. Geben Sie unter Ressourcenname geocoding.properties an. Klicken Sie dann auf Hinzufügen.

  6. Fügen Sie im Bereich geocoding.properties das folgende Attribut hinzu:

    apikey=<APIKEY>
  7. Ersetzen Sie <APIKEY> durch den API_KEY, den Sie in Aufgabe 3 erstellt haben.

  8. Sie können den API_KEY in Cloud Shell mit diesem Befehl abrufen:

    echo ${API_KEY}

    Ihre Datei geocoding.properties sollte in etwa so aussehen:

    apikey=AIzaSyC8-B6nt7M240wwZtsxR2O5sb0xznuhQWc

Bedingten Ablauf erstellen

  1. Klicken Sie im Menü auf der linken Seite des Proxy im Abschnitt Proxy-Endpunkte auf Standard.

  2. Klicken Sie im Bereich proxy-endpoints/default.xml neben Proxy-Endpunkt: Standard auf Bedingten Ablauf hinzufügen (Symbol für „Bedingten Ablauf hinzufügen“).

  3. Geben Sie im Dialogfeld Bedingten Ablauf hinzufügen diese Werte an:

    Attribut Wert
    Workflow-Name GetATM
    Beschreibung Einzelnen Geldautomaten abrufen
    Bedingungstyp Pfad und Verb auswählen
    Pfad /atms/{name}
    Verb GET auswählen

    Lassen Sie das Feld Ziel-URL leer.

  4. Klicken Sie auf Hinzufügen.

    Ein API-Proxy besteht aus vielen Abläufen. Jeder Ablauf bietet einen Ort, an dem Richtlinien als Schritte angehängt werden können. Hier ist ein Diagramm eines API-Proxys:

    Ablauf von Anfragen vom Proxy-Endpunkt zum Zielendpunkt und dann die Rückgabe der Antworten

    Eine Konfiguration für einen bedingten Ablauf wird nur ausgeführt, wenn die Bedingung erfüllt ist. Für diesen bedingten Ablauf muss die Variable proxy.pathsuffix dem Format /atms/{name} entsprechen; die Variable request.verb muss GET sein.

    Sie hängen einige Richtlinien an den bedingten Ablauf GetATM an, damit sie nur für eine GET /atms/{name}-Anfrage ausgeführt werden. Die Richtlinien müssen nach dem Aufrufen des Backend-Dienstes ausgeführt werden. Daher müssen sie an einen bedingten Antwortablauf des Proxy-Endpunktsangehängt werden.

Den Breiten- und Längengrad extrahieren

  1. Klicken Sie im Ablauf Proxy-Endpunkt: Standard im Abschnitt Antwort rechts neben GetATM auf Richtlinienschritt hinzufügen (Symbol für „Richtlinienschritt hinzufügen“).

    Hinweis: Achten Sie darauf, dass Sie den Schritt auf der Antwort-Seite und nicht auf der Anfrage-Seite hinzufügen.
  2. Wählen Sie Neue Richtlinie erstellen aus.

  3. Wählen Sie unter Richtlinie auswählen die Option Vermittlung > Variablen extrahieren aus.

  4. Geben Sie im Abschnitt Details Folgendes ein:

    Attribut Wert
    Name EV-ExtractLatLng
    Anzeigename EV-ExtractLatLng
  5. Klicken Sie auf Hinzufügen und dann auf EV-ExtractLatLng.

  6. Überprüfen Sie, ob die ExtractVariables-Konfiguration im Bereich vorhanden ist, und ersetzen Sie sie durch Folgendes:

    <ExtractVariables name="EV-ExtractLatLng"> <Source>response</Source> <JSONPayload> <Variable name="latitude"> <JSONPath>$.latitude</JSONPath> </Variable> <Variable name="longitude"> <JSONPath>$.longitude</JSONPath> </Variable> </JSONPayload> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>

    Mit dieser Richtlinie werden Breitengrad und Längengrad aus der JSON-Antwort GET /atms/{name} des Backend-Dienstes extrahiert. Das Element IgnoreUnresolvedVariables ist auf „true“ gesetzt. Die Verarbeitung wird also fortgesetzt, auch wenn Breiten- und Längengrad in der Antwort nicht gefunden werden.

Den freigegebenen Ablauf aufrufen

  1. Klicken Sie im Ablauf Proxy-Endpunkt: Standard im Abschnitt Antwort rechts neben GetATM auf Richtlinienschritt hinzufügen (Symbol für „Richtlinienschritt hinzufügen“).

  2. Wählen Sie Neue Richtlinie erstellen aus.

  3. Wählen Sie unter Richtlinie auswählen die Option Erweiterung > Ablauf mit Zusatzinformationen aus.

  4. Geben Sie im Abschnitt Details Folgendes ein:

    Attribut Wert
    Name FC-GetAddress
    Anzeigename FC-GetAddress
    Freigegebener Ablauf Wählen Sie get-address-for-location aus.
    Bedingung Breitengrad != null UND Längengrad != null

    Wenn der Breiten- oder der Längengrad für einen Geldautomaten nicht abgerufen wurde, kann die Adresse nicht ermittelt werden. Der Richtlinienschritt wird dann übersprungen.

  5. Klicken Sie auf Hinzufügen und dann auf FC-GetAddress.

  6. Überprüfen Sie, ob die FlowCallout-Konfiguration im Bereich vorhanden ist, und ersetzen Sie sie durch Folgendes:

    <FlowCallout continueOnError="false" enabled="true" name="FC-GetAddress"> <Parameters> <Parameter name="geocoding.latitude">{latitude}</Parameter> <Parameter name="geocoding.longitude">{longitude}</Parameter> <Parameter name="geocoding.apikey">{propertyset.geocoding.apikey}</Parameter> </Parameters> <SharedFlowBundle>get-address-for-location</SharedFlowBundle> </FlowCallout>

    Mit dieser Richtlinie werden die Variablen „latitude“, „longitude“ und „apikey“ als Parameter für den freigegebenen Ablauf festgelegt; der freigegebene Ablauf wird aufgerufen. Im freigegebenen Ablauf wird die Variable geocoding.address festgelegt.

Die Adresse hinzufügen

  1. Klicken Sie im Ablauf Proxy-Endpunkt: Standard im Abschnitt Antwort rechts neben GetATM auf Richtlinienschritt hinzufügen (Symbol für „Richtlinienschritt hinzufügen“).

  2. Wählen Sie Neue Richtlinie erstellen aus.

  3. Wählen Sie unter Richtlinie auswählen die Option Erweiterung > JavaScript aus.

  4. Geben Sie im Abschnitt Details Folgendes ein:

    Attribut Wert
    Name JS-AddAddress
    Anzeigename JS-AddAddress
    JavaScript-Datei Neue Ressource erstellen auswählen
  5. Geben Sie im Abschnitt Ressource hinzufügen Folgendes an:

    Attribut Wert
    Quelle Neue Datei erstellen auswählen
    Ressourcenname addAddress.js
  6. Klicken Sie auf Hinzufügen. Wählen Sie dann addAddress.js aus.

  7. Geben Sie unter Bedingung Breitengrad != null UND Längengrad != null an.

  8. Klicken Sie auf Hinzufügen und dann auf JS-AddAddress.

  9. Klicken Sie für den Proxy im Abschnitt Ressourcen > jsc im Menü auf der linken Seite auf addAddress.js.

    Der Bereich „Code“ für den Code „addAddress.js“ ist leer.

  10. Fügen Sie diesen JavaScript-Code hinzu, um die Adresse in die Antwort aufzunehmen:

    // get the flow variable 'geocoding.address' var address = context.getVariable('geocoding.address'); // parse the response payload into the responsePayload object var responsePayload = JSON.parse(context.getVariable('response.content')); try { // add address to the response responsePayload.address = address; // convert the response object back into JSON context.setVariable('response.content', JSON.stringify(responsePayload)); } catch(e) { // catch any exception print('Error occurred when trying to add the address to the response.'); }

    Mit diesem Code wird die JSON-Antwortnutzlast in ein Objekt geparst. Dem Objekt wird ein Adressfeld hinzugefügt. Das Objekt wird wieder in einen JSON-String umgewandelt und dann in der Antwort gespeichert.

    Mit einem try/catch-Block wird verhindert, dass eine Ausnahme aus der JavaScript-Richtlinie ausgelöst wird. Ein Fehler wird ausgelöst, wenn eine Ausnahme nicht abgefangen wird. Dadurch wird die Verarbeitung des API-Proxys abgebrochen.

Überprüfen, ob Richtlinien bedingt übersprungen werden

  1. Klicken Sie im Menü auf der linken Seite des Proxy im Abschnitt Proxy-Endpunkte > Standard auf GetATM.

    Der Bereich „Code“ enthält den Ablauf Get ATM, in dem die drei angehängten Richtlinien mit Bedingungen für die zweite und dritte Richtlinie aufgeführt sind:

    <Flow name="GetATM"> <Description>retrieve a single ATM</Description> <Request/> <Response> <Step> <Name>EV-ExtractLatLng</Name> </Step> <Step> <Condition>latitude != null AND longitude != null</Condition> <Name>FC-GetAddress</Name> </Step> <Step> <Condition>latitude != null AND longitude != null</Condition> <Name>JS-AddAddress</Name> </Step> </Response> <Condition>(proxy.pathsuffix MatchesPath "/atms/{name}") and (request.verb = "GET")</Condition> </Flow>
  2. Klicken Sie auf Speichern und dann auf Als neue Version speichern.

  3. Klicken Sie auf Bereitstellen.

  4. Verwenden Sie unter Umgebung die Option eval.

  5. Geben Sie unter Dienstkonto die E-Mail-Adresse des Dienstkontos an:

    apigee-internal-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
  6. Klicken Sie auf Bereitstellen und dann auf Bestätigen.

  7. Klicken Sie auf den Tab Übersicht und warten Sie, bis der Bereitstellungsstatus für eval anzeigt, dass die neue Version bereitgestellt wurde.

Um das Ziel zu überprüfen, klicken Sie auf Fortschritt prüfen. Beim Abrufen eines einzelnen Geldautomaten die Adresse des Geldautomaten hinzufügen

Den aktualisierten API-Proxy testen

  1. Öffnen Sie in Cloud Shell eine SSH-Verbindung zu Ihrer Test-VM:

    TEST_VM_ZONE=$(gcloud compute instances list --filter="name=('apigeex-test-vm')" --format "value(zone)") gcloud compute ssh apigeex-test-vm --zone=${TEST_VM_ZONE} --force-key-file-overwrite
  2. Um den bank-v1-Proxy auf- und alle Geldautomaten abzurufen, verwenden Sie diesen Befehl:

    curl -i -k "https://eval.example.com/bank/v1/atms"

    Die Antwort enthält keine Adressen, da in der Anfrage nicht der GET /atms/{name}-Ablauf verwendet wird.

  3. So rufen Sie einen einzelnen Geldautomaten ab:

    curl -i -k "https://eval.example.com/bank/v1/atms/spruce-goose"

    Diese Antwort enthält jetzt die im API-Proxy hinzugefügte Adresse:

    {"longitude":-118.408207,"latitude":33.977601,"description":"","name":"spruce-goose","address":"5865 S Campus Center Dr, Los Angeles, CA 90094, USA"}

Das wars! Sie haben das Lab erfolgreich abgeschlossen.

In diesem Lab haben Sie einen Backend-Dienst in Cloud Run bereitgestellt. Sie haben einen Apigee-API-Proxy erstellt, der den Backend-Dienst weitergeleitet hat. Sie haben einen freigegebenen Ablauf erstellt, mit dem Inhalte von einem externen Dienst abgerufen und im Cache gespeichert werden. Sie haben diesen freigegebenen Ablauf von Ihrem API-Proxy aus aufgerufen und mit einem JavaScript-Code eine API-Antwort geändert.

Weitere Informationen

Anleitung zuletzt am 16. Juli 2024 aktualisiert

Lab zuletzt am 16. Juli 2024 getestet

© 2025 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.

Vorbereitung

  1. Labs erstellen ein Google Cloud-Projekt und Ressourcen für einen bestimmten Zeitraum
  2. Labs haben ein Zeitlimit und keine Pausenfunktion. Wenn Sie das Lab beenden, müssen Sie von vorne beginnen.
  3. Klicken Sie links oben auf dem Bildschirm auf Lab starten, um zu beginnen

Privates Surfen verwenden

  1. Kopieren Sie den bereitgestellten Nutzernamen und das Passwort für das Lab
  2. Klicken Sie im privaten Modus auf Konsole öffnen

In der Konsole anmelden

  1. Melden Sie sich mit Ihren Lab-Anmeldedaten an. Wenn Sie andere Anmeldedaten verwenden, kann dies zu Fehlern führen oder es fallen Kosten an.
  2. Akzeptieren Sie die Nutzungsbedingungen und überspringen Sie die Seite zur Wiederherstellung der Ressourcen
  3. Klicken Sie erst auf Lab beenden, wenn Sie das Lab abgeschlossen haben oder es neu starten möchten. Andernfalls werden Ihre bisherige Arbeit und das Projekt gelöscht.

Diese Inhalte sind derzeit nicht verfügbar

Bei Verfügbarkeit des Labs benachrichtigen wir Sie per E-Mail

Sehr gut!

Bei Verfügbarkeit kontaktieren wir Sie per E-Mail

Es ist immer nur ein Lab möglich

Bestätigen Sie, dass Sie alle vorhandenen Labs beenden und dieses Lab starten möchten

Privates Surfen für das Lab verwenden

Nutzen Sie den privaten oder Inkognitomodus, um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.