Partilhar via


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.

Defina o local da solicitação: nome do host + caminho da pasta + nome da função

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

  • Ao fazer solicitações para qualquer ponto de extremidade sob o /admin/ caminho, você deve fornecer a x-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.

  1. Navegue até seu aplicativo de função no portal do Azure, selecione Chaves de Aplicativo e, em seguida, 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 para a área de transferência.

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 executa manualmente a função a partir da sua ferramenta de teste HTTP.

    Captura de ecrã que mostra a página 'Código + Teste' com uma mensagem dos registos apresentados.

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

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

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

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

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