Aviso: En los próximos meses, reorganizaremos el sitio de documentación de App Engine para facilitar la búsqueda de contenido y alinearlo mejor con el resto de los productos de Google Cloud. El mismo contenido estará disponible, pero la navegación ahora coincidirá con el resto de los productos de Cloud. Si tienes comentarios o preguntas mientras navegas por el sitio, haz clic en Enviar comentarios.

Entorno de ejecución de Go

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Descripción general

El entorno de ejecución de Go es la pila de software encargada de instalar el código y las dependencias de tu aplicación y, luego, ejecutarla en el entorno flexible.

Las versiones del entorno de ejecución de Go compatibles son las siguientes: 1.19 (versión preliminar), 1.18 (versión preliminar), 1.15, 1.14, 1.13, 1.12, 1.11, 1.10 y 1.9.

Importante: La compatibilidad del entorno de ejecución se encuentra en transición a los paquetes de compilación de Google Cloud a partir de la versión 1.18 de Go:

  • Vista previa: A partir de la versión 1.18, todos los entornos de ejecución de Go nuevos se compilan mediante buildpacks, que te permiten elegir un sistema operativo. Para usar estos entornos de ejecución nuevos, debes especificar una configuración adicional en tu app.yaml. Obtén más información.

  • Las versiones del entorno de ejecución de Go 1.15 y anteriores se compilan mediante Docker. El código fuente está disponible en GitHub.

Elige una versión de Go

Versiones nuevas del entorno de ejecución (versión preliminar)

Para la versión 1.18 y posteriores del entorno de ejecución de Go, debes incluir la configuración de runtime_config y operating_system en tu app.yaml para especificar un sistema operativo. Las versiones 1.18 (versión preliminar) y 1.19 (versión preliminar) del entorno de ejecución de Go se ejecutan en Ubuntu 22.

Obligatorio:

  • Tu aplicación debe usar la versión 417.0.1 o una posterior de la CLI de gcloud. Para ver la versión actual de gcloud, ejecuta el comando gcloud version.

  • Tu aplicación debe usar módulos de Go e incluir el archivo go.mod en la misma carpeta que app.yaml. Por ejemplo, la estructura de carpeta de tu app con go.mod debe representar lo siguiente:

    <application-root>/
    --> app.yaml
    --> go.mod
    --> Other source files used in your application.
    
    

Opcional: Puedes especificar una versión del entorno de ejecución si incluyes la configuración runtime_version en tu app.yaml. De forma predeterminada, se usa la última versión de Go si no se especifica la configuración de runtime_version.

Ejemplos

  • Especifica la versión 1.18 de Go:

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: 1.18
    
  • Especifica la última versión compatible de Go en Ubuntu 22:

      runtime: go
      env: flex
    
      runtime_config:
          operating_system: "ubuntu22"
    

La aplicación usa la última versión estable que se especifica en tu archivo app.yaml. App Engine se actualiza de forma automática a nuevas revisiones de parches; sin embargo, no se actualizará automáticamente ante una nueva versión principal.

Por ejemplo, la aplicación podría implementarse en Go 1.18.10 y, luego, actualizarse de forma automática a Go 1.18.11, pero no se actualizará a la versión principal de Go 1.19 de forma automática.

Si eliges la versión del entorno de ejecución de Go 1.19 como se muestra a continuación en app.yaml, se generará la última versión disponible de la versión 1.19, por ejemplo, 1.19.5.

    runtime: go
    env: flex

    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: 1.19

Consulta la referencia de app.yaml para obtener más información.

Versiones anteriores del entorno de ejecución

Para las versiones del entorno de ejecución de Go 1.15 y versiones anteriores, puedes elegir una version de Go específica con el formato go1.x en el archivo de configuración app.yaml como runtime: go1.x:

Ejemplo

  runtime: go1.14
  env: flex

Si no se especifica una versión, se seleccionará de forma automática la versión predeterminada de go1.11.

La aplicación usa la última versión estable que se especifica en tu archivo app.yaml. App Engine se actualiza de forma automática a nuevas revisiones de parches; sin embargo, no se actualizará automáticamente ante una nueva versión principal.

Por ejemplo, la aplicación podría implementarse en Go 1.14.10 y, luego, actualizarse de forma automática a Go 1.14.11, pero no se actualizará a la versión principal de Go 1.15 de forma automática.

Si eliges la versión del entorno de ejecución de Go go1.15 como se muestra a continuación en app.yaml, se generará la última versión disponible de la versión 1.15, por ejemplo, 1.15.15.

  runtime: go1.15
  env: flex

Importa paquetes

El código se compila cuando implementas tu app en App Engine. Cuando ejecutas el comando de implementación, las dependencias de la aplicación primero se recopilan desde el GOPATH local y, luego, se envían al servidor de compilación. Cualquier dependencia que falte, por ejemplo, bibliotecas de terceros, dará como resultado fallas de compilación.

Para evitar fallas de compilación y asegurarte de que todas las dependencias de la aplicación se implementen con el código, debes probar la aplicación localmente antes de implementarla.

Extiende el entorno de ejecución

Si deseas obtener instrucciones para extender y personalizar el entorno de ejecución de Go, lee sobre el compilador del entorno de ejecución de Go en GitHub.

Servidor de metadatos

Cada instancia de tu aplicación puede usar el servidor de metadatos de Compute Engine para consultar información acerca de la instancia, incluidos el nombre del host, la dirección IP externa, el ID de la instancia, los metadatos personalizados y la información de la cuenta de servicio. App Engine no te permite establecer metadatos personalizados para cada instancia; sin embargo, puedes definir metadatos personalizados de todo el proyecto y leerlos desde las instancias de App Engine y Compute Engine.

Usa el paquete cloud.google.com/go/compute/metadata para acceder al servidor de metadatos.