Usa variables de entorno

Puedes establecer de pares clave-valor arbitrarios para Cloud Functions en el momento de la implementación. Estos pares se muestran como variables de entorno literales, a las que puede acceder el código en el entorno de ejecución, o información de configuración para el sistema de paquete de compilación. Se almacenan en el backend de Cloud Functions, están vinculados a una sola función y existen dentro del mismo ciclo de vida de la función a la que están vinculados.

Usa variables de entorno de ejecución

Las variables de entorno de ejecución 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 de ejecución mediante la herramienta de línea de comandos de gcloud o la IU de Cloud Console.

Configura variables de entorno de ejecución

Usa estos métodos para establecer variables nuevas o reemplazar por completo las variables existentes. Para hacer cambios aditivos, usa el proceso de actualización (la marca --update-env-vars en gcloud) que se describe en la siguiente sección.

gcloud

Para configurar una variable de entorno de ejecución mediante 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 una serie de variables de entorno de ejecución mediante una lista separada por comas:

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

Si deseas 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:

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

En el ejemplo anterior, el contenido del archivo .env.yaml es el siguiente:

 FOO: bar
 BAZ: boo

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

IU de Cloud Console

Puedes configurar las variables de entorno de ejecución durante la creación de funciones en Cloud Console:

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

    Ve 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. Abre la sección Herramientas de redes, configuración avanzada y variables.

  5. Selecciona la pestaña Variables de entorno.

  6. En la sección Variables de entorno de ejecución, haz clic en Agregar variable y agrega el nombre y el valor.

Actualiza las variables de entorno de ejecución

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

gcloud

Para actualizar una variable mediante 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 múltiples variables de entorno de ejecución mediante una lista separada por comas:

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

IU de Cloud Console

Para actualizar las variables de entorno de ejecución mediante Cloud Console, sigue estos pasos:

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

    Ve 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. Abre la sección Herramientas de redes, configuración avanzada y variables.

  5. Selecciona la pestaña Variables de entorno.

  6. Realiza las modificaciones en la sección Variables de entorno de ejecución.

Borra variables de entorno de ejecución

gcloud

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

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

Como alternativa, puedes borrar todas las variables de entorno de ejecución configuradas con anterioridad con la marca --clear-env-vars:

gcloud functions deploy FUNCTION_NAME --clear-env-vars

IU de Cloud Console

Para borrar las variables de entorno de ejecución mediante Cloud Console, haz lo siguiente:

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

    Ve 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. Abre la sección Herramientas de redes, configuración avanzada y variables.

  5. Selecciona la pestaña Variables de entorno.

  6. En la sección Variables de entorno de ejecución, haz clic en el ícono de elementos no utilizados junto al par clave-valor para borrarlo.

Variables de entorno de ejecución establecidas de forma automática

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

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

Las siguientes variables de entorno de ejecución se configuran de forma automática para los entornos de ejecución Node.js 6, Node.js 8, Python 3.7 y Go 1.11. El resto de los entornos de ejecución de Cloud Functions usan un conjunto más limitado de variables de entorno, como se describe en Node.js 10 y los 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 lenguajes y entornos de ejecución distintos de los mencionados en la sección anterior usará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

Configura y recupera variables de entorno de ejecución: un ejemplo

Configura la variable de entorno de ejecución:

Node.js

gcloud functions deploy envVar \
--runtime nodejs10 \
--set-env-vars FOO=bar \
--trigger-http
Puedes usar los siguientes valores para que la marca --runtime especifique tu versión preferida de Node.js:
  • nodejs10
  • nodejs12

Python

gcloud functions deploy env_vars \
--runtime python37 \
--set-env-vars FOO=bar \
--trigger-http
Puedes usar los siguientes valores para que la marca --runtime especifique tu versión preferida de Python:
  • python37
  • python38

Go

gcloud functions deploy EnvVar \
--runtime go111 \
--set-env-vars FOO=bar \
--trigger-http
Puedes usar los siguientes valores en la marca --runtime para especificar tu versión preferida de Go:
  • go111
  • go113

Java

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

En el entorno de ejecución, accede a las variables de manera programática:

Node.js

En Node.js, usa la propiedad process.env para acceder a las variables de entorno 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 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 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 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);
  }
}

Usa variables de entorno de compilación

También puedes configurar variables de entorno de compilación para entornos de ejecución que admitan paquetes de compilación.

Las variables de entorno de compilación son pares clave-valor implementados junto con una función que te permite pasar la información de configuración a los paquetes de compilación. Por ejemplo, puede que quieras personalizar las opciones del compilador. Puedes agregar o quitar estas variables de entorno de compilación mediante la herramienta de línea de comandos de gcloud o la IU de Cloud Console.

Usa gcloud

Debido a que la capacidad de las variables de entorno de compilación se encuentra en vista previa, para usar gcloud debes tener instalado el componente beta de gcloud.

Si necesitas instalar el componente beta, o si deseas comprobar si lo tienes, desde la línea de comandos, ejecuta el siguiente comando:

gcloud components install beta

Configura variables de entorno de compilación

Usa estos métodos para establecer variables nuevas o reemplazar por completo las variables existentes. Para hacer cambios aditivos, usa el proceso de actualización (la marca --update-build-env-vars en gcloud) que se describe en la siguiente sección.

gcloud

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

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

También puedes configurar múltiples variables de entorno de compilación mediante una lista separada por comas:

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

Si deseas 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 --build-env-vars-file:

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

En el ejemplo anterior, el contenido del archivo *.yaml es el siguiente:

 FOO: bar
 BAZ: boo

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

IU de Cloud Console

También puedes configurar variables de entorno de compilación durante la creación de funciones en Cloud Console:

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

    Ve 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. Abre la sección Herramientas de redes, configuración avanzada y variables.

  5. Selecciona la pestaña Variables de entorno.

  6. En la sección Variables de entorno de compilación, haz clic en Agregar variable y agrega el nombre y el valor.

Actualiza variables de entorno de compilación

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

gcloud

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

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

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

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

IU de Cloud Console

Para actualizar las variables de entorno de compilación mediante Cloud Console, haz lo siguiente:

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

    Ve 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. Abre la sección Herramientas de redes, configuración avanzada y variables.

  5. Selecciona la pestaña Variables de entorno.

  6. Realiza las modificaciones en la sección Variables de entorno de compilación.

Borra variables de entorno de compilación

gcloud

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

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

Como alternativa, puedes borrar todas las variables de entorno de compilación ya establecidas con la marca --clear-build-env-vars:

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

IU de Cloud Console

Para borrar variables de entorno de compilación mediante Cloud Console, haz lo siguiente:

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

    Ve 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. Abre la sección Herramientas de redes, configuración avanzada y variables.

  5. Selecciona la pestaña Variables de entorno.

  6. En la sección Variables de entorno de compilación, haz clic en el ícono de elementos no utilizados junto al par clave-valor para borrarlo.

Ciclo de vida de la variable

Todas 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.

Prácticas recomendadas 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 práctica recomendada, 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 de ejecución para una función individual está limitada a 32 KiB. No hay límites específicos para claves o valores individuales dentro de esta capacidad general.

Para las variables de entorno de compilación, se pueden definir hasta 100 variables, con la string de definición foo=bar limitada a 64 KiB.

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 prácticas recomendadas 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 Functions 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 Cloud 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, recomendamos que las claves de variables de entorno tengan solo 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.