Crear una aplicación de Go en el entorno flexible de 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

En esta guía de inicio rápido se muestra cómo crear y desplegar una aplicación que muestre un mensaje corto. Puedes usar la aplicación de ejemplo de esta guía de inicio rápido con cualquier versión compatible de Go. Para ello, especifica la versión del entorno de ejecución y el sistema operativo en el archivo app.yaml.

Antes de empezar

  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. Debido a los cambios en el comportamiento predeterminado de cómo usa Cloud Build las cuentas de servicio en los proyectos nuevos y a los cambios en la política de organización de seguridad predeterminada, es posible que tengas que conceder roles adicionales a tu cuenta de servicio de implementación. Para obtener más información sobre cómo conceder roles específicos, consulta la guía de solución de problemas.
  15. Requisitos previos adicionales

    1. Inicializa tu aplicación de App Engine con tu proyecto y elige su región:

      gcloud app create --project=[YOUR_PROJECT_ID]
      

      Cuando se te solicite, selecciona la región en la que quieras ubicar tu aplicación de App Engine.

    2. Instala lo siguiente en tu máquina local:

      • Ejecuta el siguiente comando para instalar el componente de gcloud que incluye la extensión de App Engine para Go:

        gcloud components install app-engine-go
        

    Ubicaciones de App Engine

    App Engine es regional, lo que significa que la infraestructura que ejecuta tus aplicaciones está ubicada en una región concreta y Google la gestiona para que esté disponible de forma redundante en todas las zonas de esa región.

    Cumplir con los requisitos de latencia, disponibilidad o durabilidad son factores principales para seleccionar la región donde se ejecutan tus aplicaciones. Por lo general, puedes seleccionar la región más cercana a los usuarios de tu aplicación, pero debes tener en cuenta las ubicaciones en las que está disponible App Engine, así como las ubicaciones de los demásGoogle Cloud productos y servicios que utilice tu aplicación. Usar servicios en varias ubicaciones puede afectar a la latencia de tu aplicación, así como a su precio.

    No es posible cambiar la región de una aplicación después de configurarla.

    Si ya has creado una aplicación de App Engine, puedes ver su región de una de las siguientes formas:

    En esta guía de inicio rápido se da por hecho que conoces el lenguaje de programación Go y que tienes Go instalado.

    Descargar la aplicación Hello World

    Hemos creado una aplicación Hello World para App Engine para que puedas familiarizarte rápidamente con el proceso de desplegar una aplicación en Google Cloud.

    1. Clona el repositorio de la aplicación de ejemplo Hello World en tu máquina local.

      git clone https://github.com/GoogleCloudPlatform/golang-samples
      

    2. Cambia al directorio que contiene el código de ejemplo.

         cd golang-samples/appengine_flexible/helloworld
      

    Ejecutar Hello World en tu máquina local

    Para ejecutar la aplicación Hello World en tu ordenador local:

    1. Inicia un servidor web local.

      go run *.go
      
    2. Introduce la siguiente dirección en el navegador web:

      http://localhost:8080

      Si usas Cloud Shell, en la barra de herramientas, haz clic en Vista previa web y selecciona Obtener vista previa en el puerto 8080.

    El mensaje Hello World de la aplicación de ejemplo se muestra en la página. En la ventana de la terminal, pulsa Ctrl+C para salir del servidor web.

    Desplegar y ejecutar Hello World en App Engine

    Para desplegar tu aplicación en el entorno flexible de App Engine, sigue estos pasos:

    1. Despliega la aplicación Hello World ejecutando el siguiente comando desde el directorio helloworld:

      gcloud app deploy

      Consulta información sobre las marcas opcionales.

      Marcas de comandos gcloud habituales

      • Incluya la marca --version para especificar un ID que identifique de forma única esa versión de su aplicación. De lo contrario, se generará uno automáticamente. Ejemplo: --version [YOUR_VERSION_ID]
      • Incluye la marca --project para especificar un ID de proyecto alternativo Google Cloud al que has inicializado como predeterminado en la herramienta gcloud. Ejemplo: --project [YOUR_PROJECT_ID]

      Ejemplo:

      gcloud app deploy --version pre-prod-5 --project my-sample-app

      Para obtener más información sobre el despliegue de tu aplicación desde la línea de comandos, consulta el apartado sobre cómo probar y desplegar tu aplicación. Para ver una lista de todas las marcas de comandos, consulta la gcloud app deploy referencia.

    2. Abre el navegador para ver la aplicación en https://PROJECT_ID.REGION_ID.r.appspot.com

      gcloud app browse
      , donde PROJECT_ID representa el ID de tu Google Cloud proyecto.

    Esta vez, la página que muestra el mensaje "Hello World" la entrega un servidor web que se ejecuta en una instancia de App Engine.

    ¡Enhorabuena! Has desplegado tu primera aplicación de App Engine en el entorno flexible de App Engine.

    Si has detectado algún error al implementar tu aplicación, consulta los consejos para solucionar problemas.

    En las siguientes secciones encontrará información sobre cómo limpiar los datos, así como enlaces a los posibles pasos que puede seguir.

    Limpieza

    Para evitar que se te apliquen cargos, puedes eliminar tu Google Cloud proyecto para detener la facturación de todos los recursos utilizados en él.

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Siguientes pasos

    Conocer toda la plataforma

    Ahora que ya sabes cómo es desarrollar y desplegar aplicaciones de App Engine, puedes explorar el resto de la Google Cloud. Ya tienes instalada la CLI de Google Cloud, que te proporciona las herramientas para interactuar con productos como Cloud SQL, Cloud Storage y Firestore, entre otros.

    Información sobre el entorno flexible de App Engine

    Estos son algunos temas que te ayudarán a seguir aprendiendo sobre App Engine:

    Revisión del código de Hello World

    Hello World es la aplicación de App Engine más sencilla posible, ya que solo contiene un servicio y una versión, y todo el código se encuentra en el directorio raíz de la aplicación. Esta sección describe cada uno de los archivos de la aplicación en detalle.

    helloworld.go

    El archivo helloworld.go registra un controlador que está atento a las solicitudes de / y responde con el mensaje "Hello world!".

    
    package main
    
    import (
    	"fmt"
    	"log"
    	"net/http"
    	"os"
    )
    
    func main() {
    	http.HandleFunc("/", handle)
    	port := os.Getenv("PORT")
    	if port == "" {
    		port = "8080"
    	}
    	log.Printf("Listening on port %s", port)
    	if err := http.ListenAndServe(":"+port, nil); err != nil {
    		log.Fatal(err)
    	}
    }
    
    func handle(w http.ResponseWriter, r *http.Request) {
    	if r.URL.Path != "/" {
    		http.NotFound(w, r)
    		return
    	}
    	fmt.Fprint(w, "Hello world!")
    }
    

    app.yaml

    El archivo app.yaml describe la siguiente configuración de tu aplicación:

    • Define env: flex, lo que indica que tu aplicación usa el entorno flexible de App Engine.
    • Especifica el tiempo de ejecución que usa la aplicación.

      # 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: go
      env: flex
      
      runtime_config:
        operating_system: 'ubuntu22'
        runtime_version: 1.24
      # This sample incurs costs to run on the App Engine flexible environment. 
      # The settings below are to reduce costs during testing and are not appropriate
      # for production use. For more information, see:
      # https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml
      manual_scaling:
        instances: 1
      resources:
        cpu: 1
        memory_gb: 0.5
        disk_size_gb: 10