Tecnologias de implantação em Funções AzureDeployment technologies in Azure Functions

Pode utilizar algumas tecnologias diferentes para implementar o seu código de projeto Azure Functions para a Azure.You can use a few different technologies to deploy your Azure Functions project code to Azure. Este artigo fornece uma visão geral dos métodos de implementação disponíveis para si e recomendações para o melhor método a utilizar em vários cenários.This article provides an overview of the deployment methods available to you and recommendations for the best method to use in various scenarios. Também fornece uma lista exaustiva de detalhes e detalhes fundamentais sobre as tecnologias de implantação sub-lyng.It also provides an exhaustive list of and key details about the underlyng deployment technologies.

Métodos de implantaçãoDeployment methods

A tecnologia de implementação que utiliza para publicar código para a Azure é geralmente determinada pela forma como publica a sua aplicação.The deployment technology you use to publish code to Azure is generally determined by the way in which you publish your app. O método de implantação adequado é determinado por necessidades específicas e pelo ponto no ciclo de desenvolvimento.The appropriate deployment method is determined by specific needs and the point in the development cycle. Por exemplo, durante o desenvolvimento e teste pode ser implantado diretamente a partir da sua ferramenta de desenvolvimento, como o Código do Estúdio Visual.For example, during development and testing you may deploy directly from your development tool, such as Visual Studio Code. Quando a sua aplicação está em produção, é mais provável que publique continuamente a partir do controlo de origem ou utilizando um pipeline de publicação automatizado, que inclui validação e testes adicionais.When your app is in production, you are more likely to publish continously from source control or by using an automated publishing pipeline, which includes additional validation and testing.

A tabela seguinte descreve os métodos de implantação disponíveis para o seu projeto Function.The following table describes the available deployment methods for your Function project.

Tipo de implantação  Deployment type MétodosMethods Melhor para...Best for...
Baseado em ferramentasTools-based • Publicação visual   studio   code  • Visual Studio Code publish
• Publicação do Estúdio Visual• Visual Studio publish
• Publicação de Ferramentas Centrais• Core Tools publish
Implementações durante o desenvolvimento e outras implementações de ad-hock.Deployments during development and other ad-hock deployments. As implementações são geridas localmente pela ferramenta.Deployments are managed locally by the tooling.
Serviço de Aplicações geridoApp Service-managed • Centro de Implantação     (CI/CD)• Deployment Center (CI/CD)
•  Implantações de contentores• Container deployments
Implantação contínua (CI/CD) do controlo de origem ou de um registo de contentores.Continuous deployment (CI/CD) from source control or from a container registry. As implementações são geridas pela plataforma de Serviço de Aplicações (Kudu).Deployments are managed by the App Service platform (Kudu).
Gasodutos externosExternal pipelines • Oleodutos DevOps• DevOps Pipelines
• Ações do GitHub• GitHub actions
Os oleodutos de produção e DevOps que incluem validação adicional, testes e outras ações são executados como parte de uma implementação automatizada.Production and DevOps pipelines that include additional validation, testing, and other actions be run as part of an automated deployment. As implementações são geridas pelo gasoduto.Deployments are managed by the pipeline.

Embora as implementações específicas de funções utilizem a melhor tecnologia com base no seu contexto, a maioria dos métodos de implementação baseia-se na implementação de zíperes.While specific Functions deployments use the best technology based on their context, most deployment methods are based on zip deployment.

Disponibilidade de tecnologia de implantaçãoDeployment technology availability

A Azure Functions suporta o desenvolvimento local de plataformas cruzadas e hospedagem no Windows e Linux.Azure Functions supports cross-platform local development and hosting on Windows and Linux. Atualmente, três planos de hospedagem estão disponíveis:Currently, three hosting plans are available:

Cada plano tem comportamentos diferentes.Each plan has different behaviors. Nem todas as tecnologias de implantação estão disponíveis para cada sabor das Funções Azure.Not all deployment technologies are available for each flavor of Azure Functions. O gráfico que se segue mostra quais as tecnologias de implantação suportadas para cada combinação de sistema operativo e plano de hospedagem:The following chart shows which deployment technologies are supported for each combination of operating system and hosting plan:

Tecnologia de implantaçãoDeployment technology Consumo de JanelasWindows Consumption Windows PremiumWindows Premium Windows DedicadoWindows Dedicated Consumo de LinuxLinux Consumption Linux PremiumLinux Premium Linux DedicadoLinux Dedicated
Pacote externo URL1External package URL1
Implantação zipZip deploy
Recipiente de estivadorDocker container
Web DeployWeb Deploy
Controlo de código fonteSource control
Git local1Local Git1
Sincronização denuvem 1Cloud sync1
FTP1FTP1
Edição de portalPortal editing 22 22

1 Tecnologia de implantação que requer sincronização manual do gatilho.1 Deployment technology that requires manual trigger syncing. 2 A edição do portal está ativada apenas para desativações HTTP e Timer para funções no Linux utilizando planos Premium e Dedicados.2 Portal editing is enabled only for HTTP and Timer triggers for Functions on Linux using Premium and Dedicated plans.

Conceitos-chaveKey concepts

Alguns conceitos-chave são cruciais para entender como as implementações funcionam em Funções Azure.Some key concepts are critical to understanding how deployments work in Azure Functions.

Sincronização do gatilhoTrigger syncing

Quando altera qualquer um dos seus gatilhos, a infraestrutura de Funções deve estar ciente das alterações.When you change any of your triggers, the Functions infrastructure must be aware of the changes. A sincronização acontece automaticamente para muitas tecnologias de implantação.Synchronization happens automatically for many deployment technologies. No entanto, em alguns casos, deve sincronizar manualmente os seus gatilhos.However, in some cases, you must manually sync your triggers. Quando implementar as suas atualizações fazendo referência a um URL de pacote externo, a Git local, a sincronização da nuvem ou a FTP, tem de sincronizar manualmente os seus gatilhos.When you deploy your updates by referencing an external package URL, local Git, cloud sync, or FTP, you must manually sync your triggers. Pode sincronizar os gatilhos de uma de três maneiras:You can sync triggers in one of three ways:

  • Reinicie a sua aplicação de função no portal AzureRestart your function app in the Azure portal
  • Envie um pedido HTTP POST para https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> utilizar a tecla master.Send an HTTP POST request to https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> using the master key.
  • Envie um pedido HTTP POST para https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01 .Send an HTTP POST request to https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. Substitua os espaços reservados pelo seu ID de subscrição, nome de grupo de recursos e o nome da sua aplicação de função.Replace the placeholders with your subscription ID, resource group name, and the name of your function app.

Construção remotaRemote build

As Funções Azure podem executar automaticamente as construções no código que recebe após as implementações de zip.Azure Functions can automatically perform builds on the code it receives after zip deployments. Estas construções comportam-se de forma ligeiramente diferente, dependendo se a sua aplicação está a funcionar no Windows ou linux.These builds behave slightly differently depending on whether your app is running on Windows or Linux. As construções remotas não são executadas quando uma aplicação foi previamente definida para ser executada no modo Run From Package.Remote builds are not performed when an app has previously been set to run in Run From Package mode. Para aprender a utilizar a construção remota, navegue para implementar zip.To learn how to use remote build, navigate to zip deploy.

Nota

Se está a ter problemas com a construção remota, pode ser porque a sua app foi criada antes da funcionalidade ser disponibilizada (1 de agosto de 2019).If you're having issues with remote build, it might be because your app was created before the feature was made available (August 1, 2019). Tente criar uma nova aplicação de função ou correr az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME> para atualizar a sua aplicação de função.Try creating a new function app, or running az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME> to update your function app. Este comando pode levar duas tentativas para ter sucesso.This command might take two tries to succeed.

Construção remota no WindowsRemote build on Windows

Todas as aplicações de função em execução no Windows têm uma pequena aplicação de gestão, o site SCM (ou Kudu).All function apps running on Windows have a small management app, the SCM (or Kudu) site. Este site lida com grande parte da implementação e constrói lógica para as Funções Azure.This site handles much of the deployment and build logic for Azure Functions.

Quando uma aplicação é implantada no Windows, são executados comandos específicos da linguagem, como dotnet restore (C#) ou npm install (JavaScript).When an app is deployed to Windows, language-specific commands, like dotnet restore (C#) or npm install (JavaScript) are run.

Construção remota em LinuxRemote build on Linux

Para permitir a construção remota no Linux, devem ser definidas as seguintes definições de aplicação:To enable remote build on Linux, the following application settings must be set:

  • ENABLE_ORYX_BUILD=true
  • SCM_DO_BUILD_DURING_DEPLOYMENT=true

Por predefinição, tanto as ferramentas principais do Azure Functions como a Extensão de Funções Azure para Código do Estúdio Visual executam construções remotas ao implementar em Linux.By default, both Azure Functions Core Tools and the Azure Functions Extension for Visual Studio Code perform remote builds when deploying to Linux. Por isso, ambas as ferramentas criam automaticamente estas definições para si em Azure.Because of this, both tools automatically create these settings for you in Azure.

Quando as aplicações são construídas remotamente no Linux, elas funcionam a partir do pacote de implementação.When apps are built remotely on Linux, they run from the deployment package.

Plano de consumoConsumption plan

As aplicações de função Linux que estão a decorrer no plano de Consumo não têm um site SCM/Kudu, o que limita as opções de implementação.Linux function apps running in the Consumption plan don't have an SCM/Kudu site, which limits the deployment options. No entanto, as aplicações de função no Linux em execução no plano de Consumo suportam construções remotas.However, function apps on Linux running in the Consumption plan do support remote builds.

Planos dedicados e premiumDedicated and Premium plans

As aplicações de função que funcionam no Linux no plano Dedicado (Serviço de Aplicações) e o plano Premium também têm um site SCM/Kudu limitado.Function apps running on Linux in the Dedicated (App Service) plan and the Premium plan also have a limited SCM/Kudu site.

Detalhes da tecnologia de implantaçãoDeployment technology details

Os seguintes métodos de implantação estão disponíveis em Funções Azure.The following deployment methods are available in Azure Functions.

URL de pacote externoExternal package URL

Pode utilizar um URL de pacote externo para fazer referência a um ficheiro de pacote remoto (.zip) que contém a sua aplicação de função.You can use an external package URL to reference a remote package (.zip) file that contains your function app. O ficheiro é descarregado a partir do URL fornecido, e a aplicação é executada no modo Run From Package.The file is downloaded from the provided URL, and the app runs in Run From Package mode.

Como usá-lo: Adicione WEBSITE_RUN_FROM_PACKAGE às definições da sua aplicação.How to use it: Add WEBSITE_RUN_FROM_PACKAGE to your application settings. O valor desta definição deve ser um URL (a localização do ficheiro de pacote específico que pretende executar).The value of this setting should be a URL (the location of the specific package file you want to run). Pode adicionar definições no portal ou utilizando o CLI Azure.You can add settings either in the portal or by using the Azure CLI.

Se utilizar o armazenamento Azure Blob, utilize um recipiente privado com uma assinatura de acesso partilhado (SAS) para dar às Funções acesso ao pacote.If you use Azure Blob storage, use a private container with a shared access signature (SAS) to give Functions access to the package. Sempre que a aplicação reinicia, recolhe uma cópia do conteúdo.Any time the application restarts, it fetches a copy of the content. A sua referência deve ser válida para o tempo de vida do pedido.Your reference must be valid for the lifetime of the application.

Quando usá-lo: O URL de pacote externo é o único método de implementação suportado para funções Azure em funcionamento no Linux no plano de Consumo, se o utilizador não quiser que ocorra uma construção remota.When to use it: External package URL is the only supported deployment method for Azure Functions running on Linux in the Consumption plan, if the user doesn't want a remote build to occur. Quando atualiza o ficheiro do pacote que uma aplicação de função faz referência, tem de sincronizar manualmente os gatilhos para dizer ao Azure que a sua aplicação foi alterada.When you update the package file that a function app references, you must manually sync triggers to tell Azure that your application has changed.

Implantação zipZip deploy

Utilize o zip implementar para empurrar um ficheiro .zip que contenha a sua aplicação de função para Azure.Use zip deploy to push a .zip file that contains your function app to Azure. Opcionalmente, pode definir a sua aplicação para começar a correr a partir do pacote,ou especificar que ocorre uma construção remota.Optionally, you can set your app to start running from package, or specify that a remote build occurs.

Como usá-lo: Implemente utilizando a sua ferramenta cliente favorita: Visual Studio Code, Visual Studio,ou a partir da linha de comando utilizando as Ferramentas Principais de Funções Azure.How to use it: Deploy by using your favorite client tool: Visual Studio Code, Visual Studio, or from the command line using the Azure Functions Core Tools. Por predefinição, estas ferramentas utilizam a implementação de zíper e funcionam a partir do pacote.By default, these tools use zip deployment and run from package. As Ferramentas Core e a extensão visual Studio Code permitem a construção remota ao implementar em Linux.Core Tools and the Visual Studio Code extension both enable remote build when deploying to Linux. Para implementar manualmente um ficheiro .zip na sua aplicação de função, siga as instruções em Implementar a partir de um ficheiro .zip ou URL.To manually deploy a .zip file to your function app, follow the instructions in Deploy from a .zip file or URL.

Quando implementar utilizando o zip, pode definir a sua aplicação para executar a partir do pacote.When you deploy by using zip deploy, you can set your app to run from package. Para correr a partir da embalagem, defina o valor de definição da WEBSITE_RUN_FROM_PACKAGE aplicação para 1 .To run from package, set the WEBSITE_RUN_FROM_PACKAGE application setting value to 1. Recomendamos a colocação de zíper.We recommend zip deployment. Produz tempos de carregamento mais rápidos para as suas aplicações, e é o padrão para VS Code, Visual Studio e o Azure CLI.It yields faster loading times for your applications, and it's the default for VS Code, Visual Studio, and the Azure CLI.

Quando usá-lo: A implementação zip é a tecnologia de implantação recomendada para funções Azure.When to use it: Zip deploy is the recommended deployment technology for Azure Functions.

Recipiente de estivadorDocker container

Pode implantar uma imagem de recipiente Linux que contém a sua aplicação de função.You can deploy a Linux container image that contains your function app.

Como usá-lo: Crie uma aplicação de função Linux no plano Premium ou Dedicado e especifique qual a imagem do recipiente a ser executada.How to use it: Create a Linux function app in the Premium or Dedicated plan and specify which container image to run from. Pode fazê-lo de duas formas:You can do this in two ways:

  • Crie uma aplicação de função Linux num plano de Serviço de Aplicações Azure no portal Azure.Create a Linux function app on an Azure App Service plan in the Azure portal. Para publicar, selecione Docker Image, e, em seguida, configurar o recipiente.For Publish, select Docker Image, and then configure the container. Entre no local onde a imagem está hospedada.Enter the location where the image is hosted.
  • Crie uma aplicação de função Linux num plano de Serviço de Aplicações utilizando o CLI Azure.Create a Linux function app on an App Service plan by using the Azure CLI. Para aprender como, consulte Criar uma função no Linux utilizando uma imagem personalizada.To learn how, see Create a function on Linux by using a custom image.

Para implementar numa aplicação existente utilizando um recipiente personalizado, em Ferramentas Principais de Funções Azure,utilize o func deploy comando.To deploy to an existing app by using a custom container, in Azure Functions Core Tools, use the func deploy command.

Quando usá-lo: Utilize a opção do recipiente Docker quando precisar de mais controlo sobre o ambiente Linux onde a sua aplicação de função é executado.When to use it: Use the Docker container option when you need more control over the Linux environment where your function app runs. Este mecanismo de implantação está disponível apenas para funções em funcionamento no Linux.This deployment mechanism is available only for Functions running on Linux.

Implementação web (MSDeploy)Web Deploy (MSDeploy)

Implementar pacotes web e implementar as suas aplicações Windows em qualquer servidor IIS, incluindo as suas aplicações de função em execução no Windows em Azure.Web Deploy packages and deploys your Windows applications to any IIS server, including your function apps running on Windows in Azure.

Como usá-lo: Utilize ferramentas de Estúdio Visual para Funções Azure.How to use it: Use Visual Studio tools for Azure Functions. Limpe a caixa de verificação do ficheiro de embalagem (recomendado).Clear the Run from package file (recommended) check box.

Também pode baixar Web Deploy 3.6 e ligar MSDeploy.exe diretamente.You can also download Web Deploy 3.6 and call MSDeploy.exe directly.

Quando usá-lo: Web Deploy é suportado e não tem problemas, mas o mecanismo preferido é o zip implementar com Run From Package ativado.When to use it: Web Deploy is supported and has no issues, but the preferred mechanism is zip deploy with Run From Package enabled. Para saber mais, consulte o guia de desenvolvimento do Estúdio Visual.To learn more, see the Visual Studio development guide.

Controlo de código fonteSource control

Utilize o controlo de origem para ligar a sua aplicação de função a um repositório Git.Use source control to connect your function app to a Git repository. Uma atualização ao código nesse repositório desencadeia a implantação.An update to code in that repository triggers deployment. Para mais informações, consulte o Kudu Wiki.For more information, see the Kudu Wiki.

Como usá-lo: Utilize o Centro de Implantação na área de Funções do portal para configurar a publicação a partir do controlo de origem.How to use it: Use Deployment Center in the Functions area of the portal to set up publishing from source control. Para obter mais informações, consulte a implementação contínua para funções Azure.For more information, see Continuous deployment for Azure Functions.

Quando usá-lo: A utilização do controlo de fontes é a melhor prática para as equipas que colaboram nas suas aplicações de função.When to use it: Using source control is the best practice for teams that collaborate on their function apps. O controlo de origem é uma boa opção de implantação que permite oleodutos de implantação mais sofisticados.Source control is a good deployment option that enables more sophisticated deployment pipelines.

Git LocalLocal Git

Pode utilizar o Git local para empurrar o código da sua máquina local para as Funções Azure utilizando o Git.You can use local Git to push code from your local machine to Azure Functions by using Git.

Como usá-lo: Siga as instruções na implementação do Git Local para o Serviço de Aplicações Azure.How to use it: Follow the instructions in Local Git deployment to Azure App Service.

Quando usá-lo: Em geral, recomendamos que utilize um método de implantação diferente.When to use it: In general, we recommend that you use a different deployment method. Quando publicar a partir de Git local, deve sincronizar manualmente os gatilhos.When you publish from local Git, you must manually sync triggers.

Sincronização em nuvemCloud sync

Utilize sincronização de nuvem para sincronizar o seu conteúdo de Funções Dropbox e OneDrive para Azure.Use cloud sync to sync your content from Dropbox and OneDrive to Azure Functions.

Como usá-lo: Siga as instruções em Sync conteúdo de uma pasta de nuvem.How to use it: Follow the instructions in Sync content from a cloud folder.

Quando usá-lo: Em geral, recomendamos outros métodos de implantação.When to use it: In general, we recommend other deployment methods. Quando publicar utilizando sincronização de nuvem, tem de sincronizar manualmente os gatilhos.When you publish by using cloud sync, you must manually sync triggers.

FTPFTP

Pode utilizar o FTP para transferir diretamente ficheiros para as Funções Azure.You can use FTP to directly transfer files to Azure Functions.

Como usá-lo: Siga as instruções no Conteúdo de Implantação utilizando FTP/s.How to use it: Follow the instructions in Deploy content by using FTP/s.

Quando usá-lo: Em geral, recomendamos outros métodos de implantação.When to use it: In general, we recommend other deployment methods. Quando publicar utilizando FTP, tem de sincronizar manualmente os gatilhos.When you publish by using FTP, you must manually sync triggers.

Edição de portalPortal editing

No editor baseado no portal, pode editar diretamente os ficheiros que estão na sua aplicação de função (essencialmente implantando cada vez que guarda as suas alterações).In the portal-based editor, you can directly edit the files that are in your function app (essentially deploying every time you save your changes).

Como usá-lo: Para poder editar as suas funções no portal Azure, deve ter criado as suas funções no portal.How to use it: To be able to edit your functions in the Azure portal, you must have created your functions in the portal. Para preservar uma única fonte de verdade, a utilização de qualquer outro método de implantação torna a sua função apenas lida e impede a edição contínua do portal.To preserve a single source of truth, using any other deployment method makes your function read-only and prevents continued portal editing. Para voltar a um estado em que pode editar os seus ficheiros no portal Azure, pode voltar a ligar manualmente o modo de edição Read/Write e remover quaisquer definições de aplicação relacionadas com a implementação (como). WEBSITE_RUN_FROM_PACKAGETo return to a state in which you can edit your files in the Azure portal, you can manually turn the edit mode back to Read/Write and remove any deployment-related application settings (like WEBSITE_RUN_FROM_PACKAGE).

Quando usá-lo: O portal é uma boa maneira de começar com as Funções Azure.When to use it: The portal is a good way to get started with Azure Functions. Para um trabalho de desenvolvimento mais intenso, recomendamos que utilize uma das seguintes ferramentas de cliente:For more intense development work, we recommend that you use one of the following client tools:

A tabela a seguir mostra os sistemas operativos e os idiomas que suportam a edição do portal:The following table shows the operating systems and languages that support portal editing:

LinguagemLanguage Consumo de JanelasWindows Consumption Windows PremiumWindows Premium Windows DedicadoWindows Dedicated Consumo de LinuxLinux Consumption Linux PremiumLinux Premium Linux DedicadoLinux Dedicated
C#C#
C# ScriptC# Script ** **
F#F#
JavaJava
JavaScript (Node.js)JavaScript (Node.js) ** **
Python (Pré-visualização)Python (Preview)
PowerShell (Pré-visualização)PowerShell (Preview)
TypeScript (Node.js)TypeScript (Node.js)

*A edição do portal é ativada apenas para desativações HTTP e Timer para Funções no Linux utilizando planos Premium e Dedicados.* Portal editing is enabled only for HTTP and Timer triggers for Functions on Linux using Premium and Dedicated plans.

Blocos de implementaçãoDeployment slots

Quando implementar a sua aplicação de função para Azure, pode implementar para uma ranhura de implementação separada em vez de diretamente para a produção.When you deploy your function app to Azure, you can deploy to a separate deployment slot instead of directly to production. Para obter mais informações sobre slots de implementação, consulte a documentação das ranhuras de implantação de funções Azure para obter mais detalhes.For more information on deployment slots, see the Azure Functions Deployment Slots documentation for details.

Passos seguintesNext steps

Leia estes artigos para saber mais sobre a implementação das suas aplicações de função:Read these articles to learn more about deploying your function apps: