Como instanciar edge functions em sua aplicação

Instancie funções serverless diretamente dentro de sua edge application.

Este guia descreve como você pode instanciar a função Azion - Hello World, pré-configurada em sua conta. Você pode repetir este processo usando qualquer função já disponível no Azion Marketplace ou desenvolver sua própria função


  1. Acesse o Azion Console.
  2. No canto superior esquerdo da página, abra o Products menu, representado por três linhas horizontais, e selecione Edge Application.
  3. Clique na edge application que você deseja configurar.
  4. Ative o módulo Edge Functions para habilitar funções.
  5. Clique no botão Save.
  6. Vá para a aba Functions.
  7. Clique em Add Function.
  8. Nomeie sua instância de função. Por exemplo: Hello World function.
  9. Selecione a função Azion - Hello World.
  10. Clique no botão Save.

A página de funções agora lista a nova instância criada. No entanto, esta nova função ainda não está ativa em sua aplicação. Você precisa definir o que acionará a função em sua aplicação. Para invocar a função instanciada no URI xxxxxxxxxx.map.azionedge.net/hello-world:

  1. Ainda na página do Edge Application, navegue até a aba Rules Engine.
  2. Clique no botão Add Rule e selecione Request Phase.
  3. Na seção Criteria, selecione a variável ${uri}.
  1. Como operador de comparação, selecione is equal.
  2. Como argumento, adicione /hello-world.
  3. Na seção Behaviors, selecione Run Function da lista de comportamentos.
  4. Selecione a função Hello World instanciada.
  5. Clique no botão Save.

Para ver sua função em execução, acesse sua aplicação usando seu domínio e o URI definido na regra, que está no formato xxxxxxxxx.map.azionedge.net/hello-world.


  1. Execute a seguinte requisição PATCH em seu terminal, substituindo [TOKEN VALUE] por seu personal token e a variável <edge_application_id> por seu ID de edge application para ativar o módulo Edge Functions:
Terminal window
curl --location --request PATCH 'https://api.azionapi.net/edge_applications/<edge_application_id>' \
--header 'Accept: application/json; version=3' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token [TOKEN VALUE]' \
--data '{
"edge_functions": true
}'
  1. Você receberá uma resposta com o valor atualizado.
  2. Execute a seguinte requisição GET para recuperar o edge_function_id da função Hello World:
Terminal window
curl --location 'https://api.azionapi.net/edge_functions' \
--header 'Accept: application/json; version=3' \
--header 'Authorization: Token [TOKEN VALUE]'
  1. Você receberá uma resposta semelhante a esta:
{
...
"results": [
{
"id": <edge_function_id>,
"name": "Azion - Hello World",
"language": "javascript",
"code": "\r\nasync function handleRequest(request) {\r\n return new Response(\"Hello World!\",{status:200})\r\n}\r\n\r\naddEventListener(\"fetch\", event => {\r\n event.respondWith(handleRequest(event.request))\r\n})\r\n\r\n",
"json_args": {},
"function_to_run": "handleRequest",
"initiator_type": "edge_application",
"active": true,
"last_editor": "azionmanager@azion.com",
"modified": "2021-08-10T17:49:26.224184Z",
"is_proprietary_code": false,
"reference_count": 4,
"version": "-",
"vendor": "azionmanager@azion.com"
}
]
}
  1. Copie o valor <edge_function_id>.
  2. Execute a seguinte requisição POST, substituindo o valor do ID da edge function pelo valor que você recebeu na resposta anterior:
Terminal window
curl --location 'https://api.azionapi.net/edge_applications/<edge_application_id>/functions_instances' \
--header 'Accept: application/json; version=3' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token [TOKEN VALUE]' \
--data '{
"name": "Hello World",
"edge_function_id": <edge_function_id>,
"args": {}
}'
  1. Você receberá uma resposta semelhante a esta:
{
"results": {
"edge_function_id": <edge_function_id>,
"name": "Hello World",
"args": {},
"id": <edge_function_instance_id>
}
}
ChaveDescrição
edge_function_idO ID da edge function. Este não é o mesmo que o ID da função instanciada, que é único para cada instância de função da aplicação.
nameNome da função instanciada.
argsDefinição dos argumentos necessários para a função. Algumas funções não necessitam de argumentos.
idID da função instanciada.
  1. Execute a seguinte requisição POST em seu terminal, substituindo [TOKEN VALUE] por seu personal token, a variável <edge_application_id> por seu ID de edge application, e a variável <edge_function_instance_id> pelo ID da instância da função recebida na resposta anterior:
Terminal window
curl --location 'https://api.azionapi.net/edge_applications/<edge_application_id>/rules_engine/request/rules' \
--header 'Accept: application/json; version=3' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token [TOKEN VALUE]' \
--data '{
"name": "Set cache setting - /cache",
"behaviors": [
{
"name": "run_function",
"target": "<edge_function_instance_id>"
}
],
"criteria": [
[
{
"variable": "${uri}",
"operator": "is_equal",
"conditional": "if",
"input_value": "/hello-world"
}
]
]
}'
  1. Você receberá uma resposta semelhante a esta, confirmando que sua função foi criada com sucesso:
{
"results": {
"id": <rule_id>,
"name": "Run function - /hello-world",
"phase": "request",
"behaviors": [
{
"name": "run_function",
"target": "<edge_function_instance_id>"
}
],
"criteria": [
[
{
"variable": "${uri}",
"operator": "is_equal",
"conditional": "if",
"input_value": "/hello-world"
}
]
],
"is_active": true,
"order": 2,
"description": ""
}
}
  1. Aguarde alguns minutos para que as alterações se propaguem.

Para ver sua função sendo executada, acesse sua aplicação usando seu domínio e o URI definido na regra, que está no formato xxxxxxxxx.map.azionedge.net/hello-world.


Contribuidores