Executar manualmente uma função não disparada por HTTP
Este artigo demonstra como executar manualmente uma função não disparada por HTTP por meio de solicitação HTTP especialmente formatada.
Em alguns contextos, como durante o desenvolvimento e a solução de problemas, talvez seja necessário executar uma Função do Azure "sob demanda" disparada indiretamente. Exemplos de gatilhos indiretos incluem funções em um agendamento ou funções que são executadas como resultado de eventos.
O procedimento descrito neste artigo é equivalente ao uso da funcionalidade Teste/Execução da guia Código + Teste 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 mantém seus dados seguros. Para obter mais informações, confira Ferramentas de teste para HTTP.
Definir a localização da solicitação
Para executar uma função não disparada por HTTP, você precisa encontrar uma maneira de enviar uma solicitação ao Azure para executar a função. A URL usada para fazer essa solicitação usa um formulário específico.
- Nome do host: a localização pública do aplicativo de funções que é composta pelo nome do aplicativo de funções mais azurewebsites.net ou seu domínio personalizado. Quando você trabalha com slots de implantação usados para o preparo, a parte do nome do host é o nome do host de produção com
-<slotname>
acrescentado a ele. No exemplo anterior, o URL seriamyfunctiondemos-staging.azurewebsites.net
para um slot chamadostaging
. - Caminho da pasta: para acessar as funções não disparadas por HTTP por meio de uma solicitação HTTP, você precisa enviar a solicitação por meio do caminho
admin/functions
. As APIs no caminho/admin/
só podem ser acessadas 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ções:
- Ao fazer solicitações para qualquer ponto de extremidade no caminho
/admin/
, você deve fornecer a chave mestra do aplicativo no cabeçalhox-functions-key
da solicitação. - Quando você executa localmente, a autorização não é imposta e a chave mestra da função não é necessária. É possível chamar a função diretamente omitindo o cabeçalho
x-functions-key
. - Ao acessar pontos de extremidade do aplicativo de funções em um slot de implantação, use o nome do host específico do slot no URL de solicitação, juntamente com a chave mestra específica do slot.
Obter a chave mestra
Você pode obter a chave mestra no portal do Azure ou usando a CLI do Azure.
Cuidado
Devido às permissões elevadas no aplicativo de funções concedidas pela chave mestra, você não deve compartilhar essa chave com terceiros nem distribuí-la em um aplicativo. A chave deve ser enviada apenas para um ponto de extremidade HTTPS.
Navegue até seu aplicativo de funções no portal do Azure, selecione Chaves de Aplicativoe 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 até o aplicativo de funções e escolha sua função.
Selecione Código + Teste e depois Logs. Você vê mensagens da função registrada aqui quando executa manualmente a função na ferramenta de teste HTTP.
Na 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:
Chave Valor x-functions-key
O valor da chave mestra colado da área de transferência. Content-Type
application/json
Verifique se o conteúdo/corpo da solicitação POST está
{ "input": "<TRIGGER_INPUT>" }
. O<TRIGGER_INPUT>
específico que você fornece depende do tipo de gatilho, mas só pode ser um valor de cadeia de caracteres, numérico ou booleano. Para serviços que usam conteúdo JSON, como o Barramento de Serviço do Azure, o conteúdo JSON de teste deve ser escapado e serializado como uma cadeia de caracteres.Se você não quiser passar dados de entrada para a função, ainda deverá fornecer um dicionário
{}
vazio como o corpo da solicitação POST. Para saber mais, confira o artigo de referência do gatilho não HTTP específico.Envie a solicitação HTTP POST. A resposta deve ser uma resposta HTTP 202 (Aceita).
Em seguida, volte à sua função no portal do Azure. Revise os logs e verá mensagens provenientes da chamada manual para a função.
A maneira como você acessa os dados enviados ao gatilho depende do tipo de gatilho e da linguagem da função. Para obter mais informações, confira os exemplos de referência do gatilho específico.