GSP845

Übersicht
Apigee ist eine Plattform zum Entwickeln und Verwalten von APIs. Mit Apigee können Sie Google Cloud-Dienste wie Pub/Sub, Cloud Logging oder andere Cloud-Dienste mit einer REST API nutzen. In diesem Lab nutzt Ihr Apigee API-Proxy mehrere Google Cloud-Dienste.
In diesem Lab verwenden Sie mehrere Google Cloud-Dienste über einen Apigee API-Proxy, um Nutzerkommentare zu bearbeiten.
Ziele
Aufgaben in diesem Lab:
- Erforderliche Google Cloud APIs aktivieren
- Dienstkonto erstellen und die richtigen Rollen zuweisen
- Google Cloud-Dienst über die Google Cloud REST API aufrufen
- Sentimentanalyse durch Aufrufen der Cloud Natural Language API durchführen
- Pub/Sub-Nachricht mit der PublishMessage-Richtlinie veröffentlichen
- Fehlermeldungen in Cloud Logging protokollieren
Einrichtung und Anforderungen
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
-
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
-
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.
-
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“.
-
Klicken Sie auf Weiter.
-
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“.
-
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.
-
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.
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.
-
Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren
.
-
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.
- (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
- 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`
- (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: Google Cloud APIs aktivieren
In dieser Aufgabe aktivieren Sie die APIs, die vom Apigee API-Proxy verwendet werden.
-
Klicken Sie in der Cloud Console im Navigationsmenü (
) auf APIs und Dienste > Bibliothek.
Auf dieser Seite können Sie die APIs aktivieren, die vom Apigee API-Proxy verwendet werden.
-
Geben Sie im Feld Nach APIs und Diensten suchen den Text Cloud Natural Language ein und drücken Sie die Eingabetaste.
Die Cloud Natural Language API bietet Informationen in natürlicher Sprache, z. B. Sentimentanalyse und Entitätserkennung. Anhand dieser API wird bestimmt, wann ein Kommentar darauf hinweist, dass ein Nutzer unzufrieden ist.
-
Klicken Sie auf Cloud Natural Language API.
Die API ist bereits aktiviert.
Mit dem gcloud-Befehl können Sie auch APIs aktivieren.
-
Führen Sie in der Cloud Shell den folgenden Befehl aus, um die erforderlichen APIs zu aktivieren:
gcloud services enable language.googleapis.com pubsub.googleapis.com logging.googleapis.com
Zusätzlich zur Cloud Natural Language API aktivieren Sie auch die Pub/Sub API und die Cloud Logging API.
Pub/Sub wird verwendet, um eine Nachricht zu einem Thema zu veröffentlichen, wenn die Natural Language API darauf hinweist, dass ein Nutzer unzufrieden ist. Sie können eine Cloud Functions-Funktion erstellen, die für jede Nachricht ausgeführt wird. Diese Funktion kontaktiert den Nutzer, um zu versuchen, das Problem zu beheben und die Kundenzufriedenheit zu steigern.
Mit Cloud Logging wird für jeden erhaltenen Kommentar ein Logeintrag erfasst. Diese Protokolle können interne API-Details enthalten, die bei der Erkennung von Problemen mit Diensten oder Anwendungen hilfreich sein können.
Aufgabe 2: Dienstkonto erstellen
In dieser Aufgabe erstellen Sie ein Dienstkonto, das vom Apigee-Proxy verwendet werden soll.
IAM-Dienstkonto erstellen
-
Rufen Sie im Navigationsmenü (
) die Option IAM und Verwaltung > Dienstkonten auf.
-
Klicken Sie auf + Dienstkonto erstellen.
-
Geben Sie für Name des Dienstkontos Folgendes an:
apigee-gc-service-access
Mit diesem Dienstkonto kann Ihr Apigee API-Proxy auf die von Ihnen angegebenen Google Cloud-Dienste zugreifen.
-
Klicken Sie auf Erstellen und fortfahren.
-
Wählen Sie unter Rolle auswählen die Option Pub/Sub > Pub/Sub-Publisher aus.
Der Apigee-API-Proxy veröffentlicht in einem Pub/Sub-Thema.
-
Klicken Sie auf + Weitere Rolle hinzufügen.
-
Wählen Sie unter Rolle auswählen die Option Logging > Logs Writer aus.
Der Apigee-API-Proxy schreibt Logeinträge in Cloud Logging.
Hinweis: Für den Aufruf der Natural Language API ist keine Rolle erforderlich.
-
Klicken Sie auf Fertig.
Das Dienstkonto wurde erstellt.
Klicken Sie auf Fortschritt prüfen.
Dienstkonto erstellen und Rollen zuweisen
Aufgabe 3: API-Proxy erstellen
In dieser Aufgabe erstellen Sie den Apigee API-Proxy. Der API-Proxy verwendet Richtlinien zum Aufrufen von Diensten. Daher ist kein Ziel erforderlich.
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ü (
) neben Apigee auf Anpinnen (
).
Apigee ist jetzt im Navigationsmenü angepinnt.
Apigee API-Proxy erstellen
-
Wählen Sie im Navigationsmenü Proxy-Entwicklung > API-Proxys aus.
-
Wenn Sie einen neuen Proxy mit dem Proxy-Assistenten erstellen möchten, klicken Sie auf Erstellen.
-
Wählen Sie unter Proxy-Vorlage die Option Allgemeine Vorlage > Kein Ziel aus.
Der Proxy verwendet keinen Backend-Dienst. Die gesamte Kommunikation mit externen Diensten erfolgt mit Richtlinien.
Hinweis: Verwenden Sie im Abschnitt OpenAPI-Spezifikationsvorlage nicht die Option Kein Ziel.
-
Geben Sie für die Proxydetails Folgendes an:
| Attribut |
Wert |
| Proxy-Name |
services-v1 |
| Basispfad |
/services/v1 |
Hinweis: Achten Sie darauf, dass Sie /services/v1 als Basispfad verwenden und nicht /services-v1.
-
Klicken Sie auf Weiter.
-
Lassen Sie die Einstellungen unter Bereitstellen (optional) unverändert und klicken Sie auf Erstellen.
Neuen bedingten Ablauf erstellen
-
Wählen Sie im Proxy-Editor den Tab Entwickeln.
-
Wählen Sie im linken Bereich Proxy-Endpunkte > Standard aus.
-
Klicken Sie über dem Bereich Antwort auf die Schaltfläche +.
-
Geben Sie im Dialogfeld Bedingten Ablauf hinzufügen die folgenden Werte an:
| Attribut |
Wert |
| Ablaufname |
postComment |
| Beschreibung |
einen Kommentar für eine bestimmte Kategorie posten |
| Bedingungstyp |
Pfad und Verb auswählen |
| Pfad |
/comments |
| Verb |
POST auswählen |
Lassen Sie das Feld Ziel-URL leer.
-
Klicken Sie auf Hinzufügen.
API bereitstellen
-
Klicken Sie auf Speichern. Wenn Sie darüber benachrichtigt werden, dass der Proxy als neue Version gespeichert wurde, klicken Sie auf Als neue Version speichern.
-
Klicken Sie auf Bereitstellen.
-
Wählen Sie unter Umgebung die Option eval aus.
-
Geben Sie unter Dienstkonto die E-Mail-Adresse des Dienstkontos an:
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Klicken Sie auf Bereitstellen und dann auf Bestätigen.
Warten Sie, bis die Bereitstellung abgeschlossen ist.
Klicken Sie auf Fortschritt prüfen.
API-Proxy erstellen
Aufgabe 4: Die Natural Language API aufrufen
In dieser Aufgabe fügen Sie eine ServiceCallout-Richtlinie hinzu, um die Natural Language API aufzurufen und das Sentiment eines eingehenden Kommentars herauszufinden.
Eingabeparameter extrahieren
Für die Ressource POST /comments wird eine JSON-Nutzlast mit zwei Parametern verwendet: comment (der von einem Nutzer eingegebene Freitext) und category (Typ des Kommentars). Die Eingaben werden mit einer ExtractVariables-Richtlinie extrahiert.
-
Klicken Sie unter Ablauf im Bereich Anfrage neben dem Ablauf postComment auf +.
-
Klicken Sie im Dialogfeld Richtlinienschritt hinzufügen auf Neue Richtlinie erstellen.
-
Wählen Sie im Drop-down-Menü Richtlinie auswählen im Bereich Vermittlung den Richtlinientyp Variablen extrahieren aus.
-
Geben Sie Folgendes an:
| Attribut |
Wert |
| Anzeigename |
EV-ExtractRequest |
| Name |
EV-ExtractRequest |
-
Klicken Sie auf Hinzufügen.
-
Klicken Sie auf die Richtlinie EV-ExtractRequest und ersetzen Sie die ExtractVariables-XML-Konfiguration durch folgenden Codeblock:
<ExtractVariables name="EV-ExtractRequest">
<Source>request</Source>
<JSONPayload>
<Variable name="comment">
<JSONPath>$.comment</JSONPath>
</Variable>
<Variable name="category">
<JSONPath>$.category</JSONPath>
</Variable>
</JSONPayload>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</ExtractVariables>
Mit dieser Richtlinie werden comment und category aus der JSON-Anfrage POST /comments extrahiert. Das Element IgnoreUnresolvedVariables ist auf „false“ gesetzt. Daher wird ein Fehler ausgegeben, wenn diese beiden Eingaben nicht vorhanden sind.
Hinweis: In einer Produktions-API ist es sinnvoll, eine Fehlerbehandlung hinzuzufügen und den Großteil der Fehler, die von Richtlinien stammen, umzuformulieren. In diesem Lab wird keine Fehlerbehandlung hinzugefügt.
Die Natural Language API aufrufen
Eine ServiceCallout-Richtlinie wird verwendet, um die Natural Language API aufzurufen und das Sentiment des Kommentars zurückzugeben.
-
Klicken Sie auf den Ablauf postComment, wenn er nicht hervorgehoben ist, und dann im Bereich Antwort neben dem Ablauf postComment auf +.
Die Antwort des Natural Language API-Aufrufs wird an den Aufrufer zurückgegeben.
-
Klicken Sie im Dialogfeld Richtlinienschritt hinzufügen auf Neue Richtlinie erstellen.
-
Wählen Sie im Drop-down-Menü Richtlinie auswählen im Bereich unter Erweiterung den Richtlinientyp Service Callout aus.
-
Geben Sie Folgendes an:
| Attribut |
Wert |
| Anzeigename |
SC-NaturalLanguage |
| Name |
SC-NaturalLanguage |
-
Klicken Sie auf Hinzufügen.
Der Ablauf sollte in etwa so aussehen:

-
Klicken Sie auf die Richtlinie SC-NaturalLanguage.
-
Ersetzen Sie die ServiceCallout-XML-Konfiguration durch folgenden Codeblock:
<ServiceCallout name="SC-NaturalLanguage">
<Request clearPayload="true">
<Set>
<Verb>POST</Verb>
<Payload contentType="application/json">{
"document": {
"content": "{comment}",
"type": "PLAIN_TEXT"
}
}
</Payload>
</Set>
</Request>
<Response>response</Response>
<HTTPTargetConnection>
<Properties/>
<URL>https://language.googleapis.com/v1/documents:analyzeSentiment</URL>
<Authentication>
<GoogleAccessToken>
<Scopes>
<Scope>https://www.googleapis.com/auth/cloud-language</Scope>
</Scopes>
</GoogleAccessToken>
</Authentication>
</HTTPTargetConnection>
</ServiceCallout>
Im Abschnitt Request der ServiceCallout-Richtlinie wird die an den Dienst gesendete POST-Anfrage angegeben. Das Format dieser Nutzlast ist für die Natural Language API spezifisch.
Das Response-Element gibt an, dass die Natural Language API-Antwort in der response-Meldung gespeichert wird.
Im Abschnitt HTTPTargetConnection wird die Dienst-URL angegeben, die aufgerufen wird. Die URL sowie die Anfrage- und Antwortformate finden Sie in der Natural Language API-Referenz.
Im Abschnitt Authentication wird die Authentifizierung für die Google Cloud API angegeben. Der Callout-Anfrage wird automatisch ein Google-OAuth-Zugriffstoken hinzugefügt. Scope gibt an, dass das Zugriffstoken für den Zugriff auf die Natural Language API verwendet wird.
-
Klicken Sie auf Speichern.
Prüfen, ob die Laufzeitinstanz verfügbar ist
-
Fügen Sie in der Cloud Shell die folgenden 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 verwendet die Apigee API, um festzustellen, wann die Apigee-Laufzeitinstanz erstellt und die Testumgebung angehängt wurde.
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 Organisation bereit ist, können Sie sich die KI-Produkte und ‑Dienste in Google Cloud ansehen.
API bereitstellen
-
Kehren Sie zum API-Proxy services-v1 zurück und klicken Sie auf den Tab Entwickeln.
-
Klicken Sie auf Bereitstellen.
-
Wählen Sie unter Umgebung die Option eval aus.
-
Geben Sie unter Dienstkonto die E-Mail-Adresse des Dienstkontos an:
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Klicken Sie auf Bereitstellen und Bestätigen.
-
Klicken Sie auf den Tab Übersicht und warten Sie, bis der Bereitstellungsstatus für eval anzeigt, dass der Proxy bereitgestellt wurde.
Klicken Sie auf Fortschritt prüfen.
Die Natural Language API aufrufen
API testen
Die Testumgebung in der Apigee-Organisation kann über den Hostnamen eval.example.com aufgerufen werden. 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, d. h. 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.
-
Ö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
Wenn Sie gefragt werden, ob Sie fortfahren möchten (Do you want to continue (Y/N)?), geben Sie Y ein.
-
Klicken Sie für jede Frage, die in Cloud Shell gestellt wird, auf die Eingabetaste bzw. Return-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.
-
Rufen Sie den bereitgestellten API-Proxy services-v1 in der Umgebung eval auf:
curl -i -k -X POST -H "Content-Type: application/json" 'https://eval.example.com/services/v1/comments' -d '{"comment":"Jane was nice enough to return to her car to get me extra hot sauce. Thanks Jane!", "category":"delivery-reviews"}'
Die Antwort der Natural Language API sieht in etwa so aus:
{
"documentSentiment": {
"magnitude": 1.8,
"score": 0.9
},
"language": "en",
"sentences": [
{
"documentSentiment": {
"magnitude": 1.8,
"score": 0.9
},
"language": "en",
"sentences": [
{
"text": {
"content": "Jane was nice enough to return to her car to get me extra hot sauce.",
"beginOffset": -1
},
"sentiment": {
"magnitude": 0.9,
"score": 0.9
}
},
{
"text": {
"content": "Thanks Jane!",
"beginOffset": -1
},
"sentiment": {
"magnitude": 0.9,
"score": 0.9
}
}
]
}
]
}
Der documentSentiment-Wert reicht von 1 bis -1, wobei 1 extrem positiv und -1 extrem negativ ist. In diesem Fall ist das Sentiment sehr positiv.
-
Rufen Sie den API-Proxy noch einmal auf:
curl -i -k -X POST -H "Content-Type: application/json" 'https://eval.example.com/services/v1/comments' -d '{"comment":"The driver never arrived with my dinner. :(", "category":"delivery-reviews"}'
Das Sentiment dieses Kommentars ist sehr negativ.
-
Geben Sie den Befehl exit ein, um die SSH-Sitzung zu beenden und zur Cloud Shell zurückzukehren.
Aufgabe 5: Nachricht über negative Kommentare in Pub/Sub veröffentlichen
In dieser Aufgabe fügen Sie eine PublishMessage-Richtlinie hinzu, um eine Pub/Sub-Nachricht in einem Pub/Sub-Thema zu veröffentlichen, wenn ein negativer Kommentar eingeht. Ein Abonnent des Themas könnte einen Workflow ausführen, mit dem versucht wird, das Problem für den Verfasser des Kommentars zu lösen.
Pub/Sub-Thema für Lieferbewertungen erstellen
Für jede Kategorie wird ein Pub/Sub-Thema erstellt. Ein Thema muss erstellt werden, bevor eine Nachricht für das Thema veröffentlicht werden kann.
-
Rufen Sie im Navigationsmenü (
) die Option Pub/Sub > Themen auf.
-
Klicken Sie auf + Thema erstellen.
-
Geben Sie als Themen-ID apigee-services-v1-delivery-reviews ein und klicken Sie dann auf Erstellen.
Ein neues Thema und ein neues Abo werden erstellt.
Bewertung aus der Natural Language API-Antwort extrahieren
-
Kehren Sie in der Cloud Console zu Apigee zurück.
-
Wählen Sie im linken Navigationsmenü Proxy-Entwicklung > API-Proxys aus und klicken Sie dann auf services-v1.
-
Öffnen Sie den Tab Entwickeln. Klicken Sie auf den Ablauf postComment.
-
Klicken Sie unter Flow im Bereich Antwort neben dem Flow postComment auf +.
-
Klicken Sie im Dialogfeld Richtlinienschritt hinzufügen auf Neue Richtlinie erstellen.
-
Wählen Sie im Drop-down-Menü Richtlinie auswählen im Bereich Vermittlung den Richtlinientyp Variablen extrahieren aus.
-
Geben Sie Folgendes an:
| Attribut |
Wert |
| Anzeigename |
EV-ExtractSentiment |
| Name |
EV-ExtractSentiment |
-
Klicken Sie auf Hinzufügen und dann auf die Richtlinie EV-ExtractSentiment.
-
Ersetzen Sie die ExtractVariables-XML-Konfiguration durch folgenden Codeblock:
<ExtractVariables name="EV-ExtractSentiment">
<Source>response</Source>
<JSONPayload>
<Variable name="sentimentScore">
<JSONPath>$.documentSentiment.score</JSONPath>
</Variable>
</JSONPayload>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>
PublishMessage-Richtlinie hinzufügen
-
Klicken Sie auf den Ablauf postComment und dann unter dem Ablauf Antwort auf die Schaltfläche +.
-
Wählen Sie im Abschnitt Erweiterung den Richtlinientyp Nachricht veröffentlichen aus.
-
Geben Sie Folgendes an:
| Attribut |
Wert |
| Anzeigename |
PM-PublishScore |
| Name |
PM-PublishScore |
-
Klicken Sie auf Hinzufügen und dann auf die Richtlinie PM-PublishScore.
-
Ersetzen Sie die PublishMessage-XML-Konfiguration durch folgenden Codeblock:
<PublishMessage continueOnError="true" name="PM-PublishScore">
<Source>{response.content}</Source>
<CloudPubSub>
<Topic>projects/{organization.name}/topics/apigee-services-v1-{category}</Topic>
</CloudPubSub>
</PublishMessage>
-
Klicken Sie auf Speichern. Wenn Sie darüber benachrichtigt werden, dass der Proxy als neue Version gespeichert wurde, klicken Sie auf Als neue Version speichern.
response.content ist die Nutzlast, die von der Natural Language API zurückgegeben wurde und als Pub/Sub-Nachricht übernommen wird. Die category aus der Anfrage wird verwendet, um den Namen des Pub/Sub-Themas zu erstellen.
Falsche Kategorien resultieren in einem Themennamen, der nicht vorhanden ist. In einer Produktions-API ist es sinnvoll, die angegebenen Kategorien zu überprüfen, bevor Sie eine Pub/Sub-Nachricht veröffentlichen. In diesem Fall ist continueOnError für die Richtlinie auf „true“ gesetzt. Wenn das Thema also nicht vorhanden ist, wird kein Fehler ausgegeben.
Bedingte Prüfung für die PublishMessage-Richtlinie hinzufügen
Mit Bedingungen können Richtlinien in einem Ablauf auch übersprungen werden.
-
Klicken Sie im Navigationsmenü des Proxys unter Proxy-Endpunkte auf Standard.
Die ProxyEndpoint-Konfiguration wird angezeigt.
-
Wenn Sie dem Schritt PM-PublishScore eine Bedingung hinzufügen möchten, ersetzen Sie diesen Codeblock:
<Step>
<Name>PM-PublishScore</Name>
</Step>
durch diesen Codeblock:
<Step>
<Name>PM-PublishScore</Name>
<Condition>sentimentScore LesserThan 0.0</Condition>
</Step>
Die PublishMessage-Richtlinie wird nur ausgeführt, wenn der Sentiment-Score unter 0 liegt.
API bereitstellen
-
Klicken Sie auf Speichern. Wenn Sie darüber benachrichtigt werden, dass der Proxy als neue Version gespeichert wurde, klicken Sie auf Als neue Version speichern.
-
Klicken Sie auf Bereitstellen.
-
Wählen Sie unter Umgebung die Option eval aus.
-
Geben Sie unter Dienstkonto die E-Mail-Adresse des Dienstkontos an:
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Klicken Sie auf Bereitstellen und Bestätigen.
Klicken Sie auf Fortschritt prüfen.
Nachricht über negative Kommentare in Pub/Sub veröffentlichen
API testen
-
Ö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
Wenn Sie zur Autorisierung aufgefordert werden, klicken Sie auf Autorisieren.
-
Rufen Sie den bereitgestellten API-Proxy services-v1 in der Umgebung eval auf:
curl -i -k -X POST -H "Content-Type: application/json" 'https://eval.example.com/services/v1/comments' -d '{"comment":"The driver never arrived with my dinner. :(", "category":"delivery-reviews"}'
-
Rufen Sie im Navigationsmenü (
) die Option Pub/Sub > Themen auf.
-
Klicken Sie auf das Thema apigee-services-v1-delivery-reviews.
-
Scrollen Sie nach unten und klicken Sie auf das Abo apigee-services-v1-delivery-reviews-sub.
-
Klicken Sie auf den Tab Nachrichten und dann auf Pull.
-
Klicken Sie in der Nachricht auf die Drop-down-Schaltfläche Gesamten Zeileninhalt ansehen.
Sie sehen die JSON-Nutzlast, die für alle Kommentare mit negativem Sentiment gesendet wurde.
Aufgabe 6: MessageLogging-Richtlinie hinzufügen
In dieser Aufgabe fügen Sie eine MessageLogging-Richtlinie hinzu, um eine Nachricht in Cloud Logging zu protokollieren.
PostClientFlow erstellen
Ein ProxyEndpoint hat einen optionalen Ablauf mit dem Namen PostClientFlow. Richtlinien, die mit diesem Ablauf verknüpft sind, werden nach Absenden der Antwort an den Aufrufer ausgeführt. Dies kann der ideale Punkt für das Meldungs-Logging sein, weil es die Latenz der Anfrage hier nicht mehr erhöht.
-
Kehren Sie zum Tab Apigee zurück und rufen Sie wieder die Seite „Entwickeln“ für services-v1 auf.
-
Klicken Sie im Navigationsmenü des Proxys unter Proxy-Endpunkte auf Standard.
Die ProxyEndpoint-Konfiguration wird angezeigt.
-
Fügen Sie direkt über dem Abschnitt HTTPProxyConnection die folgende Zeile ein:
<PostClientFlow/>
Der untere Teil Ihres ProxyEndpoint-Codes sollte dann in etwa so aussehen:
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
<PostClientFlow/>
<HTTPProxyConnection>
<BasePath>/services/v1</BasePath>
</HTTPProxyConnection>
<RouteRule name="noroute"/>
</ProxyEndpoint>
Dadurch wird dem ProxyEndpoint ein leerer PostClientFlow hinzugefügt.
MessageLogging-Richtlinie hinzufügen
-
Klicken Sie im Navigationsmenü des Proxys unter Proxy-Endpunkte auf PostClientFlow und dann unter dem Ablauf Antwort auf die Schaltfläche +.
-
Klicken Sie im Dialogfeld Richtlinienschritt hinzufügen auf Neue Richtlinie erstellen.
-
Wählen Sie im Drop-down-Menü Richtlinie auswählen im Bereich Erweiterung den Richtlinientyp Message-Logging aus.
-
Geben Sie Folgendes an:
| Attribut |
Wert |
| Anzeigename |
ML-LogToCloudLogging |
| Name |
ML-LogToCloudLogging |
-
Klicken Sie auf Hinzufügen und dann auf die Richtlinie ML-LogToCloudLogging.
-
Ersetzen Sie die PublishMessage-XML-Konfiguration durch folgenden Codeblock:
<MessageLogging name="ML-LogToCloudLogging">
<CloudLogging>
<LogName>projects/{organization.name}/logs/apiproxy-{apiproxy.name}</LogName>
<Message contentType="application/json">{
"messageid": "{messageid}",
"environment": "{environment.name}",
"apiProxy": "{apiproxy.name}",
"proxyRevision": "{apiproxy.revision}",
"uri": "{request.uri}",
"statusCode": "{response.status.code}",
"category": "{category}",
"score": "{sentimentScore}",
"publishFailed": "{publishmessage.failed}"
}</Message>
<Labels>
<Label>
<Key>proxyName</Key>
<Value>services-v1</Value>
</Label>
</Labels>
</CloudLogging>
</MessageLogging>
Im Abschnitt CloudLogging wird angegeben, welche Informationen in Cloud Logging protokolliert werden sollen. In der Richtlinie wird der Name des Proxys als Teil von LogName verwendet, sodass er in Cloud Logging leicht zu finden ist.
Die Nachricht in dieser Richtlinie ist eine JSON-Nachricht, aber in Ihren Logs kann jede Art von Textnachricht verwendet werden. Die Inhalte Ihrer Logs sollten normalerweise Proxy-Ablaufvariablen enthalten, die Ihnen bei der Fehlerbehebung helfen. Die Variable publishmessage.failed ist beispielsweise „true“, wenn die Pub/Sub-Nachricht nicht gesendet wurde.
Dem Logeintrag können auch Labels hinzugefügt werden, um die Nachrichteninhalte zu kategorisieren.
API bereitstellen
-
Klicken Sie auf Speichern. Wenn Sie darüber benachrichtigt werden, dass der Proxy als neue Version gespeichert wurde, klicken Sie auf Als neue Version speichern.
-
Klicken Sie auf Bereitstellen.
-
Wählen Sie unter Umgebung die Option eval aus.
-
Geben Sie unter Dienstkonto die E-Mail-Adresse des Dienstkontos an:
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Klicken Sie auf Bereitstellen und Bestätigen.
Warten Sie, bis die Bereitstellung abgeschlossen ist.
Klicken Sie auf Fortschritt prüfen.
MessageLogging-Richtlinie hinzufügen
API testen
-
Wenn Ihre SSH-Verbindung in Cloud Shell geschlossen wurde, öffnen Sie die 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
Wenn Sie zur Autorisierung aufgefordert werden, klicken Sie auf Autorisieren.
-
Rufen Sie den bereitgestellten API-Proxy services-v1 in der Umgebung eval auf:
curl -i -k -X POST -H "Content-Type: application/json" 'https://eval.example.com/services/v1/comments' -d '{"comment":"The driver never arrived with my dinner. :(", "category":"invalid-category"}'
Für die angegebene Kategorie (invalid-category) gibt es kein entsprechendes Pub/Sub-Thema.
-
Rufen Sie im Navigationsmenü (
) die Option Logging > Log-Explorer auf.
-
Geben Sie im Feld Abfrage die folgende Abfrage ein:
"invalid-category"
-
Klicken Sie auf Abfrage ausführen.
-
Maximieren Sie den Logeintrag im Bereich Abfrageergebnisse und maximieren Sie dann die jsonPayload.
Im maximierten Logeintrag werden die protokollierte JSON-Nachricht und andere Metadaten angezeigt. Die jsonPayload sollte in etwa so aussehen:
{
"apiProxy": "services-v1",
"category": "invalid-category",
"environment": "eval",
"messageid": "32c1eda7-f661-98f4-8d66-3c1c158dc620",
"proxyRevision": "4",
"publishFailed": "true",
"score": "-0.8",
"statusCode": "200",
"uri": "/services/v1/comments"
}
publishFailed ist „true“, weil für diese Kategorie kein Thema erstellt wurde. Gut konzipierte Logs können die Suche nach Problemen in Ihren API-Proxys und Backend-Diensten erleichtern.
Glückwunsch!
In diesem Lab haben Sie Google Cloud APIs aktiviert und ein Dienstkonto erstellt. Sie haben die Cloud Natural Language API mit einer ServiceCallout-Richtlinie aufgerufen und dabei die Dienstkontoauthentifizierung von Apigee genutzt. Sie haben die PublishMessage-Richtlinie verwendet, um eine Nachricht in einem Pub/Sub-Thema zu veröffentlichen. Schließlich haben Sie die MessageLogging-Richtlinie verwendet, um eine Nachricht in Cloud Logging zu protokollieren.
Weitere Informationen
Anleitung zuletzt am 8. August 2025 aktualisiert
Anleitung zuletzt am 8. August 2025 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.