Compartilhar via


Chamar o Azure Functions a partir de fluxos de trabalho nos Aplicativos Lógicos 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, você não precisa criar um aplicativo ou infraestrutura completo. 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 por meio da execução de funções criadas usando o Node.js ou C#.
  • Execute cálculos no seu fluxo de trabalho.
  • Aplique a formatação avançada ou campos de computação em 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 de Consumo ou Standard. Para executar o código sem usar o Azure Functions, consulte a seguinte documentação:

Limitações

  • Somente fluxos de trabalho de Consumo aceitam a autenticação de chamadas de função do Azure usando uma identidade gerenciada com a autenticação do Microsoft Entra. Atualmente, não há suporte para fluxos de trabalho Standard na seção sobre como habilitar a autenticação para chamadas de função.

  • Nos Aplicativos Lógicos do Azure não há suporte para o uso do Azure Functions com slots de implantação habilitados. Embora esse cenário possa funcionar às vezes, esse comportamento é imprevisível e pode resultar em problemas de autorização quando o fluxo de trabalho tenta chamar a função do Azure.

Pré-requisitos

  • Uma conta e uma assinatura do Azure. Se você não tem uma assinatura, inscreva-se em uma conta gratuita do Azure.

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

    • O recurso de aplicativo de funções e o recurso de aplicativo lógico devem usar a mesma assinatura do Azure.

    • O recurso do aplicativo de funções deve usar o .NET ou o Node.js como a pilha de runtime.

    • Quando você adiciona uma nova função ao seu aplicativo de funções, 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

    • PowerShell do Azure

    • Modelo de ARM

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

      Esse modelo de gatilho HTTP pode aceitar o conteúdo que tenha o tipo application/json do seu fluxo de trabalho de aplicativo. Quando você adiciona uma função ao fluxo de trabalho, o designer mostra as funções personalizadas criadas usando esse modelo na sua assinatura do Azure.

    • Seu código de função deve incluir a resposta e o conteúdo que você deseja que retornem ao seu fluxo de trabalho após a conclusão da função. O objeto context se refere à mensagem que seu fluxo de trabalho envia por meio do parâmetro de ação do Azure Functions chamado Corpo da Solicitação exibido 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 as propriedades do objeto context de dentro de sua função, use a seguinte sintaxe:

      context.body.<property-name>

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

      context.body.content

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

      Observação

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

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

      Quando você tiver uma definição de OpenAPI da função, o designer de fluxo de trabalho oferece a você uma experiência mais avançada para trabalhar com parâmetros da função. Antes que o seu fluxo de trabalho possa localizar e acessar funções que tenha definições de OpenAPI, configure seu aplicativo de função seguindo as etapas a seguir.

  • Um fluxo de trabalho de aplicativo lógico de Consumo ou Standard que começa com qualquer gatilho.

    Os exemplos deste guia usam o gatilho do Outlook do Office 365 chamado Quando um novo email é recebido.

  • Para criar e chamar uma função do Azure que chame outro fluxo de trabalho, verifique se o fluxo de trabalho secundário começa com um gatilho que fornece um ponto de extremidade que pode ser chamado.

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

Dicas para trabalhar com funções do Azure

Encontre funções com definições OpenAPI

Para configurar seu aplicativo de funções para que seu fluxo de trabalho possa encontrar e usar funções que tenham definições OpenAPI, siga essas etapas:

  1. No portal do Azure, abra o aplicativo de funções. Verifique se o aplicativo de funções está sendo executado ativamente.

  2. No aplicativo de funções, configure o CORS (Cross-Origin Resource Sharing) para que todas as origens sejam permitidas seguindo estas etapas:

    1. No menu aplicativo de funções, 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 * inseridos em Origens Permitidas.

Valores de propriedade de acesso 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 de DateTime, essa função JavaScript de amostra básica mostra como você pode acessar uma propriedade dentro de um objeto de solicitação HTTP transmitido à função e executar operações nesse valor de propriedade. Para acessar propriedades dentro de objetos, este exemplo usa o operador ponto (.):

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

Aqui está o que acontece dentro dessa função:

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

    var data = request.body;
    
  2. Agora, a função pode acessar a propriedade date por meio da variável data e converter esse valor de propriedade do tipo DateTime para o tipo DateString chamando a função ToDateString(). A função também retorna o resultado através da propriedade body 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 URI para uma função

Se você precisar passar um parâmetro URI para sua função, poderá usar parâmetros de consulta no 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 de função aberto, na lista Parâmetros avançados, selecione Consultas.

    Aparece uma tabela onde você pode inserir parâmetros de entrada 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 Consultas e exemplos de entradas de chave-valor.

Adicionar uma função ao fluxo de trabalho (fluxos de trabalho de Consumo + Standard)

Para chamar uma função do Azure do seu fluxo de trabalho, você pode adicionar essas funções 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 Azure Functions chamada de Escolher uma função do Azure.

  3. No painel Adicionar uma ação, siga essas 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 de funções e uma função selecionados.

  4. Após a caixa de informações da função aparecer, siga esses passos:

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

      {"context": <selected-input> }

      Essa entrada é o conteúdo objeto de contexto ou a mensagem que o seu fluxo de trabalho do aplicativo lógico envia para a 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 relâmpago).

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

      O exemplo a seguir especifica um objeto JSON com o atributo content e um token que representa a saída De do gatilho de email como o valor Corpo da Solicitação:

      A captura de tela mostra o fluxo de trabalho de Consumo e uma função com um exemplo do Corpo da Solicitação para o conteúdo 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 ao conteúdo do JSON. Veja o exemplo completo:

      A captura de tela mostra o fluxo de trabalho de Consumo e uma função com um exemplo do Corpo da Solicitação completo para o conteúdo 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, ocorrerá um erro. No entanto, você pode converter o objeto de contexto como uma cadeia de caracteres ao colocar o token entre aspas (""), por exemplo, se você quiser usar o token Hora de Recebimento:

      A captura de tela mostra o fluxo de trabalho de Consumo e um exemplo do 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 usar, os cabeçalhos de solicitação, os parâmetros de consulta ou a autenticação, abra a lista Parâmetros avançados e selecione os parâmetros desejados. Para a autenticação, suas opções são diferentes 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 Microsoft Entra ID. A identidade gerenciada pode autenticar o acesso sem que você precise entrar e fornecer credenciais ou segredos. O Azure gerencia essa identidade para você e ajuda a proteger suas credenciais, porque você não precisa fornecer ou trocar segredos. Você pode configurar a identidade atribuída pelo sistema ou uma identidade atribuída pelo usuário criada manualmente no nível do recurso do aplicativo lógico. A função do Azure que é chamada do seu fluxo de trabalho pode usar a mesma identidade gerenciada para autenticação.

Observação

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

Para saber mais, confira a seguinte documentação:

Para configurar o aplicativo de funções e a função para que eles possam usar a identidade gerenciada do 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. Localize os valores necessários para configurar a autenticação do Microsoft Entra.

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

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

Para sua função usar a identidade gerenciada do aplicativo lógico de Consumo, é preciso definir o nível de autenticação da função para anonymous. Caso contrário, seu fluxo de trabalho irá gerar um erro BadRequest.

  1. No portal do Azure, encontre e selecione seu aplicativo de funções.

    As etapas a seguir usam um aplicativo de funções de exemplo chamado FabrikamFunctionApp.

  2. No menu recurso do aplicativo de funções, em Ferramentas de desenvolvimento, selecione Ferramentas Avançadas>Ir para.

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

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

    A captura de tela mostra a página Serviços do Kudu com o menu do Console de Depuração aberto e a opção denominada CMD selecionada.

  4. Depois que a próxima página for exibida, na lista de pastas, selecione site>wwwroot>sua-função.

    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 associações, verifique se a propriedade authLevel existe. Se existir, defina o valor da propriedade para anonymous. Caso contrário, adicione essa propriedade e defina o valor.

    A captura de tela mostra o objeto bindings com a propriedade authLevel definida como anônima.

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

Localizar 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ções para usar a identidade gerenciada e a autenticação do Microsoft Entra, você precisa localizar e salvar estes valores seguindo as etapas nesta seção.

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

  2. Localize a ID do objeto da sua identidade gerenciada.

  3. Localize a ID do aplicativo para o aplicativo empresarial associado à sua identidade gerenciada.

Encontrar a 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 o locatário do Microsoft Entra.

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

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

  3. Copie e salve sua ID de locatário para uso posterior, por exemplo:

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

Encontrar a ID do objeto da sua identidade gerenciada

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

  1. No menu do aplicativo lógico, em Configurações, selecione Identidade, depois selecione Sistema atribuído ou Usuário atribuído.

    • Atribuído pelo sistema

      Copie a ID do objeto (principal) da identidade:

      A captura de tela mostra a página Identidade do aplicativo lógico de Consumo com a guia selecionada denominada Sistema atribuída.

    • Atribuído pelo usuário

      1. Selecione a identidade:

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

      2. Copie a 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ógico de Consumo com a ID do objeto (entidade de segurança) selecionada.

Encontrar a ID do aplicativo para o aplicativo Azure Enterprise associado à sua identidade gerenciada

Ao habilitar 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. Posteriormente, você usará essa ID do aplicativo para adicionar um provedor de identidade ao seu aplicativo de funções por meio da criação de 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 empresariais.

  3. Na página Todos os aplicativos, na caixa de pesquisa, insira a ID do objeto para sua identidade gerenciada. Nos 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 o ID do objeto do aplicativo empresarial na caixa de pesquisa e o ID do aplicativo correspondente selecionado.

  4. Agora, use a ID do aplicativo copiada para adicionar um provedor de identidade ao seu aplicativo de funções.

Adicionar o provedor de identidade para o seu aplicativo de funções (somente fluxos de trabalho de Consumo)

Agora que você tem a ID do locatário e a ID do aplicativo, pode configurar seu aplicativo de funções 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 o aplicativo de funções.

  2. No menu do aplicativo de funções, em Configurações, selecione Autenticaçãoe, em seguida, selecione Adicionar provedor de identidade.

    A captura de tela mostra o menu do aplicativo de funções 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 Registro do aplicativo, para Tipo de registro de aplicativo, selecione Fornecer os detalhes de um registro de aplicativo existente e insira os valores que você salvou anteriormente.

    Propriedade Obrigatório Valor Descrição
    ID do aplicativo (cliente) Yes <application-ID> O identificador exclusivo a ser usado para este registro de aplicativo. Para esse exemplo, use a ID do aplicativo copiada para o aplicativo empresarial 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 aplicativo como uma configuração de aplicativo de slot-sticky chamada MICROSOFT_PROVIDER_AUTHENTICATION_SECRET.

    – Certifique-se de girar regularmente os segredos e armazená-los com segurança. Por exemplo, gerencie seus segredos no Azure Key Vault, onde você poderá usar uma identidade gerenciada para recuperar a chave sem expor o valor a um usuário não autorizado. Atualize esta configuração para usar referências do Key Vault.

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

    – Se você não fornecer um segredo do cliente, as operações de entrada usarão o fluxo de concessão implícita 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 no repositório de tokens EasyAuth.

    Importante: Devido a riscos de segurança, o fluxo de concessão implícita não é mais um método de autenticação adequado. Em vez disso, use o fluxo de código de autorização com a PKCE (chave de prova para troca de código) ou os códigos de autorização 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 de 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 da ID do aplicativo (ID do recurso) para o aplicativo de funções. Para um aplicativo de nuvem ou de servidor que quiser permitir tokens de autenticação de um aplicativo Web, adicione o URI da ID do aplicativo para o aplicativo Web. A ID do cliente configurada é sempre implicitamente considerada um audiência permitida.

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

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

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

    Captura de tela mostrando o registro do aplicativo para o seu aplicativo lógico e o provedor de identidade para o seu aplicativo de funções.

    Se você estiver configurando seu aplicativo de funções 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ções responde a solicitações não autenticadas. A seleção padrão redireciona todas as solicitações para fazer logon com o novo provedor de identidade. Você pode personalizar esse comportamento agora ou ajustar essas configurações posteriormente na página principal de Autenticação escolhendo Editar ao lado de Configurações de autenticação. Para saber mais sobre essas opções, examine o Fluxo de autenticação – autenticação e autorização no Serviço de Aplicativo do Azure e 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 de Autenticação passará a listar o provedor de identidade e a ID do aplicativo (cliente) do registro do aplicativo. Seu aplicativo de funções agora pode usar esse registro de aplicativo para autenticação.

  6. Copie a ID do Aplicativo (cliente) do registro do aplicativo para usar posteriormente na propriedade Audience 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ções.

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

Próximas etapas