Compartilhar via


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.

Definir a localização da solicitação: nome de host + caminho da pasta + nome da função

  • 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 seria myfunctiondemos-staging.azurewebsites.net para um slot chamado staging.
  • 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çalho x-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.

  1. Navegue até seu aplicativo de funções no portal do Azure, selecione Chaves de Aplicativoe a _master chave.

    Localize a chave mestra a ser copiada.

  2. Na seção Editar chave, copie o valor da chave para a área de transferência e selecione OK.

    Copie a chave mestra na área de transferência.

Chamar a função

  1. No portal do Azure, navegue até o aplicativo de funções e escolha sua função.

  2. 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.

    Captura de tela que mostra a página 'código + teste' com uma mensagem exibida dos logs.

  3. 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
  4. 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.

  5. Envie a solicitação HTTP POST. A resposta deve ser uma resposta HTTP 202 (Aceita).

  6. Em seguida, volte à sua função no portal do Azure. Revise os logs e verá mensagens provenientes da chamada manual para a função.

    Exiba os logs para ver os resultados do teste de chave mestra.

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.

Próximas etapas