Azion Runtime
Execute functions em JavaScript no Azion Runtime com Web APIs, polyfills de Node.js e APIs da Azion. Veja como uma requisição chega ao seu código.
Um runtime JavaScript é o ambiente que executa o código: ele fornece o motor da linguagem, os objetos globais e as APIs que o código pode chamar. Em um runtime serverless, você escreve um handler que recebe uma requisição e retorna uma resposta. A plataforma inicia o handler quando uma requisição chega, então não há servidor para você provisionar ou escalar.
Azion Runtime é o runtime JavaScript de Functions. Ele executa o seu handler na infraestrutura distribuída da Azion, perto dos usuários que enviam as requisições, e a Azion provisiona o que o código precisa para rodar. O código é construído sobre padrões Web e roda em modo estrito (strict mode). Ele chama Web APIs, APIs da Azion para variáveis, metadados da requisição, armazenamento e bancos de dados e, por meio de polyfills, uma parte das APIs do Node.js. Use o Azion Runtime para colocar lógica de negócio na frente de uma aplicação, construir aplicações serverless, alterar respostas enquanto são transmitidas ou armazenar e consultar dados a partir de uma function.
Primeiros passos Explore as Web APIsEstrutura da function
Uma function do Azion Runtime é um módulo JavaScript cujo export default contém um handler fetch. A menor function completa responde a toda requisição com o mesmo texto:
Com o deploy feito, a function retorna esta resposta:
export default { fetch }é o formato ES Modules, o que a Azion recomenda. O Azion Runtime também executa o padrão Service Worker,addEventListener('fetch', …), e uma função de export default obsoleta.requesté umRequestpadrão. A propriedademetadatadele adiciona dados sobre o cliente, como a geolocalização e o protocolo TLS.envé um objeto vazio em uma function com deploy feito. Uma function lê as suas variáveis comAzion.env.get()ouprocess.env.ctxcarregaargs, os Args da instância de function, ewaitUntil(), que estende a execução até que uma promise seja resolvida ou rejeitada.
Um código escrito para os objetos Web Request e Response, em um navegador ou em outro runtime baseado em padrões, segue o mesmo modelo no Azion Runtime. Para cada parâmetro e formato de handler, consulte Handlers.
Caminho de invocação
Escrever uma function não a executa. O seu código chega ao Azion Runtime por meio de um build, e uma requisição chega ao seu código apenas quando uma regra de uma aplicação executa uma instância da function.
azion buildexecuta o Azion Bundler, que empacota o seu código e resolve com polyfills, em tempo de build, as APIs do Node.js que ele chama.azion deploypublica o resultado como uma function.- Uma instância de function coloca a function em uma aplicação. O campo
activedela impede a instância de rodar sem excluí-la. A aplicação precisa ter Functions ativado na seção Modules das suas Main Settings. - Uma requisição chega, e uma regra do Rules Engine cujos critérios correspondem executa o seu comportamento Run Function, que nomeia a instância.
- O Azion Runtime executa a function em um isolate, um contexto de execução do V8, no data center que atende a requisição.
- O runtime chama o handler, e o handler retorna um
Response. Um trabalho passado paractx.waitUntil()pode terminar depois que o handler retorna. - O controle volta para o Rules Engine, que continua com os comportamentos seguintes.
Para o ciclo de vida da requisição, o bundler e o tempo dentro de uma requisição, consulte Como o Azion Runtime funciona.
Capacidades e limites
Uma function no Azion Runtime chama APIs padrão, uma parte do Node.js e as APIs da plataforma, dentro de um isolate com tetos fixos:
- Linguagem: JavaScript. A Azion faz do strict mode o modo padrão e obrigatório de toda function, então alguns erros silenciosos passam a ser erros lançados. Para mais informações, consulte Como o Azion Runtime funciona e a referência de strict mode da MDN.
- Web APIs: o runtime agrupa as suas Web APIs em rede, codificação e decodificação, Web Streams, padrões Web, primitivas do V8, Web Crypto e EventTarget. A Azion participa do WinterTC (TC55), o comitê da Ecma International que padroniza uma API comum mínima para runtimes JavaScript do lado do servidor. Uma function construída apenas sobre essas APIs pode ser portada para outros runtimes que as implementam. Para cada API, consulte Web APIs. Globais lista os nomes que uma function usa sem um import.
- APIs do Node.js: uma function pode importar 68 módulos do Node.js, e cada um é resolvido quando o build empacota a function. Um módulo que passa pelo build nem sempre funciona em tempo de execução: alguns têm suporte parcial, e os módulos apenas de build são stubs cujas chamadas retornam valores vazios ou lançam erros. Para o status de cada módulo, consulte APIs do Node.js.
- APIs da Azion: uma function lê variáveis de ambiente e secrets, os metadados de uma requisição e network lists. Ela armazena dados com a Object Storage API e a KV Store API, e consulta um banco de dados com a SQL Database API. Ela também executa modelos com a AI Inference API e usa a Cache API e o WebSocket.
- Isolamento: um isolate não dá ao código acesso ao sistema operacional do host, nem resolução de DNS por chamadas de sistema nativas, nem sockets TCP ou UDP de baixo nível. Cada invocação roda dentro dos tetos de memória e de tempo de CPU de Limites de Functions.
- Invocação: o Azion Runtime executa o código, mas não decide quando ele roda. A regra e a instância de function decidem, como descreve Como Functions funciona.
- Interfaces: a Azion CLI executa uma function localmente com
azion deve faz o build e o deploy dela comazion buildeazion deploy.azion devemula o runtime, e várias APIs se comportam de forma diferente nele. Para as diferenças, consulte Como o Azion Runtime funciona. - Frameworks: projetos construídos com frameworks web fazem o deploy por meio do Azion Bundler. Para o suporte de cada framework, consulte Compatibilidade com frameworks.
- Termos e ajuda: o Glossário define os termos do Azion Runtime, e Diretrizes de suporte lista os canais de suporte e de comunidade.