Configurar variables de entorno (1.ª gen.)

Puedes desplegar pares clave-valor arbitrarios junto con una función de Cloud Run. Estas parejas se ponen a disposición de tu función como variables de entorno literales, a las que tu código puede acceder en el tiempo de ejecución, o como información de configuración para los buildpacks de Google Cloud.

Las variables de entorno están vinculadas a una sola función y no son visibles para otras funciones de tu proyecto Google Cloud . Cada variable se almacena en el backend de las funciones de Cloud Run y tiene el mismo ciclo de vida que la función a la que está vinculada.

Puedes añadir o quitar variables de entorno de tiempo de ejecución mediante la CLI de Google Cloud o la consola. Google Cloud

Definir variables de entorno de tiempo de ejecución

Usa estos métodos para definir nuevas variables o sustituir por completo las que ya tengas. Para hacer cambios acumulativos, sigue el proceso de actualización que se describe en la sección siguiente.

gcloud

Para definir una variable de entorno de tiempo de ejecución con la CLI de Google Cloud, usa la marca --set-env-vars en el momento de la implementación:

gcloud functions deploy --no-gen2 FUNCTION_NAME --set-env-vars FOO=bar FLAGS ...

También puedes definir varias variables de entorno de tiempo de ejecución mediante una lista separada por comas:

gcloud functions deploy --no-gen2 FUNCTION_NAME --set-env-vars FOO=bar,BAZ=boo FLAGS...

Si quieres almacenar tu configuración en un archivo (por ejemplo, en el control de código fuente), puedes usar un archivo YAML junto con la marca --env-vars-file:

gcloud functions deploy --no-gen2 FUNCTION_NAME --env-vars-file .env.yaml FLAGS...

donde el contenido del archivo .env.yaml es el siguiente:

 FOO: bar
 BAZ: boo

En los ejemplos anteriores, FLAGS... hace referencia a otras opciones que se transfieren durante el despliegue de la función. Para obtener una referencia completa del comando deploy, consulta gcloud functions deploy.

Interfaz de usuario de la consola de Google Cloud

Puedes definir variables de entorno de tiempo de ejecución durante la creación de la función en la consola Google Cloud :

  1. Abre la página Información general de Functions en la Google Cloud consola:

    Ve a la página Información general de Cloud Run Functions.

  2. Haz clic en Crear función.

  3. Rellena los campos obligatorios de la función.

  4. Abre la sección Configuración de tiempo de ejecución, compilación y conexiones.

  5. Selecciona la pestaña Tiempo de ejecución.

  6. En la sección Variables de entorno de tiempo de ejecución, haz clic en Añadir variable y añade el nombre y el valor.

    Para obtener instrucciones sobre cómo añadir variables de entorno a una función, consulta el artículo Actualizar variables de entorno de tiempo de ejecución.

Actualizar variables de entorno de ejecución

También puedes actualizar las variables de entorno de tiempo de ejecución de las funciones que ya tengas. Se trata de un enfoque no destructivo que cambia o añade variables de entorno de tiempo de ejecución, pero no las elimina.

gcloud

Para actualizar una variable con Google Cloud CLI, usa la marca --update-env-vars en el momento de la implementación:

gcloud functions deploy FUNCTION_NAME --no-gen2 --update-env-vars FOO=bar

También puedes actualizar varias variables de entorno de tiempo de ejecución mediante una lista separada por comas:

gcloud functions deploy FUNCTION_NAME --no-gen2 --update-env-vars FOO=bar,BAZ=boo

Interfaz de usuario de la consola de Google Cloud

Para actualizar las variables de entorno de tiempo de ejecución mediante la consola Google Cloud , sigue estos pasos:

  1. Abre la página Información general de Functions en la Google Cloud consola:

    Ve a la página Información general de Cloud Run Functions.

  2. Haz clic en una función para ir a su página de detalles.

  3. Haz clic en Editar.

  4. Abre la sección Configuración de tiempo de ejecución, compilación y conexiones.

  5. Selecciona la pestaña Tiempo de ejecución.

  6. Haz los cambios que quieras en la sección Variables de entorno de ejecución.

Eliminar variables de entorno de ejecución

gcloud

Si quieres eliminar selectivamente variables de entorno de tiempo de ejecución, puedes usar la marca --remove-env-vars en el momento del despliegue:

gcloud functions deploy FUNCTION_NAME --no-gen2 --remove-env-vars FOO,BAZ

También puedes borrar todas las variables de entorno de tiempo de ejecución definidas anteriormente con la marca --clear-env-vars:

gcloud functions deploy FUNCTION_NAME --no-gen2 --clear-env-vars

Interfaz de usuario de la consola de Google Cloud

Para eliminar variables de entorno de ejecución mediante la consola Google Cloud , sigue estos pasos:

  1. Abre la página Información general de Functions en la Google Cloud consola:

    Ve a la página Información general de Cloud Run Functions.

  2. Haz clic en una función para ir a su página de detalles.

  3. Haz clic en Editar.

  4. Abre la sección Configuración de tiempo de ejecución, compilación y conexiones.

  5. Selecciona la pestaña Tiempo de ejecución.

  6. En la sección Variables de entorno de tiempo de ejecución, haga clic en el icono de la papelera situado junto al par clave-valor que quiera eliminar.

Variables de entorno de tiempo de ejecución definidas automáticamente

En esta sección se enumeran las variables de entorno de tiempo de ejecución que se definen automáticamente.

Clave Descripción
FUNCTION_TARGET Reservado: la función que se va a ejecutar.
FUNCTION_SIGNATURE_TYPE Reservado: el tipo de función. http para funciones HTTP y event para funciones basadas en eventos.
K_SERVICE Reservado: nombre del recurso de función.
K_REVISION Reservado: identificador de versión de la función.
PORT Reservado: el puerto a través del cual se invoca la función.
gcloud functions deploy envVarMemory \
--no-gen2 \
--runtime nodejs10 \
--set-env-vars FUNCTION_MEMORY_MB=2Gi \
--memory 2Gi \
--trigger-http

Definir y obtener variables de entorno de tiempo de ejecución: un ejemplo

Define la variable de entorno de tiempo de ejecución:

Node.js

gcloud functions deploy envVar \
--runtime nodejs20 \
--set-env-vars FOO=bar \
--trigger-http

Usa la marca --runtime para especificar el ID del entorno de ejecución de una versión compatible de Node.js para ejecutar tu función.

Python

gcloud functions deploy env_vars \
--runtime python312 \
--set-env-vars FOO=bar \
--trigger-http

Usa la marca --runtime para especificar el ID de tiempo de ejecución de una versión de Python compatible para ejecutar tu función.

Go

gcloud functions deploy EnvVar \
--runtime go121 \
--set-env-vars FOO=bar \
--trigger-http

Usa la marca --runtime para especificar el ID de tiempo de ejecución de una versión de Go compatible para ejecutar tu función.

Java

gcloud functions deploy java-envVar-function \
--entry-point functions.EnvVars \
--runtime java17 \
--memory 512MB \
--set-env-vars FOO=bar \
--trigger-http

Usa la marca --runtime para especificar el ID de tiempo de ejecución de una versión de Java compatible para ejecutar tu función.

C#

gcloud functions deploy csharp-envVar-function \
--entry-point EnvironmentVariables.Function \
--runtime dotnet6 \
--set-env-vars FOO=bar \
--trigger-http

Usa la marca --runtime para especificar el ID de tiempo de ejecución de una versión de .NET compatible para ejecutar tu función.

Ruby

gcloud functions deploy env_vars --runtime ruby33 \
--set-env-vars FOO=bar \
--trigger-http

Usa la marca --runtime para especificar el ID de tiempo de ejecución de una versión de Ruby compatible para ejecutar tu función.

PHP

 gcloud functions deploy envVar --runtime php82 \
--set-env-vars FOO=bar \
--trigger-http

Usa la marca --runtime para especificar el ID de tiempo de ejecución de una versión de PHP compatible para ejecutar tu función.

En el tiempo de ejecución, accede a las variables de forma programática:

Node.js

En Node.js, usa la propiedad process.env para acceder a las variables de entorno del tiempo de ejecución:

exports.envVar = (req, res) => {
  // Sends 'bar' as response
  res.send(process.env.FOO);
};

Python

En Python, usa os.environ para acceder a las variables de entorno de tiempo de ejecución:

import os


def env_vars(request):
    return os.environ.get("FOO", "Specified environment variable is not set.")

Go

En Go, usa os.Getenv() para acceder a las variables de entorno de tiempo de ejecución:


// Package tips contains tips for writing Cloud Functions in Go.
package tips

import (
	"fmt"
	"net/http"
	"os"
)

// EnvVar is an example of getting an environment variable in a Go function.
func EnvVar(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "FOO: %q", os.Getenv("FOO"))
}

Java

En Java, usa System.getenv para acceder a las variables de entorno de tiempo de ejecución:


import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import java.io.BufferedWriter;
import java.io.IOException;

public class EnvVars implements HttpFunction {

  // Returns the environment variable "foo" set during function deployment.
  @Override
  public void service(HttpRequest request, HttpResponse response)
      throws IOException {
    BufferedWriter writer = response.getWriter();
    String foo = System.getenv("FOO");
    if (foo == null) {
      foo = "Specified environment variable is not set.";
    }
    writer.write(foo);
  }
}

C#

En el tiempo de ejecución, se puede acceder a las variables de entorno mediante Environment.GetEnvironmentVariable en C#:

using Google.Cloud.Functions.Framework;
using Microsoft.AspNetCore.Http;
using System;
using System.Threading.Tasks;

namespace EnvironmentVariables;

public class Function : IHttpFunction
{
    public async Task HandleAsync(HttpContext context)
    {
        string foo = Environment.GetEnvironmentVariable("FOO")
            ?? "Specified environment variable is not set.";
        await context.Response.WriteAsync(foo, context.RequestAborted);
    }
}

Ruby

En el tiempo de ejecución, se puede acceder a las variables de entorno mediante ENV en Ruby:

require "functions_framework"

FunctionsFramework.http "env_vars" do |_request|
  ENV["FOO"] || "Specified environment variable is not set."
end

PHP

En el tiempo de ejecución, se puede acceder a las variables de entorno mediante la función getenv de PHP:

use Psr\Http\Message\ServerRequestInterface;

function envVar(ServerRequestInterface $request): string
{
    return getenv('FOO') . PHP_EOL;
}

Usar variables de entorno de compilación

También puedes definir variables de entorno de compilación para los tiempos de ejecución que admitan paquetes de compilación.

Las variables de entorno de compilación son pares clave-valor que se implementan junto con una función y que le permiten transferir información de configuración a los paquetes de compilación. Por ejemplo, puede que quieras personalizar las opciones del compilador. Puedes añadir o quitar estas variables de entorno de compilación con la CLI de Google Cloud o con la interfaz de usuario de la consola Google Cloud .

Definir variables de entorno de compilación

Usa estos métodos para definir nuevas variables o sustituir por completo las que ya tengas. Para hacer cambios acumulativos, utiliza el proceso de actualización (la marca --update-build-env-vars en gcloud) que se describe en la siguiente sección.

gcloud

Para definir una variable con Google Cloud CLI, usa la marca --set-build-env-vars en el momento de la implementación:

gcloud beta functions deploy FUNCTION_NAME --no-gen2 --set-build-env-vars FOO=bar FLAGS...

También puedes definir varias variables de entorno de compilación mediante una lista separada por comas:

gcloud functions deploy FUNCTION_NAME --no-gen2 --set-build-env-vars FOO=bar,BAZ=boo FLAGS...

Si quieres almacenar tu configuración en un archivo (por ejemplo, en un sistema de control de versiones), puedes usar un archivo YAML junto con la marca --build-env-vars-file:

gcloud functions deploy FUNCTION_NAME --no-gen2 --build-env-vars-file FILE_NAME.yaml FLAGS...

donde el contenido del archivo *.yaml es el siguiente:

 FOO: bar
 BAZ: boo

En los ejemplos anteriores, FLAGS... hace referencia a otras opciones que se transfieren durante el despliegue de la función. Para consultar una referencia completa del comando deploy, consulta gcloud beta functions deploy.

Interfaz de usuario de la consola de Google Cloud

También puedes definir variables de entorno de compilación durante la creación de la función en la consola Google Cloud :

  1. Abre la página Información general de Functions en la Google Cloud consola:

    Ve a la página Información general de Cloud Run Functions.

  2. Haz clic en Crear función.

  3. Rellena los campos obligatorios de la función.

  4. Abre la sección Configuración de tiempo de ejecución, compilación y conexiones.

  5. Selecciona la pestaña Crear.

  6. En la sección Variables de entorno de compilación, haz clic en Añadir variable y añade el nombre y el valor.

Actualizar variables de entorno de compilación

También puedes actualizar las variables de entorno de compilación de las funciones que ya tengas. Se trata de un enfoque no destructivo que cambia o añade variables de entorno de compilación, pero no las elimina.

gcloud

Para definir una variable con Google Cloud CLI, usa la marca --update-build-env-vars en el momento de la implementación:

gcloud functions deploy FUNCTION_NAME --no-gen2 --update-build-env-vars FOO=bar

También puedes actualizar varias variables de entorno de compilación mediante una lista separada por comas:

gcloud functions deploy FUNCTION_NAME --no-gen2 --update-build-env-vars FOO=bar,BAZ=boo

Interfaz de usuario de la consola de Google Cloud

Para actualizar las variables de entorno de compilación mediante la consola Google Cloud , sigue estos pasos:

  1. Abre la página Información general de Functions en la Google Cloud consola:

    Ve a la página Información general de Cloud Run Functions.

  2. Haz clic en una función para ir a su página de detalles.

  3. Haz clic en Editar.

  4. Abre la sección Configuración de tiempo de ejecución, compilación y conexiones.

  5. Selecciona la pestaña Crear.

  6. Haz los cambios que quieras en la sección Variables de entorno de desarrollo.

Eliminar variables de entorno de compilación

gcloud

Si quieres eliminar de forma selectiva las variables de entorno de compilación, puedes usar la marca --remove-build-env-vars en el momento del despliegue:

gcloud functions deploy FUNCTION_NAME --no-gen2 --remove-build-env-vars FOO,BAZ

También puedes borrar todas las variables de entorno de compilación definidas anteriormente con la marca --clear-build-env-vars:

gcloud functions deploy FUNCTION_NAME --no-gen2 --clear-build-env-vars

Interfaz de usuario de la consola de Google Cloud

Para eliminar variables de entorno de compilación mediante la consola Google Cloud , sigue estos pasos:

  1. Abre la página Información general de Functions en la Google Cloud consola:

    Ve a la página Información general de Cloud Run Functions.

  2. Haz clic en una función para ir a su página de detalles.

  3. Haz clic en Editar.

  4. Abre la sección Configuración de tiempo de ejecución, compilación y conexiones.

  5. Selecciona la pestaña Crear.

  6. En la sección Variables de entorno de compilación, haga clic en el icono de la papelera situado junto al par clave-valor que quiera eliminar.

Ciclo de vida de las variables

Todas las variables de entorno están vinculadas a una implementación de una función de Cloud Run y solo se pueden definir o cambiar con una implementación. Si se produce un error durante una implementación, no se aplicarán los cambios en las variables de entorno. Los cambios en las variables de entorno requieren que la implementación se realice correctamente.

Prácticas recomendadas y variables de entorno reservadas

Algunas variables de entorno adicionales se definen automáticamente en función del tiempo de ejecución que use tu función. Se basan en el sistema operativo del tiempo de ejecución (por ejemplo, DEBIAN_FRONTEND, SHLVL o PATH) y en el tiempo de ejecución del lenguaje (por ejemplo, NODE_ENV, VIRTUAL_ENV o GOPATH).

Las variables de entorno proporcionadas por el entorno (distintas de las que se indican en Variables de entorno definidas automáticamente) pueden cambiar en futuras versiones del tiempo de ejecución. Como práctica recomendada, te aconsejamos que no dependas ni modifiques ninguna variable de entorno que no hayas definido explícitamente.

Si modificas las variables de entorno proporcionadas por el entorno, es posible que se produzcan resultados impredecibles. Los intentos de modificar estas variables de entorno podrían bloquearse o, lo que es peor, provocar consecuencias no deseadas, como que no se puedan iniciar funciones. Como práctica recomendada, considera la posibilidad de añadir un prefijo a las variables de entorno con una clave única para evitar conflictos.

Por último, no puedes usar las siguientes variables de entorno:

Clave Descripción
Vacío ('') Las claves no pueden ser cadenas vacías.
= Las claves no pueden contener el carácter "=".
X_GOOGLE_ Las claves no pueden incluir el prefijo X_GOOGLE_.

Límites de tamaño

El número total de bytes que usan los nombres y los valores de las variables de entorno de tiempo de ejecución de una función individual está limitado a 32 KiB. No hay límites específicos para las claves o los valores individuales dentro de esta capacidad general.

En el caso de las variables de entorno de compilación, se pueden definir hasta 100 variables, y la cadena de definición foo=bar está limitada a 64 KiB.

Gestionar secretos

Las variables de entorno se pueden usar para configurar funciones, pero no se recomiendan para almacenar secretos, como credenciales de bases de datos o claves de API. Estos valores más sensibles deben almacenarse fuera del código fuente y de las variables de entorno. Algunos entornos de ejecución o el uso de algunos frameworks pueden provocar que el contenido de las variables de entorno se envíe a los registros. Además, no se recomienda almacenar credenciales sensibles en archivos YAML, secuencias de comandos de implementación o en el control de código fuente.

Para almacenar secretos, te recomendamos que uses Secret Manager. Para configurar funciones de Cloud Run de forma que accedan a los secretos almacenados en Secret Manager, consulta Configurar secretos. Ten en cuenta que no hay ninguna integración específica de funciones de Cloud Run con Cloud KMS.

Portabilidad

Es posible que las variables de entorno que funcionan actualmente con tu función de Cloud Run no funcionen con otro entorno de tiempo de ejecución, como en otro idioma o con determinadas herramientas o bibliotecas. También es posible que otra plataforma no los acepte.

Para evitar estos problemas, sigue el estándar POSIX para variables de entorno. Si usas la consola Google Cloud para editar variables, Google Cloud la consola te avisará cada vez que definas una variable que pueda tener problemas de portabilidad (pero no impedirá la implementación). Por lo general, recomendamos que las claves de las variables de entorno solo incluyan letras mayúsculas, números y <underscore> (_), tal como se define en el conjunto de caracteres portátil, y que no empiecen por un número.