Funções sem servidor
CMS Hub
- Enterprise
As funções sem servidor oferecem uma forma de escrever código do lado do servidor que interaja com a HubSpot e serviços de terceiros através de APIs. As APIs que necessitam de autenticação não são seguras para o front-end de um site, já que sias credenciais estariam expostas. As funções sem servidor podem agir como um intermediário, permitindo que você mantenha suas credenciais em segredo.
Com as funções sem servidor, você não precisa criar e gerenciar novos servidores. As funções sem servidor exigem menos pessoal e, por isso, são mais fáceis de ampliar conforme a empresa cresce.
Você pode experimentar as funções sem servidor usando uma conta de ambiente de testes para desenvolvedores de CMS. Para criar sua primeira função sem servidor, confira o guia de introdução às funções sem servidor.
Você pode usar as funções sem servidor do HubSpot para tudo o que quiser e o limite é a sua imaginação. Você pode usá-las para:
- Coletar e armazenar dados no HubDB ou no HubSpot CRM
- Calcular dados complexos
- Exibir de forma dinâmica dados de outros sistemas
- Sistemas de registro de eventos
- Envios de formulários que enviam dados para outros sistemas
Com o exemplo do sistema de registro de eventos, você pode usar as funções sem servidor para controlar o registro e a atualização do número de vagas em aberto para um evento. O fluxo funcionaria da seguinte maneira:
- O visitante do site navega até a página de inscrição do seu evento, que mostra que há vagas para mais 15 pessoas comparecerem. O visitante preenche um formulário personalizado para se inscrever no evento e o envia.
- Esse envio que definimos para enviar uma solicitação
POST
parayourwebsite.com/_hcms/api/event/participants
.event/participants
é a sua função sem servidor. - Sua função sem servidor recebe os dados enviados pelo usuário e toma algumas ações antes de retornar uma resposta ao navegador:
- Envia os dados de campo do formulário à API de envio de formulário do HubSpot para adicionar essa informação de envio ao HubSpot CRM.
- Utiliza a API do HubDB para subtrair 1 da contagem de participantes deste evento que está armazenada no HubDB.
- Envia uma resposta para o navegador da web.
- O Javascript na página recebe a resposta da função sem servidor e exibe uma mensagem de confirmação para o usuário final, ajustando o número de vagas restantes para participantes.
As funções sem servidor do HubSpot são escritas em JavaScript e usam o tempo de execução do NodeJS. As funções sem servidor do HubSpot devem ser usadas para adicionar funcionalidades ao seu site HubSpot, tais como oferecer suporte a envios de formulários avançados e obter dados de outras APIs. Não pretende ser uma plataforma de computação genérica na qual você executa código não relacionado ao HubSpot.
As funções sem servidor destinam-se a ser rápidas e a ter foco restrito. Essa agilidade as torna companheiras perfeitas para o front-end de sites e aplicativos, possibilitando uma rápida chamada e resposta. Para manter o desempenho, as funções sem servidor HubSpot estão limitadas a:
- 50 segredos por conta.
- 128 MB de memória.
- não mais que 100 endpoints por conta da HubSpot.
- o contentType
application/json
ao chamar uma função. - 6MB por carga útil de invocação, que você pode encontrar ao tentar carregar um arquivo com uma função sem servidor, por exemplo.
- 4KB para a quantidade de dados que podem ser registrados. Ao atingir esse limite, é recomendável registrar as ações individuais, em vez da saída final.
Limites de execução
- Cada função tem no máximo 10 segundos de tempo de execução
- Cada conta é limitada a um total de 600 segundos de execução por minuto.
Isso significa que qualquer um destes cenários pode acontecer dentro de 1 minuto:
- Até 60 execuções de funções que levam 10 segundos para serem concluídas.
- Até 6.000 execuções de funções que levam 100 milissegundos para serem concluídas.
As funções que excedem esses limites geram um erro. A contagem de execução e os limites de tempo retornarão uma resposta de 429
. O tempo de execução de cada função está incluído nos logs das funções sem servidor.
Dividir dependências
As funções sem servidor, quando implantadas, não oferecem suporte à divisão de JavaScript entre vários arquivos. Em vez disso, a função sem servidor deve incluir um arquivo JavaScript para executar a função. Se você estiver criando uma função sem servidor com vários arquivos JavaScript, deverá copiar o código compartilhado para o arquivo JavaScript, ou usar o webpack para agrupar seu código. Saiba mais sobre como usar o webpack como uma solução na Comunidade da HubSpot.
No HubSpot, as funções sem servidor são armazenadas no sistema de arquivos do desenvolvedor e podem ser exibidas no gerenciador de design. Você pode acessar e editar suas funções sem servidor localmente através da CLI.
As funções sem servidor do HubSpot residem dentro de uma pasta. Esta pasta pode ter qualquer nome, mas deve conter o sufixo .functions.
Os arquivos armazenados nesta pasta não podem ser publicamente acessados.
Dentro da pasta de funções, inclua seu arquivo serverless.json
junto com um arquivo .js
que contenha as suas funções. Você pode considerar adicionar um arquivo LEIAME para informar para que servem as funções, como elas funcionam e se há um processo definido para criá-las.

Para evitar edições acidentais dentro do gerenciador de design, você pode bloquear sua pasta. Para bloquear uma pasta, navegue até o gerenciador de design, clique com o botão direito do mouse na pasta e selecione Bloquear pasta.
O serverless.json
é o arquivo de configuração da função sem servidor que especifica o ambiente de tempo de execução e todas as variáveis que você planeja usar em suas funções.
Este arquivo também gerencia o roteamento de endpoints. Você especifica os caminhos dos endpoints que você deseja mapear aos seus arquivos function.js
. Para ver um exemplo de como seu arquivo serverless.json
deve se parecer, consulte o guia de referência das funções sem servidor.
A função sem servidor pode ser ter qualquer nome, desde que seja um arquivo .js
. Para que a sua função serverless funcione, ela deve ser mapeada para um endpoint definido no arquivo serverless.json.
Para fins de resolução de problemas, é recomendado nomear o arquivo .js
de forma similar ao nome do endpoint no seu arquivo de configuração serverless.json.
Ao autenticar uma chamada feita por uma função sem servidor, você deve usar segredos para armazenar chaves de API, tokens de acesso a aplicativos privados e outras informações de autenticação para segurança. Isso permitirá a autenticação sem expor sua chave ou token de acesso.
Para criar e gerenciar segredos, você pode usar os comandos CLI do HubSpot, como:
lista de segredos hs
para visualizar seus segredos atualmente disponíveis por nome.os segredos do hs são adicionados
para criar um novo segredo.- atualização dos
segredos do hs para atualizar
um segredo existente.
Uma vez adicionados através da CLI, eles podem ser disponibilizados para funções específicas ou globalmente, adicionando uma matriz de segredos com o nome do segredo. Uma vez adicionados, eles podem ser acessados por meio das funções no ambiente. Isso possibilita uma forma segura de utilizar esses segredos e permite guardar o seu código de função no controlo de versões, sem se preocupar com a exposição dos segredos.
Não retorne o valor do segredo nos logs do console ou como uma resposta. Se fizer isso, você irá expor seus segredos nos logs ou nas páginas de front-end que chamam sua função sem servidor.
Para ajudar a resolver problemas das suas funções sem servidor, a CLI tem o comando hs logs
que permite ver os logs das suas funções. Além das respostas individuais de invocação de funções, hora de execução e tempo de execução, qualquer instrução console.log
também aparecerá nos logs de funções. Não inclua segredos como chaves de API no console.log
.
Agradecemos pelos seus comentários. Eles são muito importantes para nós.