Partilhar via


Desenvolver Azure Functions localmente usando Core Tools

O Azure Functions Core Tools permite-lhe desenvolver e testar as suas funções no seu computador local. Quando estiveres pronto, também podes usar o Core Tools para implementar o teu projeto de código no Azure e trabalhar com as definições da aplicação.

Você está visualizando a versão em C# deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido das Ferramentas Principais.

Está a ver a versão em Java deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido das Ferramentas Principais.

Você está visualizando a versão JavaScript deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido das Ferramentas Principais.

Você está exibindo a versão PowerShell deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido das Ferramentas Principais.

Está a ver a versão em Python deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido das Ferramentas Principais.

Você está visualizando a versão TypeScript deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido das Ferramentas Principais.

Instale as Ferramentas Centrais do Azure Functions

A maneira recomendada de instalar o Core Tools depende do sistema operacional do seu computador de desenvolvimento local.

Os passos seguintes utilizam um instalador do Windows (MSI) para instalar o Core Tools v4.x. Para mais informações sobre outros instaladores baseados em pacotes, consulte o readme Core Tools.

Descarregue e execute o instalador Core Tools, com base na sua versão do Windows:

  • v4.x - Windows 64 bits (Recomendado. Depuração do Visual Studio Code requer 64 bits.)
  • v4.x - Windows 32 bits

Se usou anteriormente o instalador do Windows (MSI) para instalar o Core Tools no Windows, deve desinstalar a versão antiga de Adicionar Remover Programas antes de instalar a versão mais recente.

Sugestão

Para instalar o Core Tools em Windows Subsystem for Linux (WSL), siga as instruções no separador Linux.

Para obter ajuda com problemas relacionados à versão, consulte Versões das ferramentas principais.

Criar o seu projeto local

Importante

Para Python, deve executar comandos do Core Tools num ambiente virtual. Para mais informações, consulte Quickstart: Criar uma função Python em Azure a partir da linha de comandos.

Na janela do terminal ou em um prompt de comando, execute o seguinte comando para criar um projeto na MyProjFolder pasta:

func init MyProjFolder --worker-runtime dotnet-isolated 

Por defeito, este comando cria um projeto que corre em processo com o host de Funções na versão atual Long-Term Support (LTS) do .NET Core. Pode usar a opção --target-framework para direcionar uma versão específica suportada do .NET, incluindo .NET Framework. Para obter mais informações, consulte a func init referência.

Para uma comparação entre os dois modelos de processo .NET, consulte o artigo de comparação de modos de processo.

O Java usa um arquétipo Maven para criar o projeto local, juntamente com a sua primeira função ativada por HTTP. Em vez de usar func init e func new, você deve seguir as etapas no Início Rápido da Linha de Comando.

func init MyProjFolder --worker-runtime javascript --model V4

Este comando cria um projeto JavaScript que usa a versão desejada do modelo de programação.

func init MyProjFolder --worker-runtime typescript --model V4

Este comando cria um projeto TypeScript que usa a versão desejada do modelo de programação.

func init MyProjFolder --worker-runtime powershell
func init MyProjFolder --worker-runtime python --model V2

Este comando cria um projeto Python que utiliza a versão desejada modelo de programação.

Quando você executa func init sem a --worker-runtime opção, você é solicitado a escolher o idioma do projeto. Para saber mais sobre as opções disponíveis para o func init comando, consulte a func init referência.

Criar uma função

Para adicionar uma função ao seu projeto, execute o func new comando usando a --template opção para selecionar seu modelo de gatilho. O exemplo a seguir cria um gatilho HTTP chamado MyHttpTrigger:

func new --template "Http Trigger" --name MyHttpTrigger

Este exemplo cria um gatilho de Armazenamento de Filas chamado MyQueueTrigger:

func new --template "Azure Queue Storage Trigger" --name MyQueueTrigger

As seguintes considerações se aplicam ao adicionar funções:

  • Quando você executa func new sem a --template opção, você é solicitado a escolher um modelo.

  • Use o func templates list comando para ver a lista completa de modelos disponíveis para o seu idioma.

  • Quando adiciona um gatilho que se liga a um serviço, também terá de adicionar ao ficheiro local.settings.json uma definição de aplicação que faça referência a uma cadeia de ligação ou a uma identidade gerida. Usar as configurações do aplicativo dessa maneira evita que você tenha que incorporar credenciais em seu código. Para obter mais informações, consulte Trabalhar com configurações de aplicativo localmente.

  • As Core Tools também adicionam uma referência à extensão de ligação específica no seu projeto C#.

Para saber mais sobre as opções disponíveis para o func new comando, consulte a func new referência.

Adicionar uma vinculação à sua função

O Functions fornece um conjunto de ligações de entrada e saída específicas para cada serviço, que facilitam a ligação da sua função a outros serviços do Azure sem ter de usar os SDKs do cliente específicos do serviço. Para mais informações, veja conceitos de disparadores e ligações do Azure Functions.

Para adicionar uma ligação de entrada ou saída a uma função existente, você deve atualizar manualmente a definição de função.

O exemplo a seguir mostra a definição de função depois de adicionar uma vinculação de saída do Armazenamento de Fila a uma função desencadeada por HTTP:

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

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

Este exemplo é a definição do objeto MultiResponse, que inclui a ligação de saída.

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

Este exemplo utiliza integração ASP.NET Core. Se não estiveres a usar ASP.NET Core integração, tens de mudar HttpRequest para HttpRequestData e IActionResult para HttpResponseData.

As mensagens são enviadas para a fila quando a função é concluída. A maneira como você define a ligação de saída depende do seu modelo de processo. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligaçõ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 exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

const { app, output } = require('@azure/functions');

const sendToQueue = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  extraOutputs: [sendToQueue],
  handler: async (request, context) => {
    try {
      context.log(`Http function processed request for url "${request.url}"`);

      const name = request.query.get('name') || (await request.text());
      context.log(`Name: ${name}`);

      if (name) {
        const msg = `Name passed to the function ${name}`;
        context.extraOutputs.set(sendToQueue, [msg]);
        return { body: msg };
      } else {
        context.log('Missing required data');
        return { status: 404, body: 'Missing required data' };
      }
    } catch (error) {
      context.log(`Error: ${error}`);
      return { status: 500, body: 'Internal Server Error' };
    }
  },
});

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

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

Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligaçõ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 forma como defines a ligação de saída depende da versão do teu modelo Python. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

import {
  app,
  output,
  HttpRequest,
  HttpResponseInit,
  InvocationContext,
  StorageQueueOutput,
} from '@azure/functions';

const sendToQueue: StorageQueueOutput = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

export async function HttpExample(
  request: HttpRequest,
  context: InvocationContext,
): Promise<HttpResponseInit> {
  try {
    context.log(`Http function processed request for url "${request.url}"`);

    const name = request.query.get('name') || (await request.text());
    context.log(`Name: ${name}`);

    if (name) {
      const msg = `Name passed to the function ${name}`;
      context.extraOutputs.set(sendToQueue, [msg]);
      return { body: msg };
    } else {
      context.log('Missing required data');
      return { status: 404, body: 'Missing required data' };
    }
  } catch (error) {
    context.log(`Error: ${error}`);
    return { status: 500, body: 'Internal Server Error' };
  }
}

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  handler: HttpExample,
});

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

As seguintes considerações se aplicam ao adicionar associações a uma função:

  • Para linguagens que definem funções usando o ficheiro de configuração function.json, Visual Studio Code simplifica o processo de adicionar ligações a uma definição de função existente. Para mais informações, veja Conecte funções a serviços Azure usando ligações.
  • Quando adiciona bindings que se ligam a um serviço, também deve adicionar uma definição de aplicação que faça referência a uma string de conexão ou identidade gerida ao ficheiro local.settings.json. Para obter mais informações, consulte Trabalhar com configurações de aplicativo localmente.
  • Quando você adiciona uma associação suportada, a extensão já deve estar instalada quando seu aplicativo usa o pacote de extensões. Para obter mais informações, consulte pacotes de extensão.
  • Quando você adiciona uma associação que requer uma nova extensão de vinculação, você também deve adicionar uma referência a essa extensão de vinculação específica em seu projeto C#.

Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

Iniciar o tempo de execução das Funções

Antes de executar ou depurar as funções em seu projeto, você precisa iniciar o host Functions a partir do diretório raiz do seu projeto. O host habilita gatilhos para todas as funções no projeto. Use este comando para iniciar o tempo de execução local:

mvn clean package 
mvn azure-functions:run
func start
func start
npm install
npm start     

Este comando deve ser executado em um ambiente virtual.

Quando o host Functions é iniciado, ele gera uma lista de funções no projeto, incluindo as URLs de quaisquer funções acionadas por HTTP, como neste exemplo:

Found the following functions:
Host.Functions.MyHttpTrigger

Job host started
Http Function MyHttpTrigger: http://localhost:7071/api/MyHttpTrigger

A forma como as funções são carregadas depende da configuração do projeto. Para saber mais, consulte Registrando uma função.

Tenha em mente as seguintes considerações ao executar suas funções localmente:

  • Por padrão, a autorização não é imposta localmente para endpoints HTTP. Isso significa que todas as solicitações HTTP locais são tratadas como authLevel = "anonymous". Para obter mais informações, consulte Nível de autorização. Você pode usar a --enableAuth opção para exigir autorização ao executar localmente. Para mais informações, consulte func start

  • Pode usar o emulador local do Azurite ao executar localmente funções que exigem acesso aos serviços do Azure Storage (Queue Storage, Blob Storage e Table Storage) sem ter de se ligar a estes serviços no Azure. Ao usar a emulação local, certifique-se de iniciar o Azurite antes de iniciar o host local (func.exe). Para obter mais informações, consulte Emulação de armazenamento local.

  • Podes usar emulação local de Azurite para satisfazer o requisito de armazenamento do worker Python v2.
  • Você pode acionar funções não-HTTP localmente sem se conectar a um serviço ativo. Para obter mais informações, consulte Executar uma função local.

  • Quando você inclui as informações de conexão do Application Insights no arquivo local.settings.json, os dados de log locais são gravados na instância específica do Application Insights. Para manter os dados de telemetria locais separados dos dados de produção, considere o uso de uma instância separada do Application Insights para desenvolvimento e teste.

  • Ao usar a versão 1.x das Ferramentas do Core, use o comando func host start para iniciar o tempo de execução local.

Executar uma função local

Com o host (func.exe) local do Functions em execução, agora você pode acionar funções individuais para executar e depurar seu código de função. A maneira como você executa uma função individual depende de seu tipo de gatilho.

Nota

Exemplos neste tópico usam a ferramenta cURL para enviar solicitações HTTP do terminal ou de um prompt de comando. Você pode usar uma ferramenta de sua escolha para enviar solicitações HTTP para o servidor local. A ferramenta cURL está disponível por padrão em sistemas baseados em Linux e no Windows 10, compilação 17063 e posteriores. Em versões mais antigas do Windows, deve primeiro transferir e instalar a ferramenta cURL tool.

Os gatilhos HTTP são iniciados enviando uma solicitação HTTP para o endpoint local e a porta, conforme exibido na saída do func.exe, que geralmente tem este formato:

http://localhost:<PORT>/api/<FUNCTION_NAME>

Neste modelo de URL, <FUNCTION_NAME> é o nome da função ou rota e <PORT> é a porta local na qual func.exe está escutando.

Por exemplo, este comando cURL aciona a MyHttpTrigger função de arranque rápido de uma solicitação GET com o parâmetro name passado na string de consulta.

curl --get http://localhost:7071/api/MyHttpTrigger?name=Azure%20Rocks

Este exemplo é a mesma função chamada de uma requisição POST que passa nome no corpo da requisição, mostradas tanto para o shell do Bash como para a linha de comandos do Windows.

curl --request POST http://localhost:7071/api/MyHttpTrigger --data '{"name":"Azure Rocks"}'
curl --request POST http://localhost:7071/api/MyHttpTrigger --data "{'name':'Azure Rocks'}"

As seguintes considerações se aplicam quando chamar endpoints HTTP localmente:

  • Você pode fazer solicitações GET de um navegador passando dados na string de consulta. Para todos os outros métodos HTTP, você deve usar uma ferramenta de teste HTTP que também mantenha seus dados seguros. Para obter mais informações, consulte Ferramentas de teste HTTP.

  • Certifique-se de usar o mesmo nome de servidor e porta que o host do Functions está escutando. Você vê um endpoint como este na saída gerada ao iniciar o Host de Funções. Você pode chamar essa URL usando qualquer método HTTP suportado pelo gatilho.

Publicar no Azure

O Azure Functions Core Tools suporta três tipos de implementação:

Tipo de implementação Comando Descrição
Ficheiros de projeto func azure functionapp publish Implanta arquivos de projeto de funções diretamente no seu app de funções usando implantação zip.
Azure Container Apps func azurecontainerapps deploy Implanta um aplicativo de função em contêiner em um ambiente existente de Aplicativos de Contêiner.
Cluster do Kubernetes func kubernetes deploy Implanta seu aplicativo de função Linux como um contêiner Docker personalizado em um cluster Kubernetes.

Tens de ter instalado localmente o Azure CLI ou Azure PowerShell para poderes publicar para Azure a partir do Core Tools. Por padrão, o Core Tools utiliza estas ferramentas para autenticar-se na sua conta do Azure.

Se você não tiver essas ferramentas instaladas, precisará obter um token de acesso válido para usar durante a implantação. Você pode apresentar um token de acesso usando a --access-token opção nos comandos de implantação.

Implantar arquivos de projeto

Para publicar o seu código local numa aplicação de funções em Azure, use o comando func azure functionapp publish, como no seguinte exemplo:

func azure functionapp publish <FunctionAppName>

Este comando publica ficheiros de projeto do diretório atual para o <FunctionAppName> como um pacote de implantação .zip. Se o projeto requer compilação, ela é feita remotamente durante a implantação.

O Java usa o Maven para publicar o teu projeto local no Azure em vez do Core Tools. Use o seguinte comando Maven para publicar o seu projeto no Azure:

mvn azure-functions:deploy

Quando executar este comando, os recursos do Azure são criados durante a implementação inicial com base nas definições no seu ficheiro pom.xml. Para mais informações, consulte Implementar o projeto de função no Azure.

As seguintes considerações se aplicam a esse tipo de implantação:

  • A publicação substitui os arquivos existentes na implantação do aplicativo de função remota.

  • Deve já ter criado uma aplicação de funções na sua subscrição Azure. Core Tools implanta o código do seu projeto neste recurso de aplicação de função. Para aprender a criar uma aplicação de funções a partir do prompt de comandos ou da janela do terminal usando o Azure CLI ou Azure PowerShell, consulte Azure CLI Samples. Também pode criar estes recursos no portal Azure. Você recebe um erro quando tenta publicar em um <FunctionAppName> que não existe em sua assinatura.

  • Uma pasta de projeto pode conter arquivos e diretórios específicos do idioma que não devem ser publicados. Os itens excluídos são listados em um arquivo .funcignore na pasta raiz do projeto.

  • Por padrão, seu projeto é implantado para que seja executado a partir do pacote de implantação. Para desativar esse modo de implantação recomendado, use a --nozip opção.

  • Uma construção remota é realizada em projetos compilados. Isso pode ser controlado usando a --no-build opção.

  • Use a opção --publish-local-settings para criar automaticamente as definições da aplicação na sua aplicação de função com base nos valores no ficheiro local.settings.json.

  • Para publicar num slot com nome específico na sua aplicação de função, use a --slot opção.

Implantar contêineres

O Core Tools permite-lhe implementar a sua aplicação de funções containerizada tanto para ambientes Azure Container Apps geridos como para clusters Kubernetes que gere.

Use o seguinte func azurecontainerapps deploy comando para implantar uma imagem de contêiner existente em um ambiente de Aplicativos de Contêiner:

func azurecontainerapps deploy --name <APP_NAME> --environment <ENVIRONMENT_NAME> --storage-account <STORAGE_CONNECTION> --resource-group <RESOURCE_GROUP> --image-name <IMAGE_NAME> [--registry-password] [--registry-server] [--registry-username]

Quando implementa para um ambiente Azure Container Apps, aplicam-se as seguintes considerações:

  • O ambiente e a conta de armazenamento já devem existir. A connection string da conta de armazenamento que forneces é usada pela aplicação de funções implementada.

  • Você não precisa criar um recurso de aplicativo de função separado ao implantar em Aplicativos de Contêiner.

  • Cadeias de conexão de armazenamento e outras credenciais de serviço são segredos importantes. Certifique-se de armazenar com segurança todos os arquivos de script usando func azurecontainerapps deploy e não armazená-los em nenhum sistema de controle de origem acessível publicamente. Você pode criptografar o arquivo local.settings.json para maior segurança.

Para mais informações, consulte Azure Container Apps hospedagem de Azure Functions.

Trabalhar com as configurações do aplicativo localmente

Quando a sua aplicação de funções corre em Azure, as definições exigidas pelas suas funções são armazenadas encriptadas nas definições da app. 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 local.

Os itens da coleção Values no ficheiro local.settings.json do seu projeto destinam-se a espelhar itens nas definições application da sua aplicação de funções no Azure.

As seguintes considerações se aplicam ao trabalhar com o arquivo de configurações locais:

  • 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 Principais ajudam-no a encriptar este ficheiro de definições locais para melhorar a segurança. Para obter mais informações, consulte Arquivo de configurações locais. Você também pode criptografar o arquivo local.settings.json para maior segurança.

  • Por defeito, as definições locais não são migradas automaticamente quando o projeto é publicado para o Azure. Usa a opção --publish-local-settings quando publicares os ficheiros do projeto para garantir que estas definições são adicionadas à aplicação de funções no Azure. Os valores na ConnectionStrings seção nunca são publicados. Você também pode carregar configurações do arquivo local.settings.json a qualquer momento.

  • Podes descarregar e sobrescrever as definições do teu ficheiro local.settings.json com as definições da tua aplicação de funções no Azure. Para obter mais informações, consulte Baixar configurações do aplicativo.

  • Os valores das configurações do aplicativo de função também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, consulte Variáveis de ambiente.
  • Os valores das configurações do aplicativo de função também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, consulte Variáveis de ambiente.
  • Os valores das configurações do aplicativo de função também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, consulte Variáveis de ambiente.
  • Os valores das configurações do aplicativo de função também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, consulte Variáveis de ambiente.
  • Os valores das configurações do aplicativo de função também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, consulte Variáveis de ambiente.
  • Quando não há uma cadeia de conexão de armazenamento válida definida para AzureWebJobsStorage e um emulador de armazenamento local não está a ser usado, aparece um erro. Podes usar o Core Tools para descarregar um connection string específico de qualquer uma das tuas contas Azure Storage.

Baixar configurações do aplicativo

A partir da raiz do projeto, use o seguinte comando para descarregar todas as definições da aplicação myfunctionapp12345 em Azure:

func azure functionapp fetch-app-settings myfunctionapp12345

Este comando sobrescrive quaisquer definições existentes no ficheiro local.settings.json com valores de Azure. Quando ainda não estão presentes, novos itens são adicionados à coleção. Para obter mais informações, consulte o func azure functionapp fetch-app-settings comando.

Descarregar uma cadeia de ligação de armazenamento

O Core Tools também facilita a obtenção da connection string de qualquer conta de armazenamento a que tenha acesso. A partir da raiz do projeto, use o seguinte comando para descarregar o connection string de uma conta de armazenamento chamada mystorage12345.

func azure storage fetch-connection-string mystorage12345

Este comando adiciona uma definição chamada mystorage12345_STORAGE ao ficheiro local.settings.json, que contém a connection string para a conta mystorage12345. Para obter mais informações, consulte o func azure storage fetch-connection-string comando.

Para melhorar a segurança durante o desenvolvimento, considere criptografar o arquivo local.settings.json.

Carregar definições locais para o Azure

Quando publicas os ficheiros do teu projeto para Azure sem usar a opção --publish-local-settings, as definições no ficheiro local.settings.json não estão definidas na tua aplicação de funções. Você pode sempre voltar a executar o func azure functionapp publish com a opção --publish-settings-only para carregar apenas as configurações sem publicar novamente os arquivos do projeto.

O exemplo seguinte carrega apenas as definições da coleção Values no ficheiro local.settings.json para a aplicação de funções em Azure chamada myfunctionapp12345:

func azure functionapp publish myfunctionapp12345 --publish-settings-only

Criptografar o arquivo de configurações locais

Para melhorar a segurança das cadeias de conexão e outros dados valiosos em suas configurações locais, as Ferramentas Principais permitem criptografar o arquivo local.settings.json. Quando este ficheiro é encriptado, o runtime desencripta automaticamente as definições quando necessário, tal como acontece com as definições de aplicação no Azure. Também pode desencriptar um ficheiro encriptado localmente para trabalhar com as configurações.

Use o seguinte comando para criptografar o arquivo de configurações locais para o projeto:

func settings encrypt

Use o seguinte comando para descriptografar uma configuração local criptografada, para que você possa trabalhar com ela:

func settings decrypt

Quando o ficheiro de definições é encriptado e desencriptado, a definição do IsEncrypted ficheiro também é atualizada.

Configurar extensões de vinculação

Functions triggers e bindings são implementados como pacotes de extensão .NET (NuGet). Para poder usar uma extensão de vinculação específica, essa extensão deve ser instalada no projeto.

Esta seção não se aplica à versão 1.x do tempo de execução do Functions. Na versão 1.x, as ligações suportadas foram incluídas na extensão principal do produto.

Para projetos de biblioteca de classes C#, adicione referências aos pacotes NuGet específicos para as extensões de vinculação exigidas por suas funções. O projeto de script C# (.csx) deve usar bundles de extensão.

Functions fornece pacotes de extensões para facilitar o trabalho com extensões de ligação no seu projeto. Os pacotes de extensão, que são versionados e definidos no arquivo host.json, instalam um conjunto completo de pacotes de extensão de vinculação compatíveis para seu aplicativo. Seu host.json já deve ter pacotes de extensão ativados. Se, por algum motivo, você precisar adicionar ou atualizar o pacote de extensão no arquivo host.json, consulte Pacotes de extensão.

Se você precisar usar uma extensão de vinculação ou uma versão de extensão que não esteja em um pacote suportado, será necessário instalar manualmente as extensões. Para cenários tão raros, consulte o func extensions install comando.

Versões do Core Tools

As principais versões do Azure Functions Core Tools estão ligadas a versões principais específicas do runtime do Azure Functions. Por exemplo, a versão 4.x do Core Tools suporta a versão 4.x do tempo de execução do Functions. Esta versão é a versão principal recomendada do tempo de execução do Functions e do Core Tools. Pode consultar a versão mais recente do Core Tools no repositório Azure Functions Core Tools.

A partir da versão 4.0.6517 das Ferramentas Core, os projetos de modelos em processo devem referenciar versão 4.5.0 ou posterior de Microsoft.NET.Sdk.Functions. Se uma versão anterior for usada, o func start comando irá erro.

Execute o seguinte comando para determinar a versão da instalação atual do Core Tools:

func --version

Salvo indicação em contrário, os exemplos neste artigo referem-se à versão 4.x.

As seguintes considerações se aplicam às instalações do Core Tools:

  • Você só pode instalar uma versão do Core Tools em um determinado computador.

  • Ao atualizar para a versão mais recente do Core Tools, você deve usar o mesmo método usado para a instalação original para executar a atualização. Por exemplo, se usou um MSI no Windows, desinstale o MSI atual e instale o mais recente. Ou, se você usou npm, execute novamente o npm install commandarquivo .

  • As versões 2.x e 3.x do Core Tools foram usadas com as versões 2.x e 3.x do runtime do Functions, que chegaram ao fim do suporte. Para mais informações, consulte Azure Functions - visão geral das versões do runtime.

  • A versão 1.x do Core Tools é necessária ao usar a versão 1.x do Functions Runtime, que ainda é suportada. Esta versão do Core Tools só pode ser executada localmente em computadores Windows. Se você estiver executando atualmente a versão 1.x, considere migrar seu aplicativo para a versão 4.x hoje mesmo.

Próximos passos

Aprenda a desenvolver, testar e publicar funções do Azure utilizando as ferramentas principais do Azure Functions. Azure Functions Core Tools é open source e está alojada em GitHub. Para apresentar um relatório de bug ou pedido de funcionalidade, criar um problema no GitHub.