Usar variables del entorno

Variables del entorno de Cloud Functions es una función que te permite especificar arbitrariamente pares clave-valor en el momento de la implementación que se mostrarán como variables del entorno literales accesibles mediante tu código en el entorno de ejecución. Las variables del entorno se almacenan en el backend de Cloud Functions, se vinculan a una función sencilla y adoptan el mismo ciclo de vida que la función a la que se vinculan.

Usa variables del entorno

Las variables del entorno son pares clave-valor que se implementan junto con una función. Estas variables se definen por función y no son visibles para otras funciones en tu proyecto. Puedes agregar o quitar variables del entorno con la herramienta de línea de comandos de gcloud o la IU de GCP Console.

Configura variables del entorno

Para configurar una variable con la herramienta de línea de comandos de gcloud, usa la marca --set-env-vars en el momento de la implementación:

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

También puedes configurar diversas variables del entorno con una lista separada por comas, como en el ejemplo:

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

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

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

en el que los contenidos del archivo .env.yaml son los siguientes:

FOO: bar
BAZ: boo

En los ejemplos anteriores, FLAGS... se refiere a las otras opciones que pasas durante la implementación de la función. Para obtener una referencia completa del comando deploy, consulta gcloud functions deploy.

También puedes configurar las variables del entorno durante la creación de la función en GCP Console. Para ello, deberás hacer lo siguiente:

  1. Abre la página Descripción general de Cloud Functions en GCP Console:

    Ir a la página Descripción general de Cloud Functions

  2. Haz clic en Crear función.

  3. Completa los campos obligatorios para la función.

  4. Haz clic en Más para expandir la configuración avanzada.

  5. En la sección Variables del entorno, configura las variables con solo hacer clic en Agregar variable.

Actualiza las variables del entorno

Además, puedes actualizar las variables del entorno para funciones existentes. Este es un enfoque no destructivo que cambia o agrega variables del entorno, pero no las borra.

Para configurar una variable con la herramienta de línea de comandos de gcloud, usa la marca --update-env-vars en el momento de la implementación:

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

También puedes actualizar diversas variables del entorno con una lista separada por comas, como en el ejemplo:

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

Sigue estos pasos para actualizar las variables del entorno con GCP Console:

  1. Abre la página Descripción general de Cloud Functions en GCP Console:

    Ir a la página Descripción general de Cloud Functions

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

  3. Haga clic en Editar.

  4. Haz clic en Más para expandir la configuración avanzada.

  5. En la sección Variables del entorno, edita las variables existentes o haz clic en Agregar variable para configurar variables nuevas.

Borra variables del entorno

Si quieres quitar variables del entorno de manera selectiva, puedes usar la marca --remove-env-vars en el momento de la implementación:

gcloud functions deploy FUNCTION_NAME --remove-env-vars FOO

De manera alternativa, puedes borrar todas las variables del entorno configuradas previamente con la marca --clear-env-vars:

gcloud functions deploy FUNCTION_NAME --clear-env-vars

Para borrar las variables del entorno con GCP Console:

  1. Abre la página Descripción general de Cloud Functions en GCP Console:

    Ir a la página Descripción general de Cloud Functions

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

  3. Haz clic en Editar.

  4. Haz clic en Más para expandir la configuración avanzada.

  5. En la sección Variables del entorno, borra una variable con solo hacer clic en la X junto a ella.

Accede a variables del entorno en el entorno de ejecución

Configura la variable del entorno durante la implementación como se muestra a continuación:

Node.js 6

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

Node.js 8 (Beta)

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

Python (Beta)

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

Go (Beta)

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

Accede a la variable del entorno:

Node.js

En el entorno de ejecución, las variables del entorno son accesibles a través de la propiedad process.env en Node.js:
exports.envVar = (req, res) => {
  // Sends 'bar' as response
  res.send(process.env.FOO);
};

Python (Beta)

En el entorno de ejecución, las variables del entorno son accesibles a través de os.environ en Python:
def env_vars(request):
    return os.environ.get('FOO', 'Specified environment variable is not set.')

Go (Beta)

En el entorno de ejecución, las variables son accesibles con os.Getenv() en Go:
// 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"))
}

Ciclo de vida de la variable

Las variables del entorno están vinculadas a la implementación de una función de Cloud y solo se pueden configurar o cambiar con una implementación. Si una implementación falla por alguna razón, no se aplicará ningún cambio a las variables del entorno. Los cambios en la variable del entorno requieren una implementación correcta.

Límites y recomendaciones

En esta sección, se proporcionan lineamientos para usar variables del entorno.

Límites de tamaño

La cantidad total de bytes que usan los nombres y valores de las variables del entorno para una función individual se limita a 32 KiB. Sin embargo, no hay límites específicos sobre claves o valores individuales en esta capacidad general.

Claves reservadas y validación de claves

El entorno reserva ciertas variables del entorno y no puedes configurarlas con estas claves.

Actualmente, las siguientes claves están reservadas:

Clave Descripción
Vacía ('') Las claves no pueden ser una string vacía.
= Las claves no pueden contener el carácter “=”.
X_GOOGLE_ Se rechazará cualquier clave con el prefijo X_GOOGLE_.
NODE_ENV Reservada: el entorno actual de Node.js (predeterminado: producción).
GCP_PROJECT Reservada: el ID del proyecto de GCP actual.
GOOGLE_CLOUD_PROJECT Reservada: uso interno.
GCLOUD_PROJECT Reservada: el ID del proyecto de GCP actual (heredado).
FUNCTION_TRIGGER_TYPE Reservada: el tipo de activador de la función.
FUNCTION_NAME Reservada: el nombre del recurso de la función.
FUNCTION_MEMORY_MB Reservada: la memoria máxima de la función.
FUNCTION_TIMEOUT_SEC Reservada: el tiempo de espera de la ejecución en segundos.
FUNCTION_IDENTITY Reservada: la identidad actual (cuenta de servicio) de la función.
FUNCTION_REGION Reservada: la región de la función (por ejemplo: us-central1).
CODE_LOCATION Reservada: la ruta local al código fuente de la función.
ENTRY_POINT Reservada: la función que se ejecutará.
SUPERVISOR_HOSTNAME Reservada: uso interno.
SUPERVISOR_INTERNAL_PORT Reservada: uso interno.
_ Reservada: uso interno.
HOME Reservada: ubicación del directorio principal.
OLDPWD Reservada: ubicación del directorio de trabajo anterior.
PWD Reservada: ubicación del directorio de trabajo actual.
PORT Reservada: uso interno.
PATH Reservada: la ruta de búsqueda de comandos.
SHLVL Reservada: uso interno.

Administra secretos

Las variables del entorno se pueden usar para configurar funciones, pero no se recomiendan como una forma de 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 fuera de las variables del entorno. Algunos entornos de ejecución o el uso de algunos marcos de trabajo pueden dar como resultado contenidos de variables del entorno que se envían a registros y no se recomienda el almacenamiento de credenciales sensibles en archivos YAML, secuencias de comandos de implementación o en el control de código fuente.

A fin de almacenar secretos, te sugerimos revisar las recomendaciones para la administración de secretos. Ten en cuenta que no hay una integración específica de Cloud Functions en Cloud KMS.

Portabilidad

Es posible que las variables del entorno que actualmente trabajan con tu función de Cloud no funcionen con un entorno de ejecución diferente, como en un lenguaje distinto o con ciertas herramientas o bibliotecas. También es posible que una plataforma diferente no las acepte.

Puedes evitar estos problemas con solo seguir el estándar POSIX para variables del entorno. Si usas GCP Console para editar variables, esta plataforma te mostrará una advertencia cuando definas una variable que pudiera tener problemas de portabilidad (pero no evitará la implementación). Como regla general, te recomendamos que las claves de variables del entorno solo contengan letras mayúsculas, dígitos y <underscore> (“_”), tal como se define en el grupo de caracteres portátil, y que no comiencen con un dígito.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Functions