Ir al contenido principal

UbiFunctions: usar Propiedades Globales

Aprenda cómo crear propiedades globales que le permitan acelerar el desarrollo de UbiFunctions.

Escrito por Sergio M
Actualizado hace más de 2 semanas

Con el objetivo de facilitar el desarrollo de UbiFunctions, Ubidots ha introducido Global Properties, una herramienta que te permite almacenar fácilmente variables globales para agilizar el desarrollo y mantener los recursos organizados. Con Global Properties, puedes almacenar y recuperar fácilmente:

  • Constantes.

  • Tablas de consulta (look-up tables), utilizando objetos JSON.

  • Credenciales compartidas entre funciones.

Requisitos

  • Una cuenta activa de Ubidots (licencia Enterprise o superior).

1. Crear una propiedad global

Para crear una propiedad global, sigue estos pasos:

  1. Ve a Dev Center ⟶ Lexicon.

  2. En el panel izquierdo, dirígete al módulo “global properties”.

  3. Haz clic en el botón “+” ubicado en la esquina superior derecha de la pantalla.

Una vez que se abra el menú de creación, completa los siguientes campos:

  • Name: Asigna el nombre que consideres adecuado a tu propiedad.

  • Label: Por defecto, el label es el mismo nombre que elegiste, pero puedes cambiarlo. Este label se utilizará posteriormente para invocar la propiedad global.

  • Description: Opcionalmente, agrega una descripción para que pueda distinguirse fácilmente de otras.

  • Format: Elige el formato de la propiedad. Están disponibles "JSON" y "text".

  • Value: Haz clic en “add value” y, en el editor de código, ingresa el JSON que contiene la credencial que deseas convertir en propiedad global. Puedes ingresar cualquier valor aquí.

Ejemplo:

{"aws_keys": "<AWS keys go here>"}
  • Scope: Selecciona el entorno en el que la propiedad global estará disponible. Actualmente, solo se pueden seleccionar funciones, pero se agregarán más opciones en el futuro.

  • Secret: Usa el botón de alternancia para marcar la propiedad como Secret. Cuando está habilitado, el valor de la propiedad se tratará como información sensible y se aplicarán restricciones adicionales.

Las propiedades Secret se invocan exactamente de la misma manera que las propiedades globales normales cuando se utilizan dentro de una UbiFunction. No hay cambios en la forma en que accedes a ellas en tu código.

Sin embargo, sus valores están protegidos de las siguientes maneras:

  • El valor no es visible en el módulo de propiedades, ni a través de la interfaz (al ingresar a la configuración de la propiedad) ni mediante la consola del navegador.

  • Una vez creada, el valor de una propiedad Secret no puede editarse nuevamente. Si necesitas cambiar el valor de una propiedad global Secret, debes crear una nueva propiedad con el valor actualizado y asignarla a tu función.

Nota importante: Una vez que una propiedad global Secret se agrega como variable de entorno a una función, su valor está disponible en tiempo de ejecución como cualquier otra propiedad. Si tu función imprime o registra la variable (por ejemplo, usando print() o console.log()), el valor aparecerá en los logs de salida de la función.

2. Usar propiedades globales

Invocar una de tus propiedades globales requiere estos sencillos pasos:

  • Haz clic en el menú desplegable “devices” y dirígete a “functions”.

  • En la configuración de tu función, haz clic en el menú desplegable de environment variables, selecciona las propiedades globales que deseas que estén disponibles en esa función en particular y haz clic en el botón "update".

  • Configura el resto de tu función como de costumbre.

  • En alguna parte de tu código, invoca la propiedad global utilizando el label que le asignaste durante su creación. Dependiendo de si usas Python o Node, este proceso varía:

Python:

import os

def main(args):
aws = os.environ.get('aws_keys')
print(aws)
return {}

Nota: Python requiere que importes el módulo “os”.

Node.js:

async function main(args) {
let env = process.env.aws_keys;
console.log(env)
return {}
}

Para finalizar el proceso, simplemente haz clic en el botón “save & deploy” para lanzar tu función. Algunos entornos de ejecución tardan más en procesar, así que ten paciencia si tu función no se activa en aproximadamente 30 segundos.

¿Ha quedado contestada tu pregunta?