Tecnologias de implantação no Azure FunctionsDeployment technologies in Azure Functions

Você pode usar algumas tecnologias diferentes para implantar o código do projeto Azure Functions no Azure.You can use a few different technologies to deploy your Azure Functions project code to Azure. Este artigo fornece uma lista completa dessas tecnologias, descreve quais tecnologias estão disponíveis para quais tipos de funções, explica o que acontece quando você usa cada método e fornece recomendações para o melhor método a ser usado em vários cenários .This article provides an exhaustive list of those technologies, describes which technologies are available for which flavors of Functions, explains what happens when you use each method, and provides recommendations for the best method to use in various scenarios. As várias ferramentas que dão suporte à implantação em Azure Functions são ajustadas para a tecnologia certa com base em seu contexto.The various tools that support deploying to Azure Functions are tuned to the right technology based on their context. Em geral, a implantação de zip é a tecnologia de implantação recomendada para Azure Functions.In general, zip deployment is the recommended deployment technology for Azure Functions.

Disponibilidade de tecnologia de implantaçãoDeployment technology availability

O Azure Functions dá suporte ao desenvolvimento local de plataforma cruzada e à hospedagem no Windows e no 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 tipo de Azure Functions.Not all deployment technologies are available for each flavor of Azure Functions. O gráfico a seguir mostra quais tecnologias de implantação têm suporte para cada combinação de sistema operacional 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 do WindowsWindows Consumption Windows PremiumWindows Premium Windows dedicadoWindows Dedicated Consumo do LinuxLinux Consumption Linux PremiumLinux Premium Linux dedicadoLinux Dedicated
URL do pacote externo1External package URL1
Implantação de zipZip deploy
Contêiner do DockerDocker container
Implantação da WebWeb Deploy
Controle do código-fonteSource control
Git local1Local Git1
Sincronização de nuvem1Cloud sync1
FTP1FTP1
Edição do portalPortal editing 22 22

1 tecnologia de implantação que requer sincronização de gatilho manual.1 Deployment technology that requires manual trigger syncing.
2 a edição do portal é habilitada apenas para gatilhos http e de temporizador para funções no Linux usando planos Premium e dedicados.2 Portal editing is enabled only for HTTP and Timer triggers for Functions on Linux using Premium and dedicated plans.

Principais conceitosKey concepts

Alguns conceitos importantes são essenciais para entender como as implantações funcionam em Azure Functions.Some key concepts are critical to understanding how deployments work in Azure Functions.

Disparar sincronizaçãoTrigger syncing

Quando você altera qualquer um de seus gatilhos, a infraestrutura do Functions 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 ocorre automaticamente para muitas tecnologias de implantação.Synchronization happens automatically for many deployment technologies. No entanto, em alguns casos, você deve sincronizar manualmente seus gatilhos.However, in some cases, you must manually sync your triggers. Ao implantar suas atualizações referenciando uma URL de pacote externo, git local, sincronização de nuvem ou FTP, você deve sincronizar manualmente 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. Você pode sincronizar gatilhos de uma destas três maneiras:You can sync triggers in one of three ways:

  • Reinicie seu aplicativo de funções no portal do AzureRestart your function app in the Azure portal
  • Envie uma solicitação HTTP POST para https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> usando a chave mestra.Send an HTTP POST request to https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> using the master key.
  • Enviar uma solicitação 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 por sua ID de assinatura, nome do grupo de recursos e o nome do seu aplicativo de funções.Replace the placeholders with your subscription ID, resource group name, and the name of your function app.

Build remotoRemote build

Azure Functions pode executar compilações automaticamente no código que recebe após implantações de zip.Azure Functions can automatically perform builds on the code it receives after zip deployments. Essas compilações se comportam um pouco diferente dependendo se seu aplicativo está em execução no Windows ou no Linux.These builds behave slightly differently depending on whether your app is running on Windows or Linux. As compilações remotas não são executadas quando um aplicativo tiver sido previamente definido para execução em execução no modo de pacote .Remote builds are not performed when an app has previously been set to run in Run From Package mode. Para saber como usar a compilação remota, navegue até a implantação de zip.To learn how to use remote build, navigate to zip deploy.

Observação

Se você estiver tendo problemas com a compilação remota, pode ser porque seu aplicativo foi criado antes de o recurso ser disponibilizado (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 um novo aplicativo de funções ou execute az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME> para atualizar seu aplicativo de funções.Try creating a new function app, or running az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME> to update your function app. Esse comando pode levar duas tentativas de sucesso.This command might take two tries to succeed.

Build remoto no WindowsRemote build on Windows

Todos os aplicativos de funções em execução no Windows têm um pequeno aplicativo de gerenciamento, o site do SCM (ou kudu).All function apps running on Windows have a small management app, the SCM (or Kudu) site. Esse site manipula grande parte da implantação e da lógica de compilação para Azure Functions.This site handles much of the deployment and build logic for Azure Functions.

Quando um aplicativo é implantado no Windows, comandos específicos de idioma, comoC#dotnet restore () ou npm install (JavaScript), são executados.When an app is deployed to Windows, language-specific commands, like dotnet restore (C#) or npm install (JavaScript) are run.

Build remoto no LinuxRemote build on Linux

Para habilitar a compilação remota no Linux, as seguintes configurações de aplicativo devem ser definidas:To enable remote build on Linux, the following application settings must be set:

  • ENABLE_ORYX_BUILD=true
  • SCM_DO_BUILD_DURING_DEPLOYMENT=true

Por padrão, Azure Functions Core Tools e a extensão Azure Functions para Visual Studio Code executar compilações remotas ao implantar no 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 essas configurações para você no Azure.Because of this, both tools automatically create these settings for you in Azure.

Quando os aplicativos são criados remotamente no Linux, eles são executados a partir do pacote de implantação.When apps are built remotely on Linux, they run from the deployment package.

Plano de consumoConsumption plan

Os aplicativos de funções do Linux em execução no plano de consumo não têm um site SCM/kudu, que limita as opções de implantação.Linux function apps running in the Consumption plan don't have an SCM/Kudu site, which limits the deployment options. No entanto, os aplicativos de funções no Linux em execução no plano de consumo oferecem suporte a compilações remotas.However, function apps on Linux running in the Consumption plan do support remote builds.

Planos dedicado e PremiumDedicated and Premium plans

Os aplicativos de funções em execução no Linux no plano dedicado (serviço de aplicativo) e no plano Premium também têm um site do 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 métodos de implantação a seguir estão disponíveis no Azure Functions.The following deployment methods are available in Azure Functions.

URL do pacote externoExternal package URL

Você pode usar uma URL de pacote externo para fazer referência a um arquivo de pacote remoto (. zip) que contém seu aplicativo de funções.You can use an external package URL to reference a remote package (.zip) file that contains your function app. O arquivo é baixado da URL fornecida e o aplicativo é executado em execução no modo de pacote .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 configurações do aplicativo.How to use it: Add WEBSITE_RUN_FROM_PACKAGE to your application settings. O valor dessa configuração deve ser uma URL (o local do arquivo de pacote específico que você deseja executar).The value of this setting should be a URL (the location of the specific package file you want to run). Você pode adicionar configurações no portal ou usando o CLI do Azure.You can add settings either in the portal or by using the Azure CLI.

Se você usar o armazenamento de BLOBs do Azure, use um contêiner privado com uma assinatura de acesso compartilhado (SAS) para dar acesso às funções 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 o aplicativo for reiniciado, ele buscará uma cópia do conteúdo.Any time the application restarts, it fetches a copy of the content. Sua referência deve ser válida durante o tempo de vida do aplicativo.Your reference must be valid for the lifetime of the application.

Quando usá-lo: A URL do pacote externo é o único método de implantação com suporte para Azure Functions em execução no Linux no plano de consumo, se o usuário não quiser que uma compilação remota ocorra.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. Ao atualizar o arquivo de pacote que um aplicativo de funções referencia, você deve sincronizar os gatilhos manualmente para informar ao Azure que seu aplicativo foi alterado.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 de zipZip deploy

Use a implantação de zip para enviar por push um arquivo. zip que contém seu aplicativo de funções para o Azure.Use zip deploy to push a .zip file that contains your function app to Azure. Opcionalmente, você pode definir seu aplicativo para iniciar a execução a partir do pacoteou especificar que ocorra uma compilação remota .Optionally, you can set your app to start running from package, or specify that a remote build occurs.

Como usá-lo: Implante usando sua ferramenta de cliente favorita: Visual Studio Code, Visual Studio, o Azure Functions Core Toolsou o CLI do Azure.How to use it: Deploy by using your favorite client tool: Visual Studio Code, Visual Studio, the Azure Functions Core Tools, or the Azure CLI. Por padrão, essas ferramentas usam a implantação zip e são executadas a partir do pacote.By default, these tools use zip deployment and run from package. As ferramentas principais e a extensão Visual Studio Code habilitam a compilação remota ao implantar no Linux.Core Tools and the Visual Studio Code extension both enable remote build when deploying to Linux. Para implantar manualmente um arquivo. zip em seu aplicativo de funções, siga as instruções em implantar de um arquivo. zip ou de uma URL.To manually deploy a .zip file to your function app, follow the instructions in Deploy from a .zip file or URL.

Ao implantar usando a implantação de zip, você pode definir seu aplicativo para ser executado do pacote.When you deploy by using zip deploy, you can set your app to run from package. Para executar a partir do pacote, defina o valor de configuração WEBSITE_RUN_FROM_PACKAGE aplicativo como 1.To run from package, set the WEBSITE_RUN_FROM_PACKAGE application setting value to 1. Recomendamos a implantação de zip.We recommend zip deployment. Ele produz tempos de carregamento mais rápidos para seus aplicativos e é o padrão para VS Code, o Visual Studio e o CLI do Azure.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 implantação de zip é a tecnologia de implantação recomendada para Azure Functions.When to use it: Zip deploy is the recommended deployment technology for Azure Functions.

Contêiner do DockerDocker container

Você pode implantar uma imagem de contêiner do Linux que contém seu aplicativo de funções.You can deploy a Linux container image that contains your function app.

Como usá-lo: Crie um aplicativo de funções do Linux no plano Premium ou dedicado e especifique a imagem de contêiner 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. É possível fazer isso de duas formas:You can do this in two ways:

  • Crie um aplicativo de funções do Linux em um plano de serviço Azure App no portal do Azure.Create a Linux function app on an Azure App Service plan in the Azure portal. Para publicar, selecione imagem do Dockere configure o contêiner.For Publish, select Docker Image, and then configure the container. Insira o local onde a imagem está hospedada.Enter the location where the image is hosted.
  • Crie um aplicativo de funções do Linux em um plano do serviço de aplicativo usando o CLI do Azure.Create a Linux function app on an App Service plan by using the Azure CLI. Para saber como, consulte criar uma função no Linux usando uma imagem personalizada.To learn how, see Create a function on Linux by using a custom image.

Para implantar em um aplicativo existente usando um contêiner personalizado, em Azure Functions Core Tools, use o comando func deploy .To deploy to an existing app by using a custom container, in Azure Functions Core Tools, use the func deploy command.

Quando usá-lo: Use a opção de contêiner do Docker quando precisar de mais controle sobre o ambiente do Linux em que seu aplicativo de funções é executado.When to use it: Use the Docker container option when you need more control over the Linux environment where your function app runs. Esse mecanismo de implantação está disponível somente para funções em execução no Linux.This deployment mechanism is available only for Functions running on Linux.

Implantação da Web (MSDeploy)Web Deploy (MSDeploy)

Implantação da Web pacotes e implanta seus aplicativos do Windows em qualquer servidor IIS, incluindo seus aplicativos de função em execução no Windows no 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: Use as Ferramentas do Visual Studio para Azure Functions.How to use it: Use Visual Studio tools for Azure Functions. Desmarque a caixa de seleção Executar do arquivo de pacote (recomendado) .Clear the Run from package file (recommended) check box.

Você também pode baixar Implantação da Web 3,6 e chamar MSDeploy.exe diretamente.You can also download Web Deploy 3.6 and call MSDeploy.exe directly.

Quando usá-lo: Implantação da Web tem suporte e não tem problemas, mas o mecanismo preferencial é a implantação de zip com a execução do pacote habilitado.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 Visual Studio.To learn more, see the Visual Studio development guide.

Controle do código-fonteSource control

Use o controle do código-fonte para conectar seu aplicativo de funções a um repositório git.Use source control to connect your function app to a Git repository. Uma atualização de código nesse repositório dispara a implantação.An update to code in that repository triggers deployment. Para obter mais informações, consulte o wiki do kudu.For more information, see the Kudu Wiki.

Como usá-lo: Use a central de implantação na área funções do portal para configurar a publicação do controle do código-fonte.How to use it: Use Deployment Center in the Functions area of the portal to set up publishing from source control. Para saber mais, confira Implantação contínua do Azure Functions.For more information, see Continuous deployment for Azure Functions.

Quando usá-lo: Usar o controle do código-fonte é a melhor prática para as equipes que colaboram com seus aplicativos de funções.When to use it: Using source control is the best practice for teams that collaborate on their function apps. O controle do código-fonte é uma boa opção de implantação que permite pipelines de implantação mais sofisticados.Source control is a good deployment option that enables more sophisticated deployment pipelines.

Git localLocal Git

Você pode usar o Git local para enviar código por push do computador local para Azure Functions usando 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 em implantação do git local para Azure app serviço.How to use it: Follow the instructions in Local Git deployment to Azure App Service.

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

Sincronização de nuvemCloud sync

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

Como usá-lo: Siga as instruções em sincronizar 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. Ao publicar usando a sincronização de nuvem, você deve sincronizar os gatilhos manualmente.When you publish by using cloud sync, you must manually sync triggers.

FTPFTP

Você pode usar o FTP para transferir arquivos diretamente para o Azure Functions.You can use FTP to directly transfer files to Azure Functions.

Como usá-lo: Siga as instruções em implantar conteúdo usando 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. Ao publicar usando FTP, você deve sincronizar os gatilhos manualmente.When you publish by using FTP, you must manually sync triggers.

Edição do portalPortal editing

No editor baseado em portal, você pode editar diretamente os arquivos que estão em seu aplicativo de funções (essencialmente implantando sempre que você salvar 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 suas funções no portal do Azure, você deve ter criado 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, usar qualquer outro método de implantação torna sua função somente leitura e impede a edição continuada 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 retornar a um estado no qual você pode editar os arquivos na portal do Azure, você pode ativar manualmente o modo de edição para Read/Write e remover quaisquer configurações de aplicativo relacionadas à implantação (como WEBSITE_RUN_FROM_PACKAGE).To 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 a usar o Azure Functions.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 você use 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 operacionais e idiomas que dão suporte à edição do portal:The following table shows the operating systems and languages that support portal editing:

Consumo do WindowsWindows Consumption Windows PremiumWindows Premium Windows dedicadoWindows Dedicated Consumo do LinuxLinux Consumption Linux PremiumLinux Premium Linux dedicadoLinux Dedicated
C#C#
Script do C#C# Script ** **
F#F#
JavaJava
JavaScript (Node.js)JavaScript (Node.js) ** **
Python (versão prévia)Python (Preview)
PowerShell (visualização)PowerShell (Preview)
TypeScript (Node.js)TypeScript (Node.js)

* A edição do portal é habilitada apenas para gatilhos HTTP e de temporizador para funções no Linux usando planos Premium e dedicados.* Portal editing is enabled only for HTTP and Timer triggers for Functions on Linux using Premium and dedicated plans.

Slots de implantaçãoDeployment slots

Ao implantar seu aplicativo de funções no Azure, você pode implantar em um slot de implantação separado em vez de diretamente na 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 implantação, consulte a documentação dos Slots de implantação do Azure Functions para obter detalhes.For more information on deployment slots, see the Azure Functions Deployment Slots documentation for details.

Próximas etapasNext steps

Leia estes artigos para saber mais sobre como implantar seus aplicativos de funções:Read these articles to learn more about deploying your function apps: