Instrucciones y requisitos de configuración del lab
Protege tu cuenta y tu progreso. Usa siempre una ventana de navegador privada y las credenciales del lab para ejecutarlo.

Funciones de HTTP de Google Cloud Run en Go

Lab 30 minutos universal_currency_alt 1 crédito show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Este contenido aún no está optimizado para dispositivos móviles.
Para obtener la mejor experiencia, visítanos en una computadora de escritorio con un vínculo que te enviaremos por correo electrónico.

GSP602

Logotipo de los labs de autoaprendizaje de Google Cloud

Descripción general

Go es un lenguaje de programación de código abierto que facilita la creación de software simple, confiable y eficiente. Ya está instalado cuando se usa Cloud Shell.

Cloud Run Functions es un entorno de ejecución sin servidores para crear y conectar servicios en la nube. Con él, puedes escribir funciones de un solo propósito vinculadas a eventos emitidos desde tu infraestructura y servicios de nube. Estas se activan cuando ocurre un evento que se está supervisando. El código se ejecuta en un entorno completamente administrado en Cloud Run. No hay necesidad de aprovisionar infraestructura ni preocuparse por administrar servidores.

Puedes escribir funciones de Cloud Run con lenguajes de programación compatibles. Puedes ejecutarlas en cualquier entorno de ejecución estándar para uno de esos lenguajes, lo que simplifica la portabilidad y las pruebas locales.

En este lab, usarás Go para crear tu propia función de Cloud Run que, cuando se invoca a través de HTTP, muestra una imagen del Go gopher, diseñado por Renee French.

Qué aprenderás

  • Cómo escribir una función de HTTP de Cloud Run en Go
  • Cómo probar una función de HTTP de Cloud Run en Go
  • Cómo ejecutar un servidor HTTP local de Go para probar la función

La mascota GO gopher

Requisitos previos

En este lab, se da por sentado que tienes conocimientos de Go. Se ofrecen explicaciones de su código, pero puede que no se explique todo lo que necesita una persona que no conoce Go.

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.

Configura tu región y zona

Algunos recursos de Compute Engine se encuentran en regiones y zonas. Una región es una ubicación geográfica específica donde puedes ejecutar tus recursos. Cada región tiene una o más zonas.

Ejecuta los siguientes comandos de gcloud en Cloud Shell para establecer la región y la zona predeterminadas de tu lab:

gcloud config set compute/zone "{{{project_0.default_zone|ZONE}}}" export ZONE=$(gcloud config get compute/zone) gcloud config set compute/region "{{{project_0.default_region|REGION}}}" export REGION=$(gcloud config get compute/region)

Asegúrate de que la API de Cloud Run Functions esté habilitada

  • En Cloud Shell, ejecuta el siguiente comando para habilitar la API de Cloud Run Functions. Esto te permite implementar funciones de Cloud Run más adelante en el lab.
gcloud services enable cloudfunctions.googleapis.com

Descarga y configura el código

  1. En la terminal de Cloud Shell, usa curl para descargar un archivo ZIP con el código de este lab:
curl -LO https://github.com/GoogleCloudPlatform/golang-samples/archive/main.zip
  1. Usa unzip para descomprimir el código. Esto descomprime un directorio (golang-samples-main) que contiene código de muestra de Go para cloud.google.com:
unzip main.zip
  1. Cambia al directorio que contiene el código de este lab:
cd golang-samples-main/functions/codelabs/gopher

El directorio gopher contiene los siguientes directorios y archivos:

$ tree . ├── cmd │ └── main.go # Objeto binario para ejecutar la función a nivel local. ├── go.mod # Definición de módulo de Go. ├── gophercolor.png # ¡El gopher! ├── gopher.go # Archivo de Go con la función. └── gopher_test.go # Archivo de prueba de Go.

Tarea 1. Ingresa las funciones de HTTP de Cloud Run en Go

Las funciones de HTTP de Cloud Run en Go se escriben como funciones http.HandlerFunc, que es una interfaz definida en la biblioteca estándar de Go. La función debe cumplir con lo siguiente:

  • Debe exportarse, es decir que se puede usar desde otro paquete, y esto se indica con una letra mayúscula al principio del nombre.
  • Debe coincidir con el tipo http.HandlerFunc, lo que significa que tiene la forma func(http.ResponseWriter, *http.Request). (Consulta el instructivo Writing Web Applications para obtener una guía detallada sobre cómo escribir una aplicación web completa en Go).

Por ejemplo, aquí tienes una función "Hello, world":

package gopher import ( "fmt" "net/http" ) // HelloWorld prints "Hello, world." func HelloWorld(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, world.") } Nota: Puedes abrir este archivo en el editor de Cloud Shell (haz clic en **Abrir editor**) y usar el árbol de archivos de la izquierda para abrirlo golang-samples-main/functions/codelabs/gopher/hello.go.

Implementa esta función como una función de HTTP de Cloud Run

  1. Desde el directorio functions/codelabs/gopher, puedes implementar el nombre de la función con gcloud functions deploy:
gcloud functions deploy HelloWorld --gen2 --runtime go125 --trigger-http --region {{{project_0.default_region | REGION}}}
  1. Ingresa Y cuando se te pida permitir invocaciones no autenticadas de la nueva función.

Este proceso tarda uno o dos minutos.

Resultado:

Deploying function (may take a while - up to 2 minutes)...done. availableMemoryMb: 256 entryPoint: HelloWorld httpsTrigger: url: https://region-my-project.cloudfunctions.net/HelloWorld ...

Haz clic en Revisar mi progreso para verificar el objetivo. Crear una función de HTTP de HelloWorld de Cloud Run

Nota: ¿Recibiste un error durante la implementación? Comprueba lo siguiente:

  • ¿Está habilitada la API de Cloud Run Functions? Si no es así, habrá un error con un vínculo que te permitirá habilitarla. De lo contrario, puedes hacerlo con el comando gcloud services enable cloudfunctions.googleapis.com.
  • Asegúrate de que tu directorio de trabajo (desde donde ejecutas gcloud) sea el que contiene el archivo .go. Puedes cambiar el directorio con cd golang-samples/functions/codelabs/gopher.
  • ¿El nombre de la función es correcto? Debería ser HelloWorld, que es el nombre de la función de Go que intentas implementar.
  • Si sigue apareciendo un error de permiso denegado, espera unos minutos y vuelve a intentarlo.
  • Si encuentras un error **403 Forbidden** después de la implementación cuando accedes a la URL implementada, ejecuta el siguiente comando para otorgar acceso público a la función: gcloud functions add-iam-policy-binding HelloWorld \ --member="allUsers" \ --role="roles/cloudfunctions.invoker" \ --region= Una vez que se aplique esta vinculación de política de IAM, vuelve a implementar la función con el comando de implementación anterior.
  1. Copia la URL httpsTrigger que se muestra en el resultado. Se verá de la siguiente manera:
https://<REGION>-$GOOGLE_CLOUD_PROJECT.cloudfunctions.net/HelloWorld
  1. Para probar la función HelloWorld, usa curl para realizar una solicitud a la URL del último resultado:
curl https://<REGION>-$GOOGLE_CLOUD_PROJECT.cloudfunctions.net/HelloWorld

Resultado:

Hello, world.

¡Escribiste e implementaste una función de HTTP de Cloud Run!

Tarea 2. Escribe la función de HTTP de Cloud Run Gopher

Ahora, haz que la función "Hello, world" sea un poco más entretenida imprimiendo una imagen de un Gopher para cada solicitud.

La mascota Go gopher

En el siguiente bloque, se muestra el código para lograrlo. Puedes ver este código en Cloud Shell en golang-samples-master/functions/codelabs/gopher/gopher.go.

// Package gopher contains an HTTP function that shows a gopher. package gopher import ( "fmt" "io" "net/http" "os" ) // Gopher prints a gopher. func Gopher(w http.ResponseWriter, r *http.Request) { // Read the gopher image file. f, err := os.Open("gophercolor.png") if err != nil { http.Error(w, fmt.Sprintf("Error reading file: %v", err), http.StatusInternalServerError) return } defer f.Close() // Write the gopher image to the response writer. if _, err := io.Copy(w, f); err != nil { http.Error(w, fmt.Sprintf("Error writing response: %v", err), http.StatusInternalServerError) } w.Header().Add("Content-Type", "image/png") }
  • El archivo comienza con una declaración de paquete y un comentario. Todo el código de Go se escribe dentro de un paquete, con una declaración como esta en la parte superior.

  • El bloque import contiene una lista de otros paquetes de los que depende este archivo. Se hace referencia a estos paquetes en el resto del archivo con sus nombres. Por ejemplo, para usar el tipo ResponseWriter del paquete http, escribe http.ResponseWriter.

  • A continuación, se encuentra la declaración de la función Gopher.

  • La función comienza leyendo el archivo gophercolor.png (consulta el código de muestra) con la función os.Open.

  • Luego, verifica si hubo un error al leer el archivo, lo que podría ocurrir si el archivo está dañado o se omitió accidentalmente en la carga.

  • Usa io.Copy para copiar la imagen del gopher en w, el argumento http.ResponseWriter. Todo lo que se escribe en w se envía en la respuesta HTTP.

  • Si no hubo errores al escribir la respuesta, la función se devuelve normalmente.

  1. Implementa esta función como lo hiciste con la función "Hello, world" anterior usando gcloud functions deploy y el nombre de la función, Gopher:
gcloud functions deploy Gopher --gen2 --runtime go125 --trigger-http --region {{{project_0.default_region | REGION}}}
  1. Ingresa Y cuando se te pida permitir invocaciones no autenticadas de la nueva función.

  2. Para probar la función, visita su URL, que aparece en el resultado del último comando. Si todo sale bien, verás al gopher en tu navegador.

El siguiente paso es agregar una prueba para asegurarte de que tu función siga operativa.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear la función de HTTP de Cloud Run Gopher

Tarea 3. Escribe una prueba

Las funciones de HTTP de Cloud Run en Go se prueban con los paquetes testing y httptest de la biblioteca estándar. No es necesario ejecutar un emulador ni otras simulaciones para probar tu función, solo necesitas código Go estándar.

Así se ve una prueba para la función Gopher:

package gopher import ( "net/http" "net/http/httptest" "testing" ) func TestGopher(t *testing.T) { rr := httptest.NewRecorder() req := httptest.NewRequest("GET", "/", nil) Gopher(rr, req) if rr.Result().StatusCode != http.StatusOK { t.Errorf("Gopher StatusCode = %v, want %v", rr.Result().StatusCode, http.StatusOK) } }
  • Las pruebas de Go se escriben de la misma manera que otros archivos de Go. Comienzan con una declaración de paquete y un conjunto de importaciones.
  • La declaración de prueba tiene la forma func MyTest(t *testing.T). Debe exportarse y tomar un argumento de tipo *testing.T.
  • La prueba crea valores de solicitud y respuesta de prueba con el paquete httptest.
  • Llama a la función Gopher.
  • Después de invocar la función Gopher, la prueba verifica el código de respuesta HTTP para asegurarse de que no hubo errores.
  1. Para ejecutar estas pruebas de forma local, usa cd para ir al directorio con los archivos que estás probando:
cd ~/golang-samples-main/functions/codelabs/gopher
  1. En el directorio golang-samples-main/functions/codelabs/gopher, usa el comando go test:
go test -v

Resultado:

=== RUN TestGopher --- PASS: TestGopher (0.00s) PASS ok github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher 0.037s Nota: ¿La prueba da error?

  • Revisa si en el mensaje de error se indica algo que pueda servir.
  • ¿Estás en el mismo directorio que los archivos gopher.go y gopher_test.go (golang-samples-main/functions/codelabs/gopher)?

A continuación, crearás un objeto binario (package main, en Go) para poder ejecutar tu función de forma local y probarla en un navegador.

Tarea 4. Ejecuta la función de forma local

Para ejecutar una función de HTTP de forma local, crea un servidor HTTP y registra tu función como controlador. (Consulta el instructivo Writing Web Applications para obtener una guía detallada sobre cómo escribir una aplicación web completa en Go).

Puedes escribir un servidor HTTP para tu función en un subdirectorio de tu función.

Para cumplir con una convención de Go, debes darle el nombre cmd a ese directorio y allí crear un archivo main.go:

// The cmd command starts an HTTP server. package main import ( "fmt" "log" "net/http" "github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher" ) func main() { http.HandleFunc("/", gopher.Gopher) fmt.Println("Listening on localhost:8080") log.Fatal(http.ListenAndServe(":8080", nil)) }
  • Este archivo usa package main como paquete. Un paquete main se compilará como un objeto binario que puedes ejecutar.
  • Este archivo importa github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher, según la línea module del archivo go.mod que está junto al archivo de tu función. Cuando escribes tus propias funciones, puedes nombrar el módulo como prefieras.
  • func main() es el punto de entrada para el objeto binario. Registra la función gopher.Gopher como un controlador HTTP y, luego, inicia el servidor con http.ListenAndServe.
  1. Para compilar y ejecutar este objeto binario de forma local, ejecuta los siguientes comandos:
go work init go work use . go build -o start ./cmd ./start

Resultado:

Listening on localhost:8080
  1. Como la función carga la imagen gophercolor.png desde el directorio de trabajo actual, debes iniciar tu objeto binario desde el mismo directorio que el archivo gophercolor.png. La marca -o start indica que el nombre del objeto binario resultante será start. ./cmd indica que se debe compilar el objeto binario ubicado en el directorio cmd.

  2. Ahora, usa la vista previa de Cloud Shell Web para probar el servidor en tu navegador.

  • Haz clic en el botón Vista previa en la Web El ícono de vista previa en la Web.
  • Selecciona el puerto 8080 en el menú que se muestra.

Cloud Shell abre la URL de vista previa en una ventana nueva del navegador, en su servicio de proxy. La vista previa en la Web restringe el acceso a través de HTTPS solo para tu cuenta de usuario.

Si todo funciona correctamente, deberías ver al Go Gopher.

Nota: ¿No ves al gopher?

  • ¿Estás en el mismo directorio que los archivos gopher.go y gopher_test.go (golang-samples-main/functions/codelabs/gopher)?
  • ¿Se inició el servidor? Asegúrate de compilarlo con el comando go build -o start ./cmd y, luego, iniciarlo con ./start. Debería imprimir Listening on localhost:8080.
  • ¿Seleccionaste el puerto correcto cuando abriste la vista previa en la Web? Asegúrate de usar 8080, el puerto en el que el servidor está escuchando.

Tarea 5. Realiza una limpieza

Cuando finalices este lab, se borrarán todos los recursos que usaste. Cuando uses tu propio entorno, siempre debes quitar los recursos innecesarios para ahorrar costos y ser un buen ciudadano de la nube.

  1. Deja de entregar tu URL con CTRL+C.

  2. Cuando termines de probar tus funciones de Cloud Run, puedes borrarlas con gcloud:

gcloud functions delete Gopher --region {{{project_0.default_region | REGION}}} gcloud functions delete HelloWorld --region {{{project_0.default_region | REGION}}}

También puedes borrar la función desde la consola.

¡Felicitaciones!

¡Ya sabes cómo usar funciones de Cloud Run en Go! En este lab, aprendiste a escribir una función de HTTP de Cloud Run en Go, probarla y ejecutarla de forma local.

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.

Actualización más reciente del manual: 25 de septiembre de 2025

Prueba más reciente del lab: 25 de septiembre de 2025

Copyright 2026 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.

Enviar comentarios sobre este lab

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

Usar una ventana de incógnito o de navegación privada es la mejor forma de ejecutar este 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.