Ola pessoALL,
Quando trabalhamos com Azure Functions, especialmente em funções do tipo TimeTrigger, executadas em horários específicos, frequentemente precisamos invocar a função para testes, mas não queremos aguardar o tempo de execução. Imagine uma função executada apenas uma vez ao mês, não vamos aguardar até o próximo mês para ver a execução correta.
A forma mais comum de executar a função é utilizando o atributo RunOnStartup para executar a função quando rodamos o projeto.
Inclusive eu fiz um post sobre como executar funções especificas no projeto:
O atributo resolve parcialmente o nosso problema com o potencial de gerar outro maior, ao esquecermos de remover o atributo a todo novo deploy a função vai ser executada, o que pode ocasionar comportamentos indesejados do nosso projeto.
Mas mesmo com todo o cuidado de não subirmos o código para produção com o atributo como true ainda temos os casos que precisamos disparar a função para testes e não queremos fazer outro deploy apenas para isso.
Invocando funções de forma manual
Toda função publicada tem um endereço HTTP para ser invocada, isso funciona para qualquer tipo de função e esta bem documentado na própria documentação do Azure Functions.
Para executarmos nossa função temos que obedecer o seguinte padrão de url:
- Host Name: O nome da sua função e o sufixo azurewebsites.net
- Folder path: Como nossa função não é HTTP o caminho sempre será /admin/functions
- Function name: O nome da função para ser executada.
O próximo passo é copiar a chave master do portal e enviar no cabeçalho da requisição com o nome x-functions-key.
Como meu exemplo é de uma função TimeTrigger para invocá-la devemos enviar uma requisição POST do tipo JSON com o corpo vazio. A função só é executada se o retorno da chamada for 202
Dessa forma podemos invocar qualquer função que precisarmos de forma simples.
Espero que tenham curtido essa dica!
[]s e até a próxima.