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

Azure Functions Core Tools permite desenvolver e testar as funções em seu computador local a partir do prompt de comando ou 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 tempo de execução 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á duas versões do Azure Functions Core Tools.There are two versions of Azure Functions Core Tools. A versão que você usa depende do ambiente de desenvolvimento local, da escolha da linguagem e 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:

A menos que indicado o contrário, os exemplos neste artigo são para a versão 2.x.Unless otherwise noted, the examples in this article are for version 2.x.

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

O Ferramentas básicas do Azure Functions é uma versão local do tempo de execução do Azure Functions 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 2.xVersion 2.x

A versão 2.x das ferramentas usa o tempo de execução 2.x do Azure Functions que se baseia em .NET Core.Version 2.x of the tools uses the Azure Functions runtime 2.x that is built on .NET Core. Esta versão tem suporte em todas as plataformas que o .NET Core 2.x oferece suporte, incluindo Windows, macOS, e Linux.This version is supported on all platforms .NET Core 2.x supports, including Windows, macOS, and Linux.

Importante

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

WindowsWindows

As etapas a seguir usam npm para instalar ferramentas principais no Windows.The following steps use npm to install Core Tools on Windows. Você também pode usar Chocolatey.You can also use Chocolatey. Para obter mais informações, confira o arquivo Leiame das Ferramentas Principais.For more information, see the Core Tools readme.

  1. Instale o Node.js, que inclui npm.Install Node.js, which includes npm. Para a versão 2.x das ferramentas, somente Node.js 8.5 e versões posteriores têm suporte.For version 2.x of the tools, only Node.js 8.5 and later versions are supported.

  2. Instale o pacote de ferramentas principais:Install the Core Tools package:

    npm install -g azure-functions-core-tools
    

    Pode levar alguns minutos para que o NPM Baixe e instale o pacote de ferramentas principais.It may take a few minutes for npm to download and install the Core Tools package.

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

MacOS com o HomebrewMacOS with Homebrew

As etapas a seguir usam o Homebrew para instalar as ferramentas principais em macOS.The following steps use Homebrew to install the Core Tools on macOS.

  1. Instale o Homebrew, se ele ainda não estiver instalado.Install Homebrew, if it's not already installed.

  2. Instale o pacote de ferramentas principais:Install the Core Tools package:

    brew tap azure/functions
    brew install azure-functions-core-tools
    
  3. Se você não planeja usar pacotes de extensão, instale o SDK do .NET Core 2. x para MacOS.If you do not plan to use extension bundles, install .NET Core 2.x SDK for macOS.

Linux (Ubuntu/Debian) com APTLinux (Ubuntu/Debian) with APT

As etapas a seguir usma APT para instalar as ferramentas principais em sua distribuição Ubuntu/Debian Linux.The following steps use APT to install Core Tools on your Ubuntu/Debian Linux distribution. Para outras distribuições do Linux, confira o arquivo Leiame das ferramentas principais.For other Linux distributions, see the Core Tools readme.

  1. Instale a chave GPG do repositório de pacotes da Microsoft para validar a integridade do pacote:Install the Microsoft package repository GPG key, to validate package integrity:

    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
    
  2. Configure a lista de origem de desenvolvimento do .NET antes de fazer uma atualização de APT.Set up the .NET development source list before doing an APT update.

    Para configurar a lista de origem APT para o Ubuntu, execute este comando:To set up the APT source list for Ubuntu, run this command:

    sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
    

    Para configurar a lista de origem APT para Debian, execute este comando:To set up the APT source list for Debian, run this command:

    sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/debian/$(lsb_release -rs)/prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
    
  3. Verifique o arquivo de /etc/apt/sources.list.d/dotnetdev.list para uma das cadeias de caracteres de versão do Linux apropriadas listadas abaixo:Check the /etc/apt/sources.list.d/dotnetdev.list file for one of the appropriate Linux version strings listed below:

    Distribuição LinuxLinux distribution VersãoVersion
    Debian 10Debian 10 buster
    Debian 9Debian 9 stretch
    Debian 8Debian 8 jessie
    Ubuntu 18,10Ubuntu 18.10 cosmic
    Ubuntu 18.04Ubuntu 18.04 bionic
    Ubuntu 17.04Ubuntu 17.04 zesty
    Ubuntu 16.04/Linux Mint 18Ubuntu 16.04/Linux Mint 18 xenial
  4. Inicie a atualização da fonte APT:Start the APT source update:

    sudo apt-get update
    
  5. Instale o pacote de ferramentas principais:Install the Core Tools package:

    sudo apt-get install azure-functions-core-tools
    
  6. Se você não planeja usar pacotes de extensão, instale o SDK do .NET Core 2. x para Linux.If you do not plan to use extension bundles, install .NET Core 2.x SDK for Linux.

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.

Versão 2.x exige que você selecione um idioma padrão para seu projeto quando ele é inicializado, e todas as funções adicionadas usam modelos de idioma padrão.Version 2.x requires you to select a default language for your project when it is initialized, and 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 2.x, quando você executar o comando você deve escolher um tempo de execução para o seu projeto.In version 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 init dá suporte às seguintes opções, que são somente da versão 2.x, a menos que haja outro tipo de orientação:func init supports the following options, which are version 2.x-only, unless otherwise noted:

OpçãoOption DESCRIÇÃODescription
--csx Inicializa um projeto de script (.csx) C#.Initializes a C# script (.csx) project. Você precisam especificar --csx nos próximos comandos.You must specify --csx in subsequent commands.
--docker Crie um Dockerfile para um contêiner usando uma imagem base que se baseia no --worker-runtime escolhido.Create 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.
--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.
--no-source-control -n Impede a criação padrão de um repositório Git na versão 1.x.Prevents the default creation of a Git repository in version 1.x. Na versão 2.x, o repositório git não será criado por padrão.In version 2.x, the git repository isn't created by default.
--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 tempo de execução de linguagem para o projeto.Sets the language runtime for the project. Os valores com suporte são dotnet, node (JavaScript) java e python.Supported values are dotnet, node (JavaScript), java, and python. Quando não estiver definido, será solicitado que você escolha seu tempo de execução durante a inicialização.When not set, you are prompted to choose your runtime during initialization.

Importante

Por padrão, a versão 2.x das ferramentas do Core cria a função de projetos de aplicativo para o tempo de execução do .NET como projetos de classes C# (. csproj).By default, version 2.x of the Core Tools creates 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 o timer, associações de funções na versão de tempo de execução 2.x são implementados como pacotes de extensão.With the exception of HTTP and timer triggers, Functions bindings in runtime version 2.x are implemented as extension packages. Na versão 2.x do tempo de execução do Azure Functions, você deve registrar explicitamente as extensões para os tipos de associação usados em suas funções.In version 2.x 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 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 você pode adicionar uma referência de pacote de extensão para o arquivo de projeto do host. JSON.You can choose to install binding extensions individually, or you can add an extension bundle reference to the host.json project file. Pacotes de extensão remove a possibilidade de ter 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 as extensões de associação.It is the recommended approach for registering binding extensions. Pacotes de extensão também elimina a necessidade de instalar o .NET Core 2.x do SDK.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 obter mais informações, consulte as extensões de associação de funções do Azure registrar.To learn more, see Register Azure Functions binding extensions. Você deve adicionar pacotes de extensão para o host. JSON antes de adicionar associações para o arquivo do Functions.You should add extension bundles to the host.json before you add bindings to the functions.json file.

Registrar extensões individuaisRegister individual extensions

Se você precisar instalar extensões que não estão em um pacote, você poderá registrar manualmente os 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 extensões usando func extensions install, você deve ter o .NET Core 2.x SDK 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 arquivo local. Settings. JSON armazena as 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 no arquivo local. Settings. JSON 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 AzureWebJobsStorageaplicativo de funções no Azure, como.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 Connection de conexão, como para o gatilho do armazenamentode 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 Values na 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 do tempo de execução do Functions requer a configuração [FUNCTIONS_WORKER_RUNTIME], que é gerada para seu projeto por ferramentas principais.Version 2.x 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 AzureWebJobsStorage e UseDevelopmentStorage=truedefinido como, 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 das configurações de host. JSON, 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-settings quando 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 o 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 usando o emulador de armazenamento para desenvolvimento, convém testar com uma conexão de armazenamento real.Even when using the 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 Storagea 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 a 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, selecione sua conta de armazenamento e copie a cadeia de conexão primária ou secundária.In the Explorer, expand your subscription, 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>
      

      Enquanto ainda não tiver se conectado ao Azure, será solicitado que você faça isso.When you are not already signed in to Azure, you are 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 2.x, quando você executa func new você é solicitado a escolher um modelo no idioma padrão do seu aplicativo de funções, em seguida, você também precisará escolher um nome para sua função.In version 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) Gera os mesmos modelos C# (. CSx) de script usados na versão 1. x e no portal.(Version 2.x) Generates the same C# script (.csx) templates used in version 1.x and in the portal.
--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, não use essa opção nem escolha uma linguagem que corresponda ao tempo de execução do trabalho.In version 2.x, do not use this option or choose a language that matches the worker runtime.
--name -n O nome da função.The function name.
--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.

Versão 2.xVersion 2.x

Na versão 2. x do tempo de execução, o comando Start varia, dependendo da linguagem do seu projeto.In version 2.x of the runtime, the start command varies, depending on your project language.

C#C#

func start --build

JavaScriptJavaScript

func start

TypeScriptTypeScript

npm install
npm start     

Versão 1.xVersion 1.x

A versão 1. x do tempo de execução do Functions requer o comando host, 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. Versão 2.x somente.Version 2.x only.
--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. Versão 2.x somente.Version 2.x only.
--cors-credentials Permita solicitações autenticadas de origem cruzada (ou seja, cookies e cabeçalho de autenticação) somente na versão 2.x.Allow cross-origin authenticated requests (i.e. cookies and the Authentication header) Version 2.x only.
--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. Versão 2.x somente.Version 2.x only.
--nodeDebugPort -n A porta para usar o depurador de nós.The port for the node debugger to use. Padrão: um valor de launch.json ou 5858.Default: A value from launch.json or 5858. Versão 1.x somente.Version 1.x only.
--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. Versão 2.x somente.Version 2.x only.
--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 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 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 autenticação não é imposta para pontos de extremidade HTTP.When running locally, authentication 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 webhooks, 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, 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. 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/QueueTriggerJS

Usar o comando func run na versão 1.xUsing the func run command in version 1.x

Importante

O comando func run não tem suporte na versão 2.x das ferramentas.The func run command is not supported in version 2.x of the tools. Para saber mais, consulte o tópico Como direcionar para versões de tempo de execução do Azure Functions.For more information, see the topic How to target Azure Functions runtime versions.

Você também pode invocar uma função diretamente usando func run <FunctionName> e fornecer dados de entrada para a função.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 Conteúdo embutido.Inline content.
--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 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 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.

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.

Implantação (arquivos de projeto)Deployment (project files)

Para publicar seu código local em 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 opção --nozip.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 2.x do tempo de execução do Core Tools por padrão.When you create a function app in the Azure portal, it uses version 2.x of the Function runtime by default. Para que o aplicativo de funções use a versão 1.x do tempo de execução, 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 tempo de execução 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 opções de publicação a seguir se aplicam a ambas as versões, 1. x e 2. x:The following publish options apply for both versions, 1.x and 2.x:

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 o emulador de armazenamento, primeiro altere a configuração do aplicativo para uma conexão de armazenamento real.If you are using the 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.

Somente há suporte para as seguintes opções de publicação na versão 2.x:The following publish options are only supported in version 2.x:

OpçãoOption DESCRIÇÃODescription
--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 durante a publicação de python de aplicativos de funções.Skips generating .wheels folder when publishing python function apps.
--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: remoto, local)(accepts: remote, 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 Ignorar a criação de funções do dotnet.Skip building dotnet functions.
--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.

Implantação (contêiner personalizado)Deployment (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.

Habilitar a integração do Application InsightsEnable Application Insights integration

Quando você cria um aplicativo de funções no portal do Azure, a integração Application Insights é feita para você por padrão.When you create a function app in the Azure portal, the Application Insights integration is done for you by default. No entanto, quando você cria seu aplicativo de funções usando a CLI do Azure, não é feita a integração em seu aplicativo de funções no Azure.However, when you create your function app by using the Azure CLI, the integration in your function app in Azure isn't done.

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

  1. No portal, selecione Todos os serviços > Aplicativos de Funções, selecione o aplicativo de funções e, em seguida, selecione a faixa do Application Insights na parte superior da janelaIn the portal, select All services > Function Apps, select your function app, and then select the Application Insights banner at the top of the window

    Habilitar o Application Insights no portal

  2. Crie um recurso do Application Insights usando as configurações especificadas na tabela abaixo da imagem.Create an Application Insights resource by using the settings specified in the table below the image.

    Criar um recurso do Application Insights

    ConfiguraçãoSetting Valor sugeridoSuggested value DescriçãoDescription
    NomeName 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.
  3. Selecione OK.Select OK. 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.

  4. No aplicativo de funções, selecione Configurações do aplicativo e role para baixo até Configurações do aplicativo.Back in your function app, select Application settings, and then scroll down to 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, --browser incluindo a 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 você habilite a integração de Application insights para seu aplicativo de funções.This type of streaming logs requires that you enable Application Insights integration for your function app.

Próximas etapasNext steps

As principais ferramentas do Azure Functions são Código-fonte aberto e hospedado no GitHub.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.