Productos compatibles
Productos compatibles
Se requiere uno de los siguientes productos o productos de ediciones superiores.
.functions sin servidor y los comandos CLI que puedes utilizar con las funciones sin servidor.
Para obtener un resumen general de las funciones sin servidor, consulta la descripción general de las funciones sin servidor.
Para obtener más información sobre la creación de funciones sin servidor con proyectos para módulos renderizados y parciales de JavaScript, consulta la documentación de proyectos de desarrollador.
Serverless.json
En la carpeta.functions, el archivo serverless.json almacena la configuración de la función sin servidor. Este es un archivo obligatorio y asigna tus funciones a sus puntos de terminación.
Puntos de terminación
Cada punto de terminación puede tener sus propias variables de entorno y secretos. Las variables especificadas fuera de los puntos de terminación deben utilizarse para los ajustes de configuración que se aplican a todas las funciones y puntos de terminación.
Las funciones sin servidor se exponen a través de una ruta en el dominio de tu cuenta de HubSpot CMS. Esto incluye los subdominios predeterminados
.hs-sites.com.
Puedes acceder a estas funciones en la siguiente URL:
https://{domainName}/_hcms/api/{endpoint-name/path}?portalid={hubId}.
A continuación, conoce cada uno de los componentes de la URL:
Archivo de funciones
Además del archivo de configuraciónserverless.json, la carpeta .functions también contendrá un archivo JavaScript Node.js que define la función. También puedes aprovechar la biblioteca de solicitudes para realizar solicitudes HTTP a las API de HubSpot y otras API.
Por ejemplo:
Objeto de contexto
El objeto de contexto contiene información contextual sobre la ejecución de la función, almacenada en los siguientes parámetros.Encabezados
Si necesitas conocer los encabezados del cliente que está llegando a tu punto de terminación, puedes acceder a ellos a través decontext.headers, similar a cómo accederías a la información a través de context.body.
A continuación, revisa algunos de los encabezados comunes que proporciona HubSpot. Para obtener una lista completa, consulta la documentación de encabezados HTTP de MDN.
Redirigir enviando una encabezado
Puedes realizar una redirección desde tu función sin servidor enviando una respuesta con un encabezado location y un statusCode301.
Establecer las cookies desde tu punto de terminación
Desde tu función sin servidor puedes decirle al cliente (navegador web) que establezca una cookie.Establecer varios valores para un solo encabezado
En el caso de los encabezados que admiten múltiples valores, puedes utilizarmultiValueHeaders, para pasar los valores. Por ejemplo: puedes decirle al navegador que establezca varias cookies.
Secretos
Cuando necesites autenticar una solicitud de función sin servidor, usarás secretos para almacenar valores como claves de API o tokens de acceso a aplicaciones privadas. Con la CLI, puedes agregar secretos a tu cuenta de HubSpot para almacenar esos valores, a los que luego podrás acceder a través de variables de entorno (process.env.secretName). Los secretos se gestionan a través de la CLI de HubSpot utilizando los siguientes comandos:
Una vez agregados a través de la CLI, los secretos pueden ponerse a disposición de las funciones mediante la inclusión de una matriz de secretos que contenga el nombre del secreto. Esto le permite almacenar tu código de función en el control de versiones y usar secretos sin exponerlos. Sin embargo, nunca debes devolver el valor de tu secreto a través del registro de la consola o como respuesta, ya que esto expondrá el secreto en los registros o en las páginas del front-end que llaman a tu función sin servidor.
Uso de funciones sin servidor con el elemento de formulario
Al enviar funciones sin servidor, utiliza javascript para manejar el envío del formulario y utiliza el encabezado"contentType" : "application/json" en tu solicitud. No utilices el atributo action de los elementos <form>.
CORS
Intercambio de recursos de origen cruzado (CORS) es una función de seguridad del navegador. Por opción predeterminada, los navegadores restringen las solicitudes de origen cruzado iniciadas por javascript. Esto evita que el código malicioso que se ejecuta en un dominio diferente, afecte a tu sitio. Esto se denomina política del mismo origen. Dado que el envío y la recuperación de datos de otros servidores es a veces una necesidad, el servidor externo, puede suministrar encabezados HTTP que comunican qué orígenes están autorizados a leer la información de un navegador. No deberías tener problemas de CORS al llamar a tu función sin servidor dentro de tus páginas alojadas en HubSpot. Si lo haces, verifica que estás utilizando el protocolo correcto.¿Recibes este error CORS?“El acceso a la búsqueda en [tu url de función] desde el origen [solicitud de creación de página] ha sido bloqueado por la política de CORS: la respuesta a la solicitud de prefiltro no pasa la verificación de control de acceso: no hay encabezado ‘Access-Control-Allow-Origin’ presente en el recurso solicitado. Si una respuesta opaca sirve a tus necesidades, establece el modo de la solicitud como ‘no-cors’ para obtener el recurso con CORS desactivado”¿Tu solicitud se dirige a un origen diferente al del sitio que la llama?
- Si el nombre de dominio es diferente, sí.
- Si utilizas un protocolo diferente (http, https), sí.
Access-Control-Allow-Origin de HubSpot.Consulta el MDN para obtener más detalles sobre la solución de errores de CORS.Solicitudes Get
Las solicitudes Get pueden hacer solicitudes CORS dependiendo del cliente. No hagas que las peticiones GET escriban nada, solo que devuelvan datos.Paquetes precargados
Las funciones sin servidor de HubSpot vienen actualmente precargadas con los siguientes paquetes:- @hubspot/api-client: ^1.0.0-beta
- axios: ^0.19.2
- request: ^2.88.0
- requests: ^0.2.2
- Clona o copia tu archivo de funciones.
- Cambia el punto de terminación de tu función en el archivo
serverless.jsonpara que apunte a tu nuevo archivo de función. Puedes eliminar la versión antigua con seguridad.
Límites
Las funciones sin servidor están previstas para ser rápidas y tener un enfoque limitado. Para permitir llamadas y respuestas rápidas, las funciones sin servidor de HubSpot tienen los siguientes límites:- 50 secretos por cuenta.
- 128 MB de memoria.
- No más de 100 puntos de terminación por cuenta de HubSpot.
- Debes usar
contentTypeapplication/jsoncuando se llama a una función. - Los registros de las funciones sin servidor se almacenan durante 90 días.
- 6MB en una carga útil de invocación de AWS Lambda.
- 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.
- 60 ejecuciones de funciones que tardan 10 segundos cada una en completarse.
- 6000 ejecuciones de funciones que tardan 100 milisegundos en completarse.
429. El tiempo de ejecución de cada función se incluye en los registros de funciones sin servidor.
Para ayudar a evitar estos límites, los datos de los límites se proporcionan automáticamente al contexto de la función durante la ejecución. Puedes utilizarlo para influir en tu solicitud para mantenerse dentro de esos límites. Por ejemplo, si tu aplicación requiere sondear tu punto de terminación, entonces puedes devolver con tus datos una variable para influir en la frecuencia del sondeo. De este modo, cuando el tráfico es elevado, se puede reducir el ritmo de sondeo para evitar que se alcancen los límites, y luego volver a aumentarlo cuando el tráfico sea escaso.