Functions
Execute JavaScript no caminho da requisição de uma aplicação ou de um firewall, invocado por uma regra do Rules Engine, sem servidor para provisionar.
Uma função é um código que roda sob demanda, quando um evento como uma requisição HTTP chega. Você escreve um handler que recebe a requisição e devolve uma resposta. A plataforma roda esse handler a cada requisição e o encerra quando a resposta é enviada, de modo que nada roda entre uma requisição e outra. Esse modelo se chama serverless: não há servidor para provisionar nem capacidade para planejar.
Functions guarda o seu código JavaScript e o executa na infraestrutura distribuída da Azion, no caminho de uma requisição a uma aplicação ou a um firewall. Uma regra no Rules Engine seleciona a função e a fase da requisição que a invoca. Use Functions para construir uma API, reescrever headers de requisição e de resposta, aplicar lógica a partir dos metadados da requisição ou bloquear uma requisição antes que ela chegue à sua aplicação.
Primeiros passos Guias de FunctionsEstrutura de uma função
Uma função exporta um objeto default que carrega um handler. Em uma aplicação, o handler se chama fetch:
requesté a requisição HTTP recebida, como um objetoRequest.envcarrega as variáveis de ambiente e os bindings disponíveis para a função.ctxé o contexto de execução.ctx.waitUntil(promise)estende a duração da invocação.- Em um firewall, o handler se chama
firewalle o contexto acrescentactx.deny(), que bloqueia a requisição imediatamente.
Azion Runtime é construído sobre padrões Web, então o que você sabe sobre os objetos Request e Response se aplica a uma função. Functions também aceita o padrão Service Worker, que registra o handler com addEventListener. Para os dois padrões e seus parâmetros, consulte Handlers.
Caminho de invocação
Criar uma função não a executa. Uma função só roda quando uma regra invoca uma instância dela, então dois objetos ficam entre o seu código e uma requisição.
- Você cria uma função em Functions. A função guarda o código e a mesma função pode ser instanciada em mais de uma aplicação.
- Você cria uma instância de função em uma aplicação ou em um firewall. A instância vincula a função e carrega os Args, um objeto JSON passado para o contexto de execução. O código não pode ser editado na instanciação e apenas os Args são definidos ali.
- Você cria uma regra no Rules Engine e seleciona o comportamento Run Function. A regra nomeia a instância, a fase de execução e os critérios que a disparam.
- Quando uma requisição atende aos critérios, a função roda na infraestrutura distribuída da Azion, sem cold start.
Uma instância que nenhuma regra invoca nunca roda. Para os objetos, as fases e o formato dos Args, consulte Como Functions funciona.
Escopo e limites
- Linguagem: você escreve funções em JavaScript. Uma função também pode compilar e instanciar módulos WebAssembly por meio da API WebAssembly. Um projeto TypeScript passa pelo build com o preset
Typescriptdo Azion CLI build, e o pacoteazion/utilspublica definições de tipo que o código importa. - Runtime: as funções rodam no Azion Runtime, que implementa as Web APIs e um conjunto de módulos do Node.js. Um
Responseaceita umReadableStreamcomo corpo, então uma função transmite a resposta ao cliente conforme ela é gerada, em vez de montar o corpo inteiro antes. Para todos os tipos de corpo, consulte Parâmetros. - Frameworks: um projeto construído com um framework JavaScript suportado se torna funções quando Azion CLI faz o build dele, por meio do Azion Bundler, o adaptador de frameworks open source. Para a lista, consulte Compatibilidade com web frameworks.
- Contextos de execução: em uma aplicação, uma função roda na fase de requisição ou na fase de resposta, e o comportamento Run Function requer o módulo Application Accelerator. Em um firewall, uma função roda na fase de requisição e permite, nega ou descarta a requisição.
- Serviços da plataforma: uma função alcança KV Store, SQL Database e Object Storage a partir do runtime e chama modelos por meio do AI Inference.
- Limites: uma invocação tem 512 MB de memória por isolate, 2 s de tempo de CPU, 5 min de tempo de relógio incluindo espera de I/O e 50 chamadas
fetch()de saída. O campo Args comporta 100 KB. Alguns valores variam conforme o plano e a tabela completa está em Limites. - Interfaces: você cria e gerencia funções em Azion Console, com Azion CLI, pela Azion API e pelo Azion Terraform Provider.
- Desenvolvimento: você escreve o código no editor de código em Azion Console, o Preview deployment envia uma requisição simulada e mostra a resposta que o código retorna antes que a função atenda tráfego, e
azion devfaz o build do projeto e o executa localmente. - Observabilidade: uma função escreve mensagens de log com
console.log, e Real-Time Events e Data Stream carregam essa saída. - Cobrança: Functions é cobrado por tempo de compute e por invocação, conforme Preços.
Functions não hospeda modelos de AI. AI Inference roda o modelo no Azion Runtime, e uma função o chama.
Fluxos de trabalho de AI
Uma função é o componente de tempo de requisição de uma aplicação de AI na Azion. Ela chama modelos por meio do AI Inference, que serve modelos que seguem o padrão de API da OpenAI, então um cliente escrito para esse padrão funciona sem alteração.
As peças de que um fluxo de trabalho de AI se serve estão na mesma plataforma:
- Modelos: AI Inference roda o modelo no Azion Runtime. Functions não hospeda modelos.
- Recuperação: SQL Database armazena vetores e suporta a recuperação que combina busca vetorial e busca de texto completo, que é de onde um fluxo de retrieval-augmented generation lê.
- Frameworks de agentes: as funções rodam agentes construídos com LangGraph e LangChain.
- Chamadas entre agentes: servidores MCP permitem que os agentes chamem uns aos outros pelo protocolo Agent2Agent (A2A) do Google.