1 of 20
2 of 20
3 of 20
4 of 20
5 of 20
6 of 20
7 of 20
8 of 20
9 of 20
10 of 20
11 of 20
12 of 20
13 of 20
14 of 20
15 of 20
16 of 20
17 of 20
18 of 20
19 of 20
20 of 20

doc

Edge Functions

As Edge Functions permitem que você crie aplicações serverless orientadas a eventos no 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.

  1. Sobre Edge Functions
  2. Como funciona
  3. Base
  4. Passo a passo para criar uma Edge Function
  5. Edge Functions com múltiplos arquivos
  6. Ativar suas configurações
  7. Leia também

1. Sobre Edge Functions

Aqui estão algumas das soluções fornecidas pelo Edge Functions.

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 Edge Node da Azion encaminhe a requisição à Origin (Origin Request).
  • Assim que o Edge Node receber a resposta da Origin (Origin Response).
  • Antes que o Edge Node da Azion encaminhe a resposta para o usuário (Viewer Response).

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

Com o uso de Edge Functions 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 com base 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 com base no dispositivo dos usuários.
  • Inspecionar Headers e Authorized Tokens, inserindo o Header e permitindo o 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 no edge.

Veja mais formas de uso de Edge Functions em Guias.


2. 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. A linguagen suportada atualmente pela plataforma é JavaScript.

Edge Functions executam o 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 Edge 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 Rules Engine, o trigger para execução da Edge Function será disparado.


3. Base

Você pode criar Edge Functions e manter um repositório de funções que podem ser usadas tanto em Edge Application quanto em Edge Firewall. Consulte a Runtime API de acordo com o Runtime escolhido para escrever a Edge Function.

Além de personalizar suas próprias funções, você também pode escolher entre as prontas para uso fornecidas pela Azion ou por Independent Software Vendors (ISV). Navegue pelo catálogo do Azion Marketplace no Real-Time Manager (RTM).

Criar Edge Functions

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

Runtime Environment JavaScript

Ao criar Edge Functions usando o Runtime Environment 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.

Você pode modificar o comportamento de uma função sem alterar o próprio código. Isso significa que você não precisa codificar a função. Na aba Args (Argumentos), você pode inserir parâmetros JSON por funções de código interno. Esse formato permite designar alternativas de variáveis para seu código que podem conter detalhes sobre uma função e requisição.

Args são valores dinâmicos que podem mudar as Edge Functions em execução nos edge nodes.

Você pode usar a mesma função em diferentes Edge Applications.

Por exemplo, se você criar uma Edge Function com um argumento que controla se o código precisa enviar dados para S3, e em uma determinada edge application você determinar true, na Functions Instance, nos Arg, afunção irá gerar uma postagem para um S3 para que os resultados da requisição sejam mantidos.

  • Estrutura: Os argumentos são sempre estruturas JSON que serão armazenadas em uma configuração de função por meio da aba Args no módulo Functions.
  • Instanciar: Para instanciar Args, use event.args.<ARG_CREATED>. Ao usar este comando, você poderá se conectar à guia Args ao seu código.

Confira nossa página de exemplos.

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 RTM, 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 RTM e selecione Real-Time Metrics na seção OBSERVE. 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. Passo a passo para criar uma Edge Function

Você está a um passo de criar e executar funções serverless em Edge Nodes a partir da poderosa rede distribuída da Azion.

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 RTM. No menu Edge Computing, clique em Edge Functions.
  2. Adicione uma nova Edge Function clicando no botão Add Function.
  3. Dê um nome à sua função no campo Edge Function Name para poder salvar suas configurações.
  4. Em Language, selecione JavaScript. Copie o seguinte exemplo para o campo da aba Code.
       async function handleRequest(request) {
        return new Response("Hello World!",
          {
              status:200
          })
       }
       addEventListener("fetch", event => {
        event.respondWith(handleRequest(event.request))
       })
  1. No campo Function to run, digite o nome da função principal a ser executada no código fonte.

  2. Selecione o Initiator Type, que se refere ao tipo de módulo onde a função será instanciada e executada. Neste exemplo, refere-se à Edge Application.

  3. Clique em Save para salvar suas configurações. Você retorna à página inicial das Edge Functions, onde você visualiza sua lista de Edge Functions.

  4. Em seguida, acesse o menu Products, no canto superior esquerdo. Selecione uma Edge Application de sua lista.

  5. Na aba Main Settings, ative o módulo Edge Functions na seção Edge Application Modules.

  6. Na aba Rules Engine, crie ou edite uma regra e na seção Behavior, no campo Then, selecione Run Function e a associe à Edge Function desejada.

  7. Exemplo de resposta ao executar o Behavior Run Function:

    Hello World!

  1. Use o RTM para verificar suas métricas. Por exemplo, quando você deseja ver o número de invocações de instâncias do Edge Functions.

Os campos marcados com um asterisco são obrigatórios.


5. Edge Functions com múltiplos arquivos

O Azion Edge Functions trabalha com um único arquivo JavaScript (.js). Caso suas Edge Functions tenham mais de um arquivo ou utilizem módulos JavaScript, você precisará agrupar esses arquivos. Uma das maneiras de proceder é usar o Webpack, que permite agrupar arquivos JavaScript em um único arquivo.

Somente arquivos JavaScript são suportados.

Não há suporte para Node/Deno API nativamente. Seu código deve resolver todas as dependências.

Conheça mais sobre a Runtime API da Azion.

Exemplo:

Se você tiver uma Edge Function que tenha um módulo para buscar dados:

  • O index.js tem o método eventListener e os módulos de importação.
  • a pasta de módulos tem todos os módulos que são necessários por sua função;
  • o webpack.config.js tem a configuração de como empacotar sua função.

Requisitos

Agrupamento e Upload

Depois de codificar sua função, você precisa agrupá-la usando o seguinte comando:

webpack-cli --config webpack.config.js

Isto vai gerar um diretório chamado dist com um único arquivo chamado main.js. Você precisa copiar o conteúdo desse arquivo e colá-lo no RTM.

  • Estrutura do arquivo:
your_function/
  	modules/
  		data.js
  	index.js
  	webpack.config.js
  • Conteúdo:

index.js:

import fetchData from "./modules/data"

addEventListener("fetch", (event) => {
   event.respondWith(fetchData())
})
  • modules/data.js:
async function fetchData() {
   let data = await fetch("https://httpbin.org/get?username=azionuser&name=Azion&last_login=2021-03-10")
   let json = await data.json()
   return new Response(JSON.stringify(json["args"]), {"status": 200})
}

export default fetchData
  • webpack.config.js:

O destino deve ser “webworker” e o modo deve ser “production”.

module.exports = {
 target: "webworker",
 entry: "./index.js",
 mode: "production",
}
  • Arquivo gerado:

dist/main.js

(()=>{"use strict";addEventListener("fetch",(t=>{t.respondWith(async function(){let t=await fetch("https://httpbin.org/get?username=azionuser&name=Azion&last_login=2021-03-10"),e=await t.json();return new Response(JSON.stringify(e.args),{status:200})}())}))})();

6. Ativar suas configurações

Você encontrará os seguintes botões na parte inferior da tela:

  • Active: esta opção habilita ou desabilita suas configurações no sistema.
  • Cancel: com esta opção, você retorna à página inicial de Edge Functions e descarta suas edições.
  • Save: quando suas seleções estiverem concluídas, clique em Save para salvar suas configurações.

Ao salvar suas configurações, você retorna à página inicial do Edge Functions, onde vê sua lista de Edge Functions classificada por estas opções:

  • Name
  • Language
  • Initiator type
  • Last editor
  • Last modified
  • Ref
  • Count
  • Active

Ao clicar nas setas dessas abas, você também pode alterar a forma como sua lista é exibida.


7. Leia também


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