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
- Acesse o Azion Console > Edge Application.
- Clique na edge application que você deseja configurar.
- Ative o módulo Edge Functions para habilitar funções.
- Clique no botão Save.
- Vá para a aba Functions Instances.
- Clique em + Function Instance.
- Nomeie sua instância de função. Por exemplo:
Hello World function
. - Selecione a função Azion - Hello World.
- 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
:
- Ainda na página do Edge Application, navegue até a aba Rules Engine.
- Clique no botão + Rule.
- Dê um nome para sua regra.
- Selecione Request Phase.
- Na seção Criteria, selecione a variável
${uri}
.
- Como operador de comparação, selecione is equal.
- Como argumento, adicione
/hello-world
. - Na seção Behaviors, selecione Run Function da lista de comportamentos.
- Selecione a função Hello World.
- 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
.
- Acesse o Real-Time Manager (RTM).
- No canto superior esquerdo da página, abra o Products menu, representado por três linhas horizontais, e selecione Edge Application.
- Clique na edge application que você deseja configurar.
- Ative o módulo Edge Functions para habilitar funções.
- Clique no botão Save.
- Vá para a aba Functions.
- Clique em Add Function.
- Nomeie sua instância de função. Por exemplo:
Hello World function
. - Selecione a função Azion - Hello World.
- 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
:
- Ainda na página do Edge Application, navegue até a aba Rules Engine.
- Clique no botão Add Rule e selecione Request Phase.
- Dê um nome para sua regra.
- Na seção Criteria, selecione a variável
${uri}
.
- Como operador de comparação, selecione is equal.
- Como argumento, adicione
/hello-world
. - Na seção Behaviors, selecione Run Function da lista de comportamentos.
- Selecione a função Hello World instanciada.
- 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
.
- 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:
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}'
- Você receberá uma resposta com o valor atualizado.
- Execute a seguinte requisição
GET
para recuperar oedge_function_id
da função Hello World:
curl --location 'https://api.azionapi.net/edge_functions' \--header 'Accept: application/json; version=3' \--header 'Authorization: Token [TOKEN VALUE]'
- 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" } ]}
- Copie o valor
<edge_function_id>
. - Execute a seguinte requisição
POST
, substituindo o valor do ID da edge function pelo valor que você recebeu na resposta anterior:
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": {}}'
- Você receberá uma resposta semelhante a esta:
{ "results": { "edge_function_id": <edge_function_id>, "name": "Hello World", "args": {}, "id": <edge_function_instance_id> }}
Chave | Descrição |
---|---|
edge_function_id | O 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. |
name | Nome da função instanciada. |
args | Definição dos argumentos necessários para a função. Algumas funções não necessitam de argumentos. |
id | ID da função instanciada. |
- 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:
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" } ] ]}'
- 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": "" }}
- 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