Usa variables de entorno

Las variables de entorno en Cloud Functions son una función que te permite especificar pares clave-valor arbitrarios en el momento de la implementación. Estos pares clave-valor se muestran como variables de entorno literales a las que puede acceder tu código en el entorno de ejecución. Las variables de entorno se almacenan en el backend de Cloud Functions, están vinculadas a una sola función y adoptan el mismo ciclo de vida que la función a la que están vinculadas.

Usa variables de entorno

Las variables de entorno son pares clave-valor implementados junto con una función. Estas variables están sujetas a la función y no son visibles para otras funciones en tu proyecto. Puedes agregar o quitar variables de entorno tanto con la herramienta de línea de comandos de gcloud como con la IU de GCP Console.

Cómo configurar variables de entorno

Para configurar una variable con la herramienta de línea de comandos de gcloud, usa el marcador --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 varias variables de entorno con una lista separada por comas:

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

Si deseas almacenar tu configuración en un archivo (p. ej., en el control de código fuente), puedes usar un archivo YAML junto con el marcador --env-vars-file:

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

donde el contenido del archivo .env.yaml es:

FOO: bar
BAZ: boo

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

También puedes configurar variables de entorno durante la creación de funciones en GCP Console. Para ello, sigue estos pasos:

  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 tu función.

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

  5. En la sección Variables de entorno, configura las variables haciendo clic en Agregar variable.

Actualiza variables de entorno

También puedes actualizar las variables de entorno para las funciones existentes. Este es un enfoque no destructivo que modifica o agrega variables de entorno, pero no las borra.

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

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

También puedes actualizar varias variables de entorno con una lista separada por comas:

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

Para actualizar las variables de entorno con GCP Console, sigue estos pasos:

  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 la 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 de entorno, edita las variables existentes o haz clic en Agregar variable para configurar variables nuevas.

Borra variables de entorno

Si deseas quitar variables de entorno de forma selectiva, puedes usar el marcador --remove-env-vars en el momento de la implementación:

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

Como alternativa, puedes borrar todas las variables de entorno configuradas previamente con el marcador --clear-env-vars:

gcloud functions deploy FUNCTION_NAME --clear-env-vars

Para borrar variables de entorno con GCP Console, sigue estos pasos:

  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 la 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 de entorno, borra una variable haciendo clic en la X junto a ella.

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

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

Node.js 8

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

Node.js 10 (Beta)

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

Node.js 6 (obsoleto)

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

Python

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

Go

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

Accede a la variable de entorno:

Node.js

En el entorno de ejecución, se puede acceder a las variables de entorno 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

En el entorno de ejecución, se puede acceder a las variables de entorno a través de os.environ en Python:
import os

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

Go

En el entorno de ejecución, se puede acceder a las variables de entorno a través de 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 de entorno están vinculadas a una implementación de una función de Cloud Function, y solo se pueden configurar o cambiar con una implementación. Si por algún motivo una implementación falla, cualquier cambio en las variables de entorno no se aplicará. Los cambios en las variables de entorno requieren una implementación exitosa.

Variables de entorno que se configuran automáticamente

En esta sección, se enumeran las variables de entorno que se configuran automáticamente.

Node.js 6, Node.js 8, Python 3.7 y Go 1.11

Las siguientes variables de entorno se configuran automáticamente para los entornos de ejecución Node.js 6, Node.js 8, Python 3.7 y Go 1.11. Los entornos de ejecución posteriores de Cloud Functions usan un conjunto más limitado de variables de entorno, como se describe en Node.js 10 y entornos de ejecución posteriores.

Clave Descripción
ENTRY_POINT Reservado: la función a ejecutar.
GCP_PROJECT Reservado: el ID del proyecto de GCP actual.
GCLOUD_PROJECT Reservado: el ID del proyecto de GCP actual (obsoleto).
GOOGLE_CLOUD_PROJECT Reservado: no configurado pero reservado para uso interno.
FUNCTION_TRIGGER_TYPE Reservado: el tipo de activador de la función.
FUNCTION_NAME Reservado: el nombre del recurso de la función.
FUNCTION_MEMORY_MB Reservado: la memoria máxima de la función.
FUNCTION_TIMEOUT_SEC Reservado: el tiempo de espera de ejecución en segundos.
FUNCTION_IDENTITY Reservada: la identidad actual (cuenta de servicio) de la función.
FUNCTION_REGION Reservado: la región de la función (por ejemplo: us-central1).

Node.js 10 y entornos de ejecución posteriores

El entorno de ejecución de Node.js 10 configura automáticamente menos variables de entorno que los entornos de ejecución anteriores admitidos por Cloud Functions. Todos los próximos entornos de ejecución en Cloud Functions utilizarán este conjunto más limitado de variables de entorno predefinidas.

Clave Descripción
FUNCTION_TARGET Reservado: la función a ejecutar.
FUNCTION_SIGNATURE_TYPE Reservado: el tipo de función: http para funciones de HTTP y event para funciones en segundo plano.
K_SERVICE Reservado: el nombre del recurso de la función.
K_REVISION Reservado: el identificador de versión de la función.
PORT Reservado: el puerto a través del cual se invoca la función.

Recomendaciones y variables de entorno reservadas

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

Es posible que las variables de entorno que proporciona el entorno (además de las que se enumeran en Variables de entorno que se configuran automáticamente) cambien en las próximas versiones del entorno de ejecución. Como recomendación, te sugerimos que no dependas de ninguna variable de entorno que no hayas configurado explícitamente ni la modifiques.

La modificación de las variables de entorno que proporciona el entorno puede generar resultados impredecibles. Los intentos de modificar dichas variables de entorno podrían bloquearse o, peor aún, podrían generar consecuencias no deseadas, como funciones que no pueden iniciarse. Como recomendación, considera colocar una clave única como prefijo a las variables de entorno para evitar conflictos.

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

Clave Descripción
Vacía ('') Las claves no pueden ser una string vacía.
= Las claves no pueden contener el carácter “=”.
X_GOOGLE_ Las claves no pueden contener el prefijo X_GOOGLE_.

Límites de tamaño

La cantidad total de bytes que usan los nombres y valores de las variables de entorno para una función individual está limitada a 32 KB. Sin embargo, no hay límites específicos para claves o valores individuales dentro de esta capacidad general.

Administra secretos

Las variables de entorno se pueden usar para la configuración de la función, pero no se recomiendan como una forma de almacenar secretos como las credenciales de la base de datos o las claves de API. Estos valores más sensibles deben almacenarse fuera de tu código fuente y de las variables de entorno. Algunos entornos de ejecución o el uso de algunos marcos de trabajo pueden dar como resultado que el contenido de las variables de entorno se envíe a los registros, y no se recomienda almacenar credenciales confidenciales en archivos YAML, secuencias de comandos de implementación o control de código fuente.

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

Portabilidad

Es posible que las variables de entorno que actualmente funcionan con tu Cloud Function no funcionen con un entorno de ejecución diferente, como en un lenguaje diferente o con ciertas herramientas o bibliotecas. También es posible que no sean aceptadas por una plataforma diferente.

Puedes evitar estos problemas si sigues el estándar POSIX para variables de entorno. Si usas GCP Console para editar variables, GCP Console te avisará cada vez que definas una variable que pueda tener problemas de portabilidad (pero no impedirá la implementación). Como regla general, recomendamos que las claves de variables de entorno consten únicamente de letras mayúsculas, dígitos y <underscore> (“_”), 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