Compila una app de Go en App Engine

ID de región

REGION_ID es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.

Obtén más información acerca de los ID de región.

Esta guía te ayuda a comenzar a usar App Engine y familiarizarte con el desarrollo, la implementación y la administración de una app de Go.

Después de compilar la app, puedes leer otros instructivos para aprender a integrarla a otros servicios de Google Cloud y agregarle más funciones.

Costos

No hay costos asociados por usar esta guía. Ejecutar esta app de muestra por sí sola no supera tu cuota gratuita.

Configura tu entorno de desarrollo

Puedes usar tu máquina local y herramientas con las que ya estés familiarizado o Cloud Shell. Cloud Shell ya tiene Google Cloud CLI instalada, el entorno configurado y muchas otras funciones.

Máquina local

Instala Go y configura la CLI de gcloud como se describe en Configura tu entorno de desarrollo.

Cloud Shell

Inicia Cloud Shell, que tiene todas las herramientas que necesitas preinstaladas:

Abra Cloud Shell

Crea un proyecto de Google Cloud

Se requiere un proyecto con el fin de usar Google Cloud, que será la base para usar todos los servicios de Google Cloud.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Cloud Build API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. Crea tu app de App Engine y sus recursos asociados. Debes elegir una ubicación; esta no se puede cambiar más adelante.
    gcloud app create

Escribe un servicio web básico para App Engine

Aprende a escribir un servicio web y declarar la configuración del entorno de ejecución.

Estructura tus archivos

Tu servicio tendrá la estructura de archivos siguiente:

  • go-app/: Es el directorio para el servicio de Go.
    • app.yaml: Son las opciones de configuración del servicio.
    • main.go: Es el código de la aplicación.

Crea el archivo app.yaml

Cada proyecto de App Engine tiene un archivo de configuración app.yaml que especifica la configuración del entorno de ejecución del servicio. Tu servicio no se implementará sin este archivo.

  1. Crea una nueva carpeta llamada go-app para el servicio de Go:

    mkdir go-app

  2. En la carpeta go-app/, crea un archivo llamado app.yaml y agrega el siguiente contenido:

    runtime: go123  # or another supported version
    

    Esta es la configuración más simple para una aplicación de App Engine. Indica a App Engine que estás usando Go. El archivo app.yaml puede especificar otras versiones de Go, configuración de red, configuración de escalamiento y mucho más. Para obtener más información, consulta la referencia de app.yaml.

Crea el archivo main.go

En este ejemplo, se usa el paquete net/http para crear un servidor HTTP que imprime “Hello, World!”.

Para configurar el archivo main.go, haz lo siguiente:

  1. En la carpeta go-app/, crea un archivo main.go.

  2. Agrega la declaración package main para tratar el código como un programa ejecutable:

    package main
    

    Para implementar un servicio de forma correcta, se debe definir una declaración package main al comienzo de, al menos, uno de tus archivos fuente de Go.

  3. Importa los siguientes paquetes:

    import (
    	"fmt"
    	"log"
    	"net/http"
    	"os"
    )
    
  4. Define tu controlador HTTP:

    
    // indexHandler responds to requests with our greeting.
    func indexHandler(w http.ResponseWriter, r *http.Request) {
    	if r.URL.Path != "/" {
    		http.NotFound(w, r)
    		return
    	}
    	fmt.Fprint(w, "Hello, World!")
    }
    

    El objeto http.ResponseWriter ensambla la respuesta del servidor HTTP. Cuando escribes en él, le envías datos al navegador. El objeto http.Request es una estructura de datos que representa la solicitud HTTP entrante.

  5. Registra tu controlador HTTP:

    
    func main() {
    	http.HandleFunc("/", indexHandler)
    
    	port := os.Getenv("PORT")
    	if port == "" {
    		port = "8080"
    		log.Printf("Defaulting to port %s", port)
    	}
    
    	log.Printf("Listening on port %s", port)
    	if err := http.ListenAndServe(":"+port, nil); err != nil {
    		log.Fatal(err)
    	}
    }
    

    La función main es el punto de entrada del programa ejecutable, por lo que inicia la aplicación. Comienza con una llamada a la función http.HandleFunc que le indica al paquete http que maneje todas las solicitudes a la raíz web ("/") con la función indexHandler.

    Si la variable de entorno PORT no está configurada, se usa el puerto 8080 de forma predeterminada. Cuando la app se ejecuta en App Engine, la variable de entorno PORT se configura por ti, pero cuando pruebas la app de manera local, puedes establecer PORT en el valor que prefieras.

Implementa tu servicio web en App Engine

  1. En el directorio go-app en el que se encuentra el archivo app.yaml, implementa el servicio web en App Engine mediante el siguiente comando:

    gcloud app deploy

  2. Para iniciar el navegador y ver el servicio web en https://PROJECT_ID.REGION_ID.r.appspot.com, ejecuta el siguiente comando:

    gcloud app browse

¡Felicitaciones! Acabas de implementar y crear un servicio en App Engine.

Servicios y versiones

El primer servicio que implementarás para tu aplicación será el servicio predeterminado. Puedes especificar el nombre del servicio en el archivo app.yaml, pero si se omite el nombre, se tratará como default. Puedes implementar múltiples servicios distintos al servicio predeterminado.

Puedes actualizar el servicio en cualquier momento si ejecutas el comando gcloud app deploy. Cada vez que implementas, se crea una versión nueva y el tráfico se enruta de forma automática a la versión más reciente.

Para confirmar la creación del servicio y la implementación de la versión, sigue estos pasos:

  1. Visualiza tus servicios de App Engine en la consola de Google Cloud:

    Ver servicios

    Deberías ver un servicio en la lista, llamado default. El servicio predeterminado está disponible a nivel público en la siguiente URL:

    https://PROJECT_ID.REGION_ID.r.appspot.com

  2. Observa tus versiones:

    Ver versiones

    En la lista, deberías ver una versión con marca de tiempo que corresponde a tu implementación.

Para obtener más información sobre cómo enviar solicitudes a servicios y versiones específicas, consulta Cómo se enrutan las solicitudes.

Próximos pasos

¡Felicitaciones! Acabas de configurar y, además, implementar tu aplicación web en App Engine.

Para aprender a agregar otras funciones a tu aplicación, explora las páginas siguientes: