Blog

Domine a plataforma e otimize seus gastos!

Azure Functions - Invocando uma função não HTTP via HTTP

Azure Functions - Invocando uma função não HTTP via HTTP
August 21, 2023
Photo by Markus Spiske / Unsplash

Quando temos funções do tipo TimeTrigger e precisamos dispará-las antes do tempo estabelecido sempre temos dúvidas da melhor maneira de fazer, no post de hoje vou mostrar de uma forma prática como podemos executar uma função via HTTP, mesmo que ela não tenha uma trigger HTTP.

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:

Azure Functions: Iniciando apenas uma função
Uma dúvida muito comum para quem trabalha com Azure Functions é como iniciar apenas funções especificas.
Função executada ao iniciar o 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.

Manually run a non HTTP-triggered Azure Functions
Use an HTTP request to run a non-HTTP triggered 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

Invocando a função pelo POSTMAN
Conferindo o resultado.

Dessa forma podemos invocar qualquer função que precisarmos de forma simples.
Espero que tenham curtido essa dica!
[]s e até a próxima.

Podemos te ajudar com uma revisão 100% gratuita do seu ambiente cloud.

Agendar a revisão gratuita do meu ambiente

Share this post

Inscreva-se para novas postagens

Inscreva-se