Desenvolver o Azure Functions usando o Visual Studio Code

A extensão do Azure Functions para Visual Studio Code permite que você desenvolva as funções localmente e as implante no Azure. Se esta for sua primeira experiência com o Azure Functions, você pode aprender mais em Uma introdução ao Azure Functions.

A extensão do Azure Functions oferece estes benefícios:

  • Editar, criar e executar funções em seu computador de desenvolvimento local.
  • Publicar seu projeto do Azure Functions diretamente no Azure.
  • Gravar as funções em várias linguagens, aproveitando os benefícios do Visual Studio Code.

Você está exibindo a versão em C# deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.

Se você for novo no Functions, convém primeiro concluir o artigo de início rápido do Visual Studio Code.

Você está exibindo a versão do Java deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.

Se você for novo no Functions, convém primeiro concluir o artigo de início rápido do Visual Studio Code.

Você está exibindo a versão do JavaScript deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.

Se você for novo no Functions, convém primeiro concluir o artigo de início rápido do Visual Studio Code.

Você está exibindo a versão do PowerShell deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.

Se você for novo no Functions, convém primeiro concluir o artigo de início rápido do Visual Studio Code.

Você está exibindo a versão do Python deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.

Se você for novo no Functions, convém primeiro concluir o artigo de início rápido do Visual Studio Code.

Você está exibindo a versão do TypeScript deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.

Se você for novo no Functions, convém primeiro concluir o artigo de início rápido do Visual Studio Code.

Importante

Não combine desenvolvimento local e desenvolvimento de portal para um único aplicativo de funções. Ao publicar a partir de um projeto local para um aplicativo de funções, o processo de implantação substitui quaisquer funções que você desenvolveu o portal.

Pré-requisitos

Você também precisa desses pré-requisitos para executar e depurar suas funções localmente. Eles não são necessários apenas para criar ou publicar projetos no Azure Functions.

  • O Azure Functions Core Tools, que permite uma experiência de depuração local integrada. Com a extensão do Azure Functions instalada, a forma mais simples de instalar ou atualizar as Core Tools é executando o comando Azure Functions: Install or Update Azure Functions Core Tools através da paleta de comandos.

Criar um projeto do Azure Functions

A extensão do Functions permite criar o projeto de aplicativo de funções necessário ao mesmo tempo que você cria sua primeira função. Use estas etapas para criar uma função disparada por HTTP em um novo projeto. Um gatilho HTTP é o modelo de gatilho de função mais simples de demonstrar.

  1. No Visual Studio Code, pressione F1 para abrir a paleta de comandos e pesquisar e executar o comando Azure Functions: Create New Project.... Selecione o local do diretório para o workspace do projeto e escolha Selecionar.

    Você pode criar uma nova pasta ou escolher uma pasta vazia para o workspace do projeto, mas não escolha uma pasta do projeto que já faz parte de um workspace.

    Em vez disso, você pode executar o comando Azure Functions: Create New Containerized Project... para também gerar um Dockerfile para o projeto.

  2. Quando solicitado, Selecione uma linguagem para seu projeto. Se necessário, escolha uma versão específica da linguagem.

  3. Selecione o modelo de função de gatilho HTTP ou selecione Ignorar agora para criar um projeto sem uma função. Você sempre poderá adicionar uma função ao projeto posteriormente.

    Dica

    Você pode exibir modelos adicionais selecionando a opção Alterar filtro de modelo e definindo o valor como Core ou Todos.

  4. Para o nome da função, insira HttpExample, selecione Enter e, em seguida, selecione autorização de Função.

    Esse nível de autorização exige que você forneça uma chave de função ao chamar o ponto de extremidade da função.

  5. Na lista suspensa, selecione Adicionar ao workspace.

  6. Na janela Você confia nos autores dos arquivos desta pasta?, escolha Sim.

O Visual Studio Code cria uma função na linguagem escolhida e no modelo de uma função disparada por HTTP.

Arquivos de projeto gerados

O modelo do projeto cria um projeto na linguagem escolhida e instala as dependências necessárias. Para qualquer linguagem, o novo projeto tem estes arquivos:

  • host.json: Permite que você configure o host do Functions. Essas configurações se aplicam quando você estiver executando as funções localmente e quando as estiver executando no Azure. Para obter mais informações, consulte a referência para host.json.

  • local.settings.json: mantém as configurações usadas ao executar as funções localmente. Essas configurações são usadas somente quando você está executando as funções localmente. Para obter mais informações, confira Arquivo de configurações local.

    Importante

    Como o arquivo local.settings.json pode conter segredos, certifique-se de excluir o arquivo do controle do código-fonte do seu projeto.

  • Dockerfile (opcional): permite criar um aplicativo de funções conteinerizado do seu projeto usando uma imagem base aprovada para seu projeto. Você só obtém esse arquivo quando executa o comando Azure Functions: Create New Containerized Project.... Você pode adicionar um Dockerfile a um projeto existente usando o comando func init --docker-only no Core Tools.

Dependendo da linguagem, esses outros arquivos são criados:

Um arquivo de biblioteca de classes HttpExample.cs, cujo conteúdo varia dependendo se o projeto é executado em um processo de trabalho isolado ou em processo com o host do Functions.

  • Um arquivo pom.xml na pasta raiz que define os parâmetros de implantação e projeto, incluindo as dependências do projeto e a versão do Java. O pom.xml também contém informações sobre os recursos do Azure criados durante uma implantação.

  • Um arquivo Functions.java no caminho src que implementa a função.

Os arquivos gerados dependem do modelo de programação do Node.js escolhido para o Functions:

  • Um arquivo package.json na pasta raiz.

  • Um arquivo .js nomeado na pasta src\functions, que contém a definição de função e o código da função.

Uma pasta HttpExample que contém:

Os arquivos gerados dependem do modelo de programação do Python escolhido para o Functions:

  • Um arquivo requirements.txt de nível de projeto que lista os pacotes exigidos pelo Functions.

  • Um arquivo function_app.py que contém a definição de função e o código.

Neste ponto, você poderá executar sua função de gatilho HTTP localmente.

Adicionar uma função ao projeto

Você pode adicionar uma nova função a um projeto existente usando um dos modelos de gatilho de funções predefinidos. Para adicionar um novo gatilho de função, selecione F1 para abrir a paleta de comandos e, em seguida, procure e execute o comando Azure Functions: Criar Função. Siga os prompts para escolher o tipo de gatilho e definir os atributos necessários do gatilho. Se o gatilho exigir uma chave de acesso ou uma cadeia de conexão para se conectar a um serviço, prepare esse item antes de criar o gatilho de função.

Essa ação adiciona um novo arquivo de biblioteca de classes C# (.cs) ao seu projeto.

Essa ação adiciona um novo arquivo Java (.java) ao seu projeto.

Os resultados dessa ação dependem da versão do modelo do Node.js.

  • Um arquivo package.json na pasta raiz.

  • Um arquivo .js nomeado na pasta src\functions, que contém a definição de função e o código da função.

Essa ação cria uma nova pasta no projeto. A pasta contém um novo arquivo function.json e o novo arquivo de código do PowerShell.

Os resultados dessa ação dependem da versão do modelo do Python.

O Visual Studio Code adiciona um novo código de função ao arquivo function_app.py (comportamento padrão) ou a outro arquivo Python selecionado.

Conectar-se a serviços

Você pode conectar a função a outros serviços do Azure, adicionando associações de entrada e de saída. As associações conectam a função a outros serviços, sem a necessidade de gravar o código de conexão.

Por exemplo, a maneira como você define uma associação de saída que grava dados em uma fila de armazenamento depende do modelo de processo:

  1. Se necessário, adicione uma referência ao pacote que dá suporte à sua extensão de associação.

  2. Atualize o método de função para adicionar um atributo que define o parâmetro de associação, como QueueOutput para uma associação de saída de fila. Você pode usar um objeto MultiResponse para retornar várias mensagens ou vários fluxos de saída.

Por exemplo, para adicionar uma associação de saída que grava dados em uma fila de armazenamento, atualize o método de função para adicionar um parâmetro de associação definido usando a anotação QueueOutput. O objeto OutputBinding<T> representa as mensagens gravadas em uma associação de saída quando a função é concluída.

Por exemplo, a maneira como você define a associação de saída que grava dados em uma fila de armazenamento depende da versão do modelo do Node.js:

Usando o modelo do Node.js v4, você deve adicionar manualmente uma opção return: na definição de função usando a função storageQueue no objeto output, que define a fila de armazenamento para gravar a saída return. A saída é gravada quando a função é concluída.

O Visual Studio Code permite que você adicione associações ao seu arquivo function.json seguindo um conjunto conveniente de prompts.

Para adicionar uma associação, abra o palete de comando (F1) e digite Azure Functions: adicionar associação... , escolha a função para a nova associação e, em seguida, siga os prompts, que variam dependendo do tipo de associação que está sendo adicionada à função.

A seguir são exibidos exemplos de prompts para a definição de uma nova associação de saída de armazenamento:

Prompt Valor Descrição
Selecionar direção de associação out A associação é uma associação de saída.
Selecionar associação com direção Azure Queue Storage A associação é uma associação de fila do Armazenamento do Azure.
O nome usado para identificar essa associação em seu código msg Nome que identifica o parâmetro de associação referenciado em seu código.
A fila à qual a mensagem será enviada outqueue O nome da fila na qual a associação escreve. Quando o queueName não existe, a associação o cria no primeiro uso.
Selecione a configuração a partir de "local.settings.json" MyStorageConnection O nome de uma configuração de aplicativo que contém a cadeia de conexão da conta de armazenamento. A configuração AzureWebJobsStorage contém a cadeia de conexão para a conta de armazenamento criada com o aplicativo de funções.

Você também pode clicar com o botão direito do mouse (Ctrl+clique no macOS) diretamente no arquivo function.json em sua pasta de funções, selecionar Adicionar associação e seguir os mesmos prompts.

Neste exemplo, a associação a seguir é adicionada à matriz bindings em seu arquivo function.json:

{
    "type": "queue",
    "direction": "out",
    "name": "msg",
    "queueName": "outqueue",
    "connection": "MyStorageConnection"
}

Por exemplo, a maneira como você define a associação de saída que grava dados em uma fila de armazenamento depende da versão do modelo do Python:

O decorador @queue_output na função é usado para definir um parâmetro de associação nomeado para a saída para a fila de armazenamento, em que func.Out define qual saída é gravada.

O exemplo a seguir mostra a definição de função depois de adicionar uma Associação de saída do Armazenamento de Filas a uma função de gatilho HTTP:

Como uma função de gatilho HTTP também retorna uma resposta HTTP, a função retorna um objeto MultiResponse, que representa a saída de HTTP e da fila.

[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req,
    FunctionContext executionContext)
{

Veja a seguir a definição do objeto MultiResponse que inclui a associação de saída:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

Ao aplicar esse exemplo ao seu projeto, talvez seja necessário alterar HttpRequest para HttpRequestData e IActionResult para HttpResponseData, dependendo se estiver usando a Integração com o ASP.NET Core ou não.

As mensagens são enviadas para a fila quando a função é concluída. A maneira como você define a associação de saída depende do seu modelo de processo. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {

Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.

Associação de exemplo para o modelo v4 do Node.js ainda não disponível.

A maneira como você define a associação de saída depende da versão do modelo do Node.js. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

A maneira como você define a associação de saída depende da versão do modelo do Python. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.

Associação de exemplo para o modelo v4 do Node.js ainda não disponível.

A maneira como você define a associação de saída depende da versão do modelo do Node.js. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.

Entrar no Azure

Antes de criar recursos do Azure ou publicar o aplicativo, entre no Azure.

  1. Se ainda não estiver conectado, selecione o ícone do Azure na barra de Atividades. Em seguida, em Recursos, selecione Entrar no Azure.

    Captura de tela do login na janela do Azure no Visual Studio Code.

    Se você já estiver conectado e puder ver suas assinaturas existentes, vá para a próxima seção. Se ainda não tiver uma conta do Azure, selecione Criar uma Conta do Azure. Os alunos podem selecionar Criar uma Conta do Microsoft Azure for Students.

  2. Quando for solicitado no navegador, selecione sua conta do Azure e entre usando as credenciais da sua conta do Azure. Se você criar uma conta, poderá se conectar depois que a conta for criada.

  3. Após fazer login com sucesso, você poderá fechar a nova janela do navegador. As assinaturas que pertencem à sua conta do Azure são exibidas na barra lateral.

Criar recursos do Azure

Para publicar seu projeto do Functions no Azure, você precisa ter um aplicativo de funções e recursos relacionados na sua assinatura do Azure para executar o código. O aplicativo de funções fornece um contexto de execução para suas funções. Quando você publica do Visual Studio Code em um aplicativo de funções no Azure, o projeto é empacotado e implantado no aplicativo de funções selecionado em sua assinatura do Azure.

Ao criar um aplicativo de funções no Azure, você pode escolher um caminho rápido de criação de aplicativo de funções usando os padrões ou um caminho que oferece opções avançadas como usar recursos do Azure existentes. Dessa forma, você tem mais controle sobre a criação dos recursos remotos.

Nesta seção, você criará um aplicativo de funções e os recursos relacionados na sua assinatura do Azure. Muitas das decisões de criação de recursos são tomadas para você com base em comportamentos padrão. Para mais controle sobre os recursos criados, você deve criar seu aplicativo de função com opções avançadas.

  1. No Visual Studio Code, pressione F1 para abrir a paleta de comandos. No prompt (>), insira e, em seguida, selecione Azure Functions: Criar Aplicativo de Funções no Azure.

  2. Nos prompts, forneça as informações a seguir:

    Prompt Ação
    Selecionar uma assinatura Selecione a Assinatura do Azure a ser usada. O prompt não aparece quando você tem apenas uma assinatura visível em Recursos.
    Insira um nome exclusivo globalmente para o aplicativo de funções Digite um nome que seja válido em um caminho de URL. O nome que você digitar será validado para garantir que seja exclusivo no Azure Functions.
    Selecionar uma pilha de runtime Selecione a versão da linguagem que você executa localmente no momento.
    Selecione uma localização para novos recursos Selecionar uma Região do Azure. Para obter um melhor desempenho, escolha uma região perto de você.

    No painel Azure: Log de Atividades, a extensão do Azure mostra o status dos recursos individuais à medida que são criados no Azure.

    Captura de tela mostrando o log da criação de recursos do Azure.

  3. Quando o aplicativo de funções é criado, os seguintes recursos relacionados são criados na sua assinatura do Azure. Os recursos são nomeados com base no nome que você inseriu para o seu aplicativo de funções.

    • 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ções, que fornece o ambiente para a execução do código de função. Um aplicativo de funções lhe 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 do Azure, que define o host subjacente do seu aplicativo de funções.
    • Uma instância do Application Insights conectada ao aplicativo de funções que acompanha o uso das suas funções no aplicativo.

    Uma notificação é exibida depois que seu aplicativo de funções é criado e o pacote de implantação é aplicado.

    Dica

    Por padrão, os recursos do Azure exigidos por seu aplicativo de funções são criados com base no nome que você inseriu para o seu aplicativo de funções. Por padrão, os recursos são criados com o aplicativo de funções no mesmo novo grupo de recursos. Se você quiser personalizar os nomes dos recursos associados ou reutilizar os recursos existentes, publique o projeto com opções avançadas de criação.

Criar uma implantação de Aplicativos de Contêiner do Azure

Use o Visual Studio Code para criar recursos do Azure para um projeto de código conteinerizado. Quando a extensão detecta a presença de um Dockerfile durante a criação de recursos, ela pergunta se você deseja implantar a imagem de contêiner em vez de apenas o código. O Visual Studio Code cria um ambiente de Aplicativos de Contêiner do Azure para seu projeto de código conteinerizado integrado ao Azure Functions. Para obter mais informações, consulte Aplicativos de Contêiner do Azure que hospedam o Azure Functions.

Observação

A implantação de contêiner requer a extensão dos Aplicativos de Contêiner do Azure para Visual Studio Code. Esta extensão está em versão prévia.

O processo de criação depende se você escolhe uma criação rápida ou se precisa usar opções avançadas:

  1. No Visual Studio Code, pressione F1 para abrir a paleta de comandos e pesquisar e executar o comando Azure Functions: Create Function App in Azure....

  2. Quando solicitado, escolha Imagem de contêiner.

  3. Forneça as seguintes informações nos prompts:

    Prompt Seleção
    Selecionar uma assinatura Escolha a assinatura a ser usada. Você não verá esse aviso quando tiver apenas uma assinatura visível em Recursos.
    Insira um nome exclusivo globalmente para o aplicativo de funções Digite um nome que seja válido em um caminho de URL. O nome que você digitar é validado para ter certeza de que ele é exclusivo no Azure Functions.
    Selecione uma localização para novos recursos Para obter um melhor desempenho, escolha uma região perto de você.

    A extensão mostra o status de recursos individuais conforme eles são criados no Azure no painel Azure: Log de Atividades.

Para obter mais informações sobre os recursos necessários para executar suas funções conteinerizadas em Aplicativos de Contêiner, consulte Recursos necessários.

Observação

No momento, não é possível usar o Visual Studio Code para implantar um aplicativo de funções conteinerizado em um ambiente de Aplicativos de Contêiner integrado ao Azure Functions. Em vez disso, você deve publicar sua imagem de contêiner em um registro de contêiner e, em seguida, definir essa imagem de registro como a fonte de implantação do aplicativo de funções hospedado pelos Aplicativos de Contêiner. Para obter mais informações, consulte Criar seu aplicativo de funções em um contêiner e Atualizar uma imagem no registro.

Implantar arquivos de projeto

Recomendamos configurar a implantação contínua, de modo que o aplicativo de funções do Azure seja atualizado quando você atualizar os arquivos de origem no local de origem conectado. Você também pode implantar seus arquivos de projeto no Visual Studio Code. Ao publicar do Visual Studio Code, você pode aproveitar a tecnologia de implantação zip.

Importante

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

  1. Na paleta de comandos, insira e, em seguida, selecione Azure Functions: Implantar no Aplicativo de Funções.

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

  3. Após sua implantação ser concluída, escolha Ver o resultado para ver os resultados da criação e da implantação, incluindo os recursos do Azure que você criou. Se você deixou passar a notificação, selecione o ícone de sino no canto inferior direito para vê-la novamente.

    Captura de tela da janela Exibir saída.

Obter a URL de uma função disparada por HTTP no Azure

Para chamar uma função disparada por HTTP de um cliente, você precisa da URL da função, que estará disponível após a implantação em seu aplicativo de funções. Essa URL inclui as chaves de função necessárias. Você pode usar a extensão para obter essas URLs para as funções implantadas. Se você quiser apenas executar a função remota no Azure, use a funcionalidade Executar função agora da extensão.

  1. Selecione F1 para abrir a paleta de comandos, pesquise e execute o comando Azure Functions: Copiar URL da Função.

  2. Siga os prompts para selecionar o aplicativo de funções no Azure e, em seguida, o gatilho HTTP específico que você deseja invocar.

A URL da função é copiada na área de transferência, juntamente com as chaves necessárias que passaram pelo parâmetro de consulta code. Use uma ferramenta HTTP para enviar solicitações POST ou um navegador para enviar solicitações GET para a função remota.

Quando a extensão obtém o URL de uma função do Azure, a extensão usa sua conta do Azure para recuperar automaticamente as chaves necessárias para iniciar a função. Saiba mais sobre as chaves de acesso da função. Iniciar funções que não foram disparadas por HTTP requer o uso da chave de administração.

Executar funções

A extensão Azure Functions permite executar funções individuais. Você pode executar funções individuais em seu projeto no computador de desenvolvimento local ou na assinatura do Azure.

Para funções de gatilho HTTP, a extensão chama o ponto de extremidade HTTP. Para outros tipos de gatilhos, a extensão chama as APIs de administrador para iniciar a função. O corpo da mensagem da solicitação enviada para a função depende do tipo de gatilho. Quando um gatilho exige dados de teste, você é solicitado a inserir dados em um formato JSON específico.

Executar funções no Azure

Para executar uma função no Azure a partir do Visual Studio Code, siga estas etapas:

  1. Na paleta de comandos, insira Azure Functions: Executar função agora e selecione sua assinatura do Azure.

  2. Na lista, escolha seu aplicativo de funções no Azure. Se você não estiver vendo o aplicativo de funções, verifique se está conectado à assinatura correta.

  3. Na lista, escolha a função que você deseja executar. Em Inserir corpo da solicitação, digite o corpo da mensagem da solicitação e pressione Enter para enviar essa mensagem de solicitação para sua função.

    O texto padrão em Inserir corpo da solicitação indica o formato do corpo. Se o aplicativo de funções não tiver funções, um erro de notificação será mostrado com esse erro.

    Quando a função é executada no Azure e retorna uma resposta, o Visual Studio Code mostra uma notificação.

Você também pode executar sua função na área Azure: Funções, abrindo o menu de atalho para a função que você deseja executar de seu aplicativo de funções em sua assinatura do Azure e selecionando Executar Função Agora....

Quando você executa suas funções no Azure a partir do Visual Studio Code, a extensão usa sua conta do Azure para recuperar automaticamente as chaves necessárias para iniciar a função. Saiba mais sobre as chaves de acesso da função. Iniciar funções que não foram disparadas por HTTP requer o uso da chave de administração.

Executar funções localmente

O runtime local é o mesmo runtime que hospeda o aplicativo de funções no Azure. As configurações locais são lidas no arquivo local.settings.json. Para executar o projeto do Functions localmente, você deve atender a mais requisitos.

Configurar o projeto para ser executado localmente

O runtime do Functions usa uma conta de Armazenamento do Azure internamente para todos os tipos de gatilho diferentes de HTTP e WebHooks. Portanto, você precisa definir a chave Values.AzureWebJobsStorage para uma cadeia de conexão válida da conta de armazenamento do Azure.

Esta seção usa a extensão de Armazenamento do Azure para Visual Studio Code com o Gerenciador de Armazenamento do Azure para se conectar e recuperar a cadeia de conexão de armazenamento.

Para definir a cadeia de conexão da conta de armazenamento:

  1. No Visual Studio, abra o Gerenciador de Nuvem, expanda a Conta de Armazenamento>A Conta de Armazenamento, selecione Propriedades e copie o valor da Cadeia de Conexão Primária.

  2. Em seu projeto, abra o arquivo local.settings.json e defina o valor da chave AzureWebJobsStorage na cadeia de conexão que você copiou.

  3. Repita a etapa anterior para adicionar as chaves exclusivas para a matriz de Valores para todas as outras conexões necessárias para as suas funções.

Para obter mais informações, confira Arquivo de configurações local.

Depurar funções localmente

Para depurar as funções, selecione F5. Caso as Core Tools não estejam disponíveis, será solicitada a instalação. Quando o Core Tools está instalado e em execução, a saída é mostrada no Terminal. Essa etapa é a mesma da execução do comando do func start Core Tools no Terminal, mas com tarefas de compilação adicionais e um depurador anexado.

Quando o projeto estiver em execução, você poderá usar o recurso Executar função agora... da extensão para disparar as funções como você faria quando o projeto é implantado no Azure. Com o projeto em execução no modo de depuração, os pontos de interrupção são atingidos no Visual Studio Code como você esperaria.

  1. Na paleta de comandos, insira Azure Functions: Executar função agora e escolha Projeto local.

  2. Escolha a função que você deseja executar no projeto e digite o corpo da mensagem da solicitação em Inserir corpo da solicitação. Clique em ENTER para enviar essa mensagem de solicitação à função. O texto padrão no Inserir corpo da solicitação deve indicar o formato do corpo. Se o aplicativo de funções não tiver funções, um erro de notificação será mostrado com esse erro.

  3. Quando a função é executada localmente e após o recebimento da resposta, uma notificação é gerada no Visual Studio Code. As informações sobre a execução da função são mostradas no painel Terminal.

As chaves não são necessárias ao serem executadas localmente, o que se aplica a chaves de função e a chaves no nível do administrador.

Trabalhe com as configurações do aplicativo localmente

Ao executar em um aplicativo de funções no Azure, as configurações exigidas por suas funções são armazenadas com segurança nas configurações do aplicativo. Durante o desenvolvimento local, essas configurações são adicionadas à coleção Values no arquivo local.settings.json. O arquivo local.settings.json também armazena as configurações usadas pelas ferramentas de desenvolvimento locais.

Os itens da Values coleção no arquivo local.settings.json do seu projeto destinam-se a espelhar itens nas configurações do aplicativo do seu aplicativo de funções no Azure.

Por padrão, essas configurações não são migradas automaticamente quando o projeto é publicado no Azure. Depois que a publicação for concluída, você terá a opção de publicar as configurações do local.settings.json no aplicativo de funções no Azure. Para saber mais, confira Publicar configurações de aplicativo.

Os valores em ConnectionStrings nunca são publicados.

Os valores de configuração do aplicativo de funções também podem ser lidos no código como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.

  • Os valores de configuração do aplicativo de funções também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
  • Os valores de configuração do aplicativo de funções também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
  • Os valores de configuração do aplicativo de funções também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
  • Os valores de configuração do aplicativo de funções também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.

Configurações de aplicativo no Azure

As configurações no arquivo local.settings.json no projeto devem ser iguais às configurações do aplicativo de funções no Azure. As configurações adicionadas ao local.settings.json também devem ser adicionadas ao aplicativo de funções no Azure. Essas configurações não são carregadas automaticamente quando você publica o projeto. Da mesma forma, todas as configurações criadas no aplicativo de funções no portal devem ser baixadas no projeto local.

Publicar configuração de aplicativo

A maneira mais fácil de publicar as configurações necessárias no aplicativo de funções no Azure é usar o link Carregar configurações, que é exibido depois de publicar o projeto:

Captura de tela para carregar as configurações do aplicativo.

Você também pode publicar as configurações usando o comando Azure Functions: carregar configuração local na paleta de comandos. Você pode adicionar configurações individuais às configurações de aplicativo no Azure usando o comando Azure Functions: adicionar nova configuração.

Dica

Salve o arquivo local.settings.json antes de publicá-lo.

Se o arquivo local for criptografado, ele será descriptografado, publicado e criptografado novamente. Se houver configurações com valores conflitantes nos dois locais, você será solicitado a escolher como proceder.

Exiba as configurações de aplicativo existentes na área Azure: Functions, expandindo a assinatura, o aplicativo de funções e as Configurações de Aplicativo.

 Captura de tela para exibir as configurações do aplicativo de funções no Visual Studio Code.

Baixar configurações do Azure

Se você criou as configurações de aplicativo no Azure, pode baixá-las no arquivo local.settings.json usando o comando Azure Functions: baixar configurações remotas.

Assim como acontece com o carregamento, se o arquivo local for criptografado, ele será descriptografado, atualizado e criptografado novamente. Se houver configurações com valores conflitantes nos dois locais, você será solicitado a escolher como proceder.

Instalar extensões de associação

Com exceção dos gatilhos de timer e HTTP, as associações são implementadas nos pacotes de extensão.

Você deve instalar explicitamente os pacotes de extensão para os gatilhos e as associações que precisam deles. O pacote específico que você instala depende do modelo de processo do projeto.

Execute o comando dotnet add package na janela Terminal para instalar os pacotes de extensão necessários para o projeto. Esse modelo demonstra como adicionar uma associação para uma biblioteca de classes em processo isolado:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.<BINDING_TYPE_NAME> --version <TARGET_VERSION>

Substitua <BINDING_TYPE_NAME> pelo nome do pacote que contém a associação de que você precisa. Você pode encontrar o artigo de referência de associação desejada na lista de vinculações com suporte.

Substituir <TARGET_VERSION> no exemplo com uma versão específica do pacote, como 3.0.0-beta5. As versões válidas são listadas nas páginas de pacote individuais NuGet.org. As versões principais que correspondem ao Runtime do Functions atual são especificadas no artigo de referência para a associação.

Dica

Você também pode usar os comandos DO NuGet no Kit de Desenvolvimento do C# para instalar pacotes de extensão de associação.

O script em C# usa pacotes de extensão.

A maneira mais fácil de instalar as extensões de associação é habilitar pacotes de extensão. Quando você habilita os pacotes, um conjunto predefinido de pacotes de extensão é instalado automaticamente.

Para habilitar pacotes de extensão, abra o arquivo host.json e atualize seu conteúdo de acordo com o código a seguir:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.*, 4.0.0)"
    }
}

Se, por algum motivo, você não puder usar um pacote de extensão para instalar extensões de associação para seu projeto, consulte Instalar extensões explicitamente.

Funções de monitoramento

Quando você executa funções localmente, os dados de log são transmitidos para o console do Terminal. Você também pode obter os dados de log quando o projeto do Functions está em execução em um aplicativo de funções no Azure. Você pode se conectar aos logs de streaming no Azure para ver dados de log quase em tempo real. Você deve habilitar o Application Insights para obter uma compreensão mais completa do comportamento do seu aplicativo de funções.

Logs de streaming

Ao desenvolver um aplicativo, geralmente é útil visualizar as informações do registro em log quase em tempo real. Você pode exibir um fluxo de arquivos de log que estão sendo gerados pelas funções. Ative os logs da paleta de comandos com o comando Azure Functions: Start streaming logs. Essa saída é um exemplo dos logs de streaming de uma solicitação para uma função disparada por HTTP:

Captura de tela para saída de logs de streaming para gatilho H T T P.

Para saber mais, confira Logs de streaming.

Application Insights

Você deve monitorar a execução das funções integrando o aplicativo de funções com o Application Insights. Ao criar um aplicativo de funções no portal do Azure, essa integração ocorre por padrão. Ao criar o aplicativo de funções durante a publicação do Visual Studio, você precisa integrar o Application Insights. Para saber como, confira Habilitar a integração do Application Insights.

Para saber mais sobre o monitoramento usando o Application Insights, confira Monitorar o Azure Functions.

Projetos do C# de script

Por padrão, todos os projetos do C# são criados como projetos de biblioteca de classes compilados do C#. Se você preferir trabalhar com projetos de script do C#, deve selecionar o script do C# como linguagem padrão nas configurações de extensão do Azure Functions:

  1. Selecione Arquivo>Preferências>Configurações.

  2. Acesse Configurações de Usuário>Extensões>Azure Functions.

  3. Selecione o C#Script em Azure Function: linguagem do projeto.

Depois de concluir essas etapas, as chamadas feitas para o Core Tools subjacente incluem a opção --csx, que gera e publica arquivos de projeto com o script do C# (.csx). Quando você especifica essa linguagem padrão, todos os projetos criados aplicam o padrão para os projetos de script do C#. Você não será solicitado a escolher uma linguagem de projeto quando um padrão for definido. Para criar projetos em outras linguagens, você deve alterar essa configuração ou removê-la do arquivo settings.json do usuário. Depois de remover essa configuração, você será solicitado novamente a escolher a linguagem quando criar um projeto.

Referência da paleta de comandos

A extensão do Azure Functions fornece uma interface gráfica útil na área para interagir com os aplicativos de funções no Azure. A mesma funcionalidade também está disponível como comandos na paleta de comandos (F1). Estes comandos do Azure Functions estão disponíveis:

Comando do Azure Functions Descrição
Adicionar novas configurações Cria uma nova configuração de aplicativo no Azure. Para saber mais, confira Publicar configurações de aplicativo. Talvez você também precise baixar essa configuração nas configurações locais.
Configurar fonte de implantação Conecta o aplicativo de funções no Azure a um repositório Git local. Para saber mais, confira Implantação contínua para Azure Functions.
Conectar-se ao repositório GitHub Conecta o aplicativo de funções a um repositório GitHub.
Copiar URL da função Obtém a URL remota de uma função disparada por HTTP que está sendo executada no Azure. Para saber mais, confira Obter a URL da função implantada.
Criar aplicativo de funções no Azure Cria um novo aplicativo de funções na assinatura no Azure. Para saber mais, confira a seção sobre como publicar em um novo aplicativo de funções no Azure.
Descriptografar configurações Descriptografa as configurações locais que foram criptografadas em Azure Functions: criptografar configurações.
Excluir aplicativo de funções Remove um aplicativo de funções da assinatura no Azure. Quando não há outros aplicativos no plano do Serviço de Aplicativo, você também tem a opção de excluí-lo. Outros recursos, como contas de armazenamento e grupos de recursos, não são excluídos. Para remover todos os recursos, você deve excluir o grupo de recursos. O projeto local não é afetado.
Excluir função Remove uma função existente de um aplicativo de funções no Azure. Como essa exclusão não afeta o projeto local, remova a função localmente e, em seguida, republique o projeto.
Excluir proxy Remove um proxy do Azure Functions do aplicativo de funções no Azure. Para saber mais sobre proxies, confira Trabalhar com Proxies do Azure Functions.
Excluir configuração Exclui uma configuração de aplicativo de funções no Azure. Essa exclusão não afeta as configurações no arquivo local.settings.json.
Desconecte-se do repositório Remove a conexão de implantação contínua entre um aplicativo de funções no Azure e um repositório de controle do código-fonte.
Baixar configurações remotas Baixa as configurações do aplicativo de funções escolhido no Azure no arquivo local.settings.json. Se o arquivo local for criptografado, ele será descriptografado, atualizado e criptografado novamente. Se houver configurações com valores conflitantes nos dois locais, você será solicitado a escolher como proceder. Salve as alterações no arquivo local.settings.json antes de executar esse comando.
Editar configurações Altera o valor de uma configuração de aplicativo de funções existente no Azure. Esse comando não afeta as configurações no arquivo local.settings.json.
Criptografar configurações Criptografa itens individuais na matriz Values nas configurações locais. Nesse arquivo, IsEncrypted também é definido como true, que especifica que o runtime local descriptografa as configurações antes de usá-las. Criptografe as configurações locais para reduzir o risco de vazar informações valiosas. No Azure, as configurações de aplicativo sempre são armazenadas criptografadas.
Executar função agora Inicia manualmente uma função usando as APIs de administrador. Esse comando é usado para teste, tanto localmente durante a depuração quanto nas funções em execução no Azure. Quando uma função é iniciada no Azure, primeiro, a extensão obtém automaticamente uma chave de administração, que é usada para chamar as APIs de administração remotas que iniciam as funções no Azure. O corpo da mensagem enviada para a API depende do tipo de gatilho. Os gatilhos de temporizador não exigem que você transmita dados.
Inicializar projeto para uso com o VS Code Adiciona os arquivos de projeto do Visual Studio Code necessários a um projeto existente do Functions. Use esse comando para trabalhar com um projeto criado com o Core Tools.
Instalar ou atualizar o Azure Functions Core Tools Instala ou atualiza o Azure Functions Core Tools, que é usado para executar funções localmente.
Reimplantar Permite reimplantar arquivos de projeto em um repositório Git conectado para uma implantação específica no Azure. Para republicar as atualizações locais do Visual Studio Code, republique o projeto.
Renomear configurações Altera o nome de chave de uma configuração de aplicativo de funções existente no Azure. Esse comando não afeta as configurações no arquivo local.settings.json. Depois de renomear as configurações no Azure, você deve baixar essas alterações no projeto local.
Reiniciar Reinicia o aplicativo de funções no Azure. A implantação de atualizações também reinicia o aplicativo de funções.
Set AzureWebJobsStorage Define o valore da configuração de aplicativo AzureWebJobsStorage. Essa configuração é exigida pelo Azure Functions. Ela é definida quando um aplicativo de funções é criado no Azure.
Iniciar Inicia um aplicativo de funções parado no Azure.
Iniciar Streaming de Logs Inicia os logs de streaming para o aplicativo de funções no Azure. Use os logs de streaming durante a solução de problemas remota no Azure, se você precisar ver as informações de log quase em tempo real. Para saber mais, confira Logs de streaming.
Parar Interrompe um aplicativo de funções que está sendo executado no Azure.
Interromper logs de streaming Interrompe os logs de streaming para o aplicativo de funções no Azure.
Alternar como configuração de slot Quando habilitado, garante que uma configuração de aplicativo persista para determinado slot de implantação.
Desinstalar o Azure Functions Core Tools Remove o Azure Functions Core Tools, o que é exigido pela extensão.
Carregar configurações locais Carrega as configurações do arquivo local.settings.json no aplicativo de funções escolhido no Azure. Se o arquivo local for criptografado, ele será descriptografado, carregado e criptografado novamente. Se houver configurações com valores conflitantes nos dois locais, você será solicitado a escolher como proceder. Salve as alterações no arquivo local.settings.json antes de executar esse comando.
Exibir confirmação no GitHub Mostra a confirmação mais recente em uma implantação específica, quando o aplicativo de funções está conectado a um repositório.
Exibir logs de implantação Mostra os logs de uma implantação específica para o aplicativo de funções no Azure.

Próximas etapas

Para saber mais sobre o Azure Functions Core Tools, confira Trabalhar com o Azure Functions Core Tools.

Para saber mais sobre como desenvolver funções como bibliotecas de classes do .NET, consulte Referência do desenvolvedor de C# do Azure Functions. Este tópico também fornece links para exemplos de como usar atributos para declarar os vários tipos de associações com suporte no Azure Functions.