Create your first durable function in JavaScript (Criar a sua primeira função durável em JavaScript)

O Durable Functions é uma extensão do Azure Functions que permite escrever funções com monitoração de estado em um ambiente sem servidor. A extensão gere o estado, os pontos de verificação e os reinícios por si.

Neste artigo, você aprenderá a usar a extensão Visual Studio Code Azure Functions para criar e testar localmente uma função durável "hello world". Esta função irá orquestrar e encadear chamadas para outras funções. Em seguida, publique o código de função no Azure.

Importante

O conteúdo deste artigo muda com base na sua escolha do modelo de programação Node.js no seletor na parte superior da página. O modelo v4 está geralmente disponível e foi projetado para ter uma experiência mais flexível e intuitiva para desenvolvedores JavaScript e TypeScript. Saiba mais sobre as diferenças entre v3 e v4 no guia de migração.

Captura de ecrã de uma janela do Edge. A janela mostra a saída de invocar uma função durável simples no Azure.

Pré-requisitos

Para concluir este tutorial:

  • Certifique-se de que tem a versão mais recente das Ferramentas Principais do Azure Functions.
  • As Funções Duráveis exigem uma conta de armazenamento do Azure. Precisa de uma subscrição do Azure.
  • Certifique-se de que tem a versão 16.x+ do Node.js instalada.
  • Certifique-se de que tem a versão 18.x+ do Node.js instalada.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Criar o seu projeto local

Nesta seção, você usa o Visual Studio Code para criar um projeto local do Azure Functions.

  1. No Visual Studio Code, pressione F1 (ou Ctrl/Cmd+Shift+P) para abrir a paleta de comandos. Na paleta de comandos, procure e selecione Azure Functions: Create New Project....

    Captura de tela da paleta de comandos do Visual Studio Code. O comando intitulado

  2. Escolha um local de pasta vazia para seu projeto e escolha Selecionar.

  1. Seguindo os prompts, forneça as seguintes informações:

    Pedido valor Description
    Selecione um idioma para seu projeto de aplicativo de função JavaScript Crie um projeto local do Node.js Functions.
    Selecione um modelo de programação JavaScript Modelo V3 Escolha o modelo de programação V3.
    Selecione uma versão Azure Functions v4 Você só verá essa opção quando as Ferramentas Principais ainda não estiverem instaladas. Nesse caso, as Ferramentas Principais são instaladas na primeira vez que você executa o aplicativo.
    Selecione um modelo para a primeira função do seu projeto Ignorar por agora
    Selecione como gostaria de abrir o seu projeto Abrir na janela atual Reabre o VS Code na pasta selecionada.
  1. Seguindo os prompts, forneça as seguintes informações:

    Pedido valor Description
    Selecione um idioma para seu projeto de aplicativo de função JavaScript Crie um projeto local do Node.js Functions.
    Selecione um modelo de programação JavaScript Modelo V4 Escolha o modelo de programação V4.
    Selecione uma versão Azure Functions v4 Você só verá essa opção quando as Ferramentas Principais ainda não estiverem instaladas. Nesse caso, as Ferramentas Principais são instaladas na primeira vez que você executa o aplicativo.
    Selecione um modelo para a primeira função do seu projeto Ignorar por agora
    Selecione como gostaria de abrir o seu projeto Abrir na janela atual Reabre o VS Code na pasta selecionada.

O Visual Studio Code instala as Ferramentas Principais do Azure Functions, se necessário. Ele também cria um projeto de aplicativo de função em uma pasta. Este projeto contém os arquivos de configuração host.json e local.settings.json .

Um package.json arquivo também é criado na pasta raiz.

Instalar o pacote npm de funções duráveis

Para trabalhar com funções duráveis em um aplicativo de função Node.js, use uma biblioteca chamada durable-functions.

Para usar o modelo de programação V4, você precisa instalar a versão de visualização v3.x do durable-functions.

  1. Use o menu Exibir ou Ctrl + Shift + ' para abrir um novo terminal no VS Code.
  1. Instale o durable-functions pacote npm executando npm install durable-functions no diretório raiz do aplicativo de função.
  1. Instale a versão de visualização do durable-functions pacote npm executando npm install durable-functions@preview no diretório raiz do aplicativo de função.

Criando suas funções

O aplicativo Durable Functions mais básico contém três funções:

  • Função Orchestrator - descreve um fluxo de trabalho que orquestra outras funções.
  • Função de atividade - chamada pela função orquestradora, executa trabalho e, opcionalmente, retorna um valor.
  • Função de cliente - uma função normal do Azure que inicia uma função de orquestrador. Este exemplo usa uma função acionada por HTTP.

Função orquestradora

Você usa um modelo para criar o código de função durável em seu projeto.

  1. Na paleta de comandos, procure e selecione Azure Functions: Create Function....

  2. Seguindo os prompts, forneça as seguintes informações:

    Pedido valor Description
    Selecione um modelo para a sua função Orquestrador de funções duráveis Criar uma orquestração de funções duráveis
    Escolha um tipo de armazenamento durável. Armazenamento do Azure (padrão) Selecione o back-end de armazenamento usado para funções duráveis.
    Fornecer um nome de função OláOrchestrator Nome da sua função durável

Você adicionou um orquestrador para coordenar as funções de atividade. Abra o HelloOrchestrator/index.js para ver a função do orquestrador. Cada chamada para context.df.callActivity invocar uma função de atividade chamada Hello.

Em seguida, você adicionará a função de atividade referenciada Hello .

Função de atividade

  1. Na paleta de comandos, procure e selecione Azure Functions: Create Function....

  2. Seguindo os prompts, forneça as seguintes informações:

    Pedido valor Description
    Selecione um modelo para a sua função Atividade de funções duráveis Criar uma função de atividade
    Fornecer um nome de função Hello (Olá) Nome da sua função de atividade

Você adicionou a Hello função de atividade que é invocada pelo orquestrador. Abra Olá/index.js para ver que ele está tomando um nome como entrada e retornando uma saudação. Uma função de atividade é onde você executa "o trabalho real" em seu fluxo de trabalho: trabalho como fazer uma chamada de banco de dados ou executar algum cálculo não determinístico.

Finalmente, você adicionará uma função acionada por HTTP que inicia a orquestração.

Função de cliente (HTTP starter)

  1. Na paleta de comandos, procure e selecione Azure Functions: Create Function....

  2. Seguindo os prompts, forneça as seguintes informações:

    Pedido valor Description
    Selecione um modelo para a sua função Funções duráveis HTTP starter Criar uma função inicial HTTP
    Fornecer um nome de função DurableFunctionsHttpStart Nome da sua função de atividade
    Nível de autorização Anónimo Para fins de demonstração, permita que a função seja chamada sem autenticação

Você adicionou uma função acionada por HTTP que inicia uma orquestração. Abra DurableFunctionsHttpStart/index.js para ver que ele usa client.startNew para iniciar uma nova orquestração. Em seguida, ele usa client.createCheckStatusResponse para retornar uma resposta HTTP contendo URLs que podem ser usadas para monitorar e gerenciar a nova orquestração.

Agora você tem um aplicativo de Funções Duráveis que pode ser executado localmente e implantado no Azure.

Um dos benefícios do Modelo de Programação V4 é a flexibilidade de onde você escreve suas funções. No modelo V4, você pode usar um único modelo para criar todas as três funções em um arquivo em seu projeto.

  1. Na paleta de comandos, procure e selecione Azure Functions: Create Function....

  2. Seguindo os prompts, forneça as seguintes informações:

    Pedido valor Description
    Selecione um modelo para a sua função Orquestrador de funções duráveis Crie um arquivo com uma orquestração de funções duráveis, uma função de atividade e uma função inicial de cliente durável.
    Escolha um tipo de armazenamento durável Armazenamento do Azure (padrão) Selecione o back-end de armazenamento usado para funções duráveis.
    Fornecer um nome de função hello Nome usado para suas funções duráveis

Abra src/functions/hello.js para visualizar as funções que criou.

Você criou um orquestrador chamado helloOrchestrator para coordenar funções de atividade. Cada chamada para context.df.callActivity invocar uma função de atividade chamada hello.

Você também adicionou a hello função de atividade que é invocada pelo orquestrador. No mesmo arquivo, você pode ver que ele está tomando um nome como entrada e retornando uma saudação. Uma função de atividade é onde você executa "o trabalho real" em seu fluxo de trabalho: trabalho como fazer uma chamada de banco de dados ou executar algum cálculo não determinístico.

Por fim, você também adicionou uma função acionada por HTTP que inicia uma orquestração. No mesmo arquivo, você pode ver que ele usa client.startNew para iniciar uma nova orquestração. Em seguida, ele usa client.createCheckStatusResponse para retornar uma resposta HTTP contendo URLs que podem ser usadas para monitorar e gerenciar a nova orquestração.

Agora você tem um aplicativo de Funções Duráveis que pode ser executado localmente e implantado no Azure.

Testar localmente a função

As Ferramentas de Núcleo das Funções do Azure permitem-lhe executar um projeto de funções do Azure no seu computador de programação local. Deve instalar estas ferramentas ao iniciar uma função do Visual Studio Code pela primeira vez.

  1. Para testar sua função, defina um ponto de interrupção no código da Hello função de atividade (Olá/index.js). Pressione F5 ou selecione Debug: Start Debugging na paleta de comandos para iniciar o projeto de aplicativo de função. São apresentados os resultados das Ferramentas de Núcleo no painel Terminal.
  1. Para testar sua função, defina um ponto de interrupção no código da hello função de atividade (src/functions/hello.js). Pressione F5 ou selecione Debug: Start Debugging na paleta de comandos para iniciar o projeto de aplicativo de função. São apresentados os resultados das Ferramentas de Núcleo no painel Terminal.

Nota

Consulte o Diagnóstico de funções duráveis para obter mais informações sobre depuração.

  1. O Durable Functions requer uma conta de Armazenamento do Azure para ser executada. Quando o VS Code solicitar que você selecione uma conta de armazenamento, escolha Selecionar conta de armazenamento.

    Captura de tela de uma janela de alerta do Visual Studio Code. A janela diz

  2. Seguindo os prompts, forneça as seguintes informações para criar uma nova conta de armazenamento no Azure.

    Pedido valor Description
    Selecionar subscrição Nome da sua subscrição Selecione a sua subscrição do Azure
    Selecionar uma conta de armazenamento Criar uma nova conta de armazenamento
    Insira o nome da nova conta de armazenamento Nome exclusivo Nome da conta de armazenamento a ser criada
    Selecionar um grupo de recursos Nome exclusivo Nome do grupo de recursos a ser criado
    Selecionar uma localização região Selecione uma região perto de si
  3. No painel Terminal, copie o ponto final do URL da sua função acionada por HTTP.

    Captura de tela do painel de terminal de código do Visual Studio. O terminal mostra a saída da execução de um aplicativo Durable Functions localmente. A tabela intitulada

  1. Usando seu navegador ou uma ferramenta como Postman ou cURL, envie uma solicitação HTTP POST para o ponto de extremidade URL. Substitua o último segmento pelo nome da função orquestradora (HelloOrchestrator). O URL deve ser semelhante a http://localhost:7071/api/orchestrators/HelloOrchestrator.
  1. Usando seu navegador ou uma ferramenta como Postman ou cURL, envie uma solicitação HTTP POST para o ponto de extremidade URL. Substitua o último segmento pelo nome da função orquestradora (helloOrchestrator). O URL deve ser semelhante a http://localhost:7071/api/orchestrators/helloOrchestrator.

A resposta é o resultado inicial da função HTTP informando que a orquestração durável foi iniciada com êxito. Ainda não é o resultado final da orquestração. A resposta inclui alguns URLs úteis. Por enquanto, vamos consultar o status da orquestração.

  1. Copie o valor do URL e statusQueryGetUri cole-o na barra de endereço do navegador e execute a solicitação. Como alternativa, você também pode continuar a usar o Postman para emitir a solicitação GET.

    A solicitação consulta a instância de orquestração para obter o status. Você deve obter uma eventual resposta, que nos mostra que a instância foi concluída e inclui as saídas ou resultados da função durável. Tem a seguinte aparência:

    {
        "name": "HelloOrchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
    {
        "name": "helloOrchestrator",
        "instanceId": "6ba3f77933b1461ea1a3828c013c9d56",
        "runtimeStatus": "Completed",
        "input": "",
        "customStatus": null,
        "output": [
            "Hello, Tokyo",
            "Hello, Seattle",
            "Hello, Cairo"
        ],
        "createdTime": "2023-02-13T23:02:21Z",
        "lastUpdatedTime": "2023-02-13T23:02:25Z"
    }
    
  2. Para parar a depuração, pressione Shift + F5 no VS Code.

Depois de verificar que a função é executada corretamente no computador local, deve publicar o projeto no Azure.

Iniciar sessão no Azure

Antes de criar recursos do Azure ou publicar seu aplicativo, você deve entrar no Azure.

  1. Se você ainda não estiver conectado, escolha o ícone do Azure na barra de atividades. Em seguida, na área Recursos, escolha Entrar no Azure....

    Captura de ecrã do início de sessão na janela do Azure no VS Code.

    Se já tiver sessão iniciada e conseguir ver as suas subscrições existentes, vá para a secção seguinte. Se você ainda não tiver uma conta do Azure, escolha Criar uma Conta do Azure.... Os alunos podem escolher Criar uma Conta do Azure para Estudantes....

  2. Quando solicitado no navegador, escolha sua conta do Azure e entre usando suas credenciais de conta do Azure. Se criar uma nova conta, pode iniciar sessão depois de a sua conta ser criada.

  3. Depois de iniciar sessão com êxito, pode fechar a nova janela do browser. As assinaturas que pertencem à sua conta do Azure são exibidas na barra lateral.

Criar o aplicativo de função no Azure

Nesta seção, você cria um aplicativo de função e recursos relacionados em sua assinatura do Azure.

  1. Escolha o ícone do Azure na barra de atividades. Em seguida, na área Recursos , selecione o + ícone e escolha a opção Criar Aplicativo de Função no Azure .

    Criar um recurso na sua subscrição do Azure

  2. Forneça as seguintes informações nos pedidos:

    Pedido Seleção
    Selecionar subscrição Escolha a subscrição a utilizar. Você não verá esse prompt quando tiver apenas uma assinatura visível em Recursos.
    Insira um nome globalmente exclusivo para o aplicativo de função Digite um nome válido em um caminho de URL. O nome digitado é validado para garantir que seja exclusivo no Azure Functions.
    Selecione uma pilha de tempo de execução Escolha a versão de idioma na qual você está executando localmente.
    Selecione um local para novos recursos Para um melhor desempenho, escolha uma região perto de si.

    A extensão mostra o status de recursos individuais à medida que eles estão sendo criados no Azure no painel Azure: Log de Atividades .

    Log de criação de recursos do Azure

  3. Quando a criação estiver concluída, os seguintes recursos do Azure serão criados na sua subscrição. Os recursos são nomeados com base no nome do aplicativo de função:

    • Um grupo de recursos, que é um contêiner lógico para recursos relacionados.
    • Uma conta de Armazenamento do Azure padrão, que mantém o estado e outras informações sobre seus projetos.
    • Um aplicativo de função, que fornece o ambiente para executar seu código de função. Um aplicativo de função permite agrupar funções como uma unidade lógica para facilitar o gerenciamento, a implantação e o compartilhamento de recursos dentro do mesmo plano de hospedagem.
    • Um plano do Serviço de Aplicativo, que define o host subjacente para seu aplicativo de função.
    • Uma instância do Application Insights conectada ao aplicativo de função, que rastreia o uso de suas funções no aplicativo.

    Depois de criar a aplicação de funções, é apresentada uma notificação e o pacote de implementação é aplicado.

    Gorjeta

    Por padrão, os recursos do Azure exigidos pelo seu aplicativo de função são criados com base no nome do aplicativo de função fornecido. Por padrão, eles também são criados no mesmo novo grupo de recursos com o aplicativo de função. Se você quiser personalizar os nomes desses recursos ou reutilizar recursos existentes, você precisa publicar o projeto com opções de criação avançadas .

Implementar o projeto no Azure

Importante

A implantação em um aplicativo de função existente sempre substitui o conteúdo desse aplicativo no Azure.

  1. Na área Recursos da atividade do Azure, localize o recurso de aplicativo de função que você acabou de criar, clique com o botão direito do mouse no recurso e selecione Implantar no aplicativo funcional....

  2. Quando solicitado sobre a substituição de implantações anteriores, selecione Implantar para implantar seu código de função no novo recurso de aplicativo de função.

  3. Após a conclusão da implantação, selecione Exibir saída para exibir os resultados da criação e da implantação, incluindo os recursos do Azure que você criou. Se você perder a notificação, selecione o ícone de sino no canto inferior direito para vê-lo novamente.

    Captura de ecrã da janela Ver Saída.

Testar a sua função no Azure

Nota

Para usar o modelo de programação do nó V4, verifique se seu aplicativo está sendo executado em pelo menos a versão 4.25 do tempo de execução do Azure Functions.

  1. Copie o URL do acionador de HTTP no painel Resultados. A URL que chama sua função acionada por HTTP deve estar neste formato: https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator
  1. Copie o URL do acionador de HTTP no painel Resultados. A URL que chama sua função acionada por HTTP deve estar neste formato: https://<functionappname>.azurewebsites.net/api/orchestrators/helloOrchestrator
  1. Cole este novo URL do pedido HTTP na barra de endereço do browser. Você deve obter a mesma resposta de status que antes ao usar o aplicativo publicado.

Próximos passos

Você usou o Visual Studio Code para criar e publicar um aplicativo de função durável JavaScript.