Guia do programador das Funções do AzureAzure Functions developer guide

Nas Funções Azure, funções específicas partilham alguns conceitos e componentes técnicos fundamentais, independentemente do idioma ou ligação que utilizar.In Azure Functions, specific functions share a few core technical concepts and components, regardless of the language or binding you use. Antes de entrar em detalhes de aprendizagem específicos de uma determinada língua ou ligação, não se esqueça de ler este resumo que se aplica a todos eles.Before you jump into learning details specific to a given language or binding, be sure to read through this overview that applies to all of them.

Este artigo pressupõe que já leu a visão geral das Funções Azure.This article assumes that you've already read the Azure Functions overview.

Código de funçãoFunction code

Uma função é o conceito primário em Funções Azure.A function is the primary concept in Azure Functions. Uma função contém duas peças importantes - o seu código, que pode ser escrito em várias línguas, e alguns config, o function.jsem arquivo.A function contains two important pieces - your code, which can be written in a variety of languages, and some config, the function.json file. Para idiomas compilados, este ficheiro config é gerado automaticamente a partir de anotações no seu código.For compiled languages, this config file is generated automatically from annotations in your code. Para scripts linguísticos, você deve fornecer o arquivo config si mesmo.For scripting languages, you must provide the config file yourself.

O function.jsno ficheiro define o gatilho da função, as encadernações e outras definições de configuração.The function.json file defines the function's trigger, bindings, and other configuration settings. Cada função tem um, e apenas um, acionador.Every function has one and only one trigger. O tempo de execução utiliza este ficheiro config para determinar os eventos para monitorizar e como transmitir dados e devolver dados de uma execução de função.The runtime uses this config file to determine the events to monitor and how to pass data into and return data from a function execution. Segue-se um exemplo function.jsarquivado.The following is an example function.json file.

{
    "disabled":false,
    "bindings":[
        // ... bindings here
        {
            "type": "bindingType",
            "direction": "in",
            "name": "myParamName",
            // ... more depending on binding
        }
    ]
}

Para obter mais informações, consulte os conceitos de gatilhos e encadernações do Azure Functions.For more information, see Azure Functions triggers and bindings concepts.

A bindings propriedade é onde você configura tanto gatilhos como encadernações.The bindings property is where you configure both triggers and bindings. Cada ligação partilha algumas configurações comuns e algumas configurações específicas de um determinado tipo de encadernação.Each binding shares a few common settings and some settings which are specific to a particular type of binding. Cada encadernação requer as seguintes definições:Every binding requires the following settings:

PropriedadeProperty Valores/TiposValues/Types ComentáriosComments
type stringstring Tipo de ligação.Binding type. Por exemplo, queueTrigger.For example, queueTrigger.
direction 'dentro', 'fora''in', 'out' Indica se a ligação é para receber dados na função ou para enviar dados da função.Indicates whether the binding is for receiving data into the function or sending data from the function.
name stringstring O nome que é usado para os dados vinculados na função.The name that is used for the bound data in the function. Para C#, este é um nome de argumento; para o JavaScript, é a chave de uma lista de chaves/valores.For C#, this is an argument name; for JavaScript, it's the key in a key/value list.

Function appFunction app

Uma aplicação de função fornece um contexto de execução em Azure no qual as suas funções são executadas.A function app provides an execution context in Azure in which your functions run. Como tal, é a unidade de implantação e gestão para as suas funções.As such, it is the unit of deployment and management for your functions. Uma aplicação de função é composta por uma ou mais funções individuais que são geridas, implementadas e dimensionadas em conjunto.A function app is comprised of one or more individual functions that are managed, deployed, and scaled together. Todas as funções de uma aplicação de função partilham o mesmo plano de preços, método de implementação e versão de tempo de execução.All of the functions in a function app share the same pricing plan, deployment method, and runtime version. Pense numa aplicação de função como uma forma de organizar e gerir coletivamente as suas funções.Think of a function app as a way to organize and collectively manage your functions. Para saber mais, consulte Como gerir uma aplicação de função.To learn more, see How to manage a function app.

Nota

Todas as funções de uma aplicação de funções devem ser da autoria no mesmo idioma.All functions in a function app must be authored in the same language. Em versões anteriores do tempo de funcionamento das Funções Azure, isso não era necessário.In previous versions of the Azure Functions runtime, this wasn't required.

Estrutura de pastaFolder structure

O código para todas as funções numa aplicação de função específica está localizado numa pasta de projeto raiz que contém um ficheiro de configuração do anfitrião e uma ou mais sub-dobras.The code for all the functions in a specific function app is located in a root project folder that contains a host configuration file and one or more subfolders. Cada sub-dobradeira contém o código para uma função separada.Each subfolder contains the code for a separate function. A estrutura da pasta é mostrada na seguinte representação:The folder structure is shown in the following representation:

FunctionApp
 | - host.json
 | - MyFirstFunction
 | | - function.json
 | | - ...  
 | - MySecondFunction
 | | - function.json
 | | - ...  
 | - SharedCode
 | - bin

Na versão 2.x e superior do tempo de execução de Funções, todas as funções na aplicação de função devem partilhar a mesma pilha de idiomas.In version 2.x and higher of the Functions runtime, all functions in the function app must share the same language stack.

A host.jsno ficheiro contém configurações específicas do tempo de execução e está na pasta raiz da aplicação de função.The host.json file contains runtime-specific configurations and is in the root folder of the function app. Uma pasta de lixo contém pacotes e outros ficheiros da biblioteca que a aplicação de função requer.A bin folder contains packages and other library files that the function app requires. Consulte os requisitos específicos da linguagem para um projeto de aplicação de função:See the language-specific requirements for a function app project:

O acima é a estrutura de pasta padrão (e recomendada) para uma aplicação De função.The above is the default (and recommended) folder structure for a Function app. Se desejar alterar a localização do ficheiro do código de uma função, modifique a scriptFile secção dofunction.js_no_ ficheiro.If you wish to change the file location of a function's code, modify the scriptFile section of the function.json file. Recomendamos também a utilização da implementação do pacote para implementar o seu projeto na sua aplicação de função em Azure.We also recommend using package deployment to deploy your project to your function app in Azure. Também pode utilizar ferramentas existentes como integração contínua e implantação e Azure DevOps.You can also use existing tools like continuous integration and deployment and Azure DevOps.

Nota

Se utilizar uma embalagem manualmente, certifique-se de que implanta o seu host.jsnas pastas de ficheiro e função diretamente na wwwroot pasta.If deploying a package manually, make sure to deploy your host.json file and function folders directly to the wwwroot folder. Não inclua a wwwroot pasta nas suas implementações.Do not include the wwwroot folder in your deployments. Caso contrário, acabas com wwwroot\wwwroot pastas.Otherwise, you end up with wwwroot\wwwroot folders.

Use ferramentas locais e publicaçãoUse local tools and publishing

As aplicações de função podem ser da autoria e publicadas utilizando uma variedade de ferramentas, incluindo Visual Studio, Visual Studio Code, IntelliJ, Eclipse,e as Ferramentas Core de Funções Azure.Function apps can be authored and published using a variety of tools, including Visual Studio, Visual Studio Code, IntelliJ, Eclipse, and the Azure Functions Core Tools. Para obter mais informações, consulte Código e teste as Funções Azure localmente.For more information, see Code and test Azure Functions locally.

Como editar funções no portal AzureHow to edit functions in the Azure portal

O editor de Funções incorporado no portal Azure permite-lhe atualizar o seu código e a sua function.jsno ficheiro diretamente inline.The Functions editor built into the Azure portal lets you update your code and your function.json file directly inline. Isto é recomendado apenas para pequenas alterações ou provas de conceito - a melhor prática é usar uma ferramenta de desenvolvimento local como o Código VS.This is recommended only for small changes or proofs of concept - best practice is to use a local development tool like VS Code.

Execução paralelaParallel execution

Quando vários eventos de desencadeamento ocorrem mais rapidamente do que um tempo de funcionamento de uma única função pode processá-los, o tempo de execução pode invocar a função várias vezes em paralelo.When multiple triggering events occur faster than a single-threaded function runtime can process them, the runtime may invoke the function multiple times in parallel. Se uma aplicação de função estiver a utilizar o plano de hospedagem Consumption,a aplicação de função poderá ser reduzida automaticamente.If a function app is using the Consumption hosting plan, the function app could scale out automatically. Cada instância da aplicação de função, quer a aplicação seja executada no plano de hospedagem de Consumo ou num plano regular de hospedagem do Serviço de Aplicações,pode processar invocações de funções simultâneas em paralelo utilizando vários fios.Each instance of the function app, whether the app runs on the Consumption hosting plan or a regular App Service hosting plan, might process concurrent function invocations in parallel using multiple threads. O número máximo de invocações de funções simultâneas em cada instância de aplicação de função varia em função com base no tipo de gatilho utilizado, bem como nos recursos utilizados por outras funções dentro da aplicação de função.The maximum number of concurrent function invocations in each function app instance varies based on the type of trigger being used as well as the resources used by other functions within the function app.

Versão de tempo de execução de funçõesFunctions runtime versioning

Pode configurar a versão do tempo de execução de Funções utilizando a definição da FUNCTIONS_EXTENSION_VERSION aplicação.You can configure the version of the Functions runtime using the FUNCTIONS_EXTENSION_VERSION app setting. Por exemplo, o valor "~3" indica que a sua aplicação de função utilizará 3.x como a sua versão principal.For example, the value "~3" indicates that your function app will use 3.x as its major version. As aplicações de função são atualizadas para cada nova versão menor à medida que são lançadas.Function apps are upgraded to each new minor version as they are released. Para obter mais informações, incluindo como visualizar a versão exata da sua aplicação de função, consulte como direcionar as versões de tempo de execução do Azure Functions.For more information, including how to view the exact version of your function app, see How to target Azure Functions runtime versions.

RepositóriosRepositories

O código para funções Azure é de código aberto e armazenado nos repositórios gitHub:The code for Azure Functions is open source and stored in GitHub repositories:

EnlacesBindings

Aqui está uma tabela de todas as encadernações apoiadas.Here is a table of all supported bindings.

Esta tabela mostra as encadernações suportadas nas principais versões do tempo de funcionamento das Funções Azure:This table shows the bindings that are supported in the major versions of the Azure Functions runtime:

TipoType 1.x1.x 2.x e superior12.x and higher1 AcionadorTrigger InputInput SaídaOutput
Armazenamento de blobsBlob storage
BD do CosmosCosmos DB
Dapr3Dapr3
Event GridEvent Grid
Hubs de EventosEvent Hubs
HTTP & webhooksHTTP & webhooks
Hub IoTIoT Hub
Kafka2Kafka2
Aplicações MóveisMobile Apps
Hubs de NotificaçãoNotification Hubs
Armazenamento de filasQueue storage
RabbitMQ2RabbitMQ2
SendGridSendGrid
Service BusService Bus
SignalRSignalR
Armazenamento de tabelasTable storage
TemporizadorTimer
TwilioTwilio

1 A partir da versão 2.x, todas as ligações, exceto HTTP e Timer, devem ser registadas.1 Starting with the version 2.x runtime, all bindings except HTTP and Timer must be registered. Consulte as extensões de ligação do Registo.See Register binding extensions.

2 Os gatilhos não são suportados no plano de consumo.2 Triggers aren't supported in the Consumption plan. Requer gatilhos orientados para o tempo de execução.Requires runtime-driven triggers.

3 Suportado apenas em Kubernetes, IoT Edge e outros modos auto-hospedados apenas.3 Supported only in Kubernetes, IoT Edge, and other self-hosted modes only.

Ter problemas com erros vindos das ligações?Having issues with errors coming from the bindings? Reveja a documentação dos Códigos de Erro de Ligação de Funções Azure.Review the Azure Functions Binding Error Codes documentation.

Questões de ReporteReporting Issues

ItemItem DescriçãoDescription LigaçãoLink
RuntimeRuntime Anfitrião do script, gatilhos & ligações, suporte linguísticoScript Host, Triggers & Bindings, Language Support Arquivar um problemaFile an Issue
ModelosTemplates Problemas de código com modelo de criaçãoCode Issues with Creation Template Arquivar um problemaFile an Issue
PortalPortal Problema de Interface ou Experiência de UtilizadorUser Interface or Experience Issue Arquivar um problemaFile an Issue

Próximos passosNext steps

Para obter mais informações, consulte os seguintes recursos:For more information, see the following resources: