Executar manualmente uma função não acionada por HTTP
Este artigo demonstra como executar manualmente uma função não acionada por HTTP por meio de uma solicitação HTTP especialmente formatada.
Em alguns contextos, como durante o desenvolvimento e a solução de problemas, talvez seja necessário executar "sob demanda" uma Função do Azure acionada indiretamente. Exemplos de gatilhos indiretos incluem funções em uma agenda ou funções que são executadas como resultado de eventos.
O procedimento descrito neste artigo é equivalente a usar a funcionalidade Test/Run da guia Code + Test de uma função no portal do Azure. Você também pode usar o Visual Studio Code para executar funções manualmente.
Pré-requisitos
Os exemplos neste artigo usam uma ferramenta de teste HTTP. Certifique-se de escolher uma ferramenta que mantenha seus dados seguros. Para obter mais informações, consulte Ferramentas de teste HTTP.
Definir o local da solicitação
Para executar uma função não acionada por HTTP, você precisa de uma maneira de enviar uma solicitação ao Azure para executar a função. O URL utilizado para fazer este pedido assume uma forma específica.
- Nome do host: o local público do aplicativo de função que é composto pelo nome do aplicativo de função mais azurewebsites.net ou seu domínio personalizado. Quando você trabalha com slots de implantação usados para preparação, a parte do nome do host é o nome do host de produção anexado
-<slotname>
a ele. No exemplo anterior, a URL seriamyfunctiondemos-staging.azurewebsites.net
para um slot chamadostaging
. - Caminho da pasta: Para acessar funções não acionadas por HTTP por meio de uma solicitação HTTP, você precisa enviar a solicitação pelo caminho
admin/functions
. As APIs sob o/admin/
caminho só são acessíveis com autorização. - Nome da função: o nome da função que você deseja executar.
As seguintes considerações se aplicam ao fazer solicitações para pontos de extremidade de administrador em seu aplicativo de função:
- Ao fazer solicitações para qualquer ponto de extremidade sob o
/admin/
caminho, você deve fornecer ax-functions-key
chave mestra do seu aplicativo no cabeçalho da solicitação. - Quando você executa localmente, a autorização não é imposta e a chave mestra da função não é necessária. Você pode chamar diretamente a função omitindo o
x-functions-key
cabeçalho. - Ao acessar pontos de extremidade de aplicativo de função em um slot de implantação, certifique-se de usar o nome de host específico do slot na URL de solicitação, juntamente com a chave mestra específica do slot.
Obter a chave mestra
Você pode obter a chave mestra do portal do Azure ou usando a CLI do Azure.
Atenção
Devido às permissões elevadas em seu aplicativo de função concedidas pela chave mestra, você não deve compartilhar essa chave com terceiros ou distribuí-la em um aplicativo. A chave só deve ser enviada para um ponto de extremidade HTTPS.
Navegue até seu aplicativo de função no portal do Azure, selecione Chaves de Aplicativo e, em seguida, a
_master
chave.Na seção Editar chave, copie o valor da chave para a área de transferência e selecione OK.
Chamar a função
No portal do Azure, navegue pela parte superior do seu aplicativo de função e escolha sua função.
Selecione Código + Teste e, em seguida, selecione Logs. Você vê mensagens da função registrada aqui quando executa manualmente a função a partir da sua ferramenta de teste HTTP.
Em sua ferramenta de teste HTTP, use o local da solicitação que você definiu como a URL da solicitação, verifique se o método de solicitação HTTP é POST e inclua estes dois cabeçalhos de solicitação:
Key valor x-functions-key
O valor da chave mestra colado da área de transferência. Content-Type
application/json
Certifique-se de que a carga/corpo da solicitação POST é
{ "input": "<TRIGGER_INPUT>" }
. O valor específico<TRIGGER_INPUT>
fornecido depende do tipo de gatilho, mas só pode ser uma cadeia de caracteres, um valor numérico ou booleano. Para serviços que usam cargas úteis JSON, como o Barramento de Serviço do Azure, a carga JSON de teste deve ser escapada e serializada como uma cadeia de caracteres.Se você não quiser passar dados de entrada para a função, você ainda deve fornecer um dicionário
{}
vazio como o corpo da solicitação POST. Para obter mais informações, consulte o artigo de referência para o gatilho não-HTTP específico.Envie a solicitação HTTP POST. A resposta deve ser uma resposta HTTP 202 (Aceito).
Em seguida, retorne à sua função no portal do Azure. Revise os logs e você verá mensagens provenientes da chamada manual para a função.
A maneira como você acessa os dados enviados para o gatilho depende do tipo de gatilho e da linguagem da sua função. Para obter mais informações, consulte os exemplos de referência para seu gatilho específico.