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

Desarrolla y protege APIs con Apigee X: lab de desafío

Lab 2 horas 30 minutos 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

GSP363

Logotipo de los labs de autoaprendizaje de Google Cloud

Descripción general

En un lab de desafío, se le proporcionarán una situación y un conjunto de tareas. En lugar de seguir instrucciones paso a paso, deberás utilizar las habilidades aprendidas en los labs del curso para decidir cómo completar las tareas por tu cuenta. Un sistema automatizado de puntuación (en esta página) mostrará comentarios y determinará si completaste tus tareas correctamente.

En un lab de desafío, no se explican conceptos nuevos de Google Cloud, sino que se espera que amplíes las habilidades que adquiriste, como cambiar los valores predeterminados y leer o investigar los mensajes de error para corregir sus propios errores.

Debe completar correctamente todas las tareas dentro del período establecido para obtener una puntuación del 100%.

Se recomienda este lab a los estudiantes que completaron los labs del curso Desarrolla y protege APIs con Apigee X. ¿Aceptas el desafío?

Configuración

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.

Situación del desafío

Tienes un puesto de ingeniería de la nube en Cymbal Shops, una tienda minorista nacional. Cymbal Shops se enfoca en las ventas globales, y los servicios de traducción se identificaron como una herramienta clave para ayudar a expandir el negocio a nivel mundial. Eres responsable de crear la primera versión de una API de traducción.

Se espera que tengas las habilidades y el conocimiento necesarios para realizar estas tareas, por lo que no se te proporcionarán guías paso a paso.

Tu desafío

Crearás un nuevo proxy de API de Apigee y otros recursos en la organización de Apigee del proyecto. Lee la descripción de cada tarea y crea la funcionalidad requerida.

Errores cuando se guarda

Cuando guardes los cambios en tu proxy de API, es posible que aparezca el error Could not save new revision (No se pudo guardar la nueva revisión). Si usas el botón desplegable Guardar (Botón desplegable Guardar) y, luego, seleccionas Save as new revision (Guardar como revisión nueva), deberías ver un mensaje de error con información sobre qué no es válido.

Tarea 1: Crea un proxy de la API de Cloud Translation

Cymbal Shops decidió usar la API de Translation de Google Cloud como servicio de backend para el proxy de API.

Requisitos:

  1. En la consola de Google Cloud, confirma que la API de Cloud Translation esté habilitada en la Biblioteca de APIs.
  2. Crea una cuenta de servicio para el proxy de API llamada apigee-proxy y otórgale el rol Logging > Escritor de registros.
  3. En la consola de Google Cloud, en el menú de navegación, selecciona Apigee para abrir la IU de Apigee y crear tu proxy de API.
  4. El proxy de API debe ser un proxy inverso llamado translate-v1, con una ruta de acceso base de /translate/v1.
  5. El destino del proxy de API es la URL HTTP de la versión básica de la API de Cloud Translation (https://translation.googleapis.com/language/translate/v2).
  6. No agregues autorización, CORS ni una cuota con la página Políticas comunes del asistente de proxy.
  7. En la página de resumen, crea el proxy de API dejando la configuración con los valores predeterminados.
  8. Agrega una sección de autenticación al TargetEndpoint predeterminado para que se envíe un token de acceso con cada solicitud de backend. Usa un elemento GoogleAccessToken con un Permiso de https://www.googleapis.com/auth/cloud-translation.
Nota: Edita el proxy y, en la pestaña Desarrollo, en la sección Extremos de destino, edita el archivo default.xml.
  1. Usa la siguiente secuencia de comandos de Cloud Shell para confirmar que el entorno de ejecución de Apigee esté instalado por completo:
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***";

Cuando la secuencia de comandos devuelva el mensaje ORG IS READY TO USE, podrás continuar con los próximos pasos.

Nota: Si estás esperando a que se instale el entorno de ejecución, puedes seguir avanzando con la lectura y planificar el desarrollo para la tarea 2.
  1. Guarda e implementa el proxy translate-v1 en el entorno eval con la siguiente cuenta de servicio:
apigee-proxy@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
  1. Prueba el proxy de API.

Se puede llamar al entorno de evaluación en la organización de Apigee con el nombre de host eval.example.com. Esta entrada de DNS solo está disponible en la red interna, por lo que debes usar una VM que se haya creado para ti.

  1. En Cloud Shell, abre una conexión SSH a apigeex-test-vm:
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
  1. Si se te solicita autorización, haz clic en Autorizar. Para cada pregunta que se haga en el comando de gcloud, haz clic en Intro o Retorno para especificar la entrada predeterminada.

  2. Una vez que hayas completado correctamente la tarea 1, el siguiente comando curl debería traducir el texto:

curl -i -k -X POST "https://eval.example.com/translate/v1" -H "Content-Type: application/json" -d '{ "q": "Translate this text!", "target": "es" }'

La respuesta debería verse similar a esto:

{ "data": { "translations": [ { "translatedText": "¡Traduce este texto!", "detectedSourceLanguage": "en" } ] } } Nota: Durante unos minutos, es posible que recibas una respuesta de error 502 hasta que tu proxy de API se implemente por completo.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear un proxy de la API de Cloud Translation

Nota: Si no obtienes una marca de verificación verde, haz clic en el menú desplegable de la puntuación en la parte superior derecha y, luego, en Revisar mi progreso en el paso correspondiente. Aparecerá una ventana emergente con una sugerencia.

Tarea 2: Cambia la solicitud a la API y su respuesta

Cymbal Shops quiere crear una API diferente de la interfaz que proporciona la API de Translation. Hay dos llamadas a la API de Translation que se deben modificar.

La primera llamada recupera una lista de idiomas válidos.

Solicitud a la API de Cloud Translation:

REQUEST: POST https://translation.googleapis.com/language/translate/v2/languages Authorization: Bearer ACCESSTOKEN Content-Type: application/json { "target": "en" }

Respuesta de la API de Cloud Translation:

Content-Type: application/json { "data": { "languages": [ { "language": "af", "name": "Afrikaans" }, { "language": "sq", "name": "Albanian" }, ... ] } }

Solicitud de translate-v1:

GET https://eval.example.com/translate/v1/languages

Respuesta de translate-v1:

Content-Type: application/json [{"language":"af","name":"Afrikaans"},{"language":"sq","name":"Albanian"}, ... ]

El proxy de API debe reemplazar el GET por un POST, quitar los campos de respuesta data y languages, y obtener el código del idioma de destino de un conjunto de propiedades. El token de acceso se agregó automáticamente en la sección Autenticación de la tarea 1.

La segunda llamada traduce texto a un idioma especificado.

Solicitud a la API de Cloud Translation:

POST https://translation.googleapis.com/language/translate/v2 Authorization: Bearer ACCESSTOKEN Content-Type: application/json { "q": "Hello world!", "target": "de" }

Respuesta de la API de Cloud Translation:

Content-Type: application/json { "data": { "translations": [ { "translatedText": "Hallo Welt!", "detectedSourceLanguage": "en" } ] } }

Solicitud de translate-v1:

POST https://eval.example.com/translate/v1?lang=de Content-Type: application/json { "text": "Hello world!" }

Respuesta de translate-v1:

Content-Type: application/json { "translated": "Hallo Welt!" }

El proxy de API debe tomar el idioma de destino del parámetro de consulta lang y cambiar los nombres de los campos del texto entrante y traducido. El parámetro de consulta lang se puede omitir de forma opcional en la solicitud translate-v1, en cuyo caso el idioma de destino se tomará de una propiedad en el conjunto de propiedades.

Nota: La API de Translation acepta una sola cadena o un array de cadenas para el campo "q". Tu API solo debe admitir una sola cadena.

Requisitos:

  1. Dentro del proxy de API, crea un conjunto de propiedades llamado language.properties. El conjunto de propiedades debe tener dos propiedades: output con un valor de es y caller con un valor de en. La propiedad caller se usará para especificar el idioma de destino cuando se enumeren los idiomas (el idioma que se usa para el campo name). output especificará el idioma de destino predeterminado que se usará si no se proporciona el parámetro de consulta lang.

  2. En el extremo de proxy, crea un flujo condicional de ruta de acceso y verbo para el recurso POST /. Asígnale el nombre translate.

  3. En el extremo de proxy, crea un flujo condicional de ruta de acceso (sin verbo) para el recurso /languages. Asígnale el nombre getLanguages. No incluyas un verbo. Modificarás el verbo de la solicitud de GET (para la entrada al proxy) a POST (requerido por el backend). Si incluyes un verbo en la condición, no se ejecutarán las políticas de respuesta en el flujo, ya que request.verb ya no será igual a GET.

  4. Crea una política AssignMessage llamada AM-BuildTranslateRequest para crear la solicitud de backend que se usa en el flujo condicional translate.

La política debe incluir lo siguiente:

  • Un AssignVariable con una plantilla para crear variables que se usarán más adelante en un mensaje registrado. La variable llamada text debe usar la función de plantilla de mensajes jsonPath para extraer el campo text de la solicitud.

  • La variable llamada language se debe crear con la función de plantilla de mensajes firstnonnull. Esta variable debe contener el valor del parámetro de consulta lang si existe y la propiedad output del conjunto de propiedades de idioma para el idioma de destino si no se especificó el parámetro de consulta lang.

  • Se debe usar una sección Set para establecer la carga útil de JSON que requiere el servicio de backend. Ambas variables que creaste se usarán en la carga útil.

  • El elemento [AssignTo] debe usar el mensaje de solicitud existente.

    Las secciones AssignVariable en la política AssignMessage deberían verse de la siguiente manera:

    <AssignVariable> <Name>...</Name> <Template>...</Template> <AssignVariable>
  1. Crea una política de AssignMessage llamada AM-BuildTranslateResponse en el flujo condicional translate para crear la respuesta para el llamador con la respuesta de la API de Translation.

La política debe incluir lo siguiente:

  • Un AssignVariable con una plantilla jsonPath para crear una variable llamada translated, que extrae el campo translatedText de la respuesta de la API de Translation. Pista: La expresión JSONPath para extraer este campo es $.data.translations[0].translatedText.

  • Establece createNew como verdadero.

  • La nueva carga útil de JSON usará la variable translated.

    Las secciones AssignVariable en la política AssignMessage deberían verse de la siguiente manera:

    <AssignVariable> <Name>...</Name> <Template>...</Template> <AssignVariable>
  1. Crea una política de AssignMessage llamada AM-BuildLanguagesRequest para crear la solicitud de backend que se usa en el flujo condicional getLanguages.

La política debe incluir lo siguiente:

  • Usa Set para establecer el verbo y la carga útil correctos para la solicitud de backend.

  • La propiedad caller del conjunto de propiedades language se debe usar para el campo target en la carga útil del backend.

  • Establece createNew como verdadero.

  • Establece la carga útil de la solicitud de backend para que tenga un tipo de contenido de application/json.

    Las secciones AssignVariable en la política AssignMessage deberían verse de la siguiente manera:

    <AssignVariable> <Name>...</Name> <Set> ... </Set> </AssignVariable>
  1. Crea una política de JavaScript llamada JS-BuildLanguagesResponse en el flujo condicional getLanguages para crear la respuesta para el llamador. El código JavaScript debe seguir estos pasos:

Tu código JavaScript debería ser similar al siguiente:

var payload = ...; var payloadObj = JSON.parse(...); var newPayload = JSON.stringify(...); context.setVariable(...); Nota: Asegúrate de crear las políticas deseadas en sus flujos condicionales correctos y editar los parámetros de configuración de políticas deseadas en los archivos .xml respectivos.
  1. Prueba la API. Desde la máquina virtual apigeex-test-vm, usa los siguientes comandos curl para probar los ejemplos que se muestran arriba:
  • Lista de idiomas:

    curl -i -k -X GET "https://eval.example.com/translate/v1/languages"
  • Traduce al idioma especificado (alemán):

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -d '{ "text": "Hello world!" }'
  • Traduce al idioma predeterminado (español):

    curl -i -k -X POST "https://eval.example.com/translate/v1" -H "Content-Type:application/json" -d '{ "text": "Hello world!" }'

Haz clic en Revisar mi progreso para verificar el objetivo. Cambiar la solicitud a la API y su respuesta

Nota: Si no obtienes una marca de verificación verde, haz clic en el menú desplegable de la puntuación en la parte superior derecha y, luego, en Revisar mi progreso en el paso correspondiente. Aparecerá una ventana emergente con una sugerencia.

Tarea 3: Agrega la verificación de la clave de API y la aplicación de la cuota

El acceso a esta API debe limitarse a las aplicaciones aprobadas, por lo que agregarás una política VerifyAPIKey y una política Quota para limitar la cantidad de solicitudes.

Requisitos:

  1. Crea un producto de API con translate-product como nombre y nombre visible. Este producto de API debe tener acceso público, aprobar automáticamente las solicitudes de acceso y estar disponible en el entorno de evaluación.

  2. Agrega una operación al producto de API translate-product. La operación debe permitir el acceso al proxy translate-v1 y usar una ruta de acceso de /, que permite el acceso a cualquier solicitud, incluida /. Los métodos permitidos son GET y POST. Agrega un parámetro de configuración de cuota de operación de 10 solicitudes por cada 1 minuto.

  3. Crea un desarrollador con el correo electrónico joe@example.com. Elige tu propio nombre, apellido y nombre de usuario.

  4. Crea una app llamada translate-app y habilita el producto de API translate-product para ella. Deberás asociarla con tu desarrollador joe@example.com.

  5. Agrega una política VerifyAPIKey llamada VA-VerifyKey al flujo de procesamiento previo del extremo del proxy. La clave de API debe ser obligatoria para cada solicitud y se debe enviar con el encabezado Key.

  6. Agrega una política de cuotas llamada Q-EnforceQuota al flujo previo del extremo del proxy.

La política debe incluir los siguientes pasos:

  • Usar un tipo de calendar El tipo calendar requiere un elemento StartTime.
  • Especifica UseQuotaConfigInAPIProduct para usar la cuota del producto de API, con una cuota predeterminada de 5 solicitudes cada hora si el producto de API no especifica la configuración de cuota.
  • Establece Distributed y Synchronous como verdadero, y quita el elemento AsynchronousConfiguration.

Una vez que se realicen estos cambios, la solicitud debería mostrar un error si no se especifica una clave de API válida en el encabezado Key.

  1. Desde la máquina virtual apigeex-test-vm, usa los siguientes comandos curl para probar la funcionalidad de la clave de API:
  • Falla (sin clave de API):

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -d '{ "text": "Hello world!" }'
  • Falla (clave de API no válida):

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -H "Key: ABC123" -d '{ "text": "Hello world!" }'
  • Se ejecuta correctamente (cuando la variable KEY se establece en una clave de API válida KEY=<get this from the earlier step when setting up a Developer App>):

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -H "Key: $KEY" -d '{ "text": "Hello world!" }'

Haz clic en Revisar mi progreso para verificar el objetivo. Agregar la verificación de la clave de API y la aplicación de la cuota

Nota: Si no obtienes una marca de verificación verde, haz clic en el menú desplegable de la puntuación en la parte superior derecha y, luego, en Revisar mi progreso en el paso correspondiente. Aparecerá una ventana emergente con una sugerencia.

Tarea 4: Agrega el registro de mensajes

Para comprender cómo se usa el servicio de traducción, una política MessageLogging registrará cada mensaje traducido.

Requisitos:

  1. Agrega una política de MessageLogging llamada ML-LogTranslation al flujo condicional translate. La política debe ejecutarse después del paso AM-BuildTranslateResponse.
Nota: No la agregues a PostClientFlow porque los registros solo se crean para la operación de traducción.
  1. La política debe registrarse en Cloud Logging. Usa esta documentación de políticas.
  • El valor de LogName debe ser el siguiente:

    projects/{organization.name}/logs/translate
  • El mensaje registrado debe tener un contentType de text/plain, y el contenido del mensaje debe ser el siguiente:

    {language}|{text}|{translated}

Este mensaje requiere las variables language, text y translated que se crearon en las políticas AM-BuildTranslateRequest y AM-BuildTranslateResponse.

  1. Valida los mensajes registrados en la página Logging de la consola de Google Cloud. Usa la consulta logName : "translate" para ver solo los registros traducidos.

  2. Una vez que se haya agregado correctamente la política MessageLogging, usa el siguiente comando curl:

curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -H "Key: $KEY" -d '{ "text": "Hello world!" }'
  • Ese comando curl debería crear un mensaje de registro con el siguiente contenido:

    de|Hello world!|Hallo Welt!
Nota: Hay una pequeña demora antes de que aparezca un mensaje en los registros.

Haz clic en Revisar mi progreso para verificar el objetivo. Agregar el registro de mensajes

Nota: Si no obtienes una marca de verificación verde, haz clic en el menú desplegable de la puntuación en la parte superior derecha y, luego, en Revisar mi progreso en el paso correspondiente. Aparecerá una ventana emergente con una sugerencia.

Tarea 5: Reescribe un mensaje de error de backend

Cuando el parámetro target enviado a la API de Translation no es válido, se muestra un mensaje de Error 400: Solicitud incorrecta:

{ "error": { "code": 400, "message": "Invalid Value", "errors": [ { "message": "Invalid Value", "domain": "global", "reason": "invalid" } ] } }

Este mensaje de error confundiría al llamador, por lo que lo reescribirás.

Requisitos:

  1. Agrega una sección FaultRules al extremo de destino default. Cuando el backend devuelva una respuesta 400, evaluará automáticamente cualquier regla de falla coincidente en el extremo de destino.
Nota: No se puede usar el menú de navegación de IU de la izquierda para agregar una sección FaultRules. Debes agregarla en la configuración XML del extremo de destino.
  1. Agrega una FaultRule a la sección FaultRules. La Condition de esta FaultRule debe establecerse de modo que se ejecute si fault.name es ErrorResponseCode.

  2. Crea una política AssignMessage llamada AM-BuildErrorResponse y adjúntala a la FaultRule. Usa la siguiente configuración de política:

<AssignMessage name="AM-BuildErrorResponse"> <Set> <Payload contentType="application/json">{ "error": "Invalid request. Verify the lang query parameter." }</Payload> </Set> </AssignMessage>

Una vez que se adjunte la política, tu sección FaultRules en el extremo de destino debería verse de la siguiente manera:

<FaultRules> <FaultRule name="..."> <Step> <Name>...</Name> </Step> <Condition>...</Condition> </FaultRule> </FaultRules> Nota: Debes editar manualmente el XML del extremo de destino (asegúrate de que sea TargetEndpoint, no ProxyEndpoint).
  1. Prueba la API.
  • Una solicitud válida como esta debería seguir funcionando:

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -H "Key: $KEY" -d '{ "text": "Hello world!" }'
  • Un parámetro de consulta de idioma no válido como este debería mostrar el mensaje de error reescrito:

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=invalid" -H "Content-Type:application/json" -H "Key: $KEY" -d '{ "text": "Hello world!" }'

Haz clic en Revisar mi progreso para verificar el objetivo. Reescribir un mensaje de error de backend

Nota: Si no obtienes una marca de verificación verde, haz clic en el menú desplegable de la puntuación en la parte superior derecha y, luego, en Revisar mi progreso en el paso correspondiente. Aparecerá una ventana emergente con una sugerencia.

¡Felicitaciones!

En este lab de desafío, demostraste que tienes conocimientos sobre el desarrollo y la seguridad de las APIs de Apigee X.

Insignia del lab Desarrolla y protege APIs con Apigee X

Obtén tu próxima insignia de habilidad

Este lab de autoaprendizaje forma parte de la Quest Desarrolla y protege APIs con Apigee X. Si completas esta Quest, obtendrás la insignia de habilidad que se muestra arriba como reconocimiento de tu logro. Comparte la insignia en tu currículum y tus plataformas sociales, y anuncia tu logro con el hashtag #GoogleCloudBadge.

Esta Quest para obtener la insignia de habilidad forma parte de la ruta de aprendizaje para desarrolladores de APIs de Google Cloud. Continúa tu recorrido de aprendizaje inscribiéndote en la Quest Implementa y administra Apigee X.

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: 10 de julio de 2024

Prueba más reciente del lab: 10 de julio 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.