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 Postman é usado no exemplo a seguir, mas é possível usar cURL, Fiddler ou qualquer outro como ferramenta para enviar solicitações HTTP.

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.

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.

Define the request location: host name + folder path + function name

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

    Locate the master key to copy.

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

    Copy the master key to the clipboard.

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 executar manualmente a função do Postman.

    Screenshot that shows the 'Code + Test' page with a message from the logs displayed.

  3. Abra o Postman (ou uma ferramenta de composição HTTP equivalente) e insira o local da solicitação na caixa de texto do URL.

  4. Verifique se o método HTTP está definido como POST, selecione a guia Cabeçalhos e adicione estes dois pares chave-valor de cabeçalho:

    Chave Valor
    x-functions-key O valor da chave mestra colado da área de transferência.
    Content-Type application/json

    Postman headers settings.

  5. Selecione a guia Corpo e digite { "input": "<TRIGGER_INPUT>" } como o corpo da solicitação.

    Postman body settings.

    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.

  6. Selecione Enviar.

    Send a request with Postman.

    O Postman então relata um status 202 Aceito.

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

    View the logs to see the master key test results.

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