Codificar e testar o Azure Functions localmente

Enquanto você é capaz de desenvolver e testar o Azure Functions no Portal do Azure, muitos desenvolvedores preferem uma experiência de desenvolvimento local. O Functions facilita a utilização do seu editor de códigos favorito e das ferramentas de desenvolvimento para criar e testar as funções em seu computador local. Suas funções locais podem se conectar a serviços do Azure em tempo real e você pode depurá-las em seu computador local usando o runtime total do Functions.

Este artigo fornece links de ambientes de desenvolvimento específicos para sua linguagem preferencial. Ele também fornece algumas diretrizes compartilhadas para o desenvolvimento local, como trabalhar com o arquivo local.settings.json.

Ambientes de desenvolvimento locais

A maneira como você desenvolve funções em seu computador local depende de seu idioma e preferências de ferramentas. Os ambientes na tabela a seguir dão suporte a desenvolvimento local:

Ambiente Idiomas Descrição
Visual Studio Code C# (biblioteca de classes)
Processo isolado de C# (.NET 5.0)
JavaScript
PowerShell
Python
A extensão do Azure Functions para VS Code adiciona suporte ao Functions para o VS Code. Requer as Ferramentas Essenciais. Oferece suporte ao desenvolvimento em Linux, MacOS e Windows com a versão 2.x das Ferramentas Essenciais. Para saber mais, confira Criar sua primeira função usando o Visual Studio Code.
Prompt de comando ou terminal C# (biblioteca de classes)
Processo isolado de C# (.NET 5.0)
JavaScript
PowerShell
Python
O Azure Functions Core Tools fornece os principais tempos de execução e modelos para a criação de funções, o que permite o desenvolvimento local. A versão 2.x oferece suporte ao desenvolvimento em Linux, MacOS e Windows. Todos os ambientes contam com ferramentas essenciais para o runtime local do Functions.
Visual Studio 2019 C# (biblioteca de classes)
Processo isolado de C# (.NET 5.0)
As ferramentas do Azure Functions estão incluídas na carga de trabalho de desenvolvimento do Azure do Visual Studio 2019 e posterior. Permite que você compile funções em uma biblioteca de classes e publique o arquivo .dll no Azure. Inclui as Ferramentas Essenciais para teste local. Para saber mais, consulte Desenvolver Azure Functions usando o Visual Studio.
Maven (diversos) Java O arquétipo Maven oferece suporte às Ferramentas Essenciais para habilitar o desenvolvimento de funções Java. A versão 2.x oferece suporte ao desenvolvimento em Linux, MacOS e Windows. Para saber mais, consulte Criar sua primeira função com Java e Maven. Também dá suporte ao uso de desenvolvimento Eclipse e IntelliJ IDEA

Importante

Não combine o desenvolvimento local com o desenvolvimento do portal no mesmo aplicativo de funções. Ao criar e publicar funções de um projeto local, não tente manter ou modificar o código do projeto no portal.

Cada um desses ambientes de desenvolvimento local permite criar projetos de aplicativo de funções e usar modelos predefinidos do Functions para criar novas funções. Cada um usa as Ferramentas Essenciais para que você possa testar e depurar suas funções com relação ao runtime do Functions em seu próprio computador, assim como faria com qualquer outro aplicativo. Você também pode publicar seu projeto de aplicativo de funções de qualquer um desses ambientes no Azure.

Arquivo de configurações local

O arquivo local.settings.json armazena as configurações do aplicativo e aquelas usadas pelas ferramentas de desenvolvimento locais. As configurações no arquivo local.settings.json são usadas somente ao executar projetos localmente.

Importante

Como o local.settings.json pode conter segredos, como cadeias de conexão, você nunca deve armazená-lo em um repositório remoto. As ferramentas que dão suporte ao Functions fornecem maneiras de sincronizar as configurações do aplicativo de funções no qual seu projeto está implantado com aquelas no arquivo local.settings.json.

O arquivo de configurações local tem esta estrutura:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>",
    "AzureWebJobs.HttpExample.Disabled": "true"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

Essas configurações têm suporte quando você executa projetos localmente:

Configuração Descrição
IsEncrypted Quando essa configuração é definida como true, todos os valores são criptografados com uma chave do computador local. Usado com func settings comandos. O valor padrão é false. Talvez você queira criptografar o arquivo local.settings.json no computador local quando ele contiver segredos, como cadeias de conexão de serviço. O host descriptografa automaticamente as configurações quando ele é executado. Use o comando func settings decrypt antes de tentar ler as configurações criptografadas localmente.
Values Coleção de configurações de aplicativo usadas quando um projeto é executado localmente. Esses pares chave-valor (cadeia de caracteres– cadeia de caracteres) correspondem às configurações de aplicativos no aplicativo de funções no Azure, como AzureWebJobsStorage. Muitos gatilhos e associações têm uma propriedade que se refere a uma configuração de aplicativo de cadeia de conexão, como Connection para o gatilho do Armazenamento de blobs. Para essas propriedades, você precisa de uma configuração de aplicativo definida na matriz Values. Confira a tabela subsequente para obter uma lista de configurações comumente usadas.
Os valores devem ser cadeias de caracteres e não matrizes ou objetos JSON. Os nomes de configuração não podem incluir dois-pontos (:) ou um sublinhado duplo (__). Os caracteres de sublinhado duplo são reservados pelo runtime e os dois-pontos são reservados para dar suporte à injeção de dependência.
Host As configurações nesta seção personalizam o processo de host do Functions quando você executa projetos localmente. Essas configurações são separadas das configurações de host.json, que também se aplicam quando você executa projetos no Azure.
LocalHttpPort Define a porta padrão usada ao executar o host local do Functions (func host start e func run). A opção de linha de comando --port tem precedência sobre essa configuração. Por exemplo, ao executar no IDE do Visual Studio, você pode alterar o número da porta navegando até a janela "Propriedades do Projeto > Depurar" e especificando explicitamente o número da porta em um comando host start --port <your-port-number> que pode ser fornecido no campo "Argumentos do Aplicativo".
CORS Define as origens permitidas para CORS (Compartilhamento de recurso entre origens). As origens são fornecidas como uma lista separada por vírgulas, sem espaços. Há suporte para o valor do caractere curinga (*), que permite solicitações de qualquer origem.
CORSCredentials Quando definido como true, withCredentials solicitações são permitidas.
ConnectionStrings Uma coleção. Não use essa coleção para as cadeias de conexão usadas por suas associações de função. Ela só é usada por estruturas que devem obter cadeias de conexão da seção ConnectionStrings de um arquivo de configuração, como o Entity Framework. As cadeias de caracteres de conexão neste objeto são adicionadas ao ambiente com o tipo de provedor de System.Data.SqlClient. Os itens nesta coleção não são publicados no Azure com outras configurações de aplicativo. É necessário adicionar explicitamente esses valores à coleção Connection strings das configurações do aplicativo de funções. Se estiver criando um SqlConnection no código de função, você deverá armazenar o valor da cadeia de conexão com as outras conexões nas Configurações de Aplicativos no portal.

As seguintes configurações de aplicativo podem ser incluídas na matriz Values ao serem executadas localmente:

Configuração Valores Descrição
AzureWebJobsStorage Cadeia de conexão da conta de armazenamento, ou
UseDevelopmentStorage=true
Contém a cadeia de conexão para uma conta de Armazenamento do Azure. Necessário quando são usados gatilhos diferentes de HTTP. Para obter mais informações, confira a referência do AzureWebJobsStorage.
Quando o Emulador de Armazenamento do Azure tiver sido instalado localmente e você configurar AzureWebJobsStorage em UseDevelopmentStorage=true, o Core Tools usará o emulador. O emulador é útil durante o desenvolvimento, mas você deve testar com uma conexão de armazenamento real antes da implantação.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Para desabilitar uma função durante a execução local, adicione "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" à coleção, em que <FUNCTION_NAME> é o nome da função. Para saber mais, confira Como desabilitar funções no Azure Functions
FUNCTIONS_WORKER_RUNTIME dotnet
node
java
powershell
python
Indica a linguagem de destino do runtime do Functions. Necessário para a versão 2.x e versões superiores do runtime do Functions. Essa configuração é gerada para seu projeto pelo Core Tools. Para saber mais, confira a referência do FUNCTIONS_WORKER_RUNTIME.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Indica que o PowerShell 7 será usado durante a execução local. Se não estiver definido, o PowerShell Core 6 será usado. Essa configuração é usada apenas durante a execução local. Durante a execução no Azure, a versão do runtime do PowerShell é determinada pela configuração de site do powerShellVersion, que pode ser definida no portal.

Próximas etapas