Primeiros passos com o Azion Runtime
Escreva uma function no formato de handler ES Modules, chame uma Web API e os metadados da requisição, execute-a com azion dev e faça o deploy no Azion Runtime.
Este guia leva você pela sua primeira function no Azion Runtime, do código até uma requisição ao domínio após o deploy.
- Crie um projeto de function em JavaScript com a Azion CLI.
- Escreva o handler no formato ES Modules recomendado,
export default { fetch(request, env, ctx) }. - Chame uma Web API e leia os metadados da requisição, uma API da Azion.
- Execute a function com
azion dev, depois faça o deploy dela e compare as duas respostas.
A function retorna quatro valores em JSON. EdgeRuntime indica onde o código roda, URL e crypto.randomUUID() são Web APIs, e request.metadata traz os metadados da requisição que a Azion adiciona a toda requisição.
Pré-requisitos
- A Azion CLI, instalada e com login feito. Para a configuração, consulte Primeiros passos com a Azion CLI.
- Node.js e npm. A CLI executa o bundler da Azion com
npxpara fazer o build do projeto. curlna sua máquina.
Crie o projeto
Crie um projeto chamado my-runtime-function com a CLI:
O comando faz cinco perguntas. Selecione o preset Javascript e o template Hello World, digite Y para instalar as dependências e digite n para o servidor local e para o deploy. Você executa os dois depois de escrever o handler. O comando confirma o projeto:
A entrada da function é index.js, na raiz do novo diretório my-runtime-function. O template escreve esse arquivo no formato mais antigo, export default main, que o build informa como obsoleto. Para todos os formatos que o runtime aceita, consulte Handlers.
Escreva o handler
Substitua o conteúdo de index.js por este handler:
O runtime chama fetch uma vez por requisição:
requesté a Request recebida, erequest.metadatatraz os dados de GeoIP e de rede da requisição.envcontém as variáveis de ambiente, ectxtrazwaitUntil(). Este handler não usa nenhum dos dois.Response.json()cria uma Response com o objeto como corpo JSON econtent-type: application/json.
O optional chaining em request.metadata?. mantém o handler funcionando com azion dev, em que a requisição não traz metadados.
Execute a function localmente
Vá para o diretório do projeto e inicie o servidor de desenvolvimento local:
O comando faz o build da function e a serve na porta 3333:
O build não mostra aviso de obsolescência, porque o handler usa o formato ES Modules. Em um segundo terminal, faça uma requisição a um caminho:
A function responde com JSON:
Localmente, EdgeRuntime é edge-runtime e country é null, porque o azion dev não adiciona metadados à requisição. Para parar o servidor, pressione Ctrl+C. Para tudo o que muda entre o azion dev e uma function após o deploy, consulte Como o Azion Runtime funciona.
Faça o deploy da function
No diretório my-runtime-function, faça o deploy do projeto:
O comando envia o projeto, faz o build, cria a function, a aplicação e o workload, e mostra o domínio do workload:
O primeiro deploy pode levar vários minutos para responder em todas as localidades. Até uma localidade ter a function, ela responde 404 com uma página de título There's nothing here yet. Espere e tente de novo antes de diagnosticar o deploy.
Faça uma requisição à function após o deploy
Faça uma requisição ao mesmo caminho no domínio que o azion deploy mostrou. Substitua <your-azion-domain> por esse domínio:
Após o deploy, a function responde com as mesmas chaves:
Após o deploy, EdgeRuntime é azion, e country traz o país do cliente que enviou a requisição, a partir dos metadados da requisição. requestId muda a cada requisição. A function roda no Azion Runtime e responde no domínio do workload.
Para mudar a function, edite index.js e execute azion deploy de novo no diretório my-runtime-function. Os deploys seguintes levam cerca de dois minutos para responder em todas as localidades.