Edge Functions

Edite no GitHub

O Azion Edge Functions permite que você crie aplicações serverless orientadas a eventos, na edge da rede, mais perto dos usuários.

Com Edge Functions você pode executar funções serverless em resposta a eventos em Edge Nodes de nossa rede distribuída, sem ter que provisionar ou gerenciar servidores.

Você pode usar functions para manipular HTTP nas seguintes fases de Request e HTTP Response:

  • Assim que a requisição de um usuário for recebida no Edge Node (Viewer Request)
  • Antes que o Azion Edge Node encaminhe a requisição à Origin (Origin Request)
  • Assim que o Edge Node receber a resposta da Origin (Origin Response)
  • Antes que o Azion Edge Node encaminhe a resposta para o usuário (Viewer Response)

Você pode também gerar responses sem necessariamente ter que encaminhar a requisição para a origem.

Com o uso de Edge Functions escritas em Lua e JavaScript na plataforma de Edge Computing da Azion, você poderá criar uma variedade de soluções, por exemplo:

  • Inspecionar cookies para rewrite de URLs para diferentes versões de seu site em experimentos A/B Test.
  • Enviar objetos diferentes para seus usuários baseado em User-Agent header, que contém informação sobre o device que enviou a Request. Por exemplo, você pode enviar imagens em diferentes resoluções baseado no dispositivo dos usuários.
  • Inspecionar Headers e Authorized Tokens, inserindo Header e permitindo Access Control antes de encaminhar a request à origem.
  • Adicionar, remover ou modificar cabeçalhos e rewrite de path direcionando usuários para diferentes objetos em cache.
  • Gerar HTTP responses para tarefas como redirecionar usuários não autenticados para páginas de login, ou criar e entregar webpages estáticas geradas diretamente na edge.

Veja mais formas de uso de Edge Functions em Casos de Uso.

  1. Como funciona?
  2. Como utilizar?
  3. Hands-on
  4. Documentação de Suporte

1. Como funciona?

Crie suas próprias funções personalizadas ou utilize alguma das já existentes disponibilizadas pela Azion, tanto para Edge Application quanto para Edge Firewall. As linguagens suportadas atualmente pela plataforma são Lua e JavaScript.

Edge Functions executam no tratamento/atendimento da requisição. A plataforma de Edge provê um modelo de Rules Engine que pode ser usado para vincular a execução do código das Edge Functions de acordo com as fases de tratamento.

O runtime específico de cada linguagem provê uma interface de programação para interagir e manipular os objetos de request e response para implementar a lógica necessária.

Ao instanciar uma Edge Function, você pode informar parâmetros que serão passados para a função, em formato JSON, por meio de argumentos, podendo ainda definir e executar testes on-line para validar sua construção.

Edge Functions são executadas diretamente na infraestrutura de Edges da Azion. Para utilizá-las, basta que estejam associadas a um Behavior no Rules Engine. Assim, quando uma requisição satisfizer os critérios definidos nas regras da Rule Engine, o trigger para execução da Edge Function será disparado.


2. Como utilizar?

Crie suas próprias funções personalizadas ou utilize alguma das funções prontas para uso providas pela Azion ou Independent Software Vendors, por meio do Real-Time Manager, em Libraries. Você pode criar Edge Functions e manter um repositório de funções que poderão ser utilizadas em Edge Application ou Edge Firewall. Consulte a Runtime API de acordo com o Runtime escolhido para escrita da Edge Function.

Criar Edge Functions

Utilize a Runtime API da linguagem de sua preferência para escrever Edge Functions.

Ao criar Edge Functions usando o Runtime Enviroment JavaScript, as Edge Functions escritas pelo próprio usuário entram direto em produção sem passar por uma revisão interna uma vez que o código é executado isoladamente e limitado a recursos isolados.

O código de Edge Functions escritas em Lua passa por uma revisão minuciosa de nossos engenheiros de software antes de entrar em produção. Nosso objetivo é garantir a segurança e uso correto da plataforma de Edge Computing. Seu código poderá ser revisado em critérios como:

  • Uso de variáveis globais que não são permitidas. Por conta do ambiente multi-tenant, o código da Edge Function Lua deve evitar uso de variáveis globais e shared memory
  • Chamadas HTTP bloqueantes. Toda chamada a serviço externo deverá usar o protocolo HTTP por meio de APIs assíncronas para que o processo não seja bloqueado
  • O Código ou Lib também deve passar nos testes luacheck.

Para mais detalhes de cada Runtime API e exemplos de código, consulte a documentação de Runtime APIs

Instanciar Edge Functions

Antes de associar um trigger de execução à Edge Function, ela deve ser instanciada, de acordo com o seu initiator type, em Edge Application ou Edge Firewall. Para isso, o módulo Edge Functions deve estar habilitado, então, por meio da aba Functions você poderá instanciar suas Edge Functions para posterior uso em uma Rule do Rules Engine.

Para saber mais sobre Edge Functions Instances acesse a documentação de Edge Application e Edge Firewall

Métricas para Edge Functions

Por meio do Real-Time Metrics, fornecemos informações em tempo real sobre o desempenho das suas Edge Functions.

Para acessar os gráficos, siga as seguintes etapas:

  1. Acesse o Real-Time Manager e entre no menu Data Services e selecione Real-Time Metrics, e em seguida clique em Edge Functions.
  2. Visualize informações – por exemplo, a quantidade de invocações por instância de Edge Function.

Leia mais sobre o Real-Time Metrics.


4. Hands-On passo a passo para criar uma Edge Function

Para que sua Edge Function entre efetivamente em produção basta escrever, instanciar e associar a um Behavior Run Function, em uma Rule no Rules Engine:

  1. Acesse o Real-Time Manager e entre no menu Libraries; selecione Edge Functions.

  2. Adicione uma nova Edge Function clicando no botão Add Function.

  3. Em Language, selecione JavaScript.

    async function handleRequest(request) {
     return new Response("Hello World!",
       {
           status:200
       })
    }
    addEventListener("fetch", event => {
     event.respondWith(handleRequest(event.request))
    })
    
  4. Acesse uma Edge Application e habilite o módulo Edge Functions.

  5. Na aba Rules Engine, crie ou edite uma Rule e na seção Behavior, no campo Then, selecione “Run Function” e associe a Edge Function desejada.

  6. Exemplo de Resposta ao executar o Behavior Run Function:

    Hello World!
    
  7. Utilize o Real-Time Metrics para acompanhar métricas – por exemplo, a quantidade de invocações de instâncias de Edge Functions.


4. Documentação de Suporte


Não encontrou o que procurava? Abra um ticket.