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.

Postman é usado no exemplo a seguir, mas você pode usar cURL, Fiddler ou qualquer outra ferramenta semelhante para enviar solicitações HTTP.

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.

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.

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

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

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.

  1. Navegue até seu aplicativo de função no portal do Azure, selecione Chaves de Aplicativo e, em seguida, 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 pela parte superior do seu aplicativo de função e escolha sua função.

  2. Selecione Código + Teste e, em seguida, selecione Logs. Você vê mensagens da função registrada aqui quando você executa 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 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:

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

  6. Selecione Enviar.

    Send a request with Postman.

    O carteiro então informa um status de 202 Aceito.

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

    View the logs to see the master key test results.

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.

Próximos passos