GSP845

Présentation
Apigee est une plate-forme de développement et de gestion des API. Apigee peut vous aider à utiliser les services Google Cloud tels que Pub/Sub, Cloud Logging ou tout autre service cloud fournissant une API REST. Dans cet atelier, votre proxy d'API Apigee exploite plusieurs services Google Cloud.
Dans cet atelier, vous allez utiliser plusieurs services Google Cloud à partir d'un proxy d'API Apigee pour gérer les commentaires des utilisateurs.
Objectifs
Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :
- Activer les API Google Cloud requises
- Créer un compte de service et appliquer les rôles appropriés
- Appeler un service Google Cloud à l'aide de l'API REST Google Cloud
- Effectuer une analyse des sentiments en appelant l'API Cloud Natural Language
- Publier un message Pub/Sub à l'aide de la règle PublishMessage
- Consigner les messages d'erreur dans Cloud Logging
Préparation
Avant de cliquer sur le bouton "Démarrer l'atelier"
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
- Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
- Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.
Démarrer l'atelier et se connecter à la console Google Cloud
-
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, une boîte de dialogue s'affiche pour vous permettre de sélectionner un mode de paiement.
Sur la gauche, vous trouverez le panneau "Détails concernant l'atelier", qui contient les éléments suivants :
- Le bouton "Ouvrir la console Google Cloud"
- Le temps restant
- Les identifiants temporaires que vous devez utiliser pour cet atelier
- Des informations complémentaires vous permettant d'effectuer l'atelier
-
Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).
L'atelier lance les ressources, puis ouvre la page "Se connecter" dans un nouvel onglet.
Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.
Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
-
Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.
{{{user_0.username | "Username"}}}
Vous trouverez également le nom d'utilisateur dans le panneau "Détails concernant l'atelier".
-
Cliquez sur Suivant.
-
Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.
{{{user_0.password | "Password"}}}
Vous trouverez également le mot de passe dans le panneau "Détails concernant l'atelier".
-
Cliquez sur Suivant.
Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud.
Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
-
Accédez aux pages suivantes :
- Acceptez les conditions d'utilisation.
- N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
- Ne vous inscrivez pas à des essais sans frais.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Remarque : Pour accéder aux produits et services Google Cloud, cliquez sur le menu de navigation ou saisissez le nom du service ou du produit dans le champ Recherche.
Activer Cloud Shell
Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.
-
Cliquez sur Activer Cloud Shell
en haut de la console Google Cloud.
-
Passez les fenêtres suivantes :
- Accédez à la fenêtre d'informations de Cloud Shell.
- Autorisez Cloud Shell à utiliser vos identifiants pour effectuer des appels d'API Google Cloud.
Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET : . Le résultat contient une ligne qui déclare l'ID_PROJET pour cette session :
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.
- (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
- Cliquez sur Autoriser.
Résultat :
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
Tâche 1 : Activer les API Google Cloud
Dans cette tâche, vous allez activer les API qui seront utilisées par le proxy d'API Apigee.
-
Dans la console Cloud, accédez au menu de navigation (
), puis à API et services > Bibliothèque.
Cette page vous permet d'activer les API qui seront utilisées par le proxy d'API Apigee.
-
Dans la zone Rechercher des API et des services, saisissez Cloud Natural Language, puis appuyez sur Entrée.
L'API Cloud Natural Language fournit des insights sur le langage naturel, comme l'analyse des sentiments et la reconnaissance d'entités. Cette API servira à déterminer quand un commentaire indique qu'un utilisateur n'est pas satisfait.
-
Cliquez sur API Cloud Natural Language.
L'API est déjà activée.
La commande gcloud peut également être utilisée pour activer les API.
-
Dans Cloud Shell, exécutez la commande suivante pour activer les API requises :
gcloud services enable language.googleapis.com pubsub.googleapis.com logging.googleapis.com
En plus de l'API Cloud Natural Language, vous activez également l'API Pub/Sub et l'API Cloud Logging.
Pub/Sub sera utilisé pour publier un message dans un sujet lorsque l'API Natural Language indiquera qu'un utilisateur n'est pas satisfait. Vous pouvez choisir de créer une fonction Cloud qui s'exécute pour chaque message, afin de contacter l'utilisateur pour tenter de résoudre le problème et d'améliorer la satisfaction client.
Cloud Logging sera utilisé pour capturer une entrée de journal pour chaque commentaire reçu. Ces journaux peuvent inclure des informations internes sur les API qui peuvent aider à détecter les problèmes liés aux services ou aux applications.
Tâche 2 : Créer un compte de service
Dans cette tâche, vous allez créer un compte de service qui sera utilisé par le proxy Apigee.
Créer le compte de service IAM
-
Dans le menu de navigation (
), accédez à IAM et administration > Comptes de service.
-
Cliquez sur + Créer un compte de service.
-
Dans le champ Nom du compte de service, spécifiez les paramètres suivants :
apigee-gc-service-access
Ce compte de service permettra à votre proxy d'API Apigee d'accéder aux services Google Cloud que vous spécifiez.
-
Cliquez sur Créer et continuer.
-
Dans le champ Sélectionner un rôle, sélectionnez Pub/Sub > Diffuseur Pub/Sub.
Le proxy d'API Apigee publiera dans un sujet Pub/Sub.
-
Cliquez sur + Ajouter un autre rôle.
-
Pour Sélectionner un rôle, sélectionnez Journalisation > Rédacteur de journaux.
Le proxy d'API Apigee écrira des messages de journal dans Cloud Logging.
Remarque : Aucun rôle n'est nécessaire pour appeler l'API Natural Language.
-
Cliquez sur OK.
Le compte de service a été créé.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créez le compte de service et attribuer des rôles
Tâche 3 : Créer un proxy d'API
Dans cette tâche, vous allez créer le proxy d'API Apigee. Le proxy d'API utilisera des règles pour appeler des services. Aucune cible ne sera donc requise.
Ouvrir la console Apigee
Pour ouvrir la console Apigee :
- Dans la console Google Cloud, dans le champ Rechercher, saisissez
Apigee, puis cliquez sur Apigee API Management dans les résultats de recherche.
La console Apigee s'ouvre. La page de destination propose des liens rapides vers des emplacements couramment utilisés.
- Dans le menu de navigation (
), à côté de Apigee, cliquez sur Épingler (
).
Apigee est désormais épinglé au menu de navigation.
Créer le proxy d'API Apigee
-
Dans le menu de navigation, sélectionnez Développement de proxys > Proxys d'API.
-
Pour créer un proxy à l'aide de l'assistant de proxy, cliquez sur Créer.
-
Pour le modèle de proxy, sélectionnez General template > No target (Modèle général > Aucune cible).
Le proxy n'utilisera pas de service de backend. Toute communication avec des services externes se fera à l'aide de règles.
Remarque : N'utilisez pas l'option No target (Aucune cible) dans la section OpenAPI spec template (Modèle de spécification OpenAPI).
-
Spécifiez les informations suivantes pour les détails du proxy :
| Propriété |
Valeur |
| Nom du proxy |
services-v1 |
| Chemin de base |
/services/v1 |
Remarque : Vérifiez que vous utilisez /services/v1 comme chemin de base, et non /services-v1.
-
Cliquez sur Suivant.
-
Conservez les paramètres par défaut de la section Deploy (optional) (Déployer (facultatif)), puis cliquez sur Create (Créer).
Créer un flux conditionnel
-
Cliquez sur l'onglet Develop (Développer) dans l'éditeur de proxy.
-
Sélectionnez Proxy endpoints > default (Points de terminaison du proxy > Par défaut) dans le volet de gauche.
-
Cliquez sur le bouton + au-dessus du volet Response (Réponse).
-
Dans la boîte de dialogue Add Conditional Flow (Ajouter un flux conditionnel), saisissez les valeurs suivantes :
| Propriété |
Valeur |
| Flow Name (Nom du flux) |
postComment |
| Description |
publier un commentaire pour une catégorie spécifique |
| Condition Type (Type de condition) |
sélectionnez Path and Verb (Chemin et verbe). |
| Path (Chemin) |
/comments |
| Verb (Verbe) |
Sélectionnez POST
|
Laissez le champ Target URL (URL cible) vide.
-
Cliquez sur Add (Ajouter).
Déployer l'API
-
Cliquez sur Enregistrer. Si vous recevez une notification indiquant que le proxy a été enregistré en tant que nouvelle révision, cliquez sur Enregistrer en tant que nouvelle révision.
-
Cliquez sur Déployer.
-
Pour Environnement, sélectionnez eval.
-
Pour Compte de service, spécifiez l'adresse e-mail du compte de service :
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Cliquez sur Déployer, puis sur Confirmer.
Attendez la fin du déploiement.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créez le proxy d'API
Tâche 4 : Appeler l'API Natural Language
Dans cette tâche, vous allez ajouter une règle ServiceCallout pour appeler l'API Natural Language et déterminer le sentiment d'un commentaire entrant.
Extraire les paramètres d'entrée
La ressource POST /comments utilisera une charge utile JSON avec deux paramètres : comment (le texte libre saisi par un utilisateur) et category (qui spécifie le type de commentaire). Une règle ExtractVariables extraira les entrées.
-
Dans le volet Flow (Flux), cliquez sur + à côté du flux postComment dans le volet Request (Requête).
-
Dans la boîte de dialogue Add policy step (Ajouter une étape de règle), cliquez sur Create new policy (Créer une règle).
-
Dans le menu déroulant Select Policy (Sélectionner une règle), sélectionnez le type de règle Extract Variables (Extraire les variables) dans la section Mediation (Médiation).
-
Renseignez les champs suivants :
| Propriété |
Valeur |
| Display Name (Nom à afficher) |
EV-ExtractRequest |
| Name (Nom) |
EV-ExtractRequest |
-
Cliquez sur Add (Ajouter).
-
Cliquez sur la règle EV-ExtractRequest et remplacez la configuration XML ExtractVariables par :
<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>
Cette règle extrait le commentaire et la catégorie de la requête JSON POST /comments. L'élément IgnoreUnresolvedVariables est défini sur "false", ce qui entraîne la génération d'une erreur si ces deux entrées ne sont pas spécifiées.
Remarque : Dans une API de production, nous vous conseillons d'ajouter la gestion des erreurs pour réécrire la plupart des erreurs provenant des règles. Dans cet atelier, la gestion des erreurs ne sera pas ajoutée.
Appeler l'API Natural Language
Une règle ServiceCallout sera utilisée pour appeler l'API Natural Language afin d'obtenir le sentiment du commentaire.
-
Cliquez sur le flux postComment s'il n'est pas mis en surbrillance, puis cliquez sur le + à côté du flux postComment dans le volet Response (Réponse).
La réponse de l'appel de l'API Natural Language sera renvoyée à l'appelant.
-
Dans la boîte de dialogue Add policy step (Ajouter une étape de règle), cliquez sur Create new policy (Créer une règle).
-
Dans le menu déroulant Select Policy (Sélectionner une règle), sélectionnez le type de règle Service Callout (Appel de service) dans la section Extension.
-
Renseignez les champs suivants :
| Propriété |
Valeur |
| Display Name (Nom à afficher) |
SC-NaturalLanguage |
| Name (Nom) |
SC-NaturalLanguage |
-
Cliquez sur Add (Ajouter).
Le flux devrait ressembler à ceci :

-
Cliquez sur la règle SC-NaturalLanguage.
-
Remplacez la configuration XML ServiceCallout par :
<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>
La section Request (Requête) de la règle ServiceCallout spécifie la requête POSTée au service. Le format de cette charge utile est spécifique à l'API Natural Language.
L'élément Response (Réponse) indique que la réponse de l'API Natural Language sera stockée dans le message response.
La section HTTPTargetConnection spécifie l'URL du service appelé. L'URL, ainsi que les formats de requête et de réponse, sont disponibles dans la documentation de référence de l'API Natural Language.
La section Authentication (Authentification) spécifie l'authentification pour l'API Google Cloud. Un jeton d'accès Google OAuth sera automatiquement ajouté à la demande d'appel. La section Scope (Champ d'application) indique que le jeton d'accès sera utilisé pour fournir l'accès à l'API Natural Language.
-
Cliquez sur Enregistrer.
Vérifier que l'instance d'exécution est disponible
-
Dans Cloud Shell, collez et exécutez l'ensemble de commandes suivant :
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***";
Cette série de commandes utilise l'API Apigee pour déterminer quand l'instance d'exécution a été créée et l'environnement d'évaluation associé.
Attendez que l'instance soit prête.
Lorsque le texte ***ORG IS READY TO USE*** s'affiche, l'instance est prête. L'organisation Apigee a peut-être été créée avant le début de l'atelier. Vous n'aurez donc peut-être pas à attendre la création de l'instance.
Si vous attendez que l'organisation soit prête, vous pouvez explorer les produits et services d'IA sur Google Cloud.
Déployer l'API
-
Revenez au proxy d'API services-v1, puis cliquez sur l'onglet Développer.
-
Cliquez sur Déployer.
-
Pour Environnement, sélectionnez eval.
-
Pour Compte de service, spécifiez l'adresse e-mail du compte de service :
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Cliquez sur Déployer, puis sur Confirmer.
-
Cliquez sur l'onglet Aperçu et attendez que l'état du déploiement eval indique que le proxy a été déployé.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Appelez l'API Natural Language
Tester l'API
L'environnement d'évaluation de l'organisation Apigee peut être appelé à l'aide du nom d'hôte eval.example.com. L'entrée DNS pour ce nom d'hôte a été créée dans votre projet et est résolue en adresse IP de l'instance d'exécution Apigee. Cette entrée DNS a été créée dans une zone privée, ce qui signifie qu'elle n'est visible que sur le réseau interne.
Cloud Shell ne réside pas sur le réseau interne. Par conséquent, les commandes Cloud Shell ne peuvent pas résoudre cette entrée DNS. Une machine virtuelle (VM) de votre projet peut accéder au DNS de la zone privée. Une machine virtuelle nommée apigeex-test-vm a été créée automatiquement. Vous pouvez l'utiliser pour appeler le proxy d'API.
-
Dans Cloud Shell, ouvrez une connexion SSH vers votre VM de test :
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
Si l'invite Do you want to continue (Y/n)? (Voulez-vous continuer (OUI/non) ?) s'affiche, saisissez Y.
-
Pour chaque question posée dans Cloud Shell, cliquez sur Entrée ou Retour pour spécifier la valeur par défaut.
L'identité avec laquelle vous êtes connecté est propriétaire du projet. La connexion SSH à cette machine est donc autorisée.
Votre session Cloud Shell s'exécute désormais dans la VM.
-
Appelez le proxy d'API services-v1 déployé dans l'environnement eval :
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"}'
La réponse de l'API Natural Language se présente comme suit :
{
"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
}
}
]
}
]
}
Le score documentSentiment varie de 1 à -1, où 1 est extrêmement positif et -1 extrêmement négatif. Dans le cas présent, le sentiment est très positif.
-
Effectuez un autre appel au proxy d'API :
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"}'
Pour ce commentaire, le sentiment est assez négatif.
-
Saisissez la commande exit pour quitter la session SSH et revenir à Cloud Shell.
Tâche 5 : Publier un message sur Pub/Sub pour les commentaires négatifs
Dans cette tâche, vous allez ajouter une règle PublishMessage pour publier un message Pub/Sub dans un sujet Pub/Sub chaque fois qu'un commentaire négatif est reçu. Un abonné au sujet peut exécuter un workflow qui tente de résoudre le problème pour la personne qui a publié le commentaire.
Créer un sujet Pub/Sub pour les avis sur les livraisons
Un sujet Pub/Sub sera créé pour chaque catégorie. Vous devez créer un sujet avant de pouvoir y publier un message.
-
Dans le menu de navigation (
), accédez à Pub/Sub > Sujets.
-
Cliquez sur + Créer un sujet.
-
Dans le champ "ID du sujet", saisissez apigee-services-v1-delivery-reviews, puis cliquez sur Créer.
Un sujet et un abonnement sont créés.
Extraire le score de la réponse de l'API Natural Language
-
Revenez à Apigee dans la console Cloud.
-
Dans le menu de navigation de gauche, sélectionnez Développement de proxys > Proxys d'API, puis cliquez sur services-v1.
-
Ouvrez l'onglet Develop (Développer). Cliquez sur le flux postComment.
-
Dans le volet Flow (Flux), cliquez sur + à côté du flux postComment dans le volet Response (Réponse).
-
Dans la boîte de dialogue Add policy step (Ajouter une étape de règle), cliquez sur Create new policy (Créer une règle).
-
Dans le menu déroulant Select Policy (Sélectionner une règle), sélectionnez le type de règle Extract Variables (Extraire les variables) dans la section Mediation (Médiation).
-
Renseignez les champs suivants :
| Propriété |
Valeur |
| Display Name (Nom à afficher) |
EV-ExtractSentiment |
| Name (Nom) |
EV-ExtractSentiment |
-
Cliquez sur Add (Ajouter), puis sur la règle EV-ExtractSentiment.
-
Remplacez la configuration XML ExtractVariables par :
<ExtractVariables name="EV-ExtractSentiment">
<Source>response</Source>
<JSONPayload>
<Variable name="sentimentScore">
<JSONPath>$.documentSentiment.score</JSONPath>
</Variable>
</JSONPayload>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>
Ajouter une règle PublishMessage
-
Cliquez sur le flux postComment, puis sur le bouton + sous le flux Response (Réponse).
-
Dans la section Extension, sélectionnez le type de règle Publish Message (Publier un message).
-
Renseignez les champs suivants :
| Propriété |
Valeur |
| Display Name (Nom à afficher) |
PM-PublishScore |
| Name (Nom) |
PM-PublishScore |
-
Cliquez sur Add (Ajouter), puis sur la règle PM-PublishScore.
-
Remplacez la configuration XML PublishMessage par :
<PublishMessage continueOnError="true" name="PM-PublishScore">
<Source>{response.content}</Source>
<CloudPubSub>
<Topic>projects/{organization.name}/topics/apigee-services-v1-{category}</Topic>
</CloudPubSub>
</PublishMessage>
-
Cliquez sur Enregistrer. Si vous recevez une notification indiquant que le proxy a été enregistré en tant que nouvelle révision, cliquez sur Enregistrer en tant que nouvelle révision.
response.content correspond à la charge utile renvoyée par l'API Natural Language et sera le message Pub/Sub. La catégorie indiquée dans la requête est utilisée pour créer le nom du sujet Pub/Sub.
Si les catégories sont incorrectes, le nom du sujet n'existera pas. Dans une API de production, nous vous conseillons de vérifier les catégories spécifiées avant d'essayer de publier un message Pub/Sub. Dans le cas présent, continueOnError est défini sur "true" dans la règle. Par conséquent, lorsqu'un sujet n'existe pas, aucune erreur n'est générée.
Ajouter une vérification conditionnelle pour la règle PublishMessage
Les conditions peuvent être utilisées pour ignorer des règles dans un flux.
-
Dans le menu de navigation du proxy, sous Proxy Endpoints (Points de terminaison du proxy), cliquez sur default (par défaut).
La configuration ProxyEndpoint s'affiche.
-
Pour ajouter une condition à l'étape PM-PublishScore, remplacez ce code :
<Step>
<Name>PM-PublishScore</Name>
</Step>
Par ce qui suit :
<Step>
<Name>PM-PublishScore</Name>
<Condition>sentimentScore LesserThan 0.0</Condition>
</Step>
La règle PublishMessage ne s'exécute que lorsque le score de sentiment est inférieur à 0.
Déployer l'API
-
Cliquez sur Enregistrer. Si vous recevez une notification indiquant que le proxy a été enregistré en tant que nouvelle révision, cliquez sur Enregistrer en tant que nouvelle révision.
-
Cliquez sur Déployer.
-
Pour Environnement, sélectionnez eval.
-
Pour Compte de service, spécifiez l'adresse e-mail du compte de service :
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Cliquez sur Déployer, puis sur Confirmer.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Publiez un message dans Pub/Sub pour les commentaires négatifs
Tester l'API
-
Dans Cloud Shell, ouvrez une connexion SSH vers votre VM de test :
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
Si vous êtes invité à donner votre autorisation, cliquez sur Autoriser.
-
Appelez le proxy d'API services-v1 déployé dans l'environnement eval :
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"}'
-
Dans le menu de navigation (
), accédez à Pub/Sub > Sujets.
-
Cliquez sur le sujet apigee-services-v1-delivery-reviews.
-
Faites défiler la page jusqu'en bas, puis cliquez sur l'abonnement apigee-services-v1-delivery-reviews-sub.
-
Cliquez sur l'onglet Messages, puis sur Pull.
-
Dans le message, cliquez sur le bouton de menu déroulant Afficher tout le contenu de la ligne.
Vous pouvez consulter la charge utile JSON envoyée pour les commentaires à sentiment négatif.
Tâche 6 : Ajouter une règle MessageLogging
Dans cette tâche, vous allez ajouter une règle MessageLogging pour consigner un message dans Cloud Logging.
Créer un PostClientFlow
La configuration ProxyEndpoint comporte un flux facultatif appelé PostClientFlow. Les règles associées à ce flux s'exécutent après que la réponse a été renvoyée à l'appelant. Il s'agit d'un emplacement idéal pour journaliser les messages, car cela n'ajoute aucune latence supplémentaire à la requête.
-
Revenez à l'onglet Apigee et, si nécessaire, à la page de développement de services-v1.
-
Dans le menu de navigation du proxy, sous Proxy Endpoints (Points de terminaison du proxy), cliquez sur default (par défaut).
La configuration ProxyEndpoint s'affiche.
-
Juste au-dessus de la section HTTPProxyConnection, ajoutez la ligne suivante :
<PostClientFlow/>
Une fois cette ligne ajoutée, la fin de votre code ProxyEndpoint doit ressembler à ceci :
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
<PostClientFlow/>
<HTTPProxyConnection>
<BasePath>/services/v1</BasePath>
</HTTPProxyConnection>
<RouteRule name="noroute"/>
</ProxyEndpoint>
Cela ajoute un PostClientFlow vide à ProxyEndpoint.
Ajouter une règle MessageLogging
-
Dans le menu de navigation du proxy, sous Proxy Endpoints (Points de terminaison du proxy), cliquez sur PostClientFlow, puis sur le bouton + sous le flux Response (Réponse).
-
Dans la boîte de dialogue Add policy step (Ajouter une étape de règle), cliquez sur Create new policy (Créer une règle).
-
Dans le menu déroulant Select Policy (Sélectionner une règle), sélectionnez le type de règle Message Logging (Journalisation des messages) dans la section Extension.
-
Renseignez les champs suivants :
| Propriété |
Valeur |
| Display Name (Nom à afficher) |
ML-LogToCloudLogging |
| Name (Nom) |
ML-LogToCloudLogging |
-
Cliquez sur Add (Ajouter), puis sur la règle ML-LogToCloudLogging.
-
Remplacez la configuration XML PublishMessage par :
<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>
La section CloudLogging spécifie les informations à consigner dans Cloud Logging. La règle utilise le nom du proxy dans le LogName, ce qui facilite la recherche dans Cloud Logging.
Le message de cette règle est un message JSON, mais vous pouvez utiliser n'importe quel type de message texte dans vos journaux. Le contenu de vos journaux doit généralement inclure des variables de flux de proxy qui vous aideront à déboguer les problèmes. Par exemple, la variable publishmessage.failed sera définie sur "true" si le message Pub/Sub n'a pas été envoyé.
Des étiquettes peuvent également être ajoutées au message journalisé pour catégoriser son contenu.
Déployer l'API
-
Cliquez sur Enregistrer. Si vous recevez une notification indiquant que le proxy a été enregistré en tant que nouvelle révision, cliquez sur Enregistrer en tant que nouvelle révision.
-
Cliquez sur Déployer.
-
Pour Environnement, sélectionnez eval.
-
Pour Compte de service, spécifiez l'adresse e-mail du compte de service :
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Cliquez sur Déployer, puis sur Confirmer.
Attendez la fin du déploiement.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Ajoutez la règle MessageLogging
Tester l'API
-
Dans Cloud Shell, si votre connexion SSH a été fermée, ouvrez la connexion SSH vers votre VM de test :
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
Si vous êtes invité à donner votre autorisation, cliquez sur Autoriser.
-
Appelez le proxy d'API services-v1 déployé dans l'environnement eval :
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"}'
La catégorie fournie (invalid-category) ne correspond à aucun sujet Pub/Sub.
-
Dans le menu de navigation (
), accédez à Journalisation > Explorateur de journaux.
-
Dans le champ Requête, saisissez la requête suivante :
"invalid-category"
-
Cliquez sur Exécuter la requête.
-
Développez l'entrée de journal dans le volet Résultats de la requête, puis développez jsonPayload.
En développant l'entrée de journal, vous pouvez voir le message JSON journalisé et d'autres métadonnées. Le jsonPayload doit ressembler à ceci :
{
"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 est défini sur "true", car aucun sujet n'a été créé pour cette catégorie. Des journaux bien conçus peuvent vous aider à identifier les problèmes dans vos proxys d'API et vos services de backend.
Félicitations !
Dans cet atelier, vous avez activé des API Google Cloud et créé un compte de service. Vous avez appelé l'API Cloud Natural Language à l'aide d'une règle ServiceCallout, en utilisant l'authentification du compte de service fournie par Apigee. Vous avez publié un message dans un sujet Pub/Sub à l'aide de la règle PublishMessage. Enfin, vous avez utilisé la règle MessageLogging pour consigner un message dans Cloud Logging.
Étapes suivantes et informations supplémentaires
Dernière mise à jour du manuel : 8 août 2025
Dernier test du manuel : 8 août 2025
Copyright 2025 Google LLC. Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.