Escreva e teste uma função
Escreva o handler ES Modules de uma função em Azion Console, leia a resposta dela com Preview deployment e encontre a saída dos logs.
Você escreve o código de uma função em JavaScript e lê a resposta que ela retorna, tudo em Azion Console. A função não atende tráfego enquanto uma aplicação ou um firewall não a executar.
Escrever uma função não a executa. Uma função executa quando uma aplicação ou um firewall a instancia e uma regra do Rules Engine seleciona essa instância. Outras quatro páginas cobrem as partes que esta deixa de fora:
- Para uma primeira execução guiada, de uma conta vazia até uma resposta, consulte Primeiros passos com Functions.
- Para saber o que invoca uma função e onde ela executa, consulte Como Functions funciona.
- Para executar a função em uma aplicação, consulte Execute uma função em uma aplicação.
- Para executar a função em um firewall, consulte Execute uma função em um firewall.
Pré-requisitos
- Uma conta Azion. Para criar uma, consulte Como criar uma conta na Azion.
- A permissão Edit Functions na conta. Ela também exige a permissão View Functions. Consulte Teams Permissions.
- Familiaridade com JavaScript, incluindo Strict mode.
Escreva o handler
Uma função exporta um objeto com export default e cada propriedade desse objeto é um handler. O vínculo da instância decide qual handler executa: uma instância em uma aplicação executa o handler fetch e uma instância em um firewall executa o handler firewall. Esse é o padrão ES Modules, a maneira recomendada de estruturar uma função.
Um handler fetch recebe a requisição e retorna um Response:
O handler recebe três parâmetros:
| Parâmetro | Tipo | O que carrega |
|---|---|---|
request | Request | A requisição HTTP recebida: o método, a URL, os headers e o body dela. |
env | Object | As variáveis de ambiente e os bindings da função. |
ctx | Object | O contexto de execução. ctx.waitUntil(promise) estende a vida da execução além do ponto em que o handler retorna. |
request é o objeto Request da Web. O handler decide pelo request.method, lê um cookie a partir de request.headers ou interpreta o caminho com new URL(request.url). Para chamar outro sistema durante a execução do handler, use a Fetch API.
A resposta carrega os headers que o código definir. Este handler retorna markup e declara o formato no header content-type:
Um handler firewall decide se a requisição chega até a aplicação. ctx.deny() bloqueia a requisição imediatamente e a requisição segue para o handler fetch quando o código não o chama:
Azion Runtime torna o strict mode a opção padrão e obrigatória para o JavaScript de uma função. O strict mode transforma vários erros silenciosos do JavaScript em erros lançados e bloqueia sintaxes que versões futuras do ECMAScript podem definir. Para as Web APIs que o runtime implementa e a referência completa dos handlers, consulte Azion Runtime.
Salve o código em Azion Console
O editor de código de uma função é a aba Code dela em Azion Console. Ele é construído sobre o Monaco Editor, com syntax highlighting, IntelliSense e debugging. O menu de contexto do editor também carrega o comando Format Document. Uma função nova abre com um código de exemplo que você substitui.
Para armazenar o handler em uma função:
Acesse Azion Console > Products Menu > Libraries > Functions.
Selecione a função que você quer editar. Para começar uma nova, selecione + Function e insira um nome.
Na aba Code, substitua o código pelo seu handler.
Azion Console armazena o código e deixa a função disponível para ser instanciada. Uma instância nomeia a função em vez de guardar uma cópia dela. O código novo, portanto, chega a todas as instâncias que vinculam a função.
O editor também chama as APIs do ChatGPT, então a explicação, a geração e a refatoração de código acontecem dentro do editor. A integração usa as credenciais da sua própria conta OpenAI, declaradas como um comentário no código-fonte. Para as credenciais e os comandos do editor, consulte Integração com ChatGPT.
Teste a resposta com Preview deployment
Preview deployment executa a função em Azion Console e mostra a resposta que o código retorna, sem deployment. Ele chama PreviewProvider, uma função auxiliar no código-fonte que monta uma requisição simulada para o handler. Os valores dentro de PreviewProvider decidem qual caminho da função executa. Altere esses valores e a mesma função responde a uma requisição diferente.
Para ler a resposta antes de a função atender tráfego:
PreviewProvider monta a requisição que o preview envia e retorna a resposta que o preview renderiza. Para o formato dela, consulte Preview deployment.
O preview renderiza uma resposta text/html como página e uma resposta application/json como corpo JSON.
Altere o método, os headers ou a URL da requisição simulada para exercitar outro caminho do handler. Leia a saída novamente.
A resposta da função aparece em Azion Console antes de qualquer requisição chegar até ela.
Leia os logs de uma função
Uma função escreve mensagens de log com console.log, do mesmo modo que o JavaScript faz em um navegador. Azion coleta essa saída e a entrega em três lugares: Azion CLI, Data Stream e Real-Time Events. Enquanto você não abrir um deles, uma função que falha e uma função que nunca executa parecem iguais.
Para ler a saída a partir de um terminal:
O terminal imprime as mensagens de console dos últimos 5 minutos e continua imprimindo as novas. Adicione --function-id para restringir a saída a uma função.
Para ler a mesma saída em Azion Console, vá até Real-Time Events e selecione a aba Functions Console. Cada entrada carrega o nível da mensagem, a linha dela e o identificador da requisição que a produziu.
Quando os logs não explicam o comportamento, o sintoma decide onde procurar em seguida:
- Solução de problemas de execução e logs de funções - as correções para uma função que nunca executa, que para antes de responder ou que não escreve nada.
- Faça o debug de functions no Data Stream - envie a saída de log de uma função para um endpoint seu.
- Consulte logs de funções com GraphQL API - consulte os eventos de uma função pela GraphQL API.