Trabalhar com o Azure Functions Core ToolsWork with Azure Functions Core Tools

O Azure Functions Core Tools permite desenvolver e testar as funções no computador local por meio do prompt de comando ou do terminal.Azure Functions Core Tools lets you develop and test your functions on your local computer from the command prompt or terminal. Suas funções locais podem se conectar a serviços do Azure em tempo real e você pode depurar as suas funções em seu computador local usando o runtime total do Functions.Your local functions can connect to live Azure services, and you can debug your functions on your local computer using the full Functions runtime. Você ainda pode implantar um aplicativo de funções para sua assinatura do Azure.You can even deploy a function app to your Azure subscription.

Importante

Não combine o desenvolvimento local com o desenvolvimento do portal no mesmo aplicativo de funções.Do not mix local development with portal development in the same function app. Ao criar e publicar funções de um projeto local, não tente manter ou modificar o código do projeto no portal.When you create and publish functions from a local project, you should not try to maintain or modify project code in the portal.

Desenvolver funções em seu computador local e publicá-las no Azure usando ferramentas básicas segue estas etapas básicas:Developing functions on your local computer and publishing them to Azure using Core Tools follows these basic steps:

Versões de Core ToolsCore Tools versions

Há três versões do Azure Functions Core Tools.There are three versions of Azure Functions Core Tools. A versão usada depende do seu ambiente de desenvolvimento local, da escolha do idiomae do nível de suporte necessário:The version you use depends on your local development environment, choice of language, and level of support required:

Salvo indicação em contrário, os exemplos neste artigo são para a versão 3. x.Unless otherwise noted, the examples in this article are for version 3.x.

Pré-requisitosPrerequisites

No momento, Azure Functions Core Tools depende do CLI do Azure para autenticação com sua conta do Azure.Azure Functions Core Tools currently depends on the Azure CLI for authenticating with your Azure account. Isso significa que você deve instalar o CLI do Azure localmente para poder publicar no Azure por meio de Azure Functions Core Tools.This means that you must install the Azure CLI locally to be able to publish to Azure from Azure Functions Core Tools.

Instalação das ferramentas básicas do Azure FunctionsInstall the Azure Functions Core Tools

O Azure Functions Core Tools é uma versão local do Azure Functions runtime que pode ser executada no computador local de desenvolvimento.Azure Functions Core Tools includes a version of the same runtime that powers Azure Functions runtime that you can run on your local development computer. Ele também fornece comandos para criar funções, se conectar ao Azure e implantar projetos de função.It also provides commands to create functions, connect to Azure, and deploy function projects.

Versão 3. x e 2. xVersion 3.x and 2.x

A versão 3. x/2. x das ferramentas usa o Azure Functions Runtime criado no .NET Core.Version 3.x/2.x of the tools uses the Azure Functions runtime that is built on .NET Core. Esta versão tem suporte em todas as plataformas que o .NET Core dá suporte, incluindo Windows, MacOSe Linux.This version is supported on all platforms .NET Core supports, including Windows, macOS, and Linux.

Importante

Você pode ignorar o requisito de instalação do SDK do .NET Core usando pacotes de extensão.You can bypass the requirement for installing the .NET Core SDK by using extension bundles.

As etapas a seguir usam um MSI (Windows Installer) para instalar as ferramentas principais v3. x.The following steps use a Windows installer (MSI) to install Core Tools v3.x. Para obter mais informações sobre outros instaladores baseados em pacote, que são necessários para instalar as ferramentas principais v2. x, consulte o Leiame das ferramentas principais.For more information about other package-based installers, which are required to install Core Tools v2.x, see the Core Tools readme.

  1. Baixe e execute o instalador das ferramentas principais, com base em sua versão do Windows:Download and run the Core Tools installer, based on your version of Windows:

  2. Se você não planeja usar pacotes de extensão, instale o SDK do .NET Core 3. x para Windows.If you don't plan to use extension bundles, install the .NET Core 3.x SDK for Windows.

Criar um projeto de funções localCreate a local Functions project

Um diretório de projeto de funções contém os arquivos host. JSON e local.settings.json, ao longo de subpastas que contêm o código para funções individuais.A functions project directory contains the files host.json and local.settings.json, along with subfolders that contain the code for individual functions. Esse diretório é o equivalente ao de um aplicativo de funções no Azure.This directory is the equivalent of a function app in Azure. Para saber mais sobre a estrutura de pastas do Functions, consulte o guia de desenvolvedores do Azure Functions.To learn more about the Functions folder structure, see the Azure Functions developers guide.

A versão 3. x/2. x exige que você selecione um idioma padrão para seu projeto quando ele for inicializado.Version 3.x/2.x requires you to select a default language for your project when it is initialized. Na versão 3. x/2. x, todas as funções adicionadas usam modelos de idioma padrão.In version 3.x/2.x, all functions added use default language templates. Na versão 1.x, você especifica a linguagem cada vez que você criar uma função.In version 1.x, you specify the language each time you create a function.

Na janela do terminal ou em um prompt de comando, execute o seguinte comando para criar o projeto e o repositório Git local:In the terminal window or from a command prompt, run the following command to create the project and local Git repository:

func init MyFunctionProj

Quando você fornece um nome de projeto, uma nova pasta com esse nome é criada e inicializada.When you provide a project name, a new folder with that name is created and initialized. Caso contrário, a pasta atual é inicializada.Otherwise, the current folder is initialized.
Na versão 3. x/2. x, ao executar o comando, você deve escolher um tempo de execução para seu projeto.In version 3.x/2.x, when you run the command you must choose a runtime for your project.

Select a worker runtime:
dotnet
node
python 
powershell

Use cima/para baixo de teclas de direção para escolher um idioma, em seguida, pressione Enter.Use the up/down arrow keys to choose a language, then press Enter. Se você planeja desenvolver funções JavaScript ou TypeScript, escolha e, em seguida, selecione o idioma.If you plan to develop JavaScript or TypeScript functions, choose node, and then select the language. O TypeScript tem alguns requisitos adicionais.TypeScript has some additional requirements.

A saída se parece com o seguinte exemplo para um projeto JavaScript:The output looks like the following example for a JavaScript project:

Select a worker runtime: node
Writing .gitignore
Writing host.json
Writing local.settings.json
Writing C:\myfunctions\myMyFunctionProj\.vscode\extensions.json
Initialized empty Git repository in C:/myfunctions/myMyFunctionProj/.git/

func inito oferece suporte às seguintes opções, que são a versão 3. x/2. x-only, salvo indicação em contrário:func init supports the following options, which are version 3.x/2.x-only, unless otherwise noted:

OpçãoOption DescriçãoDescription
--csx Cria funções do .NET como script C#, que é o comportamento da versão 1. x.Creates .NET functions as C# script, which is the version 1.x behavior. Válido somente com --worker-runtime dotnet .Valid only with --worker-runtime dotnet.
--docker Cria um Dockerfile para um contêiner usando uma imagem base com base no escolhido --worker-runtime .Creates a Dockerfile for a container using a base image that is based on the chosen --worker-runtime. Use esta opção quando planejar publicar em um contêiner do Linux personalizado.Use this option when you plan to publish to a custom Linux container.
--docker-only Adiciona um Dockerfile a um projeto existente.Adds a Dockerfile to an existing project. Solicita o tempo de execução de trabalho se não for especificado ou definido em local.settings.jsem.Prompts for the worker-runtime if not specified or set in local.settings.json. Use esta opção quando você planeja publicar um projeto existente para um contêiner personalizado do Linux.Use this option when you plan to publish an existing project to a custom Linux container.
--force Inicializa o projeto mesmo quando há arquivos existentes no projeto.Initialize the project even when there are existing files in the project. Essa configuração substitui os arquivos existentes pelo mesmo nome.This setting overwrites existing files with the same name. Os outros arquivos na pasta do projeto não serão afetados.Other files in the project folder aren't affected.
--language Inicializa um projeto específico de idioma.Initializes a language specific project. Atualmente com suporte quando --worker-runtime definido como node .Currently supported when --worker-runtime set to node. As opções são typescript e javascript .Options are typescript and javascript. Você também pode usar o --worker-runtime javascript ou o --worker-runtime typescript .You can also use --worker-runtime javascript or --worker-runtime typescript.
--managed-dependencies Instala dependências gerenciadas.Installs managed dependencies. Atualmente, somente o tempo de execução do operador do PowerShell dá suporte a essa funcionalidade.Currently, only the PowerShell worker runtime supports this functionality.
--source-control Controla se um repositório git é criado.Controls whether a git repository is created. Por padrão, não é criado um repositório.By default, a repository isn't created. Quando true, um repositório é criado.When true, a repository is created.
--worker-runtime Define o runtime de linguagem para o projeto.Sets the language runtime for the project. Os valores com suporte são: csharp , dotnet , javascript , node (JavaScript), powershell , python e typescript .Supported values are: csharp, dotnet, javascript,node (JavaScript), powershell, python, and typescript. Para Java, use o Maven. Quando não estiver definido, você será solicitado a escolher o tempo de execução durante a inicialização.For Java, use Maven.When not set, you're prompted to choose your runtime during initialization.

Importante

Por padrão, a versão 2. x e versões posteriores das ferramentas principais criam projetos de aplicativo de funções para o tempo de execução do .NET como projetos de classe C# (. csproj).By default, version 2.x and later versions of the Core Tools create function app projects for the .NET runtime as C# class projects (.csproj). Esses projetos C#, que podem ser usados com o Visual Studio ou com Visual Studio Code, são compilados durante o teste e ao publicar no Azure.These C# projects, which can be used with Visual Studio or Visual Studio Code, are compiled during testing and when publishing to Azure. Se você deseja criar e trabalhar com o os mesmos arquivos de script C# (. CSx) criados na versão 1. x e no portal, você deve incluir o --csx parâmetro ao criar e implantar funções.If you instead want to create and work with the same C# script (.csx) files created in version 1.x and in the portal, you must include the --csx parameter when you create and deploy functions.

Extensões de registroRegister extensions

Com exceção dos gatilhos HTTP e Timer, as associações de funções no tempo de execução versão 2. x e superiores são implementadas como pacotes de extensão.With the exception of HTTP and timer triggers, Functions bindings in runtime version 2.x and higher are implemented as extension packages. Na versão 2. x e além do tempo de execução de Azure Functions, você precisa registrar explicitamente as extensões para os tipos de associação usados em suas funções.In version 2.x and beyond of the Azure Functions runtime, you have to explicitly register the extensions for the binding types used in your functions. As exceções a isso são as associações HTTP e os gatilhos de temporizador que não exigem extensões.The exceptions to this are HTTP bindings and timer triggers, which do not require extensions.

Você pode optar por instalar as extensões de associação individualmente ou pode adicionar uma referência de pacote de extensão ao host.jsno arquivo de projeto.You can choose to install binding extensions individually, or you can add an extension bundle reference to the host.json project file. Os pacotes de extensão eliminam a possibilidade de haver problemas de compatibilidade de pacote ao usar vários tipos de associação.Extension bundles removes the chance of having package compatibility issues when using multiple binding types. É a abordagem recomendada para registrar extensões de associação.It is the recommended approach for registering binding extensions. Os pacotes de extensão também eliminam a necessidade de instalar o SDK do .NET Core 2. x.Extension bundles also removes the requirement of installing the .NET Core 2.x SDK.

Pacotes de extensãoExtension bundles

A maneira mais fácil de instalar as extensões de associação é habilitar pacotes de extensão.The easiest way to install binding extensions is to enable extension bundles. Quando você habilita os pacotes, um conjunto predefinido de pacotes de extensão é instalado automaticamente.When you enable bundles, a predefined set of extension packages is automatically installed.

Para habilitar pacotes de extensão, abra o arquivo host.json e atualize seu conteúdo de acordo com o código a seguir:To enable extension bundles, open the host.json file and update its contents to match the following code:

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

Para saber mais, consulte registrar Azure Functions extensões de associação.To learn more, see Register Azure Functions binding extensions. Você deve adicionar pacotes de extensão ao host.jsno antes de adicionar associações ao function.jsno arquivo.You should add extension bundles to the host.json before you add bindings to the function.json file.

Registrar extensões individuaisRegister individual extensions

Se precisar instalar extensões que não estejam em um pacote, você poderá registrar manualmente pacotes de extensão individuais para associações específicas.If you need to install extensions that aren't in a bundle, you can manually register individual extension packages for specific bindings.

Observação

Para registrar manualmente as extensões usando func extensions install o, você deve ter o SDK do .NET Core 2. x instalado.To manually register extensions by using func extensions install, you must have the .NET Core 2.x SDK installed.

Depois de atualizar o arquivo function.json para incluir todas as associações que a função precisa, execute o comando a seguir na pasta do projeto.After you have updated your function.json file to include all the bindings that your function needs, run the following command in the project folder.

func extensions install

O comando lê o arquivo function.json para saber quais são os pacotes necessários, instala-os e recria o projeto de extensão.The command reads the function.json file to see which packages you need, installs them, and rebuilds the extensions project. Ele adiciona as novas associações na versão atual, mas não atualiza as associações existentes.It adds any new bindings at the current version but does not update existing bindings. Use a opção --force para atualizar as associações existentes para a versão mais recente nas novas instalações.Use the --force option to update existing bindings to the latest version when installing new ones.

Arquivo de configurações localLocal settings file

O local.settings.jsem arquivos armazena configurações do aplicativo, cadeias de conexão e configurações usadas pelas ferramentas de desenvolvimento local.The local.settings.json file stores app settings, connection strings, and settings used by local development tools. As configurações na local.settings.jsno arquivo são usadas somente quando você está executando projetos localmente.Settings in the local.settings.json file are used only when you're running projects locally. O arquivo de configurações local tem esta estrutura:The local settings file has this structure:

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

Essas configurações têm suporte quando você executa projetos localmente:These settings are supported when you run projects locally:

ConfiguraçãoSetting DescriçãoDescription
IsEncrypted Quando essa configuração é definida como true , todos os valores são criptografados com uma chave do computador local.When this setting is set to true, all values are encrypted with a local machine key. Usado com func settings comandos.Used with func settings commands. O valor padrão é false.Default value is false.
Values Matriz de configurações de aplicativo e cadeias de conexão usadas quando um projeto é executado localmente.Array of application settings and connection strings used when a project is running locally. Esses pares de chave-valor (cadeia de caracteres de cadeia de caracteres) correspondem às configurações do aplicativo em seu aplicativo de funções no Azure, como AzureWebJobsStorage .These key-value (string-string) pairs correspond to application settings in your function app in Azure, like 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.Many triggers and bindings have a property that refers to a connection string app setting, like Connection for the Blob storage trigger. Para essas propriedades, você precisa de uma configuração de aplicativo definida na Values matriz.For these properties, you need an application setting defined in the Values array.
AzureWebJobsStorageé uma configuração de aplicativo necessária para gatilhos diferentes de HTTP.AzureWebJobsStorage is a required app setting for triggers other than HTTP.
A versão 2. x e superior do tempo de execução do Functions requer a FUNCTIONS_WORKER_RUNTIME configuração [], que é gerada para o projeto por ferramentas principais.Version 2.x and higher of the Functions runtime requires the [FUNCTIONS_WORKER_RUNTIME] setting, which is generated for your project by Core Tools.
Quando você tiver o emulador de armazenamento do Azure instalado localmente e definido AzureWebJobsStorage como UseDevelopmentStorage=true , as ferramentas principais usarão o emulador.When you have the Azure storage emulator installed locally and you set AzureWebJobsStorage to UseDevelopmentStorage=true, Core Tools uses the emulator. O emulador é útil durante o desenvolvimento, mas você deve testar com uma conexão de armazenamento real antes da implantação.The emulator is useful during development, but you should test with an actual storage connection before deployment.
Os valores devem ser cadeias de caracteres e não objetos JSON ou matrizes.Values must be strings and not JSON objects or arrays. Os nomes de configuração não podem incluir dois-pontos ( : ) ou um sublinhado duplo ( __ ).Setting names can't include a colon (:) or a double underline (__). Esses caracteres são reservados pelo tempo de execução.These characters are reserved by the runtime.
Host As configurações nesta seção personalizam o processo de host do Functions quando você executa projetos localmente.Settings in this section customize the Functions host process when you run projects locally. Essas configurações são separadas do host.jsem configurações, que também se aplicam quando você executa projetos no Azure.These settings are separate from the host.json settings, which also apply when you run projects in Azure.
LocalHttpPort Define a porta padrão usada ao executar o host local do Functions (func host start e func run).Sets the default port used when running the local Functions host (func host start and func run). A --port opção de linha de comando tem precedência sobre essa configuração.The --port command-line option takes precedence over this setting.
CORS Define as origens permitidas para CORS (Compartilhamento de recurso entre origens).Defines the origins allowed for cross-origin resource sharing (CORS). As origens são fornecidas como uma lista separada por vírgulas, sem espaços.Origins are supplied as a comma-separated list with no spaces. Há suporte para o valor do caractere curinga (*), que permite solicitações de qualquer origem.The wildcard value (*) is supported, which allows requests from any origin.
CORSCredentials Quando definido como true , permite withCredentials solicitações.When set to true, allows withCredentials requests.
ConnectionStrings Uma coleção.A collection. Não use essa coleção para as cadeias de conexão usadas por suas associações de função.Don't use this collection for the connection strings used by your function bindings. Essa coleção é usada somente por estruturas que normalmente recebem cadeias de conexão da ConnectionStrings seção de um arquivo de configuração, como Entity Framework.This collection is used only by frameworks that typically get connection strings from the ConnectionStrings section of a configuration file, like 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.Connection strings in this object are added to the environment with the provider type of System.Data.SqlClient. Os itens nesta coleção não são publicados no Azure com outras configurações de aplicativo.Items in this collection aren't published to Azure with other app settings. Você deve adicionar esses valores explicitamente à Connection strings coleção de suas configurações do aplicativo de funções.You must explicitly add these values to the Connection strings collection of your function app settings. Se você estiver criando um SqlConnection no seu código de função, deverá armazenar o valor da cadeia de conexão com suas outras conexões nas configurações do aplicativo no Portal.If you're creating a SqlConnection in your function code, you should store the connection string value with your other connections in Application Settings in the portal.

Por padrão, essas configurações não são migradas automaticamente quando o projeto é publicado no Azure.By default, these settings are not migrated automatically when the project is published to Azure. Use a opção --publish-local-settingsquando publicar para se certificar de que essas configurações serão adicionadas ao aplicativo de funções no Azure.Use the --publish-local-settings switch when you publish to make sure these settings are added to the function app in Azure. Observe que os valores em ConnectionStrings nunca são publicados.Note that values in ConnectionStrings are never published.

Os valores de configuração do aplicativo de funções também podem ser lidos em seu código como variáveis de ambiente.The function app settings values can also be read in your code as environment variables. Para obter mais informações, confira a seção de variáveis de Ambiente desses tópicos de referência específicos de linguagem:For more information, see the Environment variables section of these language-specific reference topics:

Quando nenhuma cadeia de conexão de armazenamento válida é definida para AzureWebJobsStorage e o emulador não está sendo usado, a seguinte mensagem de erro é mostrada:When no valid storage connection string is set for AzureWebJobsStorage and the emulator isn't being used, the following error message is shown:

Valor ausente para AzureWebJobsStorage em local.settings.json.Missing value for AzureWebJobsStorage in local.settings.json. Isso é necessário para todos os gatilhos diferentes de HTTP.This is required for all triggers other than HTTP. É possível executar 'func azure functionapp fetch-app-settings <functionAppName>' ou especificar uma cadeia de conexão em local.settings.json.You can run 'func azure functionapp fetch-app-settings <functionAppName>' or specify a connection string in local.settings.json.

Obter suas cadeias de conexão de armazenamentoGet your storage connection strings

Mesmo ao usar o Emulador de Armazenamento do Microsoft Azure para desenvolvimento, talvez você queira testar com uma conexão de armazenamento real.Even when using the Microsoft Azure Storage Emulator for development, you may want to test with an actual storage connection. Supondo que você já tenha criado uma conta de armazenamento, será possível obter uma cadeia de conexão de armazenamento válida de uma destas maneiras:Assuming you have already created a storage account, you can get a valid storage connection string in one of the following ways:

  • No [portal do Azure], procure e selecione contas de armazenamento.From the Azure portal, search for and select Storage accounts. Selecionar contas de armazenamento de portal do AzureSelect Storage accounts from Azure portal

    Selecione sua conta de armazenamento, selecione chaves de acesso em configuraçõese, em seguida, copie um dos valores da cadeia de conexão .Select your storage account, select Access keys in Settings, then copy one of the Connection string values. Copiar cadeia de conexão do portal do AzureCopy connection string from Azure portal

  • Use o Gerenciador de Armazenamento do Azure para conectar-se à sua conta do Azure.Use Azure Storage Explorer to connect to your Azure account. No Gerenciador, expanda sua assinatura, expanda contas de armazenamento, selecione sua conta de armazenamento e copie a cadeia de conexão primária ou secundária.In the Explorer, expand your subscription, expand Storage Accounts, select your storage account, and copy the primary or secondary connection string.

    Copiar cadeia de conexão do Gerenciador de Armazenamento

  • Use as Ferramentas Básicas para baixar a cadeia de conexão do Azure com um dos seguintes comandos:Use Core Tools to download the connection string from Azure with one of the following commands:

    • Baixe todas as configurações de um aplicativo de funções existente:Download all settings from an existing function app:

      func azure functionapp fetch-app-settings <FunctionAppName>
      
    • Obtenha a cadeia de conexão para uma conta de armazenamento específica:Get the Connection string for a specific storage account:

      func azure storage fetch-connection-string <StorageAccountName>
      

      Quando você ainda não tiver entrado no Azure, você será solicitado a fazê-lo.When you aren't already signed in to Azure, you're prompted to do so.

Criar uma funçãoCreate a function

Para criar uma função, execute o seguinte comando:To create a function, run the following command:

func new

Na versão 3. x/2. x, quando você executar, será func new solicitado que você escolha um modelo no idioma padrão do seu aplicativo de funções e, em seguida, você também será solicitado a escolher um nome para a função.In version 3.x/2.x, when you run func new you are prompted to choose a template in the default language of your function app, then you are also prompted to choose a name for your function. Na versão 1.x, você também precisará escolher o idioma.In version 1.x, you are also prompted to choose the language.

Select a language: Select a template:
Blob trigger
Cosmos DB trigger
Event Grid trigger
HTTP trigger
Queue trigger
SendGrid
Service Bus Queue trigger
Service Bus Topic trigger
Timer trigger

Código de função é gerado em uma subpasta com o nome da função fornecido, como você pode ver na seguinte saída do gatilho de fila:Function code is generated in a subfolder with the provided function name, as you can see in the following queue trigger output:

Select a language: Select a template: Queue trigger
Function name: [QueueTriggerJS] MyQueueTrigger
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\index.js
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\readme.md
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\sample.dat
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\function.json

Você também pode especificar essas opções no comando usando os seguintes argumentos:You can also specify these options in the command using the following arguments:

ArgumentoArgument DescriçãoDescription
--csx (Versão 2. x e versões posteriores.) Gera os mesmos modelos de script C# (. CSX) usados na versão 1. x e no Portal.(Version 2.x and later versions.) Generates the same C# script (.csx) templates used in version 1.x and in the portal.
--language, -l--language, -l A linguagem de programação modelo, como C#, F# ou JavaScript.The template programming language, such as C#, F#, or JavaScript. Essa opção é necessária na versão 1.x.This option is required in version 1.x. Na versão 2. x e versões posteriores, não use essa opção ou escolha um idioma que corresponda ao tempo de execução do trabalho.In version 2.x and later versions, do not use this option or choose a language that matches the worker runtime.
--name, -n--name, -n O nome da função.The function name.
--template, -t--template, -t Use o func templates list comando para ver a lista completa de modelos disponíveis para cada idioma com suporte.Use the func templates list command to see the complete list of available templates for each supported language.

Por exemplo, para criar um gatilho de HTTP de JavaScript em um único comando, execute:For example, to create a JavaScript HTTP trigger in a single command, run:

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

Para criar uma função ativada por fila em um único comando, execute:To create a queue-triggered function in a single command, run:

func new --template "Queue Trigger" --name QueueTriggerJS

Executar funções localmenteRun functions locally

Para executar um projeto de funções, execute o host de funções.To run a Functions project, run the Functions host. O host habilita gatilhos para todas as funções no projeto.The host enables triggers for all functions in the project. O comando start varia, dependendo da linguagem do projeto.The start command varies, depending on your project language.

func start --build

Observação

A versão 1. x do tempo de execução do Functions requer o host comando, como no exemplo a seguir:Version 1.x of the Functions runtime requires the host command, as in the following example:

func host start

func start dá suporte para as seguintes opções:func start supports the following options:

OpçãoOption DESCRIÇÃODescription
--no-build Não compile o projeto atual antes da execução.Do no build current project before running. Somente para projetos dotnet.For dotnet projects only. O padrão é definido como false.Default is set to false. Sem suporte para a versão 1. x.Not supported for version 1.x.
--cors-credentials Permitir solicitações autenticadas entre origens (ou seja, cookies e o cabeçalho de autenticação) sem suporte para a versão 1. x.Allow cross-origin authenticated requests (i.e. cookies and the Authentication header) Not supported for version 1.x.
--cors Uma lista separada por vírgulas de origens CORS, sem espaços.A comma-separated list of CORS origins, with no spaces.
--language-worker Argumentos para configurar o trabalhador de idioma.Arguments to configure the language worker. Por exemplo, você pode habilitar a depuração para o trabalho de idioma fornecendo a porta de depuração e outros argumentos necessários.For example, you may enable debugging for language worker by providing debug port and other required arguments. Sem suporte para a versão 1. x.Not supported for version 1.x.
--cert O caminho para um arquivo .pfx que contém uma chave privada.The path to a .pfx file that contains a private key. Usado somente com --useHttps.Only used with --useHttps. Sem suporte para a versão 1. x.Not supported for version 1.x.
--password A senha ou um arquivo que contém a senha para um arquivo .pfx.Either the password or a file that contains the password for a .pfx file. Usado somente com --cert.Only used with --cert. Sem suporte para a versão 1. x.Not supported for version 1.x.
--port, -p--port, -p A porta local na qual escutar.The local port to listen on. Valor Padrão: 7071.Default value: 7071.
--pause-on-error Pausar para entrada adicional antes de encerrar o processo.Pause for additional input before exiting the process. Usado apenas ao iniciar as Core Tools de um IDE (ambiente de desenvolvimento integrado).Used only when launching Core Tools from an integrated development environment (IDE).
--script-root, --prefix--script-root, --prefix Usado para especificar o caminho para a raiz do aplicativo de funções que deve ser executado ou implantado.Used to specify the path to the root of the function app that is to be run or deployed. Usado para projetos compilados que geram arquivos de projeto para uma subpasta.This is used for compiled projects that generate project files into a subfolder. Por exemplo, quando você cria um projeto de biblioteca de classes C#, os arquivos host.json, local.settings.json e function.json são gerados em uma subpasta raiz com um caminho como MyProject/bin/Debug/netstandard2.0.For example, when you build a C# class library project, the host.json, local.settings.json, and function.json files are generated in a root subfolder with a path like MyProject/bin/Debug/netstandard2.0. Nesse caso, defina o prefixo como --script-root MyProject/bin/Debug/netstandard2.0.In this case, set the prefix as --script-root MyProject/bin/Debug/netstandard2.0. Essa é a raiz do aplicativo de funções durante a execução no Azure.This is the root of the function app when running in Azure.
--timeout, -t--timeout, -t O tempo limite para o host de funções ser iniciado, em segundos.The timeout for the Functions host to start, in seconds. Padrão: 20 segundos.Default: 20 seconds.
--useHttps Associar a https://localhost:{port} em vez de http://localhost:{port}.Bind to https://localhost:{port} rather than to http://localhost:{port}. Por padrão, essa opção cria um certificado confiável no computador.By default, this option creates a trusted certificate on your computer.

Quando o host de funções é iniciado, ele gera as funções acionadas por URL de HTTP:When the Functions host starts, it outputs the URL of HTTP-triggered functions:

Found the following functions:
Host.Functions.MyHttpTrigger

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

Importante

Ao executar localmente, a autorização não é imposta para pontos de extremidade HTTP.When running locally, authorization isn't enforced for HTTP endpoints. Isso significa que todas as solicitações HTTP locais são tratadas como authLevel = "anonymous".This means that all local HTTP requests are handled as authLevel = "anonymous". Para obter mais informações, confira o artigo de associação HTTP.For more information, see the HTTP binding article.

Transferência dos dados de teste para uma funçãoPassing test data to a function

Para testar as funções localmente, inicie o host do Functions e chame os pontos de extremidade no servidor local usando solicitações HTTP.To test your functions locally, you start the Functions host and call endpoints on the local server using HTTP requests. O ponto de extremidade que você chama depende do tipo de função.The endpoint you call depends on the type of function.

Observação

Os exemplos neste tópico usam a ferramenta cURL para enviar solicitações HTTP do terminal ou de um prompt de comando.Examples in this topic use the cURL tool to send HTTP requests from the terminal or a command prompt. Você pode usar uma ferramenta de sua escolha para enviar solicitações HTTP para o servidor local.You can use a tool of your choice to send HTTP requests to the local server. A ferramenta de rotação está disponível por padrão em sistemas baseados em Linux e no Windows 10 Build 17063 e posterior.The cURL tool is available by default on Linux-based systems and Windows 10 build 17063 and later. No Windows mais antigo, você deve primeiro baixar e instalar a ferramenta de rotação.On older Windows, you must first download and install the cURL tool.

Para ter informações mais gerais sobre o teste de funções, confira Estratégias para testar seu código no Azure Functions.For more general information on testing functions, see Strategies for testing your code in Azure Functions.

Funções disparadas por HTTP e webhookHTTP and webhook triggered functions

Chame o seguinte ponto de extremidade para executar localmente funções disparadas por HTTP e webhook:You call the following endpoint to locally run HTTP and webhook triggered functions:

http://localhost:{port}/api/{function_name}

Use o mesmo nome de servidor e porta no qual o host do Functions está escutando.Make sure to use the same server name and port that the Functions host is listening on. Veja isso na saída gerada ao iniciar o host do Function.You see this in the output generated when starting the Function host. Chame essa URL usando qualquer método HTTP com suporte do disparador.You can call this URL using any HTTP method supported by the trigger.

O seguinte comando cURL dispara a função de início rápido MyHttpTrigger de uma solicitação GET com o parâmetro name transmitido na cadeia de consulta.The following cURL command triggers the MyHttpTrigger quickstart function from a GET request with the name parameter passed in the query string.

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

O exemplo a seguir é a mesma função chamada a partir de uma solicitação POST passando name no corpo da solicitação:The following example is the same function called from a POST request passing name in the request body:

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

Você pode fazer solicitações GET de um navegador passando dados na cadeia de consulta.You can make GET requests from a browser passing data in the query string. Para todos os outros métodos HTTP, você deve usar cURL, Fiddler, Postman ou uma ferramenta de teste HTTP semelhante.For all other HTTP methods, you must use cURL, Fiddler, Postman, or a similar HTTP testing tool.

Funções disparadas por algo diferente de HTTPNon-HTTP triggered functions

Para todos os tipos de funções que não sejam gatilhos HTTP e gatilhos de grade de eventos, você pode testar suas funções localmente chamando um ponto de extremidade de administração.For all kinds of functions other than HTTP triggers and webhooks and Event Grid triggers, you can test your functions locally by calling an administration endpoint. Chamar esse ponto de extremidade com uma solicitação HTTP POST no servidor local dispara a função.Calling this endpoint with an HTTP POST request on the local server triggers the function.

Para testar as funções disparadas pela grade de eventos localmente, consulte teste local com aplicativo Web do visualizador.To test Event Grid triggered functions locally, see Local testing with viewer web app.

Como alternativa, é possível passar dados de teste para a execução no corpo da solicitação POST.You can optionally pass test data to the execution in the body of the POST request. Essa funcionalidade é semelhante á guia Teste no Portal do Azure.This functionality is similar to the Test tab in the Azure portal.

Chame o seguinte ponto de extremidade de administrador para disparar funções que não são HTTP:You call the following administrator endpoint to trigger non-HTTP functions:

http://localhost:{port}/admin/functions/{function_name}

Para passar dados de teste para o ponto de extremidade administrador de uma função, é necessário fornecer os dados no corpo de uma mensagem de solicitação POST.To pass test data to the administrator endpoint of a function, you must supply the data in the body of a POST request message. O corpo da mensagem deve ter o seguinte formato JSON:The message body is required to have the following JSON format:

{
    "input": "<trigger_input>"
}

O valor <trigger_input> contém dados em um formato esperado pela função.The <trigger_input> value contains data in a format expected by the function. O exemplo de cURL a seguir é um POST para uma função QueueTriggerJS.The following cURL example is a POST to a QueueTriggerJS function. Nesse caso, a entrada é uma cadeia de caracteres equivalente à mensagem esperada na fila.In this case, the input is a string that is equivalent to the message expected to be found in the queue.

curl --request POST -H "Content-Type:application/json" --data '{"input":"sample queue data"}' http://localhost:7071/admin/functions/QueueTrigger

Usando o func run comando (somente versão 1. x)Using the func run command (version 1.x only)

Importante

func runSó há suporte para o comando na versão 1. x das ferramentas.The func run command is only supported in version 1.x of the tools. Para saber mais, consulte o tópico Como direcionar para versões do Azure Functions runtime.For more information, see the topic How to target Azure Functions runtime versions.

Na versão 1. x, você também pode invocar uma função diretamente usando func run <FunctionName> e fornecer dados de entrada para a função.In version 1.x, you can also invoke a function directly by using func run <FunctionName> and provide input data for the function. Esse comando é semelhante à execução de uma função usando a guia Testar no Portal do Azure.This command is similar to running a function using the Test tab in the Azure portal.

func run dá suporte para as seguintes opções:func run supports the following options:

OpçãoOption DescriçãoDescription
--content, -c--content, -c Conteúdo embutido.Inline content.
--debug, -d--debug, -d Anexe um depurador ao processo de host antes de executar a função.Attach a debugger to the host process before running the function.
--timeout, -t--timeout, -t Tempo de espera (em segundos) até que o host local de funções esteja pronto.Time to wait (in seconds) until the local Functions host is ready.
--file, -f--file, -f O nome do arquivo a ser usado como conteúdo.The file name to use as content.
--no-interactive Não solicitará a entrada.Does not prompt for input. Útil para cenários de automação.Useful for automation scenarios.

Por exemplo, para chamar uma função ativada por HTTP e passar o corpo do conteúdo, execute o seguinte comando:For example, to call an HTTP-triggered function and pass content body, run the following command:

func run MyHttpTrigger -c '{\"name\": \"Azure\"}'

Publicar no AzurePublish to Azure

O Azure Functions Core Tools dá suporte a dois tipos de implantação: Implantando arquivos de projeto de função diretamente em seu aplicativo de funções por meio da implantação de zip e implantando um contêiner do Docker personalizado.The Azure Functions Core Tools supports two types of deployment: deploying function project files directly to your function app via Zip Deploy and deploying a custom Docker container. Você já deve ter criado um aplicativo de funções em sua assinatura do Azure, no qual você implantará seu código.You must have already created a function app in your Azure subscription, to which you'll deploy your code. Os projetos que exigem build devem ser compilados para que os binários possam ser implantados.Projects that require compilation should be built so that the binaries can be deployed.

Importante

Você deve ter o CLI do Azure instalado localmente para poder publicar no Azure por meio das ferramentas principais.You must have the Azure CLI installed locally to be able to publish to Azure from Core Tools.

Uma pasta de projeto pode conter arquivos e diretórios específicos do idioma que não devem ser publicados.A project folder may contain language-specific files and directories that shouldn't be published. Itens excluídos são listados em um arquivo. funcignore na pasta raiz do projeto.Excluded items are listed in a .funcignore file in the root project folder.

Implantar arquivos de projetoDeploy project files

Para publicar seu código local para um aplicativo de funções no Azure, use o comando publish:To publish your local code to a function app in Azure, use the publish command:

func azure functionapp publish <FunctionAppName>

Esse comando publica a um aplicativo de funções existente no Azure.This command publishes to an existing function app in Azure. Você receberá um erro se tentar publicar em um <FunctionAppName> que não existe em sua assinatura.You'll get an error if you try to publish to a <FunctionAppName> that doesn't exist in your subscription. Para saber como criar um aplicativo de funções pelo prompt de comando ou pela janela do terminal usando a CLI do Azure, consulte Criar um aplicativo de funções para execução sem servidor.To learn how to create a function app from the command prompt or terminal window using the Azure CLI, see Create a Function App for serverless execution. Por padrão, esse comando usa a compilação remota e implanta seu aplicativo para ser executado a partir do pacote de implantação.By default, this command uses remote build and deploys your app to run from the deployment package. Para desabilitar esse modo de implantação recomendado, use a --nozip opção.To disable this recommended deployment mode, use the --nozip option.

Importante

Quando você cria um aplicativo de funções no portal do Azure, ele usa a versão 3. x do tempo de execução da função por padrão.When you create a function app in the Azure portal, it uses version 3.x of the Function runtime by default. Para que o aplicativo de funções use a versão 1.x do runtime, siga as instruções em Executar na versão 1.x.To make the function app use version 1.x of the runtime, follow the instructions in Run on version 1.x. Você não pode alterar a versão do runtime de um aplicativo de funções que tenha funções existentes.You can't change the runtime version for a function app that has existing functions.

As seguintes opções de publicação se aplicam a todas as versões:The following publish options apply for all versions:

OpçãoOption DescriçãoDescription
--publish-local-settings -i Configurações de publicação em local.settings.json do Azure, a solicitação para substituir se a configuração já existe.Publish settings in local.settings.json to Azure, prompting to overwrite if the setting already exists. Se você estiver usando a Emulador de Armazenamento do Microsoft Azure, primeiro altere a configuração do aplicativo para uma conexão de armazenamento real.If you are using the Microsoft Azure Storage Emulator, first change the app setting to an actual storage connection.
--overwrite-settings -y Suprima o prompt para substituir as configurações do aplicativo quando --publish-local-settings -i for usado.Suppress the prompt to overwrite app settings when --publish-local-settings -i is used.

As opções de publicação a seguir têm suporte apenas para a versão 2. x e versões posteriores:The following publish options are supported only for version 2.x and later versions:

OpçãoOption DescriçãoDescription
--publish-settings-only, -o--publish-settings-only, -o Somente publicar as configurações e ignorar o conteúdo.Only publish settings and skip the content. O padrão é solicitado.Default is prompt.
--list-ignored-files Exibe uma lista de arquivos que são ignorados durante a publicação, que é baseada no arquivo .funcignore.Displays a list of files that are ignored during publishing, which is based on the .funcignore file.
--list-included-files Exibe uma lista de arquivos que são publicados, que é baseada no arquivo .funcignore.Displays a list of files that are published, which is based on the .funcignore file.
--nozip Transforma o padrão de Run-From-Package modo desativado.Turns the default Run-From-Package mode off.
--build-native-deps Ignora a geração da pasta. Wheels ao publicar aplicativos de funções do Python.Skips generating .wheels folder when publishing Python function apps.
--build, -b--build, -b Executa a ação de compilação ao implantar em um aplicativo de funções do Linux.Performs build action when deploying to a Linux function app. Aceita: remote e local .Accepts: remote and local.
--additional-packages Lista de pacotes para instalar ao compilar dependências nativas.List of packages to install when building native dependencies. Por exemplo: python3-dev libevent-dev.For example: python3-dev libevent-dev.
--force Ignorar a verificação de pré-publicação em determinados cenários.Ignore pre-publishing verification in certain scenarios.
--csx Publicar um projeto de script (.csx) C#.Publish a C# script (.csx) project.
--no-build O projeto não é compilado durante a publicação.Project isn't built during publishing. Para Python, pip install não é executado.For Python, pip install isn't performed.
--dotnet-cli-params Durante a publicação de funções C# (.csproj), o Core Tools chama 'dotnet build --output bin/publish'.When publishing compiled C# (.csproj) functions, the core tools calls 'dotnet build --output bin/publish'. Todos os parâmetros passados para isso serão acrescentados à linha de comando.Any parameters passed to this will be appended to the command line.

Implantar contêiner personalizadoDeploy custom container

Azure Functions permite que você implante seu projeto de função em um contêiner do Docker personalizado.Azure Functions lets you deploy your function project in a custom Docker container. Para obter mais informações, confira Criar uma função no Linux usando uma imagem personalizada.For more information, see Create a function on Linux using a custom image. Os contêineres personalizados precisam ter um Dockerfile.Custom containers must have a Dockerfile. Para criar um aplicativo com um Dockerfile, use a opção--Dockerfile em func init .To create an app with a Dockerfile, use the --dockerfile option on func init.

func deploy

As seguintes opções de implantação de contêiner personalizado estão disponíveis:The following custom container deployment options are available:

OpçãoOption DescriçãoDescription
--registry O nome de um Registro do Docker ao qual o usuário atual está conectado.The name of a Docker Registry the current user signed-in to.
--platform A plataforma de hospedagem do aplicativo de funções.Hosting platform for the function app. As opções válidas são kubernetesValid options are kubernetes
--name Nome do aplicativo de funções.Function app name.
--max Opcionalmente, define o número máximo de instâncias do aplicativo de funções a serem implantadas.Optionally, sets the maximum number of function app instances to deploy to.
--min Opcionalmente, define o número mínimo de instâncias do aplicativo de funções a serem implantadas.Optionally, sets the minimum number of function app instances to deploy to.
--config Define um arquivo de configuração de implantação opcional.Sets an optional deployment configuration file.

Funções de monitoramentoMonitoring functions

A maneira recomendada para monitorar a execução de suas funções é integrar-se com o Aplicativo Azure insights.The recommended way to monitor the execution of your functions is by integrating with Azure Application Insights. Você também pode transmitir logs de execução para o computador local.You can also stream execution logs to your local computer. Para saber mais, consulte Monitorar Azure Functions.To learn more, see Monitor Azure Functions.

Integração do Application InsightsApplication Insights integration

Application Insights integração deve ser habilitada quando você cria seu aplicativo de funções no Azure.Application Insights integration should be enabled when you create your function app in Azure. Se, por algum motivo, seu aplicativo de funções não estiver conectado a uma instância de Application Insights, será fácil fazer essa integração no portal do Azure.If for some reason your function app isn't connected to an Application Insights instance, it's easy to do this integration in the Azure portal.

Azure Functions facilita a adição de Application Insights integração a um aplicativo de funções do portal do Azure.Azure Functions makes it easy to add Application Insights integration to a function app from the Azure portal.

  1. No portal do [portal do Azure][Azure], procure e selecione aplicativo de funçõese, em seguida, escolha seu aplicativo de funções.In the Azure portal, search for and select function app, and then choose your function app.

  2. Selecione a faixa Application insights não está configurada na parte superior da janela.Select the Application Insights is not configured banner at the top of the window. Se você não vir essa faixa, seu aplicativo poderá já ter Application Insights habilitado.If you don't see this banner, then your app might already have Application Insights enabled.

    Habilitar o Application Insights no portal

  3. Expanda alterar seu recurso e crie um recurso de Application insights usando as configurações especificadas na tabela a seguir.Expand Change your resource and create an Application Insights resource by using the settings specified in the following table.

    ConfiguraçãoSetting Valor sugeridoSuggested value DescriçãoDescription
    Nome de recurso novoNew resource name Nome de aplicativo exclusivoUnique app name É mais fácil usar o mesmo nome que seu aplicativo de funções, que deve ser exclusivo em sua assinatura.It's easiest to use the same name as your function app, which must be unique in your subscription.
    LocalidadeLocation Europa OcidentalWest Europe Se possível, use a mesma região que seu aplicativo de funções ou uma região próxima dela.If possible, use the same region as your function app, or one that's close to that region.

    Criar um recurso do Application Insights

  4. Escolha Aplicar.Select Apply.

    O recurso do Application Insights é criado no mesmo grupo de recursos e assinatura que seu aplicativo de funções.The Application Insights resource is created in the same resource group and subscription as your function app. Depois que o recurso for criado, feche a janela do Application Insights.After the resource is created, close the Application Insights window.

  5. Em seu aplicativo de funções, selecione configuração em configuraçõese, em seguida, selecione configurações do aplicativo.In your function app, select Configuration under Settings, and then select Application settings. Se você vir uma configuração chamada APPINSIGHTS_INSTRUMENTATIONKEY, isso significa que a integração do Application Insights está habilitada para seu aplicativo de funções em execução no Azure.If you see a setting named APPINSIGHTS_INSTRUMENTATIONKEY, Application Insights integration is enabled for your function app running in Azure.

Habilitar logs de streamingEnable streaming logs

Você pode exibir um fluxo de arquivos de log que estão sendo gerados por suas funções em uma sessão de linha de comando em seu computador local.You can view a stream of log files being generated by your functions in a command-line session on your local computer.

Logs de streaming nativosNative streaming logs

Streaming de log internoBuilt-in log streaming

Use a logstream opção para começar a receber logs de streaming de um aplicativo de funções específico em execução no Azure, como no exemplo a seguir:Use the logstream option to start receiving streaming logs of a specific function app running in Azure, as in the following example:

func azure functionapp logstream <FunctionAppName>

Live Metrics StreamLive Metrics Stream

Você também pode exibir o Live Metrics Stream para seu aplicativo de funções em uma nova janela do navegador, incluindo a --browser opção, como no exemplo a seguir:You can also view the Live Metrics Stream for your function app in a new browser window by including the --browser option, as in the following example:

func azure functionapp logstream <FunctionAppName> --browser

Esse tipo de logs de streaming requer que Application Insights integração seja habilitada para seu aplicativo de funções.This type of streaming logs requires that Application Insights integration be enabled for your function app.

Próximas etapasNext steps

Saiba como desenvolver, testar e publicar Azure Functions usando Azure Functions Core Tools módulo do Microsoft learn Azure Functions Core Tools é software livre e hospedado no GitHub.Learn how to develop, test, and publish Azure Functions by using Azure Functions Core Tools Microsoft learn module Azure Functions Core Tools is open source and hosted on GitHub.
Para arquivar uma solicitação de bug ou recurso, abra um problema do GitHub.To file a bug or feature request, open a GitHub issue.