Chamar o Azure Functions a partir de fluxos de trabalho nas Aplicações Lógicas do Azure

Aplica-se a: Aplicativos Lógicos do Azure (Consumo + Padrão)

Para executar o código que executa um trabalho específico no fluxo de trabalho do aplicativo lógico, não é necessário criar um aplicativo ou infraestrutura completos. Em vez disso, você pode criar e chamar uma função do Azure. O Azure Functions fornece computação sem servidor na nuvem e a capacidade de executar as seguintes tarefas:

  • Estenda o comportamento do fluxo de trabalho executando funções criadas usando Node.js ou C#.
  • Execute cálculos em seu fluxo de trabalho.
  • Aplique formatação avançada ou campos de computação no seu fluxo de trabalho.

Este guia de instruções mostra como chamar uma função existente do Azure a partir do seu fluxo de trabalho Consumo ou Padrão. Para executar código sem usar o Azure Functions, consulte a seguinte documentação:

Limitações

  • Apenas os fluxos de trabalho de Consumo suportam a autenticação de chamadas de função do Azure utilizando uma identidade gerida com a autenticação do Microsoft Entra. Atualmente, não há suporte para fluxos de trabalho padrão na seção sobre como habilitar a autenticação para chamadas de função.

  • As Aplicações Lógicas do Azure não suportam a utilização do Azure Functions com ranhuras de implementação ativadas. Embora esse cenário às vezes possa funcionar, esse comportamento é imprevisível e pode resultar em problemas de autorização quando seu fluxo de trabalho tenta chamar a função do Azure.

Pré-requisitos

  • Conta e subscrição do Azure. Se não tiver uma subscrição, inscreva-se numa conta do Azure gratuita.

  • Um recurso de aplicativo de função do Azure, que contém uma ou mais funções do Azure.

    • Seu recurso de aplicativo de função e recurso de aplicativo lógico devem usar a mesma assinatura do Azure.

    • Seu recurso de aplicativo de função deve usar .NET ou Node.js como a pilha de tempo de execução.

    • Ao adicionar uma nova função ao seu aplicativo de função, você pode selecionar C# ou JavaScript.

  • A função do Azure que você deseja chamar. Você pode criar essa função usando as seguintes ferramentas:

    • Portal do Azure

    • Visual Studio

    • Visual Studio Code

    • CLI do Azure

    • Azure PowerShell

    • Modelo ARM

    • Sua função deve usar o modelo de gatilho HTTP.

      O modelo de gatilho HTTP pode aceitar conteúdo com application/json tipo do fluxo de trabalho do aplicativo lógico. Quando você adiciona uma função ao seu fluxo de trabalho, o designer mostra funções personalizadas que são criadas a partir desse modelo em sua assinatura do Azure.

    • O código da função deve incluir a resposta e a carga útil que você deseja retornar ao fluxo de trabalho após a conclusão da função. O context objeto refere-se à mensagem que seu fluxo de trabalho envia por meio do parâmetro de ação do Azure Functions chamado Corpo da Solicitação , posteriormente neste guia.

      Este guia usa a seguinte função de exemplo, chamada FabrikamAzureFunction:

      module.exports = function (context, data) {
      
         var input = data;
      
         // Function processing logic
         // Function response for later use
         context.res = {
            body: {
              content:"Thank you for your feedback: " + input
            }
         };
         context.done();
      }
      

      Para acessar context as propriedades do objeto de dentro de sua função, use a seguinte sintaxe:

      context.body.<property-name>

      Por exemplo, para fazer referência content à context propriedade no objeto, use a seguinte sintaxe:

      context.body.content

      Esse código também inclui uma input variável, que armazena data o valor do parâmetro para que sua função possa executar operações nesse valor. Dentro das funções JavaScript, a data variável também é um atalho para context.body.

      Nota

      A body propriedade aqui se aplica ao context objeto e não é a mesma que o token Body na saída de uma ação, que você também pode passar para sua função.

    • Sua função não pode usar rotas personalizadas, a menos que você defina uma definição de OpenAPI.

      Quando você tem uma definição de OpenAPI para sua função, o designer de fluxo de trabalho oferece uma experiência mais rica quando você trabalha com parâmetros de função. Antes que seu fluxo de trabalho possa localizar e acessar funções que tenham definições OpenAPI, configure seu aplicativo de função seguindo estas etapas.

  • Um fluxo de trabalho de aplicativo lógico padrão ou de consumo que começa com qualquer gatilho.

    Os exemplos neste guia usam o gatilho do Outlook do Office 365 chamado Quando um novo email chega.

  • Para criar e chamar uma função do Azure que chama outro fluxo de trabalho, certifique-se de que o fluxo de trabalho secundário comece com um gatilho que forneça um ponto de extremidade chamável.

    Por exemplo, você pode iniciar o fluxo de trabalho com o gatilho HTTP ou Request geral ou pode usar um gatilho baseado em serviço, como Filas do Azure ou Grade de Eventos. Dentro da sua função, envie uma solicitação HTTP POST para a URL do gatilho e inclua a carga que você deseja que seu fluxo de trabalho secundário processe. Para obter mais informações, consulte Chamar, acionar ou aninhar fluxos de trabalho de aplicativos lógicos.

Dicas para trabalhar com funções do Azure

Encontre funções com definições OpenAPI

Para configurar seu aplicativo de função para que seu fluxo de trabalho possa localizar e usar funções que tenham definições OpenAPI, siga estas etapas:

  1. No portal do Azure, abra seu aplicativo de função. Verifique se o aplicativo de função está em execução ativa.

  2. No seu aplicativo de função, configure o CORS (Compartilhamento de Recursos entre Origens) para que todas as origens sejam permitidas seguindo estas etapas:

    1. No menu do aplicativo de função, em API, selecione CORS.

    2. Em Origens permitidas, adicione o caractere curinga asterisco (*), mas remova todas as outras origens na lista e selecione Salvar.

      A captura de tela mostra o portal do Azure, o painel CORS e o caractere curinga * inserido em Origens permitidas.

Acessar valores de propriedade dentro de solicitações HTTP

As funções baseadas em Webhook podem aceitar solicitações HTTP como entradas e passar essas solicitações para outras funções. Por exemplo, embora os Aplicativos Lógicos do Azure tenham funções que convertem valores DateTime, essa função JavaScript de exemplo básica mostra como você pode acessar uma propriedade dentro de um objeto de solicitação HTTP que é passado para a função e executar operações nesse valor de propriedade. Para acessar propriedades dentro de objetos, este exemplo usa o operador dot (.):

function convertToDateString(request, response){
   var data = request.body;
   response = {
      body: data.date.ToDateString();
   }
}

Veja o que acontece dentro dessa função:

  1. A função cria uma data variável e, em seguida, atribui o body objeto, que está dentro do request objeto, à variável. A função usa o operador dot (.) para fazer referência ao body objeto dentro do request objeto:

    var data = request.body;
    
  2. A função agora pode acessar a date propriedade através da data variável e converter o valor da propriedade do tipo DateTime para o tipo DateString chamando a ToDateString() função. A função também retorna o resultado através da body propriedade na resposta da função:

    body: data.date.ToDateString();
    

Depois de criar sua função no Azure, siga as etapas para adicionar uma função do Azure ao seu fluxo de trabalho.

Passar parâmetros de URI para uma função

Se você tiver que passar um parâmetro URI para sua função, poderá usar parâmetros de consulta na URL do ponto de extremidade da função.

  1. Com o designer de fluxo de trabalho aberto para seu aplicativo lógico e o painel de informações da função aberto, na lista Parâmetros avançados, selecione Consultas.

    É exibida uma tabela onde você pode inserir a entrada de parâmetros como pares chave-valor.

  2. Insira o par chave-valor para seu parâmetro, por exemplo:

    A captura de tela mostra o painel de informações da função com o parâmetro Queries e entradas de chave-valor de exemplo.

Adicionar uma função ao seu fluxo de trabalho (Consumo + Fluxos de trabalho padrão)

Para chamar uma função do Azure a partir do seu fluxo de trabalho, você pode adicionar essa função como qualquer outra ação no designer.

  1. No portal do Azure, abra o fluxo de trabalho do aplicativo lógico de consumo no designer.

  2. No designer, siga estas etapas gerais para adicionar a ação do Azure Functions chamada Escolher uma função do Azure.

  3. No painel Adicionar uma ação, siga estas etapas:

    1. Na lista de aplicativos de função, selecione seu aplicativo de função, selecione a função e, em seguida, selecione Adicionar ação, por exemplo:

      A captura de tela mostra o fluxo de trabalho de consumo com um aplicativo e uma função de função selecionados.

  4. Depois que a caixa de informações da função for exibida, siga estas etapas:

    1. Para Request Body, forneça a entrada da sua função, que deve usar o formato para um objeto JSON (JavaScript Object Notation), por exemplo:

      {"context": <selected-input> }

      Essa entrada é a carga ou mensagem do objeto de contexto que seu fluxo de trabalho envia para sua função.

      • Para selecionar tokens que representam saídas de etapas anteriores, selecione dentro da caixa Corpo da solicitação e, em seguida, selecione a opção para abrir a lista de conteúdo dinâmico (ícone do relâmpago).

      • Para criar uma expressão, selecione dentro da caixa Corpo da Solicitação e, em seguida, selecione a opção para abrir o editor de expressões (ícone de fórmula).

      O exemplo a seguir especifica um objeto JSON com o content atributo e um token que representa a saída From do gatilho de email como o valor Request Body:

      A captura de tela mostra o fluxo de trabalho Consumo e uma função com um exemplo de Corpo de Solicitação para a carga útil do objeto de contexto.

      Aqui, o objeto de contexto não é convertido como uma cadeia de caracteres, portanto, o conteúdo do objeto é adicionado diretamente à carga JSON útil. Aqui está o exemplo completo:

      A captura de tela mostra o fluxo de trabalho de Consumo e uma função com um exemplo completo de Corpo de Solicitação para a carga útil do objeto de contexto.

      Se você fornecer um objeto de contexto diferente de um token JSON que passa uma cadeia de caracteres, um objeto JSON ou uma matriz JSON, receberá um erro. No entanto, você pode converter o objeto de contexto como uma cadeia de caracteres colocando o token entre aspas (""), por exemplo, se quiser usar o token Tempo Recebido:

      A captura de tela mostra o fluxo de trabalho Consumo e um exemplo de Corpo da Solicitação que converte o objeto de contexto como uma cadeia de caracteres.

    2. Para especificar outros detalhes, como o método a ser usado, cabeçalhos de solicitação, parâmetros de consulta ou autenticação, abra a lista Parâmetros avançados e selecione os parâmetros desejados. Para autenticação, suas opções diferem com base na função selecionada. Para obter mais informações, consulte Habilitar autenticação para funções.

Habilitar a autenticação para chamadas de função do Azure (somente fluxos de trabalho de consumo)

Seu fluxo de trabalho de Consumo pode usar uma identidade gerenciada para autenticar uma chamada de função do Azure e acessar recursos protegidos pela ID do Microsoft Entra. A identidade gerenciada pode autenticar o acesso sem que você precise entrar e fornecer credenciais ou segredos. O Azure gere esta identidade automaticamente e ajuda a proteger as credenciais, uma vez que não precisa de introduzir segredos nem proceder a sua rotação. Você pode configurar a identidade atribuída ao sistema ou uma identidade atribuída pelo usuário criada manualmente no nível de recursos do aplicativo lógico. A função do Azure chamada a partir do seu fluxo de trabalho pode usar a mesma identidade gerenciada para autenticação.

Nota

Somente os fluxos de trabalho de Consumo dão suporte à autenticação para uma chamada de função do Azure usando uma identidade gerenciada e a autenticação do Microsoft Entra. Atualmente, os fluxos de trabalho padrão não incluem esse suporte quando você usa a ação para chamar uma função do Azure.

Para obter mais informações, veja a seguinte documentação:

Para configurar seu aplicativo de função e função para que eles possam usar a identidade gerenciada do seu aplicativo lógico de consumo, siga estas etapas de alto nível:

  1. Habilite e configure a identidade gerenciada do seu aplicativo lógico.

  2. Configure sua função para autenticação anônima.

  3. Encontre os valores necessários para configurar a autenticação do Microsoft Entra.

  4. Crie um registro de aplicativo para seu aplicativo de função.

Configurar sua função para autenticação anônima (somente fluxos de trabalho de consumo)

Para que sua função use a identidade gerenciada do aplicativo de lógica de consumo, você deve definir o nível de autenticação da função como anonymous. Caso contrário, seu fluxo de trabalho lançará um erro BadRequest .

  1. No portal do Azure, localize e selecione seu aplicativo de função.

    As etapas a seguir usam um aplicativo de função de exemplo chamado FabrikamFunctionApp.

  2. No menu de recursos do aplicativo de função, em Ferramentas de desenvolvimento, selecione Advanced Tools>Go.

    A captura de tela mostra o menu do aplicativo de função com as opções selecionadas para Ferramentas Avançadas e Ir.

  3. Depois que a página do Kudu Plus for aberta, na barra de título do site do Kudu, no menu Debug Console, selecione CMD.

    A captura de tela mostra a página Kudu Services com o menu Debug Console aberto e a opção selecionada chamada CMD.

  4. Depois que a próxima página aparecer, na lista de pastas, selecione site>wwwroot>your-function.

    As etapas a seguir usam uma função de exemplo chamada FabrikamAzureFunction.

    A captura de tela mostra a lista de pastas com as pastas abertas para o site, wwwroot e sua função.

  5. Abra o arquivo function.json para edição.

    A captura de tela mostra o arquivo function.json com o comando de edição selecionado.

  6. No objeto bindings, verifique se a propriedade authLevel existe. Se a propriedade existir, defina o valor da propriedade como anonymous. Caso contrário, adicione essa propriedade e defina o valor.

    A captura de tela mostra o objeto de ligações com a propriedade authLevel definida como anônima.

  7. Quando terminar, salve suas configurações. Continue para a próxima seção.

Encontre os valores necessários para configurar a autenticação do Microsoft Entra (somente fluxos de trabalho de consumo)

Antes de configurar seu aplicativo de função para usar a identidade gerenciada e a autenticação do Microsoft Entra, você precisa localizar e salvar os seguintes valores seguindo as etapas nesta seção.

  1. Encontre a ID do locatário do seu locatário do Microsoft Entra.

  2. Encontre o ID do objeto para sua identidade gerenciada.

  3. Encontre o ID do aplicativo Enterprise associado à sua identidade gerenciada.

Localizar o ID do locatário do seu locatário do Microsoft Entra

Execute o comando do PowerShell chamado Get-AzureAccount ou, no portal do Azure, siga estas etapas:

  1. No portal do Azure, abra seu locatário do Microsoft Entra.

    Este guia usa a Fabrikam como locatário de exemplo.

  2. No menu do locatário, selecione Visão geral.

  3. Copie e guarde o seu ID de inquilino para utilização posterior, por exemplo:

    A captura de tela mostra a página Propriedades do ID do Microsoft Entra com o botão de cópia do ID do locatário selecionado.

Localizar o ID do objeto para sua identidade gerenciada

Depois de habilitar a identidade gerenciada para o recurso do aplicativo lógico de consumo, localize o objeto para sua identidade gerenciada. Você usará essa ID para localizar o aplicativo Enterprise associado em seu locatário do Microsoft Entra.

  1. No menu da aplicação lógica, em Definições, selecione Identidade e, em seguida, selecione Sistema atribuído ou Utilizador atribuído.

    • Sistema atribuído

      Copie o ID do objeto (principal) da identidade:

      A captura de tela mostra a página Identidade do aplicativo Lógica de consumo com a guia selecionada chamada Sistema atribuído.

    • Usuário atribuído

      1. Selecione a identidade:

        A captura de tela mostra a página Identidade do aplicativo lógico de consumo com a guia selecionada chamada Usuário atribuído.

      2. Copie o ID do objeto (principal) da identidade:

        A captura de tela mostra a página Visão geral da identidade atribuída pelo usuário do aplicativo Lógica de consumo com o ID do objeto (principal) selecionado.

Encontre a ID do aplicativo Azure Enterprise associado à sua identidade gerenciada

Quando você habilita uma identidade gerenciada em seu recurso de aplicativo lógico, o Azure cria automaticamente um aplicativo Azure Enterprise associado que tem o mesmo nome. Agora você precisa encontrar o aplicativo Enterprise associado e copiar sua ID do aplicativo. Mais tarde, você usará essa ID de aplicativo para adicionar um provedor de identidade para seu aplicativo de função criando um registro de aplicativo.

  1. No portal do Azure, localize e abra seu locatário do Microsoft Entra.

  2. No menu do locatário, em Gerenciar, selecione Aplicativos corporativos.

  3. Na página Todos os aplicativos , na caixa de pesquisa, insira o ID do objeto para sua identidade gerenciada. A partir dos resultados, localize o aplicativo empresarial correspondente e copie a ID do aplicativo:

    A captura de tela mostra a página do locatário do Microsoft Entra chamada Todos os aplicativos, com a ID do objeto do aplicativo corporativo na caixa de pesquisa e a ID do aplicativo correspondente selecionada.

  4. Agora, use o ID do aplicativo copiado para adicionar um provedor de identidade ao seu aplicativo de função.

Adicionar provedor de identidade para seu aplicativo de função (somente fluxos de trabalho de consumo)

Agora que você tem a ID do locatário e a ID do aplicativo, você pode configurar seu aplicativo de função para usar a autenticação do Microsoft Entra adicionando um provedor de identidade e criando um registro de aplicativo.

  1. No portal do Azure, abra seu aplicativo de função.

  2. No menu da função da aplicação, em Definições, selecione Autenticação e, em seguida, selecione Adicionar fornecedor de identidade.

    A captura de tela mostra o menu do aplicativo de função com a página Autenticação e a opção selecionada chamada Adicionar provedor de identidade.

  3. No painel Adicionar um provedor de identidade, em Noções básicas, na lista Provedor de identidade, selecione Microsoft.

  4. Em Registo de aplicação, para Tipo de registo de aplicação, selecione Fornecer os detalhes de um registo de aplicação existente e introduza os valores que guardou anteriormente.

    Property Necessário Valor Description
    ID do aplicativo (cliente) Sim <ID do aplicativo> O identificador exclusivo a ser usado para este registro de aplicativo. Para este exemplo, use a ID do aplicativo que você copiou para o aplicativo Enterprise associado à sua identidade gerenciada.
    Segredo do cliente Opcional, mas recomendado <Segredo do cliente> O valor secreto que o aplicativo usa para provar sua identidade ao solicitar um token. O segredo do cliente é criado e armazenado na configuração do seu aplicativo como uma configuração de aplicativo com adesivo de slot chamada MICROSOFT_PROVIDER_AUTHENTICATION_SECRET.

    - Certifique-se de girar regularmente os segredos e armazená-los com segurança. Por exemplo, gerencie seus segredos no Cofre da Chave do Azure, onde você pode usar uma identidade gerenciada para recuperar a chave sem expor o valor a um usuário não autorizado. Você pode atualizar essa configuração para usar referências do Cofre da Chave.

    - Se você fornecer um valor secreto do cliente, as operações de entrada usam o fluxo híbrido, retornando tokens de acesso e atualização.

    - Se você não fornecer um segredo do cliente, as operações de entrada usarão o fluxo de concessão implícito do OAuth 2.0. Esse método retorna diretamente apenas um token de ID ou token de acesso. Esses tokens são enviados pelo provedor e armazenados na loja de tokens EasyAuth.

    Importante: Devido a riscos de segurança, o fluxo de concessão implícito não é mais um método de autenticação adequado. Em vez disso, use o fluxo de código de autorização com códigos de autorização PKCE (Proof Key for Code Exchange) ou SPA (aplicativo de página única).
    URL do emissor Não <authentication-endpoint-URL>/<Microsoft-Entra-tenant-ID>/v2.0 Essa URL redireciona os usuários para o locatário correto do Microsoft Entra e baixa os metadados apropriados para determinar as chaves de assinatura de token apropriadas e o valor da declaração do emissor do token. Para aplicativos que usam o Azure AD v1, omita /v2.0 da URL.

    Para esse cenário, use a seguinte URL: https://sts.windows.net/<Microsoft-Entra-tenant-ID>
    Audiências de token permitidas Não <application-ID-URI> O URI (ID do recurso) do ID do aplicativo para o aplicativo de função. Para um aplicativo de nuvem ou servidor em que você deseja permitir tokens de autenticação de um aplicativo Web, adicione o URI de ID do aplicativo para o aplicativo Web. O ID do cliente configurado é sempre implicitamente considerado como um público permitido.

    Para esse cenário, o valor é https://management.azure.com. Mais tarde, você pode usar o mesmo URI na propriedade Audience ao configurar sua ação de função em seu fluxo de trabalho para usar a identidade gerenciada.

    Importante: O URI (ID do recurso) da ID do aplicativo deve corresponder exatamente ao valor esperado pela ID do Microsoft Entra, incluindo quaisquer barras à direita necessárias.

    Neste ponto, sua versão é semelhante a este exemplo:

    A captura de tela mostra o registro do aplicativo para seu aplicativo lógico e o provedor de identidade para seu aplicativo de função.

    Se você estiver configurando seu aplicativo de função com um provedor de identidade pela primeira vez, a seção Configurações de autenticação do Serviço de Aplicativo também será exibida. Essas opções determinam como seu aplicativo de função responde a solicitações não autenticadas. A seleção padrão redireciona todas as solicitações para fazer login com o novo provedor de identidade. Você pode personalizar esse comportamento agora ou ajustar essas configurações posteriormente na página principal Autenticação selecionando Editar ao lado de Configurações de autenticação. Para saber mais sobre essas opções, consulte Fluxo de autenticação - Autenticação e autorização no Serviço de Aplicativo do Azure e no Azure Functions.

    Caso contrário, você pode continuar com a próxima etapa.

  5. Para concluir a criação do registro do aplicativo, selecione Adicionar.

    Quando terminar, a página Autenticação agora lista o provedor de identidade e a ID do aplicativo (cliente) de registro do aplicativo. Seu aplicativo de função agora pode usar esse registro de aplicativo para autenticação.

  6. Copie a ID do Aplicativo (cliente) de registro do aplicativo para usar posteriormente na propriedade Audiência da ação do Azure Functions para seu fluxo de trabalho.

    A captura de tela mostra o novo provedor de identidade para o aplicativo de função.

  7. Retorne ao designer e siga as etapas para autenticar o acesso com a identidade gerenciada usando a ação interna do Azure Functions.

Próximos passos