1. Introducción
En este lab, usarás Gemini, un colaborador potenciado por IA en Google Cloud, para solucionar un problema con la implementación de Cloud Function. Para ello, analizarás registros de errores, identificarás la causa raíz del problema y descubrirás cómo solucionarlo.
Actividades
- Usarás la terminal de Cloud Shell y la CLI de gcloud para configurar el entorno, lo que incluye habilitar las APIs de Google relevantes y crear una Cloud Function a partir del código proporcionado
- Usarás el resumen de registros de Cloud Logging para generar resúmenes de registros y comprender la información capturada.
- Chatearás con Gemini para obtener asistencia de Gemini para solucionar el problema.
Qué aprenderás
- Cómo usar Gemini con Google Cloud Observability y para solucionar problemas.
- Cómo encontrar y comprender los registros de Cloud Function con la ayuda de Gemini.
Requisitos
- Navegador web Chrome
- Un proyecto de Google Cloud con la facturación habilitada.
- Una Cuenta de Google con permisos de acceso al proyecto que te permita habilitar las APIs y manipular recursos
Este lab está dirigido a ingenieros de DevOps y de plataformas, y a desarrolladores de software de todos los niveles, incluidos los principiantes. Nos enfocaremos en obtener experiencia práctica con las capacidades de Gemini para solucionar problemas.
2. Configuración
En esta sección, se explica todo lo que debes hacer para comenzar este lab.
Configura el entorno
1. Para acceder a la consola de Cloud, abre https://console.cloud.google.com.
2. Selecciona un proyecto de Google Cloud con el que planees trabajar en este lab.
3. Abre la página Cloud Functions en la consola. Para ello, selecciona Cloud Functions en el menú de navegación (ícono de la parte superior izquierda syslog de la ventana de la consola).
También puedes buscar “Cloud Functions” en el área de búsqueda de la consola:
Haz clic en el botón Crear función en la parte superior de la lista de funciones
Si no usaste Cloud Functions anteriormente en este proyecto, para poder trabajar, se te pedirá que habilites las APIs de Google.
Haz clic en HABILITAR para continuar.
4. Define las propiedades básicas de la Cloud Function nueva.
- Establecer el nombre como "
codelab-cf
" - Selecciona la opción Permitir invocaciones no autenticadas.
Para completar este paso, haz clic en el botón NEXT, en el área inferior izquierda de la ventana:
Después de hacer clic en SIGUIENTE, es posible que se te solicite habilitar otras APIs de Google. Al igual que en el paso 4, haz clic en HABILITAR.
Configura el entorno de ejecución y el código de la Cloud Function
En este codelab, se usa Python como lenguaje de programación. No te preocupes si no estás familiarizado con Python. Para completar este codelab, no necesitas tener conocimientos de Python.
5. Selecciona Python 3.11 como el entorno de ejecución de la función
Ten en cuenta que el cambio de entorno de ejecución modifica el código fuente que se muestra en el editor directo.
6. Copia el siguiente código en el editor directo para modificar el ejemplo de inicio rápido de generación automática.
from google.cloud import storage
import json
import re
client = storage.Client()
def get_object_list(request):
if request.args and 'path' in request.args:
path = request.args['path']
else:
return '{}'
parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
bucket, prefix = parsed.group(1), parsed.group(2)
blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
objects = []
if (blobs):
for blob in blobs:
objects.append(blob.name)
return json.dumps(objects)
Este código lee el atributo path
de la solicitud GET, analiza la ruta de acceso para recoger el nombre del bucket y llama a la API de Google Cloud Storage para obtener una lista de los objetos almacenados en esta ruta de acceso. La función (get_object_list
) acepta una solicitud que es un objeto Flask como argumento de entrada y muestra los nombres de los objetos como un array JSON.
7. Selecciona el archivo requirements.txt
de la lista de archivos que quedan en el editor directo. Reemplaza la lista actual de dependencias por la nueva copiando el siguiente código en el editor directo.
google-cloud-storage
8. Para implementar Cloud Function, haz clic en IMPLEMENTAR en la parte inferior izquierda.
Es posible que debas esperar un par de minutos hasta que se complete el proceso de implementación. Si seguiste atentamente las instrucciones de configuración, es probable que veas un informe con errores en la implementación.
3. Encontrar y resolver el problema
En esta sección, usarás la función de explicaciones de registros y otros recursos de asistencia de Gemini para identificar el problema y la forma de resolverlo.
1. La implementación falla. Deberías ver un mensaje de error informándote esto con información adicional y una opción para ver los registros de implementación. Haz clic en VER REGISTROS (VIEW LOGS) para ver los registros de la implementación.
NOTA que los registros de implementación se abrirán en una pestaña separada en el mismo navegador. Deberás navegar entre las pestañas para completar este codelab.
NOTA que es posible que no veas líneas de registro cuando hagas clic en VER REGISTROS o solo veas algunas líneas. En ese evento, usa el selector de intervalo de tiempo en el panel de consulta del Explorador de registros y selecciona Últimos 30 minutos.
2. Revisa los registros en la pestaña abierta. Ten en cuenta que los resúmenes de registros se ven como varias líneas de la pila de llamadas de la excepción. Esto se debe a que la Cloud Function captura el texto impreso en stdout
o stderr
y escribe cada línea como una entrada de registro independiente. En otras líneas de registro, se resume la información sobre el código de error de salida, así como la información adicional que informan Cloud Functions y las APIs de Cloud Run.
Puedes hacer clic en cualquiera de las líneas para ver más información sobre un registro en particular. Los registros expandidos tienen elementos de IU adicionales en los que hacen clic, lo que te permite copiar toda la información sobre el registro, expandir todos los campos para mostrar todos los datos de la entrada de registro y explicarla usando Gemini.
4. La pila de llamadas de excepción no brinda mucha información. Revisa los registros para encontrar el final del registro de seguimiento de pila de la excepción. Es la línea que dice "Container called exit(1)
". El siguiente resumen de registro dice lo siguiente:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
Parece un buen candidato para la investigación. Haz clic en esta línea para expandir la entrada de registro. Luego, haz clic en el vínculo "Explain this log input". para ver información adicional sobre el registro seleccionado.
Si Gemini no se usó anteriormente en este proyecto, se te pedirá que habilites una API necesaria. Si se te solicita que habilites la API, haz clic en HABILITAR para continuar.
NOTA que, en ocasiones, es posible que recibas un error cuando le solicites a Gemini. En ese caso, repite la operación de instrucción una vez más para obtener la respuesta. Por ejemplo, haz clic en el vínculo "Explain this log input". de nuevo.
5. Explicación de revisión proporcionada por Gemini. Si la explicación proporcionada no es suficiente o poco clara, pídele a Gemini que proporcione más información usando una de las siguientes instrucciones o redactando tu propia pregunta.
¿Puedes proporcionar más información sobre este registro?
¿Puedes proporcionar más información sobre el error?
6. Luego, pídele sugerencias a Gemini para resolver el problema. Por ejemplo, pídele a Gemini
¿Cómo solucionar este problema?
Sugiere una solución para resolver este error
Sugiere cómo puedo corregir este error
La respuesta de Gemini puede variar según el contexto actual, además de la redacción y el formato de tu instrucción. Se espera que Gemini recomiende asegurarse de que el código fuente de Cloud Function tenga una función con el nombre hello_http
.
7. Estás viendo la pestaña que muestra los registros de Cloud Functions. Selecciona la pestaña anterior que muestra la página de implementación de Cloud Function con el error y haz clic en EDITAR.
8. Confirma que la autenticación aún esté configurada en Permitir invocaciones no autenticadas y actualiza la selección si es necesario.
9. Haz clic en NEXT en la parte inferior para ver Inline Editor. Sigue la recomendación de Gemini y cambia el nombre de la función de get_order_list
a hello_http
.
Después de finalizar la edición, haz clic en IMPLEMENTAR.
Es posible que debas esperar un par de minutos hasta que se complete el proceso de implementación. Confirma que la implementación se complete correctamente y que no aparezcan mensajes de error.
NOTA que Console puede seguir mostrándote el último mensaje de error hasta que se complete el proceso de implementación.
10. Comprueba que la Cloud Function esté operativa. Para ello, envía la siguiente solicitud HTTPS con curl
. Puedes usar Cloud Shell o hacerlo desde cualquier terminal que tenga las CLI de curl
y gcloud
instaladas.Ejecuta el siguiente comando desde la terminal de Cloud Shell.
curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"
NOTA que, para ejecutar este comando desde una terminal, deberás autenticarte con gcloud CLI y establecer el valor del ID de tu proyecto en la variable de entorno GOOGLE_CLOUD_PROJECT
.
Bonificación
El nombre de la función hello_http
se definió como punto de entrada predeterminado para la Cloud Function activada por HTTP cuando se seleccionó el entorno de ejecución de Python. Una solución alternativa puede ser mantener get_order_list
como el nombre de la función en el código fuente y actualizar el campo de punto de entrada de la Cloud Function que se encuentra arriba del Inline Editor, a la derecha del campo del entorno de ejecución:
Cambiar el punto de entrada de hello_http
a get_order_list
solucionará el problema de la implementación.
4. Limpieza
Para realizar una limpieza, puedes cerrar el proyecto o borrar la instancia de Cloud Function. Puedes borrar Cloud Functions con la consola o con el comando de la CLI como se muestra a continuación:
gcloud functions delete codelab-cf --region=us-central1
5. ¡Felicitaciones!
¡Felicitaciones! Usaste Gemini correctamente para solucionar los problemas de tu aplicación y ahora comprendes cómo puede ayudarte a comprender los registros y obtener respuestas a preguntas sobre Google Cloud.