Instâncias de função
Vincule uma função a uma aplicação, defina os Args em JSON que ela recebe e invoque-a com o comportamento Run Function em Rules Engine.
Uma instância de função vincula uma função a uma aplicação. A instância carrega os Args, os argumentos passados para o contexto da execução da função em formato JSON. O código da função não pode ser editado na instanciação: uma instância define os Args e nada mais.
Uma regra em Rules Engine invoca a instância, não a função. A mesma função pode ser instanciada em mais de uma aplicação, e cada instância carrega os próprios Args. Uma instância que nenhuma regra nomeia nunca é executada.
Um firewall instancia funções da mesma forma. Uma instância em um firewall executa a sua função antes que a requisição chegue à aplicação, então a função pode interromper a requisição ali. Uma instância em uma aplicação executa a sua função como parte de servir a requisição. Consulte Instâncias de função no Firewall para conhecer o objeto do firewall, e Limites de Firewall para conhecer os limites dele.
Campos da instância
A API da Azion cria uma instância sob a aplicação à qual ela pertence. Estes são os campos que você define:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome da instância. |
function | integer | Sim | ID da função que a instância vincula. Esse ID é diferente do ID da instância. |
args | JSON object ou array | Não | Argumentos passados para o contexto da execução da função. Quando a instância não define args, os default_args da função são usados. |
azion_form | JSON object | Não | Um JSON Schema que renderiza os args como formulário. Quando nenhum é definido, um objeto vazio é usado. |
active | boolean | Não | Se a instância está ativa. |
A API retorna mais quatro campos: id, o ID da instância; last_editor, o endereço de e-mail da conta que a alterou pela última vez; last_modified, o timestamp dessa alteração; e created_at, o timestamp da criação.
Uma requisição POST ao recurso functions de uma aplicação cria uma instância:
A API responde com o objeto criado:
O valor "state": "pending" significa que a alteração leva alguns minutos para propagar antes de entrar em vigor.
Você cria o mesmo objeto na aba Functions Instances de uma aplicação em Azion Console. No arquivo azion.config.js que Azion CLI lê, uma instância carrega name, args e active, e ref nomeia a função por nome ou por ID.
Args
Args são os argumentos que uma instância passa para o contexto da execução da função, escritos como um objeto JSON. O código lê uma chave em tempo de execução e a instância decide o valor dela, então uma mesma função se comporta de forma diferente em cada lugar onde é instanciada. Uma função pode definir Args padrão próprios: os Args de uma instância sobrescrevem as chaves que repetem, e toda chave que a instância deixa de fora mantém o valor padrão.
Um objeto Args que define uma chave:
O objeto Args comporta no máximo 100 KB, e um objeto acima desse teto faz a função falhar na instanciação. Para todos os limites de Functions, consulte Limites.
Args são configuração por instância. Valores sensíveis, como chaves de API, credenciais e tokens de acesso, pertencem às variáveis de ambiente.
Comportamento Run Function
Run Function é o comportamento de Rules Engine que invoca uma instância. A regra nomeia a instância, a fase de execução e os critérios que a acionam. Quando uma requisição atende a esses critérios, a função é executada na infraestrutura distribuída da Azion.
Run Function está disponível na Request Phase e na Response Phase, e exige o módulo Application Accelerator. Na API da Azion, o comportamento é run_function e o atributo value dele carrega o ID da instância.
Para as fases de execução, os critérios e a ordem em que os comportamentos são executados, consulte Como funciona.