Funções sem servidor

Last updated:

Observação: se estiver criando uma função sem servidor como parte de um projeto de desenvolvedor, visite a documentação para desenvolvedores sobre a função sem servidor em projetos. A documentação abaixo é destinada a criação de funções sem servidor fora da plataforma do projeto do desenvolvedor.

APPLICABLE PRODUCTS
  • Content 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.

Exemplos

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:

  1. 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.
  2. Esse envio que definimos para enviar uma solicitação POST para yourwebsite.com/_hcms/api/event/participants. event/participants é a sua função sem servidor.
  3. Sua função sem servidor recebe os dados enviados pelo usuário e toma algumas ações antes de retornar uma resposta ao navegador:
  4. 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.
  5. Utiliza a API do HubDB para subtrair 1 da contagem de participantes deste evento que está armazenada no HubDB.
  6. Envia uma resposta para o navegador da web.
  7. 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.

Limites

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

Acessar as funções sem servidor

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. 

Para incluir funções sem servidor em um projeto de desenvolvedor, consulte a Documentação de blocos de criação de JavaScript.

Pastas das funções sem servidor

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.

Pasta de funções sem servidor (.functions)

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.

Serverless.json

Observação: as funções sem servidor incluídas nos projetos de desenvolvedores foram atualizadas a partir da versão 2023.2 da plataforma, incluindo um novo esquema serverless.json. Saiba mais sobre o controle de versão da plataforma de projetos.

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.

Function.js

A função sem servidor pode ser ter qualquer nome, desde que seja um arquivo .js. Para que a sua função sem servidor 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. 

Segredos

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:

  • hs secrets add para criar um novo segredo.
  • hs secrets list para visualizar seus segredos atualmente disponíveis por nome.
  • hs secrets update para atualizar um segredo existente.

Uma vez adicionados por meio da CLI, eles podem ser disponibilizados para as funções, incluindo uma matriz secrets contendo o nome do segredo. Isso permite armazenar seu código de função no controle de versão e usar segredos sem expô-los. No entanto, você nunca deve retornar o valor do seu segredo por meio do registro do console ou como uma resposta, pois isso irá expor o segredo nos registos ou nas páginas de front-end que chamam a função sem servidor.

Observação: devido ao armazenamento em cache, pode levar cerca de um minuto para ver os valores secretos atualizados. Se você acabou de atualizar um segredo, mas ainda está vendo o valor antigo, verifique novamente após cerca de um minuto.

Visualizar logs de funções 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.


Este artigo foi útil?
Este formulário deve ser usado apenas para fazer comentários sobre esses artigos. Saiba como obter ajuda para usar a HubSpot..