Funciones sin servidor

Last updated:
APPLICABLE PRODUCTS
  • CMS Hub
    • Enterprise

Las funciones sin servidor ofrecen una manera de escribir código del lado del servidor que se relaciona con HubSpot y servicios de terceros a través de las API. Las API que requieren autentificación no son seguras para el front-end de un sitio web, ya que tus credenciales quedarían expuestas. Las funciones sin servidor pueden actuar como intermediarias, permitiéndote guardar las credenciales en secreto. 

Con las funciones sin servidor, no necesitaras crear y gestionar nuevos servidores. Las funciones sin servidor requieren menos gastos y son más fáciles de escalar a medida que un negocio crece.

Puedes experimentar con las funciones sin servidor utilizando una cuenta de entorno de pruebas para desarrolladores CMS. Para crear tu primera función sin servidor, consulta la guía de primeros pasos a las funciones sin servidor.

Resumen

La lista de cosas para las que puedes utilizar las funciones sin servidor de HubSpot depende de tu imaginación. Puedes utilizarlas para:

  • Recolectar datos y almacenarlos en HubDB o en el CRM de HubSpot
  • Calculadoras de datos complejos
  • Visualización dinámica de datos de otros sistemas
  • Sistemas de registro de eventos
  • Envíos de formularios que envían datos a otros sistemas

Tomando como ejemplo nuestro sistema de registro de eventos. Vamos a desglosar cómo podrías utilizar funciones sin servidor para manejar el registro y actualizar cuántas plazas abiertas hay para un evento.

  1. El visitante del sitio web navega a la página de registro de tu evento, mostrando que hay espacio para que asistan 15 personas más. El visitante rellena un formulario personalizado para inscribirse en el evento y lo envía.
  2. Ese envío lo hemos configurado para que envíe una solicitud POST a yourwebsite.com/_hcms/api/event/participants. event/participants es tu función sin servidor.
  3. Tu función sin servidor recibe los datos enviados por el usuario y realiza algunas acciones antes de devolver una respuesta al navegador:
  4. Envía los datos del campo del formulario a la API del formulario de envío de HubSpot para agregar esta información de envío del formulario al CRM de HubSpot.
  5. Utiliza la api de HubDB, para restar 1 al recuento de participantes de este evento que se almacena en HubDB.
  6. Envía una respuesta de vuelta al navegador web.
  7. Javascript en la página recibe la respuesta de la función sin servidor y muestra un mensaje de confirmación al usuario final, y ajusta el recuento de cuántos espacios quedan para los participantes.

Las funciones sin servidor de HubSpot están escritas en JavaScript y utilizan el tiempo de ejecución NodeJS. Las funciones sin servidor de HubSpot están previstas para ser utilizadas para agregar funcionalidad a tu sitio de HubSpot, como el apoyo a los envíos de formularios avanzados y la extracción de datos de otras API. No está previsto como una plataforma informática genérica en la que puedas ejecutar un código no relacionado con HubSpot.

Límites

Las funciones sin servidor están previstas para ser rápidas y tener un enfoque limitado. Esa velocidad les permite ser compañeros perfectos del front-end de los sitios web y las aplicaciones, permitiendo una llamada y una respuesta rápidas. Para mantener el rendimiento, las funciones sin servidor de HubSpot se limitan a:

  • 50 secretos por cuenta.
  • 128 MB de memoria.
  • no más de 100 puntos de terminación por cuenta de HubSpot.
  • el contentType application/json cuando se llama a una función.
  • 6MB por carga útil de invocación, que puede encontrarse al intentar cargar un archivo con una función sin servidor, por ejemplo.
  • 4KB para la cantidad de datos que se pueden registrar. Al alcanzar este límite, se recomienda registrar después de acciones individuales, en lugar de la salida final.

Límites de ejecución

  • Cada función tiene un tiempo máximo de ejecución de 10 segundos
  • Cada cuenta está limitada a un total de 600 segundos de ejecución por minuto.

Esto significa que cualquiera de estos escenarios puede ocurrir en 1 minuto:

  • Hasta 60 ejecuciones de funciones que tardan 10 segundos cada una en completarse.
  • Hasta 6.000 ejecuciones de funciones que tardan 100 milisegundos en completarse.

Las funciones que superen esos límites arrojarán un error. El recuento de ejecuciones y los límites de tiempo devolverán una respuesta 429. El tiempo de ejecución de cada función se incluye en los registros de funciones sin servidor.

Acceso a las funciones sin servidor

En HubSpot, las funciones sin servidor se almacenan en el sistema de archivos del desarrollador, visible en el administrador de diseño. Puedes acceder y editar tus funciones sin servidor localmente a través de la CLI. 

Funciones sin servidor

Las funciones sin servidor de HubSpot se encuentran dentro de una carpeta de funciones. Esta carpeta puede tener cualquier nombre, pero debe contener el sufijo .functions. Los archivos almacenados en esta carpeta no son de acceso público.

En la carpeta de funciones, incluye tu archivo serverless.json junto con los archivos .js que contienen tus funciones. Podrías considerar agregar un archivo de descuento README para comunicar para qué son las funciones, cómo funcionan y si tiene un proceso de compilación para crearlas.

Carpeta .functions sin servidor

Para evitar ediciones accidentales desde el administrador de diseño, puedes bloquear tu carpeta. Para bloquear una carpeta, navega hasta el administrador de diseños, haz clic con el botón derecho en la carpeta y selecciona Bloquear carpeta.

Serverless.json

serverless.json es el archivo de configuración de la función sin servidor que especifica el entorno de tiempo de ejecución y cualquier variable de entorno que planees utilizar en tus funciones.

Este archivo también maneja el enrutamiento de tus puntos de terminación. Especifica las rutas de los puntos de terminación que deseas mapear en tu archivo function.js. Para ver un ejemplo de cómo debe ser tu archivo serverless.json, consulta la guía de referencia de las funciones sin servidor.

Function.js

Tu función real sin servidor puede tener cualquier nombre siempre que sea un archivo .js.  Para que tu función sin servidor funcione, debe estar mapeada a un punto de terminacióndefinido en el archivo serverless.json. Para la resolución de problemas, se recomienda nombrar el archivo .js de forma similar al nombre de su punto de terminación en su archivo de configuración serverless.json.  

Secretos

Al autenticar una llamada realizada por una función sin servidor, debes usar secretos para almacenar claves de API, tokens de acceso a aplicaciones privadas y otra información de autenticación por seguridad. Esto permitirá la autenticación sin exponer tu clave o token de acceso.

Para crear y administrar secretos, puedes usar comandos de la CLI de HubSpot, tales como:

  • hs secrets list para ver tus secretos disponibles actualmente por nombre.
  • hs secrets add para crear un nuevo secreto.
  • hs secrets update para actualizar un secreto existente.

Una vez agregados a través de la CLI, pueden estar disponibles para funciones específicas o globales, agregando una matriz de secretos, con el nombre del secreto. Una vez agregados son accesibles dentro de las funciones a través del entorno. Esto te proporciona una forma segura de utilizar estos secretos y te permite almacenar tu código de función en el control de versiones, sin preocuparte de que los secretos queden expuestos.

No devuelvas el valor de tu secreto a través del registro de la consola o como respuesta. Hacerlo expondría tus secretos en tus registros o en las páginas del front-end que llaman a tu función sin servidor.

Visualización de los registros de la función sin servidor

Para ayudar a la solución de problemas de tus funciones sin servidor, la CLI tiene un comando hs logs que le da la capacidad de ver los registros de tu función. Además de las respuestas individuales de la invocación de la función, la hora de ejecución y el tiempo de ejecución, cualquier declaración console.log también aparecerá en los registros de la función. No se deben registrar en la consola los secretos como las claves de la API.


¿Te resultó útil este artículo?
Con este formulario puedes enviar tu opinión sobre nuestros documentos para desarrolladores. Si tienes comentarios sobre el producto de HubSpot, puedes enviarlos al Foro de ideas.