Crear una aplicación de Go en App Engine

ID de región

El REGION_ID es un código abreviado que Google asigna en función de la región que selecciones al crear tu aplicación. El código no corresponde a un país o provincia, aunque algunos IDs de región pueden parecerse a los códigos de país y provincia que se usan habitualmente. En las aplicaciones creadas después de febrero del 2020, REGION_ID.r se incluye en las URLs de App Engine. En las aplicaciones creadas antes de esa fecha, el ID de región es opcional en la URL.

Más información sobre los IDs de región

Esta guía te ayudará a empezar a usar App Engine y a familiarizarte con el desarrollo, el despliegue y la gestión de una aplicación Go.

Costes

No hay ningún coste asociado a esta guía. Si ejecutas esta aplicación de ejemplo por sí sola, no superarás tu cuota gratuita.

Configurar un entorno de desarrollo

Puedes usar tu máquina local y las herramientas que ya conoces o Cloud Shell. Cloud Shell ya tiene instalado Google Cloud CLI, tu entorno ya está configurado y ofrece muchas otras funciones.

Equipo local

Instala Go y configura gcloud CLI.

Cloud Shell

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

Abrir Cloud Shell

Crear un Google Cloud proyecto

Se necesita un proyecto para usar Google Cloud, que es la base para usar todos los servicios deGoogle 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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. Install the Google Cloud CLI.

  6. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  7. Para inicializar gcloud CLI, ejecuta el siguiente comando:

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  11. Install the Google Cloud CLI.

  12. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  13. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  14. Crea tu aplicación de App Engine y los recursos asociados. Debes elegir una ubicación, que no se podrá cambiar más adelante.
    gcloud app create
    disponibles.
  15. Escribir un servicio web básico para App Engine

    Consulta cómo escribir un servicio web y declarar ajustes de tiempo de ejecución.

    Estructurar los archivos

    Tu servicio tendrá la siguiente estructura de archivos:

    • go-app/: directorio de tu servicio Go 1.11.
      • app.yaml: los ajustes de configuración de tu servicio.
      • main.go: el código de tu aplicación.

    Crear el archivo app.yaml

    Todos los proyectos de App Engine tienen un archivo de configuración app.yaml que especifica los ajustes del entorno de ejecución de tu servicio. El servicio no se desplegará sin este archivo.

    1. Crea una carpeta llamada go-app para tu servicio Go 1.11:

      mkdir go-app

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

      # Copyright 2019 Google LLC
      #
      # Licensed under the Apache License, Version 2.0 (the "License");
      # you may not use this file except in compliance with the License.
      # You may obtain a copy of the License at
      #
      #     https://www.apache.org/licenses/LICENSE-2.0
      #
      # Unless required by applicable law or agreed to in writing, software
      # distributed under the License is distributed on an "AS IS" BASIS,
      # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      # See the License for the specific language governing permissions and
      # limitations under the License.
      
      runtime: go124
      

      Esta es la configuración más sencilla para una aplicación de App Engine. Indica a App Engine que estás usando el entorno de ejecución de Go 1.11. El archivo app.yaml también puede especificar ajustes de red, ajustes de escalado y más. Para obtener más información, consulta la referencia de app.yaml.

    Crear el archivo main.go

    En este ejemplo se usa el paquete net/http para crear un servidor HTTP que muestre el mensaje "Hello world".

    Para configurar el archivo main.go, sigue estos pasos:

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

    2. Añade la instrucción package main para tratar tu código como un programa ejecutable:

      package main
      

      Para desplegar correctamente un servicio en el tiempo de ejecución de Go 1.11, se debe definir una instrucción package main al principio de al menos uno de los archivos de origen de Go que se encuentren en el mismo directorio que el archivo app.yaml del servicio.

    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. Al escribir en él, se envían 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 de tu programa ejecutable, por lo que inicia la aplicación. Empieza con una llamada a la función http.HandleFunc que indica al paquete http que gestione todas las solicitudes a la raíz web ("/") con la función indexHandler.

      Si la variable de entorno PORT no está definida, se usa el puerto 8080 de forma predeterminada. Cuando tu aplicación se ejecuta en App Engine, la variable de entorno PORT se define automáticamente, pero, cuando pruebas tu aplicación de forma local, puedes asignar a PORT el valor que prefieras.

    Desplegar un servicio web en App Engine

    1. En el directorio go-app donde se encuentra el archivo app.yaml, despliega tu servicio web en App Engine con 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

    ¡Enhorabuena! Acabas de crear y desplegar un servicio en App Engine.

    Servicios y versiones

    El primer servicio que implementes para tu aplicación será el servicio predeterminado. Puedes especificar el nombre de tu servicio en el archivo app.yaml, pero si se omite, se tratará como default. Puedes desplegar varios servicios además del servicio predeterminado.

    Puedes actualizar tu servicio en cualquier momento ejecutando el comando gcloud app deploy. Cada vez que implementas una versión, se crea una nueva y el tráfico se dirige automáticamente 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. Para ver tus servicios de App Engine en la consola de Google Cloud , sigue estos pasos:

      Ver servicios

      Debería aparecer un servicio llamado default. El servicio predeterminado es accesible públicamente en la siguiente URL:

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

    2. Ver tus versiones:

      Ver versiones

      Debería aparecer una versión con marca de tiempo correspondiente a tu implementación.

    Para saber cómo enviar solicitudes a servicios y versiones específicos, consulta la sección Cómo se dirigen las peticiones.

    Pasos siguientes

    ¡Enhorabuena! Acabas de configurar y desplegar tu aplicación web en App Engine.

    Consulta cómo añadir otras funciones a tu aplicación en las siguientes páginas: