arrow_back

Cómo crear archivos PDF con Go y Cloud Run

Acceder Unirse
Obtén acceso a más de 700 labs y cursos

Cómo crear archivos PDF con Go y Cloud Run

Lab 1 hora universal_currency_alt 5 créditos show_chart Intermedio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

GSP762

Logotipo de los labs de autoaprendizaje de Google Cloud

Descripción general

En este lab, compilarás una app web para convertir archivos en PDF en Cloud Run, un servicio sin servidores que convierte automáticamente los archivos almacenados en Google Drive en PDF y los almacena en carpetas distintas de Google Drive.

Objetivos

En este lab, aprenderás a hacer lo siguiente:

  • Convertir una aplicación de Go en un contenedor
  • Aprender a compilar contenedores con Google Cloud Build
  • Crear un servicio de Cloud Run que convierta archivos en archivos PDF en la nube
  • Comprender cómo crear cuentas de servicio y agregar permisos
  • 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

  1. 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
  2. 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.
  3. 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.

  4. Haz clic en Siguiente.

  5. 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.

  6. 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.
  7. 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. Ícono del menú de navegación y campo de búsqueda

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.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola de Google Cloud.

  2. 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.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

Resultado:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. 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.

Arquitectura

En este lab, ayudarás a la clínica veterinaria Pet Theory a convertir automáticamente sus facturas en archivos PDF para que los clientes puedan abrirlas de manera confiable.

Diagrama de arquitectura

Usa las APIs de Google

En este lab, usarás las APIs de Google. Se habilitaron las siguientes APIs para ti:

Nombre API
Cloud Build cloudbuild.googleapis.com
Cloud Storage storage-component.googleapis.com
Cloud Run run.googleapis.com

Tarea 1: Obtén el código fuente

Comienza por descargar el código necesario para este lab.

  1. Activa tu cuenta de lab:

    gcloud auth list --filter=status:ACTIVE --format="value(account)"
  2. Ejecuta el siguiente comando para clonar el repositorio de Pet Theory:

    git clone https://github.com/Deleplace/pet-theory.git
  3. Dirígete al directorio correcto:

    cd pet-theory/lab03

Tarea 2: Crea un microservicio de facturas

En esta sección, 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.

  1. Haz clic en el ícono Abrir editor y, luego, haz clic en Abrir en una nueva ventana.

  2. Navega a pet-theory > lab03 > server.go

  3. Abre el código fuente server.go y edítalo para que coincida con el texto a continuación:

    package main import ( "fmt" "io/ioutil" "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, errDir := ioutil.TempDir("", "") if errDir != nil { log.Printf("Error creating local temp dir: %v", errDir) 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 }
  4. Ahora, ejecuta lo siguiente para compilar la aplicación:

    go build -o server

    Resultado esperado:

    go: downloading cloud.google.com/go/storage v1.6.0 go: downloading cloud.google.com/go v0.53.0 go: downloading github.com/googleapis/gax-go/v2 v2.0.5 go: downloading google.golang.org/api v0.18.0 go: downloading google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63 go: downloading google.golang.org/grpc v1.27.1 go: downloading go.opencensus.io v0.22.3 go: downloading golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d go: downloading github.com/golang/protobuf v1.3.3 go: downloading golang.org/x/net v0.0.0-20200222125558-5a598a2470a0 go: downloading github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e go: downloading golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae go: downloading golang.org/x/text v0.3.2

    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 compilado correctamente, puedes crear el servicio pdf-conversion.

Tarea 3: Crea un servicio pdf-conversion

El servicio de PDF usará Cloud Run y Cloud Storage para iniciar un proceso cada vez que se suba un archivo al almacenamiento designado.

Para lograr esto, usarás 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 compilación del módulo de factura requiere la integración de dos componentes:

Contenedor que incluye dos componentes: servidor y LibreOffice

Si agregas el paquete de LibreOffice, podrás usarlo en tu aplicación.

  1. En Abrir editor, abre el manifiesto de Dockerfile existente y actualiza el archivo como se muestra a continuación:

    FROM amd64/debian RUN apt-get update -y \ && apt-get install -y libreoffice \ && apt-get clean WORKDIR /usr/src/app COPY server . CMD [ "./server" ]
  2. Guarda el Dockerfile actualizado.

  3. Vuelve a compilar 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 la realización de la tarea indicada arriba.

    Compilar una imagen con Cloud Build
  4. Implementa el servicio pdf-converter actualizado.

    Nota: Es buena idea asignarle a LibreOffice 2 GB de RAM para trabajar. Consulta la línea que incluye la opción --memory.
  5. Ejecuta los siguientes comandos para compilar 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 la realización de la tarea indicada arriba.

    Implementar el servicio pdf-converter

El servicio de Cloud Run se implementó correctamente. Sin embargo, implementamos 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.

A continuación, actualiza el código para notificar a la aplicación cuando se suba un archivo.

  1. Haz clic en Menú de navegación > Cloud Storage y verifica que se hayan creado dos buckets. Deberías ver lo siguiente:

    • -processed
    • -upload
  2. Crea una notificación de Pub/Sub para indicar que se subió un archivo nuevo al bucket de documentos. Las notificaciones tendrán 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
  3. 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].
  4. Otórgale permiso a la cuenta de servicio para que invoque al servicio pdf-converter:

    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
  5. Ejecuta este comando para buscar el número de tu proyecto:

    PROJECT_NUMBER=$(gcloud projects list \ --format="value(PROJECT_NUMBER)" \ --filter="$GOOGLE_CLOUD_PROJECT")
  6. 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 la realización de la tarea indicada arriba.

    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, prueba el servicio implementado. Recuerda que el servicio requiere autenticación, así que prueba eso para asegurarte de que sea privado.

  1. 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)")
  2. Muestra el valor de SERVICE_URL.

    echo $SERVICE_URL
  3. 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 dará como resultado 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.
  4. 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 con éxito un servicio autenticado de Cloud Run.

Tarea 6: 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 enviarán 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 conversor de 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 la realización de la tarea indicada arriba.

    Confirmar 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 pdf-converter 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.

  1. 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]...
  2. En la consola de Cloud, haz clic en Cloud Storage > Buckets seguido del bucket cuyo nombre termina en “-upload”.

  3. 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.

  4. Luego, haz clic en Buckets, seguido del bucket cuyo nombre 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.
  5. Puedes abrir los archivos PDF para asegurarte de que se hayan convertido correctamente.

  6. Una vez que se complete la carga, haz clic en el menú de navegación > Cloud Run y, luego, en el servicio pdf-converter.

  7. Selecciona la pestaña REGISTROS y agrega un filtro de “Converting” para ver los archivos convertidos.

  8. 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. Compilaste correctamente un nuevo servicio para crear un archivo PDF usando archivos cargados a Cloud Storage.

¡Felicitaciones!

En este lab, aprendiste a convertir un aplicación de Go en un contenedor, a construir contenedores con Google Cloud Build y a iniciar 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 pdf-converter 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: 15 de mayo de 2024

Prueba más reciente del lab: 15 de mayo de 2024

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.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.