GSP762

Descripción general
En este lab, crearás una app web para convertir archivos a PDF en Cloud Run, un servicio sin servidores que convierte automáticamente los archivos almacenados en Google Drive en PDFs y los almacena en carpetas distintas de Google Drive.
Situación
Ayudas a la clínica veterinaria Pet Theory a convertir automáticamente sus facturas en archivos PDF para que los clientes puedan usarlas con facilidad.

Este lab requiere el uso de las APIs de Google. Se habilitaron las siguientes APIs para ti:
Nombre |
API |
Cloud Build |
cloudbuild.googleapis.com |
Cloud Storage |
storage-component.googleapis.com |
Administrador de Cloud Run |
run.googleapis.com |
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Obtener el código fuente del lab
- Convertir una aplicación de Go en un contenedor
- Crear contenedores con Google Cloud Build
- Crear un servicio de Cloud Run que convierta archivos en archivos PDF en la nube
- Crear una cuenta de servicio y agregar permisos
- Iniciar un activador para las notificaciones de Cloud Storage
- Usar el procesamiento de eventos con Cloud Storage
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: Obtén el código fuente
En esta tarea, comenzarás por descargar el código necesario para este lab.
-
Ejecuta el siguiente comando en Cloud Shell para activar tu cuenta del lab:
gcloud auth list --filter=status:ACTIVE --format="value(account)"
-
Ejecuta el siguiente comando para clonar el repositorio de Pet Theory:
git clone https://github.com/Deleplace/pet-theory.git
-
Ejecuta el siguiente comando para cambiar al directorio correcto:
cd pet-theory/lab03
Habilita Gemini Code Assist en el IDE de Cloud Shell
Puedes usar Gemini Code Assist en un entorno de desarrollo integrado (IDE) como Cloud Shell para recibir orientación sobre el código o resolver problemas con tu código. Antes de comenzar a usar Gemini Code Assist, debes habilitarlo.
- En Cloud Shell, habilita la API de Gemini for Google Cloud con el siguiente comando:
gcloud services enable cloudaicompanion.googleapis.com
- En la barra de herramientas de Cloud Shell, haz clic en Abrir editor.
Nota: Para abrir el editor de Cloud Shell, haz clic en Abrir editor en la barra de herramientas de Cloud Shell. Para cambiar entre Cloud Shell y el editor de código, haz clic en Abrir editor o Abrir terminal, según sea necesario.
-
En el panel izquierdo, haz clic en el ícono de Configuración y, luego, en la vista Configuración, busca Gemini Code Assist.
-
Busca la opción Geminicodeassist: Habilitar y asegúrate de que esté seleccionada. Luego, cierra la Configuración.
-
Haz clic en Cloud Code - Sin proyecto en la barra de estado, en la parte inferior de la pantalla.
-
Autoriza el complemento según las instrucciones. Si no se selecciona un proyecto automáticamente, haz clic en Seleccionar un proyecto de Google Cloud y elige .
-
Verifica que tu proyecto de Google Cloud () se muestre en el mensaje de la barra de estado de Cloud Code.
Tarea 2: Crea un microservicio de facturas
En esta tarea, crearás una aplicación de Go para procesar solicitudes. Como se describe en el diagrama de arquitectura, integrarás Cloud Storage como parte de la solución.
-
En el explorador de archivos del editor de Cloud Shell, ve a pet-theory > lab03 > server.go.
-
Abre el archivo server.go
. Esta acción habilita Gemini Code Assist, como lo indica la presencia del ícono
en la esquina superior derecha del editor.
-
Abre el código fuente server.go
y edítalo para que coincida con lo siguiente:
package main
import (
"fmt"
"log"
"net/http"
"os"
"os/exec"
"regexp"
"strings"
)
func main() {
http.HandleFunc("/", process)
port := os.Getenv("PORT")
if port == "" {
port = "8080"
log.Printf("Defaulting to port %s", port)
}
log.Printf("Listening on port %s", port)
err := http.ListenAndServe(fmt.Sprintf(":%s", port), nil)
log.Fatal(err)
}
func process(w http.ResponseWriter, r *http.Request) {
log.Println("Serving request")
if r.Method == "GET" {
fmt.Fprintln(w, "Ready to process POST requests from Cloud Storage trigger")
return
}
//
// Read request body containing Cloud Storage object metadata
//
gcsInputFile, err1 := readBody(r)
if err1 != nil {
log.Printf("Error reading POST data: %v", err1)
w.WriteHeader(http.StatusBadRequest)
fmt.Fprintf(w, "Problem with POST data: %v \n", err1)
return
}
//
// Working directory (concurrency-safe)
localDir, err := os.MkdirTemp("", "")
if err != nil {
log.Printf("Error creating local temp dir: %v", err)
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Could not create a temp directory on server. \n")
return
}
defer os.RemoveAll(localDir)
//
// Download input file from Cloud Storage
//
localInputFile, err2 := download(gcsInputFile, localDir)
if err2 != nil {
log.Printf("Error downloading Cloud Storage file [%s] from bucket [%s]: %v",
gcsInputFile.Name, gcsInputFile.Bucket, err2)
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Error downloading Cloud Storage file [%s] from bucket [%s]",
gcsInputFile.Name, gcsInputFile.Bucket)
return
}
//
// Use LibreOffice to convert local input file to local PDF file.
//
localPDFFilePath, err3 := convertToPDF(localInputFile.Name(), localDir)
if err3 != nil {
log.Printf("Error converting to PDF: %v", err3)
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Error converting to PDF.")
return
}
//
// Upload the freshly generated PDF to Cloud Storage
//
targetBucket := os.Getenv("PDF_BUCKET")
err4 := upload(localPDFFilePath, targetBucket)
if err4 != nil {
log.Printf("Error uploading PDF file to bucket [%s]: %v", targetBucket, err4)
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Error downloading Cloud Storage file [%s] from bucket [%s]",
gcsInputFile.Name, gcsInputFile.Bucket)
return
}
//
// Delete the original input file from Cloud Storage.
//
err5 := deleteGCSFile(gcsInputFile.Bucket, gcsInputFile.Name)
if err5 != nil {
log.Printf("Error deleting file [%s] from bucket [%s]: %v", gcsInputFile.Name,
gcsInputFile.Bucket, err5)
// This is not a blocking error.
// The PDF was successfully generated and uploaded.
}
log.Println("Successfully produced PDF")
fmt.Fprintln(w, "Successfully produced PDF")
}
func convertToPDF(localFilePath string, localDir string) (resultFilePath string, err error) {
log.Printf("Converting [%s] to PDF", localFilePath)
cmd := exec.Command("libreoffice", "--headless", "--convert-to", "pdf",
"--outdir", localDir,
localFilePath)
cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr
log.Println(cmd)
err = cmd.Run()
if err != nil {
return "", err
}
pdfFilePath := regexp.MustCompile(`\.\w+$`).ReplaceAllString(localFilePath, ".pdf")
if !strings.HasSuffix(pdfFilePath, ".pdf") {
pdfFilePath += ".pdf"
}
log.Printf("Converted %s to %s", localFilePath, pdfFilePath)
return pdfFilePath, nil
}
-
Haz clic en el ícono Gemini Code Assist: Smart Actions
y selecciona Explicar esto.
-
Gemini Code Assist abre un panel de chat con el prompt Explicar esto
completado previamente. En el cuadro de texto intercalado del chat de Code Assist, reemplaza el prompt completado previamente por lo siguiente y haz clic en Enviar:
You are an expert Go developer at Cymbal AI. A new team member is unfamiliar with this server implementation. Explain this "server.go" file in detail, breaking down its key components used in the code.
For the suggested improvements, don't update this file.
La explicación del código en el archivo server.go
aparece en el chat de Gemini Code Assist.
-
En la terminal de Cloud Shell, ejecuta el siguiente comando para crear la aplicación:
go build -o server
Las funciones que llama este código de nivel superior están en archivos fuente:
- server.go
- notification.go
- gcs.go
Una vez que la aplicación se haya creado correctamente, puedes crear el servicio de conversión de PDF.
Tarea 3: Crea un servicio de conversión de PDF
El servicio de PDF usa Cloud Run y Cloud Storage para iniciar un proceso cada vez que se suba un archivo al almacenamiento designado.
Para lograrlo, decides usar un patrón común de notificaciones de eventos junto con Cloud Pub/Sub. Esto permite que la aplicación se enfoque solo en el procesamiento de la información. El transporte y la transferencia de información los llevan a cabo otros servicios, lo que te permite mantener la simplicidad de la aplicación.
La creación del módulo de factura requiere la integración de dos componentes:

Si agregas el paquete de LibreOffice, podrás usarlo en tu aplicación.
-
En Abrir editor, abre el manifiesto de Dockerfile
existente y actualiza el archivo de la siguiente manera:
FROM amd64/debian
RUN apt-get update -y \
&& apt-get install -y libreoffice \
&& apt-get clean
WORKDIR /usr/src/app
COPY server .
CMD [ "./server" ]
-
Guarda el Dockerfile
actualizado.
-
Haz clic en el ícono Gemini Code Assist: Smart Actions
y selecciona Explicar esto.
-
Gemini Code Assist abre un panel de chat con el prompt Explicar esto
completado previamente. En el cuadro de texto intercalado del chat de Code Assist, reemplaza el prompt completado previamente por lo siguiente y haz clic en Enviar:
You are a Senior DevOps Engineer at Cymbal AI. A new team member has asked you to explain the Dockerfile. Provide a comprehensive explanation of the contents and structure of this Dockerfile, including key instructions and best practices.
For the suggested improvements, don't update this Dockerfile.
La explicación del código en el archivo Dockerfile
aparece en el chat de Gemini Code Assist.
-
Vuelve a crear la imagen pdf-converter
con Cloud Build:
gcloud builds submit \
--tag gcr.io/$GOOGLE_CLOUD_PROJECT/pdf-converter
Haz clic en Revisar mi progreso para verificar que realizaste la tarea indicada arriba.
Crear una imagen con Cloud Build
-
Implementa el servicio para convertir archivos a PDF actualizado.
Nota: Es buena idea asignarle a LibreOffice 2 GB de RAM para trabajar. Consulta la línea que incluye la opción --memory
.
-
Ejecuta los siguientes comandos para crear el contenedor y, luego, implementarlo:
gcloud run deploy pdf-converter \
--image gcr.io/$GOOGLE_CLOUD_PROJECT/pdf-converter \
--platform managed \
--region {{{ project_0.default_region | "REGION" }}} \
--memory=2Gi \
--no-allow-unauthenticated \
--set-env-vars PDF_BUCKET=$GOOGLE_CLOUD_PROJECT-processed \
--max-instances=3
Haz clic en Revisar mi progreso para verificar que realizaste esta tarea.
Implementar el servicio para convertir archivos a PDF
El servicio de Cloud Run se implementó correctamente. Sin embargo, implementaste una aplicación que requiere los permisos correctos para acceder a ella.
Tarea 4: Crea una cuenta de servicio
Una cuenta de servicio es un tipo especial de cuenta con acceso a las APIs de Google.
En este lab, se usa una cuenta de servicio para acceder a Cloud Run cuando se procesa un evento de Cloud Storage. Cloud Storage admite un conjunto amplio de notificaciones que se pueden usar para activar eventos.
En esta tarea, actualizarás el código para notificar a la aplicación cuando se suba un archivo.
-
Haz clic en Menú de navegación > Cloud Storage y verifica que se hayan creado dos buckets. Deberías ver lo siguiente:
-
Crea una notificación de Pub/Sub para indicar que se subió un archivo nuevo al bucket de documentos (“uploaded”). La notificación tiene la etiqueta del tema “new-doc”.
gsutil notification create -t new-doc -f json -e OBJECT_FINALIZE gs://$GOOGLE_CLOUD_PROJECT-upload
Resultado esperado:
Created Cloud Pub/Sub topic projects/{{{project_0.project_id | "PROJECT_ID"}}}/topics/new-doc
Created notification config projects/_/buckets/{{{project_0.project_id | "PROJECT_ID"}}}-upload/notificationConfigs/1
-
Crea una cuenta de servicio nueva para activar los servicios de Cloud Run:
gcloud iam service-accounts create pubsub-cloud-run-invoker --display-name "PubSub Cloud Run Invoker"
Resultado esperado:
Created service account [pubsub-cloud-run-invoker].
-
Otórgale permiso a la cuenta de servicio para que invoque al servicio para convertir archivos a PDF:
gcloud run services add-iam-policy-binding pdf-converter \
--member=serviceAccount:pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com \
--role=roles/run.invoker \
--region {{{ project_0.default_region | "REGION" }}} \
--platform managed
Resultado esperado:
Updated IAM policy for service [pdf-converter].
bindings:
- members:
- serviceAccount:pubsub-cloud-run-invoker@{{{project_0.project_id | "PROJECT_ID"}}}.iam.gserviceaccount.com
role: roles/run.invoker
etag: BwYYfbXS240=
version: 1
-
Ejecuta este comando para buscar el número de tu proyecto:
PROJECT_NUMBER=$(gcloud projects list \
--format="value(PROJECT_NUMBER)" \
--filter="$GOOGLE_CLOUD_PROJECT")
-
Ejecuta este comando para permitir que tu proyecto genere tokens de autenticación de Cloud Pub/Sub:
gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \
--member=serviceAccount:{{{ project_0.project_id | "PROJECT_ID" }}}@{{{ project_0.project_id | "PROJECT_ID" }}}.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator
Haz clic en Revisar mi progreso para verificar que realizaste esta tarea.
Crear una cuenta de servicio
Una vez que se creó la cuenta de servicio, puede usarse para invocar el servicio de Cloud Run.
Tarea 5: Prueba el servicio de Cloud Run
Antes de seguir avanzando, debes probar el servicio implementado. Como el servicio requiere autenticación, probarlo ayuda a garantizar que sea privado.
-
Guarda la URL de tu servicio en la variable de entorno $SERVICE_URL:
SERVICE_URL=$(gcloud run services describe pdf-converter \
--platform managed \
--region {{{ project_0.default_region | "REGION" }}} \
--format "value(status.url)")
-
Muestra la URL DEL SERVICIO:
echo $SERVICE_URL
-
Realiza una solicitud GET anónima a tu servicio nuevo:
curl -X GET $SERVICE_URL
Resultado esperado:
<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>403 Forbidden</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Forbidden</h1>
<h2>Your client does not have permission to get URL <code>/</code> from this server.</h2>
<h2></h2>
Nota:
La solicitud GET anónima genera un mensaje de error:
"Your client does not have permission to get URL"
.
Este es el comportamiento esperado: no queremos que usuarios anónimos puedan llamar al servicio.
-
Ahora intenta invocar al servicio como usuario autorizado:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-identity-token)" $SERVICE_URL
Resultado esperado:
Ready to process POST requests from Cloud Storage trigger
Excelente. Implementaste correctamente un servicio autenticado de Cloud Run.
Tarea 6: Configura un activador de Cloud Storage
Para iniciar una notificación cuando se suba contenido nuevo a Cloud Storage, agrega una suscripción a tu tema de Pub/Sub existente.
Nota: Las notificaciones de Cloud Storage envían automáticamente un mensaje a tu fila de temas cuando se suba contenido nuevo. El uso de notificaciones te permite crear aplicaciones potentes que respondan a eventos sin necesidad de escribir código adicional.
-
Crea una suscripción a Pub/Sub para que el servicio para convertir archivos a PDF se ejecute cada vez que se publique un mensaje en el tema new-doc
:
gcloud pubsub subscriptions create pdf-conv-sub \
--topic new-doc \
--push-endpoint=$SERVICE_URL \
--push-auth-service-account=pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com
Resultado esperado:
Created subscription [projects/{{{ project_0.project_id| "PROJECT_ID" }}}/subscriptions/pdf-conv-sub].
Haz clic en Revisar mi progreso para verificar que realizaste esta tarea.
Confirmar la suscripción a Pub/Sub
Ahora, siempre que se suba un archivo, la suscripción a Pub/Sub interactuará con tu cuenta de servicio. Luego, la cuenta de servicio iniciará tu servicio para convertir archivos a PDF de Cloud Run.
Tarea 7: Prueba la notificación de Cloud Storage
Para probar el servicio de Cloud Run, usa los archivos de ejemplo disponibles.
-
Copia algunos archivos de prueba en tu bucket de carga:
gsutil -m cp -r gs://spls/gsp762/* gs://$GOOGLE_CLOUD_PROJECT-upload
Resultado esperado:
Copying gs://spls/gsp762/cat-and-mouse.jpg [Content-Type=image/jpeg]...
Copying gs://spls/gsp762/file-sample_100kB.doc [Content-Type=application/msword]...
Copying gs://spls/gsp762/file-sample_500kB.docx [Content-Type=application/vnd.openxmlformats-officedocument.wordprocessingml.document]...
Copying gs://spls/gsp762/file_example_XLS_10.xls [Content-Type=application/vnd.ms-excel]...
Copying gs://spls/gsp762/file-sample_1MB.docx [Content-Type=application/vnd.openxmlformats-officedocument.wordprocessingml.document]...
Copying gs://spls/gsp762/file_example_XLSX_50.xlsx [Content-Type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet]...
Copying gs://spls/gsp762/file_example_XLS_100.xls [Content-Type=application/vnd.ms-excel]...
Copying gs://spls/gsp762/file_example_XLS_50.xls [Content-Type=application/vnd.ms-excel]...
Copying gs://spls/gsp762//Copy of cat-and-mouse.jpg [Content-Type=image/jpeg]...
-
En la consola de Cloud, haz clic en Cloud Storage > Buckets seguido del bucket cuyo nombre termina en “-upload”.
-
Haz clic en el botón Actualizar unas cuantas veces y observa cómo se borran los archivos, uno por uno, a medida que se convierten en archivos PDF.
-
Luego, haz clic en Buckets, seguido del nombre del bucket que termina en “-processed”. Debería contener las versiones en PDF de todos los archivos.
Nota:
El procesamiento de los archivos puede tardar unos minutos. Usa la opción de actualización del bucket para verificar el estado de finalización del proceso.
-
Puedes abrir los archivos PDF para asegurarte de que se hayan convertido correctamente.
-
Una vez que se complete la carga, haz clic en el menú de navegación > Cloud Run y, luego, en el servicio pdf-converter.
-
Selecciona la pestaña REGISTROS y agrega un filtro de “Converting” para ver los archivos convertidos.
-
Ve al menú de navegación > Cloud Storage y abre el bucket cuyo nombre termina en “-upload” para confirmar que se hayan procesado todos los archivos cargados.
Excelente trabajo. Diseñaste correctamente un nuevo servicio que crea archivos PDF a partir de archivos subidos a Cloud Storage.
¡Felicitaciones!
En este lab, exploraste cómo convertir una aplicación de Go en un contenedor, construir contenedores con Google Cloud Build y lanzar un servicio de Cloud Run.
También obtuviste los conocimientos para habilitar permisos mediante una cuenta de servicio y aprovechar el procesamiento de eventos de Cloud Storage, tareas que son integrales para la operación del servicio que transforma documentos en archivos PDF y los almacena en el bucket “processed”.
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 18 de agosto de 2025
Prueba más reciente del lab: 11 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.