Criar funções duráveis usando o portal do Azure

A extensão Durable Functions para Azure Functions é fornecida no pacote NuGet Microsoft.Azure.WebJobs.Extensions.DurableTask. Essa extensão deve ser instalada em seu aplicativo de função. Este artigo mostra como instalar este pacote para que você possa desenvolver funções duráveis no portal do Azure.

Nota

  • Se você estiver desenvolvendo funções duráveis em C#, considere o desenvolvimento do Visual Studio 2019.
  • Se você estiver desenvolvendo funções duráveis em JavaScript, você deve considerar o desenvolvimento de código do Visual Studio.

Criar uma aplicação de funções

Você deve ter um aplicativo de função para hospedar a execução de qualquer função. Um aplicativo de função permite agrupar suas funções como uma unidade lógica para facilitar o gerenciamento, a implantação, o dimensionamento e o compartilhamento de recursos. Você pode criar um aplicativo .NET ou JavaScript.

  1. A partir do menu do portal do Azure ou a partir da Home page, selecione Criar um recurso.

  2. Na página Novo, selecione Aplicativo de função de computação>.

  3. Na página Noções básicas, use as configurações do aplicativo de função conforme especificado na tabela a seguir:

    Definição Valor sugerido Descrição
    Subscrição a sua subscrição A subscrição ao abrigo da qual cria a sua nova aplicação funcional.
    Grupo de Recursos myResourceGroup Nome para o novo grupo de recursos no qual você cria seu aplicativo de função. Você deve criar um novo grupo de recursos porque há limitações conhecidas ao criar novos aplicativos de função em um grupo de recursos existente.
    Nome da Aplicação de Funções Nome globalmente exclusivo Nome que identifica a sua aplicação Function App nova. Os carateres válidos são a-z (não sensível a maiúsculas e minúsculas), 0-9 e -.
    Deseja implantar código ou imagem de contêiner? Código Opção para publicar arquivos de código ou um contêiner do Docker.
    Pilha de runtime Idioma Preferencial Escolha um tempo de execução que suporte a sua linguagem de programação de funções favorita. A edição no portal só está disponível para JavaScript, PowerShell, Python, TypeScript e script C#. A biblioteca de classes C# e as funções Java devem ser desenvolvidas localmente.
    Versão Número de versão Escolha a versão do seu tempo de execução instalado.
    Região Região preferida Selecione uma região perto de você ou perto de outros serviços que suas funções possam acessar.
    Sistema Operativo Windows Um sistema operacional é pré-selecionado para você com base na seleção da pilha de tempo de execução, mas você pode alterar a configuração, se necessário. A edição no portal só é suportada no Windows. A publicação de contêineres só é suportada no Linux.
    Opções e planos de hospedagem Consumo (Sem servidor) O plano de alojamento que define a forma como os recursos são alocados à sua aplicação de funções. No Plano de Consumo predefinido, os recursos são adicionados dinamicamente, conforme necessário por parte das suas funções. Nesta hospedagem sem servidor, você paga apenas pelo tempo em que suas funções são executadas. O plano Premium também oferece escalonamento dinâmico. Quando executa num plano do Serviço de Aplicações, tem de gerir o dimensionamento da sua aplicação de funções.
  4. Aceite as opções padrão de criação de uma nova conta de armazenamento na guia Armazenamento e uma nova instância do Application Insight na guia Monitoramento. Você também pode optar por usar uma conta de armazenamento existente ou uma instância do Application Insights.

  5. Selecione Rever + criar para rever a configuração da aplicação que escolheu e, em seguida, selecione Criar para provisionar e implementar a aplicação funcional.

  6. Selecione o ícone Notificações no canto superior direito do portal e observe a mensagem Implantação bem-sucedida .

  7. Selecione Ir para o recurso para ver a sua nova aplicação de funções. Você também pode selecionar Fixar no painel. A fixação facilita o retorno a esse recurso de aplicativo funcional a partir do seu painel.

    Screenshot of deployment notification.

Por padrão, o aplicativo de função criado usa a versão 2.x do tempo de execução do Azure Functions. A extensão Durable Functions funciona nas versões 1.x e 2.x do tempo de execução do Azure Functions em C# e na versão 2.x em JavaScript. No entanto, os modelos só estão disponíveis ao direcionar a versão 2.x do tempo de execução, independentemente do idioma escolhido.

Instalar o pacote npm de funções duráveis (somente JavaScript)

Se você estiver criando JavaScript Durable Functions, precisará instalar o durable-functions pacote npm:

  1. Na página do seu aplicativo de função, selecione Ferramentas avançadas em Ferramentas de desenvolvimento no painel esquerdo.

    Functions platform features choose Kudu

  2. Na página Ferramentas Avançadas, selecione Ir.

  3. Dentro do console Kudu, selecione Depurar console e, em seguida , CMD.

    Kudu debug console

  4. A estrutura de diretórios de arquivos do seu aplicativo de função deve ser exibida. Navegue para a pasta site/wwwroot. A partir daí, você pode carregar um package.json arquivo arrastando e soltando-o na janela do diretório de arquivos. Um exemplo package.json está abaixo:

    {
      "dependencies": {
        "durable-functions": "^1.3.1"
      }
    }
    

    Kudu upload package.json

  5. Uma vez que o seu package.json é carregado, execute o npm install comando a partir do Kudu Remote Execution Console.

    Kudu run npm install

Criar uma função de orquestrador

  1. Na sua aplicação de funções, selecione Funções no painel esquerdo e, em seguida, selecione Adicionar no menu superior.

  2. No campo de pesquisa da página Nova Função , digite durablee escolha o modelo inicial HTTP Funções Duráveis.

    Select Durable Functions HTTP starter

  3. Para o nome da nova função, digite HttpStarte, em seguida, selecione Criar função.

    A função criada é usada para iniciar a orquestração.

  4. Crie outra função no aplicativo de funções, desta vez usando o modelo Durable Functions orchestrator . Nomeie sua nova função HelloSequencede orquestração .

  5. Crie uma terceira função nomeada Hello usando o modelo de atividade Funções duráveis.

Teste a orquestração de funções duráveis

  1. Volte para a função HttpStart, escolha Obter URL da função e selecione o ícone Copiar para a área de transferência para copiar a URL. Use essa URL para iniciar a função HelloSequence .

  2. Use uma ferramenta HTTP como Postman ou cURL para enviar uma solicitação POST para o URL que você copiou. O exemplo a seguir é um comando cURL que envia uma solicitação POST para a função durável:

    curl -X POST https://{your-function-app-name}.azurewebsites.net/api/orchestrators/{functionName} --header "Content-Length: 0"
    

    Neste exemplo, {your-function-app-name} é o domínio que é o nome do seu aplicativo de função e {functionName} é a função orquestrador HelloSequence. A mensagem de resposta contém um conjunto de pontos finais URI que pode utilizar para monitorizar e gerir a execução, e que pode ser semelhante ao seguinte exemplo:

    {  
       "id":"10585834a930427195479de25e0b952d",
       "statusQueryGetUri":"https://...",
       "sendEventPostUri":"https://...",
       "terminatePostUri":"https://...",
       "rewindPostUri":"https://..."
    }
    
  3. Chame o URI do statusQueryGetUri ponto de extremidade e você verá o status atual da função durável, que pode se parecer com este exemplo:

        {
            "runtimeStatus": "Running",
            "input": null,
            "output": null,
            "createdTime": "2017-12-01T05:37:33Z",
            "lastUpdatedTime": "2017-12-01T05:37:36Z"
        }
    
  4. Continue chamando o ponto de extremidade até que o status mude para Concluído e você verá uma resposta como o statusQueryGetUri exemplo a seguir:

    {
            "runtimeStatus": "Completed",
            "input": null,
            "output": [
                "Hello Tokyo!",
                "Hello Seattle!",
                "Hello London!"
            ],
            "createdTime": "2017-12-01T05:38:22Z",
            "lastUpdatedTime": "2017-12-01T05:38:28Z"
        }
    

Sua primeira função durável agora está em execução no Azure.

Próximos passos