GSP845

Descripción general
Apigee es una plataforma para desarrollar y administrar las APIs que te puede ayudar a aprovechar los servicios de Google Cloud, como Pub/Sub, Cloud Logging o cualquier otro servicio en la nube que proporcione una API de REST. En este lab, tu proxy de API de Apigee aprovecha varios servicios de Google Cloud.
En este lab, usarás varios servicios de Google Cloud desde un proxy de API de Apigee para controlar los comentarios de los usuarios.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Habilitar las APIs de Google Cloud requeridas
- Crear una cuenta de servicio y aplicar los roles correctos
- Llamar a un servicio de Google Cloud con la API de REST de Google Cloud
- Realizar un análisis de sentimiento llamando a la API de Cloud Natural Language
- Publicar un mensaje de Pub/Sub con la política PublishMessage
- Registrar mensajes de error en Cloud Logging
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón para abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Activa Cloud Shell
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
-
Haz clic en Activar Cloud Shell
en la parte superior de la consola de Google Cloud.
-
Haz clic para avanzar por las siguientes ventanas:
- Continúa en la ventana de información de Cloud Shell.
- Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
- Haz clic en Autorizar.
Resultado:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project
Resultado:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.
Tarea 1: Habilita las APIs de Google Cloud
En esta tarea, habilitarás las APIs que usará el proxy de API de Apigee.
-
En la consola de Cloud, en el menú de navegación (
), navega a APIs y servicios > Biblioteca.
En esta página, puedes habilitar las APIs que usará el proxy de API de Apigee.
-
En el cuadro Buscar APIs y servicios, ingresa Cloud Natural Language y presiona Intro.
La API de Cloud Natural Language proporciona estadísticas de lenguaje natural, como el análisis de sentimiento y el reconocimiento de entidades. Esta API se usará para determinar cuándo un comentario indica que un usuario no está satisfecho.
-
Haz clic en API de Cloud Natural Language.
La API ya está habilitada.
El comando gcloud también se puede usar para habilitar APIs.
-
En Cloud Shell, usa el siguiente comando para habilitar las APIs requeridas:
gcloud services enable language.googleapis.com pubsub.googleapis.com logging.googleapis.com
Además de la API de Cloud Natural Language, también habilitarás la API de Pub/Sub y la API de Cloud Logging.
Se usará Pub/Sub para publicar un mensaje en un tema cuando la API de Natural Language indique que un usuario no está satisfecho. Puedes crear una Cloud Function que se ejecute para cada mensaje y se comunique con el usuario para intentar resolver el problema y mejorar la satisfacción del cliente.
Cloud Logging se usará para capturar una entrada de registro para cada comentario que se reciba. Estos registros podrían incluir detalles internos de la API que podrían ayudar a detectar problemas con los servicios o las aplicaciones.
Tarea 2: Crea una cuenta de servicio
En esta tarea, crearás una cuenta de servicio para que la use el proxy de Apigee.
Crea la cuenta de servicio de IAM
-
En el menú de navegación (
), ve a IAM y administración > Cuentas de servicio.
-
Haz clic en + Crear cuenta de servicio.
-
En Nombre de la cuenta de servicio, especifica lo siguiente:
apigee-gc-service-access
Esta cuenta de servicio permitirá que tu proxy de API de Apigee acceda a los servicios de Google Cloud que especifiques.
-
Haz clic en Crear y continuar.
-
En Seleccionar un rol, elige Pub/Sub > Publicador de Pub/Sub.
El proxy de API de Apigee se publicará en un tema de Pub/Sub.
-
Haz clic en + Agregar otro rol.
-
En Seleccionar un rol, selecciona Logging > Escritor de registros.
El proxy de API de Apigee escribirá mensajes de registro en Cloud Logging.
Nota: No se requiere ningún rol para llamar a la API de Natural Language.
-
Haz clic en Listo.
Se creó la cuenta de servicio.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear la cuenta de servicio y asignar roles
Tarea 3: Crea un proxy de API
En esta tarea, crearás el proxy de API de Apigee. El proxy de API usará políticas para llamar a los servicios, por lo que no se requerirá ningún destino.
Abre la consola de Apigee
Para abrir la consola de Apigee, haz lo siguiente:
- En el campo Buscar de la consola de Google Cloud, ingresa
Apigee y, luego, haz clic en Administración de APIs de Apigee en los resultados de la búsqueda.
Se abrirá la consola de Apigee y, en la página de destino, se mostrarán vínculos rápidos a ubicaciones de uso frecuente.
- En el menú de navegación (
), junto a Apigee, haz clic en Fijar (
).
Apigee ahora está fijada en el menú de navegación.
Crea el proxy de API de Apigee
-
En el menú de navegación, selecciona Desarrollo de proxies > Proxies de API.
-
Para crear un proxy nuevo con el asistente de proxy, haz clic en Crear.
-
En Proxy template, selecciona General template > No target.
El proxy no usará un servicio de backend. Toda la comunicación con los servicios externos se realizará a través de políticas.
Nota: No uses la selección No target en la sección de la plantilla Especificaciones de OpenAPI.
-
Especifica lo siguiente para los detalles del proxy:
| Propiedad |
Valor |
| Nombre del proxy |
services-v1 |
| Ruta de acceso base |
/services/v1 |
Nota: Confirma que estás usando /services/v1 para la ruta de acceso base, no /services-v1.
-
Haz clic en Siguiente.
-
Deja la configuración de Implementar (opcional) con sus valores predeterminados y haz clic en Crear.
Crea un nuevo flujo condicional
-
Haz clic en la pestaña Desarrollo en el Editor de proxies.
-
Selecciona Proxy endpoints > default en el panel izquierdo.
-
Haz clic en el botón + encima del panel Respuesta.
-
En el diálogo Add conditional flow, especifica los siguientes valores:
| Propiedad |
Valor |
| Nombre del flujo |
postComment |
| Descripción |
publicar un comentario para una categoría determinada |
| Tipo de condición |
selecciona Path and Verb
|
| Ruta de acceso |
/comments |
| Verbo |
selecciona POST
|
Deja en blanco URL de destino.
-
Haz clic en Agregar.
Implementa la API
-
Haz clic en Guardar. Si recibes una notificación de que el proxy se guardó como una revisión nueva, haz clic en Guardar como revisión nueva.
-
Haz clic en Implementar.
-
En Entorno, selecciona eval.
-
En Cuenta de servicio, especifica la dirección de correo electrónico de la cuenta de servicio:
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Haz clic en Implementar y, luego, en Confirmar.
Espera a que se complete la implementación.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear el proxy de API
Tarea 4: Llama a la API de Natural Language
En esta tarea, agregarás una política ServiceCallout para llamar a la API de Natural Language y determinar el sentimiento de un comentario entrante.
Extrae parámetros de entrada
El recurso POST /comments usará una carga útil JSON con dos parámetros: comment, el texto libre que ingresa un usuario, y category, que especifica el tipo de comentario. Una política ExtractVariables extraerá las entradas.
-
En el panel Flow, haz clic en el + junto al flujo postComment en el panel Solicitud.
-
En el cuadro de diálogo Add policy step, haz clic en Crear una política nueva.
-
En el menú desplegable Select Policy, selecciona el tipo de política Extract Variables en la sección Mediación.
-
Especifica lo siguiente:
| Propiedad |
Valor |
| Nombre visible |
EV-ExtractRequest |
| Nombre |
EV-ExtractRequest |
-
Haz clic en Agregar.
-
Haz clic en la política EV-ExtractRequest y reemplaza la configuración XML de ExtractVariables por lo siguiente:
<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>
Esta política extrae comment y category de la solicitud JSON POST /comments. El elemento IgnoreUnresolvedVariables se establece en falso, lo que provoca que se genere una falla si no se especifican esas dos entradas.
Nota: En una API de producción, te convendría agregar el control de errores para reescribir la mayoría de los errores que se originan a partir de las políticas. En este lab, no se agregará el control de errores.
Llama a la API de Natural Language
Se usará una política ServiceCallout para llamar a la API de Natural Language y devolver el sentimiento del comentario.
-
Haz clic en el flujo postComment si no está destacado y, luego, haz clic en el signo + junto al flujo postComment en el panel Respuesta.
La respuesta de la llamada a la API de Natural Language se devolverá a quien llama.
-
En el cuadro de diálogo Add policy step, haz clic en Crear una política nueva.
-
En el menú desplegable Select Policy, selecciona el tipo de política Service Callout en la sección Extension.
-
Especifica lo siguiente:
| Propiedad |
Valor |
| Nombre visible |
SC-NaturalLanguage |
| Nombre |
SC-NaturalLanguage |
-
Haz clic en Agregar.
El flujo debería verse similar a este:

-
Haz clic en la política SC-NaturalLanguage.
-
Reemplaza la configuración XML de ServiceCallout por lo siguiente:
<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 sección Request de la política ServiceCallout especifica la solicitud POSTed al servicio. El formato de esta carga útil es específico de la API de Natural Language.
El elemento Response indica que la respuesta de la API de Natural Language se almacenará en el mensaje response.
La sección HTTPTargetConnection especifica la URL del servicio al que se llama. La URL y los formatos de solicitud y respuesta se pueden encontrar en la referencia de la API de Natural Language.
En la sección Autenticación, se especifica la autenticación para la API de Google Cloud. Se agregará automáticamente un token de acceso de OAuth de Google a la solicitud de llamada. El Scope especifica que el token de acceso se usará para proporcionar acceso a la API de Natural Language.
-
Haz clic en Guardar.
Confirma que la instancia del entorno de ejecución esté disponible
-
En Cloud Shell, pega y ejecuta el siguiente conjunto de comandos:
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***";
Esta serie de comandos usa la API de Apigee para determinar cuándo se creó la instancia del entorno de ejecución de Apigee y se conectó el entorno de evaluación.
Espera hasta que la instancia esté lista.
Cuando se muestra el texto ***ORG IS READY TO USE***, la instancia está lista. Es posible que la organización de Apigee (org) se haya creado antes de que comenzaras el lab, por lo que tal vez no tengas que esperar a que se cree la instancia.
Si estás esperando que la organización esté lista, puedes explorar los productos y servicios de IA en Google Cloud.
Implementa la API
-
Regresa al proxy de API services-v1 y haz clic en la pestaña Desarrollo.
-
Haz clic en Implementar.
-
En Entorno, selecciona eval.
-
En Cuenta de servicio, especifica la dirección de correo electrónico de la cuenta de servicio:
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Haz clic en Implementar y, luego, en Confirmar.
-
Haz clic en la pestaña Descripción general y espera a que el estado de implementación eval muestre que se implementó el proxy.
Haz clic en Revisar mi progreso para verificar el objetivo.
Llamar a la API de Natural Language
Prueba la API
Se puede llamar al entorno de evaluación en la organización de Apigee con el nombre de host eval.example.com. La entrada de DNS para este nombre de host se creó dentro de tu proyecto y se resuelve en la dirección IP de la instancia del entorno de ejecución de Apigee. Esta entrada de DNS se creó en una zona privada, lo que significa que solo es visible en la red interna.
Cloud Shell no reside en la red interna, por lo que los comandos de Cloud Shell no pueden resolver esta entrada de DNS. Una máquina virtual (VM) dentro de tu proyecto puede acceder al DNS de la zona privada. Se creó automáticamente una máquina virtual llamada apigeex-test-vm. Puedes usar esta máquina para llamar al proxy de API.
-
En Cloud Shell, abre una conexión SSH a tu VM de prueba:
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 se te pregunta Do you want to continue (Y/n)?, ingresa Y.
-
Para cada pregunta que se haga en Cloud Shell, haz clic en Intro o Retorno para especificar la entrada predeterminada.
La identidad con la que accediste es la propietaria del proyecto, por lo que se permite la conexión SSH a esta máquina.
Tu sesión de Cloud Shell ahora se ejecuta dentro de la VM.
-
Llama al proxy de API services-v1 implementado en el entorno 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 respuesta de la API de Natural Language se ve de la siguiente manera:
{
"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
}
}
]
}
]
}
La puntuación de documentSentiment varía de 1 a -1, en la que 1 es muy positiva y -1 es muy negativa. En este caso, el sentimiento es muy positivo.
-
Realiza otra llamada al proxy de 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"}'
En este comentario, el sentimiento es bastante negativo.
-
Ingresa el comando exit para salir de la sesión de SSH y regresar a Cloud Shell.
Tarea 5: Publica un mensaje en Pub/Sub para los comentarios negativos
En esta tarea, agregarás una política de PublishMessage para publicar un mensaje de Pub/Sub en un tema de Pub/Sub cada vez que se reciba un comentario negativo. Un suscriptor del tema podría ejecutar un flujo de trabajo que intente resolver el problema del comentarista.
Crea un tema de Pub/Sub para las opiniones sobre la entrega
Se creará un tema de Pub/Sub para cada categoría. Se debe crear un tema antes de que se pueda publicar un mensaje en él.
-
En el menú de navegación (
), navega a Pub/Sub > Temas.
-
Haz clic en + Crear un tema.
-
En el ID del tema, ingresa apigee-services-v1-delivery-reviews y, luego, haz clic en Crear.
Se crean un tema y una suscripción nuevos.
Extrae la puntuación de la respuesta de la API de Natural Language
-
Regresa a Apigee en la consola de Cloud.
-
En el menú de navegación de la izquierda, selecciona Desarrollo de proxies > Proxies de API y, luego, haz clic en services-v1.
-
Abre la pestaña Desarrollar. Haz clic en el flujo postComment.
-
En el panel Flow, haz clic en el ícono + junto al flujo postComment en el panel Respuesta.
-
En el cuadro de diálogo Add policy step, haz clic en Crear una política nueva.
-
En el menú desplegable Select Policy, selecciona el tipo de política Extract Variables en la sección Mediación.
-
Especifica lo siguiente:
| Propiedad |
Valor |
| Nombre visible |
EV-ExtractSentiment |
| Nombre |
EV-ExtractSentiment |
-
Haz clic en Agregar y, luego, en la política EV-ExtractSentiment.
-
Reemplaza la configuración XML de ExtractVariables por lo siguiente:
<ExtractVariables name="EV-ExtractSentiment">
<Source>response</Source>
<JSONPayload>
<Variable name="sentimentScore">
<JSONPath>$.documentSentiment.score</JSONPath>
</Variable>
</JSONPayload>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>
Agrega una política PublishMessage
-
Haz clic en el flujo postComment y, luego, en el botón + debajo del flujo Response.
-
En la sección Extension, selecciona el tipo de política Publicar mensaje.
-
Especifica lo siguiente:
| Propiedad |
Valor |
| Nombre visible |
PM-PublishScore |
| Nombre |
PM-PublishScore |
-
Haz clic en Agregar y, luego, en la política PM-PublishScore.
-
Reemplaza la configuración XML de PublishMessage por la siguiente:
<PublishMessage continueOnError="true" name="PM-PublishScore">
<Source>{response.content}</Source>
<CloudPubSub>
<Topic>projects/{organization.name}/topics/apigee-services-v1-{category}</Topic>
</CloudPubSub>
</PublishMessage>
-
Haz clic en Guardar. Si recibes una notificación de que el proxy se guardó como una revisión nueva, haz clic en Guardar como revisión nueva.
El response.content es la carga útil que devolvió la API de Natural Language y será el mensaje de Pub/Sub. La category de la solicitud se usa para crear el nombre del tema de Pub/Sub.
Las categorías incorrectas generarán un nombre de tema que no existe. En una API de producción, te convendría verificar las categorías especificadas antes de intentar publicar un mensaje de Pub/Sub. En este caso, continueOnError se establece como verdadero en la política, por lo que, cuando el tema no exista, no se generará una falla.
Agrega una verificación condicional para la política PublishMessage
Las condiciones se pueden usar para omitir políticas de forma opcional en un flujo.
-
En el menú de navegación del proxy, en Proxy Endpoints, haz clic en default.
Se muestra la configuración de ProxyEndpoint.
-
Para agregar una condición al paso PM-PublishScore, reemplaza lo siguiente:
<Step>
<Name>PM-PublishScore</Name>
</Step>
Por lo siguiente:
<Step>
<Name>PM-PublishScore</Name>
<Condition>sentimentScore LesserThan 0.0</Condition>
</Step>
La política PublishMessage solo se ejecutará cuando la puntuación de sentimiento sea inferior a 0.
Implementa la API
-
Haz clic en Guardar. Si recibes una notificación de que el proxy se guardó como una revisión nueva, haz clic en Guardar como revisión nueva.
-
Haz clic en Implementar.
-
En Entorno, selecciona eval.
-
En Cuenta de servicio, especifica la dirección de correo electrónico de la cuenta de servicio:
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Haz clic en Implementar y, luego, en Confirmar.
Haz clic en Revisar mi progreso para verificar el objetivo.
Publicar un mensaje en Pub/Sub para los comentarios negativos
Prueba la API
-
En Cloud Shell, abre una conexión SSH a tu VM de prueba:
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 se te solicita autorización, haz clic en Autorizar.
-
Llama al proxy de API services-v1 implementado en el entorno 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"}'
-
En el menú de navegación (
), navega a Pub/Sub > Temas.
-
Haz clic en el tema apigee-services-v1-delivery-reviews.
-
Desplázate hasta la parte inferior y, luego, haz clic en la suscripción apigee-services-v1-delivery-reviews-sub.
-
Haz clic en la pestaña Mensajes y, luego, en Extracción.
-
En el mensaje, haz clic en el botón de menú desplegable Ver todo el contenido de la fila.
Puedes ver la carga útil JSON que se envió para cualquier comentario con sentimiento negativo.
Tarea 6: Agrega una política de MessageLogging
En esta tarea, agregarás una política de MessageLogging para registrar un mensaje en Cloud Logging.
Crea un objeto PostClientFlow
Un ProxyEndpoint tiene un flujo opcional llamado PostClientFlow. Las políticas adjuntas a este flujo se ejecutan después de que ya se haya devuelto la respuesta al llamador. Esta puede ser una ubicación ideal para realizar el registro de mensajes, ya que el registro no agregaría latencia adicional a la solicitud.
-
Regresa a la pestaña Apigee y, si es necesario, vuelve a la página Desarrollo de services-v1.
-
En el menú de navegación del proxy, en Proxy Endpoints, haz clic en default.
Se muestra la configuración de ProxyEndpoint.
-
Inmediatamente arriba de la sección HTTPProxyConnection, agrega la siguiente línea:
<PostClientFlow/>
Después de agregar esta línea, la parte inferior del código de ProxyEndpoint debería ser similar a la siguiente:
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
<PostClientFlow/>
<HTTPProxyConnection>
<BasePath>/services/v1</BasePath>
</HTTPProxyConnection>
<RouteRule name="noroute"/>
</ProxyEndpoint>
Esto agrega un PostClientFlow vacío al ProxyEndpoint.
Agrega una política de MessageLogging
-
En el menú de navegación del proxy, en Proxy Endpoints, haz clic en PostClientFlow y, luego, en el botón + que se encuentra debajo del flujo Response.
-
En el cuadro de diálogo Add policy step, haz clic en Crear una política nueva.
-
En el menú desplegable Select Policy, selecciona el tipo de política Message Logging en la sección Extension.
-
Especifica lo siguiente:
| Propiedad |
Valor |
| Nombre visible |
ML-LogToCloudLogging |
| Nombre |
ML-LogToCloudLogging |
-
Haz clic en Agregar y, luego, en la política ML-LogToCloudLogging.
-
Reemplaza la configuración XML de PublishMessage por la siguiente:
<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>
En la sección CloudLogging, se especifica la información que se registrará en Cloud Logging. La política usa el nombre del proxy como parte de LogName, lo que facilita su búsqueda en Cloud Logging.
El mensaje de esta política es un mensaje JSON, pero se puede usar cualquier tipo de mensaje de texto en tus registros. Por lo general, el contenido de tus registros debe incluir variables de flujo de proxy que te ayuden a depurar cualquier problema. Por ejemplo, la variable publishmessage.failed será verdadera si no se envió el mensaje de Pub/Sub.
También se pueden agregar etiquetas al mensaje registrado para categorizar su contenido.
Implementa la API
-
Haz clic en Guardar. Si recibes una notificación de que el proxy se guardó como una revisión nueva, haz clic en Guardar como revisión nueva.
-
Haz clic en Implementar.
-
En Entorno, selecciona eval.
-
En Cuenta de servicio, especifica la dirección de correo electrónico de la cuenta de servicio:
apigee-gc-service-access@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
-
Haz clic en Implementar y, luego, en Confirmar.
Espera a que se complete la implementación.
Haz clic en Revisar mi progreso para verificar el objetivo.
Agregar la política MessageLogging
Prueba la API
-
En Cloud Shell, si se cerró tu conexión SSH, abre la conexión SSH a tu VM de prueba:
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 se te solicita autorización, haz clic en Autorizar.
-
Llama al proxy de API services-v1 implementado en el entorno 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 categoría proporcionada (invalid-category) no tiene un tema de Pub/Sub correspondiente.
-
En el menú de navegación (
), navega a Logging > Explorador de registros.
-
En el cuadro de Consulta, ingresa la siguiente consulta:
"invalid-category"
-
Haz clic en Ejecutar consulta.
-
Expande la entrada de registro en el panel Resultados de la consulta y, luego, expande jsonPayload.
Si expandes la entrada de registro, se mostrará el mensaje JSON registrado y otros metadatos. El jsonPayload debería verse de la siguiente manera:
{
"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 es verdadero porque no se creó ningún tema para esta categoría. Los registros bien diseñados pueden ayudarte a encontrar problemas en tus proxies de API y servicios de backend.
¡Felicitaciones!
En este lab, habilitaste las APIs de Google Cloud y creaste una cuenta de servicio. Llamaste a la API de Cloud Natural Language con una política ServiceCallout, aprovechando la autenticación de la cuenta de servicio que proporciona Apigee. Usaste la política PublishMessage para publicar un mensaje en un tema de Pub/Sub. Por último, usaste la política de MessageLogging para registrar un mensaje en Cloud Logging.
Próximos pasos y más información
Última actualización del manual: 8 de agosto de 2025
Prueba más reciente del manual: 8 de agosto de 2025
Copyright 2025 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.