Produtos suportados
Produtos suportados
Requer um dos seguintes produtos ou superior.
.functions sem servidor e os comandos da CLI que você pode usar com funções sem servidor.
Para uma visão geral de alto nível das funções sem servidor, consulte a visão geral das funções sem servidor.
Para obter mais informações sobre como criar funções sem servidor com projetos para módulos renderizados e parciais em JavaScript, consulte a documentação para desenvolvedores sobre projetos.
Serverless.json
Na pasta.functions, o arquivo serverless.json armazena a configuração da função sem servidor. Este é um arquivo obrigatório e mapeia as funções aosendpoints.
Endpoints
Cada endpoint pode ter suas próprias variáveis de ambiente e segredos. As variáveis especificadas fora dos endpoints devem ser usadas para definições de configuração que se aplicam a todas as funções e endpoints.
As funções sem servidor são expostas por meio de um caminho no domínio da sua conta do HubSpot CMS. Inclui os subdomínios padrão
.hs-sites.com.
Você pode acessar essas funções no seguinte URL:
https://{domainName}/_hcms/api/{endpoint-name/path}?portalid={hubId}.
Abaixo, saiba mais sobre cada componente do URL:
Arquivo de funções
Além do arquivo de configuraçãoserverless.json, a pasta .functions também conterá um arquivo JavaScript Node.js que define a função. Você também pode aproveitar a biblioteca de solicitações para fazer solicitações HTTP para APIs da HubSpot, entre outras.
Por exemplo:
Objeto de contexto
O objeto de contexto contém informações contextuais sobre a execução da função, armazenadas nos parâmetros a seguir.Cabeçalhos
Se precisar saber os cabeçalhos do cliente que está atingindo o seu endpoint, você pode acessá-los por meio decontext.headers, semelhante à forma como acessa as informações por meio de context.body.
Reveja alguns dos cabeçalhos comuns fornecidos pelo HubSpot. Para obter uma lista completa, consulte a documentação de cabeçalhos HTTP da MDN.
Redirecionar enviando um cabeçalho
Você pode realizar um redirecionamento a partir de sua função sem servidor enviando uma resposta com um cabeçalho de localização e o statusCode301.
Definir cookies a partir do seu endpoint
Na sua função sem servidor, você pode instruir o cliente (navegador da web) a definir um cookie.Definir vários valores para um único cabeçalho
Para cabeçalhos compatíveis com vários valores, você pode usarmultiValueHeaders para passar os valores. Por exemplo: você pode instruir o navegador a definir vários cookies.
Segredos
Se precisar autenticar uma solicitação de função sem servidor, você usará segredos para armazenar valores como chaves de API ou tokens de acesso a aplicativos privados. Usando a CLI, você pode adicionar segredos à sua conta da HubSpot para armazenar esses valores, os quais poderá acessar posteriormente por meio de variáveis de ambiente (process.env.secretName). Os segredos são gerenciados por meio da CLI da HubSpot usando os seguintes comandos:
Uma vez adicionados por meio da CLI, os segredos podem ser disponibilizados para as funções ao incluir uma matriz secretscontendo 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.
Usando funções sem servidor com o elemento de formulário
Ao enviar funções sem servidor, use javascript para lidar com o envio de formulário e inclua o cabeçalho"contentType" : "application/json" em sua solicitação. Não use o atributo action em elementos <form>.
CORS
Cross Origin Resource Sharing (CORS) é um recurso de segurança do navegador. Por padrão, os navegadores restringem solicitações de origem cruzada iniciadas por JavaScript. Isso evita que códigos maliciosos em execução em um domínio diferente afetem seu site. Esse processo é chamado de política de mesma origem. Como o envio e a recuperação de dados de outros servidores às vezes são uma necessidade, o servidor externo pode fornecer cabeçalhos HTTP que indiquem quais origens têm permissão para ler as informações a partir de um navegador. Você não deve ter problemas de CORS ao chamar sua função sem servidor nas páginas hospedadas pela HubSpot. Se fizer isso, verifique se está usando o protocolo correto.Está obtendo esse erro CORS?“O acesso à busca em [URL da sua função] a partir da origem [página que fez a solicitação] foi bloqueado pela política de CORS: a resposta à solicitação de preflight não passou na verificação de controle de acesso: o cabeçalho ‘Access-Control-Allow-Origin’ não está presente no recurso solicitado. Se uma resposta opaca atender às suas necessidades, defina o modo da solicitação para ‘no-cors’ para buscar o recurso com o CORS desativado.”Sua solicitação tem uma origem diferente da do site que a chama?
- Se o nome de domínio for diferente, sim.
- Se estiver usando um protocolo diferente (http, https), sim.
Access-Control-Allow-Origin do HubSpot no momento.Consulte a MDN para obter mais informações detalhadas sobre a solução de problemas de erros CORS.Solicitações GET
As solicitações GET podem ser capazes de fazer solicitações CORS dependendo do cliente. Não faça com que as solicitações GET escrevam algo, apenas retornem dados.Pacotes predefinidos
Atualmente, as funções sem servidor da HubSpot vêm predefinidas com os seguintes pacotes:- @hubspot/api-client: ^1.0.0-beta
- axios: ^0.19.2
- request: ^2.88.0
- requests: ^0.2.2
- Clone ou copie seu arquivo de função.
- Altere o endpoint da sua função no arquivo
serverless.jsonpara direcionar para o seu novo arquivo de função. Você pode excluir com segurança a versão antiga.
Limites
As funções sem servidor destinam-se a ser rápidas e a ter foco restrito. Para permitir chamadas e respostas rápidas, as funções sem servidor da HubSpot estão limitadas a:- 50 segredos por conta.
- 128 MB de memória.
- Não mais do que 100 endpoints por conta da HubSpot.
- Você deve usar
contentTypeapplication/jsonao chamar uma função. - Os registros de funções sem servidor são armazenados por 90 dias.
- 6 MB em uma carga útil de invocação do AWS Lambda
- 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.
- 60 execuções de funções que levam 10 segundos para serem concluídas.
- 6.000 execuções de funções que levam 100 milissegundos para serem concluídas.
429. O tempo de execução de cada função está incluído nos logs das funções sem servidor.
Para ajudar a evitar esses limites, os dados de limite são fornecidos automaticamente no contexto da função durante a execução. Você pode usar esses dados para fazer com que o aplicativo permaneça dentro desses limites. Por exemplo, se seu aplicativo exige a consulta periódica de um endpoint, você pode retornar, junto com os dados, uma variável para influenciar a frequência dessa consulta. Dessa forma, quando o tráfego estiver alto, você pode diminuir a taxa de consulta, evitando atingir os limites e, em seguida, aumentá-lo novamente quando o tráfego estiver baixo.