Tecnologias de implantação no Azure Functions

Você pode usar algumas tecnologias diferentes para implantar o código do projeto Azure Functions no Azure. Este artigo fornece uma visão geral dos métodos de implantação disponíveis e recomendações do melhor método a ser usado em vários cenários. Ele também fornece uma lista completa de detalhes importantes sobre as tecnologias de implantação subjacentes.

Métodos de implantação

A tecnologia de implantação usada para publicar código em seu aplicativo de funções no Azure depende de suas necessidades específicas e do ponto no ciclo de desenvolvimento. Por exemplo, durante o desenvolvimento e o teste, você pode fazer a implantação diretamente de sua ferramenta de desenvolvimento, como o Visual Studio Code. Quando seu aplicativo está em produção, é mais provável que você publique continuamente do controle do código-fonte ou usando um pipeline de publicação automatizado, o que pode incluir validação e testes.

A tabela a seguir descreve os métodos de implantação disponíveis para o seu projeto de código.

Tipo de implantação Métodos Mais adequado para...
Baseado em ferramentas Publicação do Visual Studio Code
Publicação do Visual Studio
Publicação do Core Tools
Implantações durante o desenvolvimento e outras implantações improvisadas. Implantar seu código sob demanda usando ferramentas de desenvolvimento locais.
Serviço de Aplicativo: gerenciado Centro de implantação (CI/CD)
Implantações de contêiner
Implantação contínua (CI/CD) do controle do código-fonte ou de um registro de contêiner. As implantações são gerenciadas pela plataforma do Serviço de Aplicativo (Kudu).
Pipelines externos Azure Pipelines
GitHub Actions
Os pipelines de produção que incluem validação, teste e outras ações que devem ser executados como parte de uma implantação automatizada. As implantações são gerenciadas pelo pipeline.

Implantações específicas devem usar a melhor tecnologia com base no cenário específico. Muitos dos métodos de implantação são baseados na implantação zip, que é recomendada para implantação.

Disponibilidade de tecnologia de implantação

O método de implantação também depende do plano de hospedagem e do sistema operacional no qual você executa seu aplicativo de funções.
Atualmente, o Functions oferece três planos de hospedagem:

Cada plano tem comportamentos diferentes. Nem todas as tecnologias de implantação estão disponíveis para cada plano de hospedagem e sistema operacional. Esse gráfico fornece informações sobre as tecnologias de implantação com suporte:

Tecnologia de implantação Consumo em Windows Windows Premium Windows Dedicado Consumo em Linux Linux Premium Linux Dedicado
URL de pacote externo1
Implantação de zip
Contêiner do Docker
Controle do código-fonte
Git local1
FTPS1
Edição no portal2

1 As tecnologias de implantação que exigem a sincronização manual de gatilhos não são recomendadas.
2 A edição no portal é desabilitada quando o código é implantado em seu aplicativo de funções de fora do portal. Para obter mais informações, incluindo detalhes de suporte a idiomas para edição no portal, consulte Detalhes de suporte a idiomas.

Principais conceitos

Alguns conceitos importantes são essenciais para entender como as implantações funcionam no Azure Functions.

Sincronização de gatilho

Quando você altera qualquer um de seus gatilhos, a infraestrutura do Functions deve estar ciente das alterações. A sincronização ocorre automaticamente para muitas tecnologias de implantação. No entanto, em alguns casos, você deve sincronizar seus gatilhos manualmente.

Você deve sincronizar manualmente gatilhos ao usar estas opções de implantação:

Use uma dessas formas de sincronização de gatilhos:

  • Reinicie seu aplicativo de funções no portal do Azure.
  • Envie uma solicitação HTTP POST para https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> usando a https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY>.
  • Envie 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. Substitua os espaços reservados por sua ID de assinatura, pelo nome do grupo de recursos e pelo nome do seu aplicativo de funções. Essa solicitação requer um token de acesso no Authorizationcabeçalho da solicitação.

Ao implantar usando uma URL de pacote externo, você precisa reiniciar manualmente seu aplicativo de funções para sincronizar totalmente sua implantação quando o pacote for alterado sem alterar a URL, que inclui a implantação inicial.

Quando seu aplicativo de funções é protegido por restrições de rede de entrada, o ponto de extremidade de gatilhos de sincronização só pode ser chamado de um cliente dentro da rede virtual.

Build remoto

O Azure Functions pode executar builds automaticamente no código que recebe após implantações zip. Esses builds diferem dependendo se o aplicativo está em execução no Windows ou no Linux.

Todos os aplicativos de funções em execução no Windows têm um pequeno aplicativo de gerenciamento, o site do scm fornecido pelo Kudu. Esse site manipula grande parte da implantação e da lógica de build do Azure Functions.

Quando um aplicativo é implantado no Windows, comandos específicos de linguagem, como dotnet restore (C#) ou npm install (JavaScript) são executados.

As considerações a seguir se aplicam ao uso de builds remotos durante a implantação:

  • Há suporte para builds remotos para aplicativos de funções em execução no Linux no plano de Consumo. No entanto, as opções de implantação são limitadas para esses aplicativos porque eles não têm um site do scm (Kudu).
  • Aplicativos de funções em execução no Linux em um plano Premium ou em um plano Dedicado (Serviço de Aplicativo) têm um site do scm (Kudu), mas são limitados em comparação com o Windows.
  • Builds remotos não são executados quando um aplicativo está usando run-from-package. Para saber como usar o build remoto nesses casos, confira Implantação zip.
  • Você pode ter problemas com o build remoto se seu aplicativo foi criado antes de o recurso ser disponibilizado (1º de agosto de 2019). Para aplicativos mais antigos, crie um novo aplicativo de funções ou execute az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> para atualizar seu aplicativo de funções. Esse comando pode precisar de suas tentativas para ter êxito.

Armazenamento de conteúdo do aplicativo

Vários métodos de implantação armazenam o conteúdo do aplicativo implantado ou criado na conta de armazenamento associada ao aplicativo de funções. O Functions tenta usar o compartilhamento de conteúdo de Arquivos do Azure quando configurado, mas alguns métodos armazenam o conteúdo na instância de armazenamento de blobs associada à conexão AzureWebJobsStorage. Confira os detalhes nos parágrafos Onde o conteúdo do aplicativo é armazenado de cada tecnologia de implantação abordada na próxima seção.

Importante

A conta de armazenamento é usada para armazenar dados importantes do aplicativo, às vezes incluindo o próprio código do aplicativo. Você deve limitar o acesso de outros aplicativos e usuários à conta de armazenamento.

Detalhes da tecnologia de implantação

Os métodos de implantação a seguir estão disponíveis no Azure Functions.

URL de pacote externo

Você pode usar uma URL de pacote externo para referenciar um arquivo de pacote remoto (. zip) que contém seu aplicativo de funções. O arquivo é baixado a partir da URL fornecida, e o aplicativo é executado no modo Executar a partir do pacote.

Como usar: Adicione WEBSITE_RUN_FROM_PACKAGE às configurações do aplicativo. O valor dessa configuração deve ser uma URL (o local do arquivo de pacote específico que você deseja executar). Você pode adicionar configurações no portal ou usando a CLI do Azure.

Se você usar o armazenamento de Blob do Azure, use um contêiner privado com uma SAS (assinatura de acesso compartilhado) para dar ao Functions acesso ao pacote. Sempre que o aplicativo for reiniciado, ele buscará uma cópia do conteúdo. Sua referência deve ser válida durante o tempo de vida do aplicativo.

Quando usar: 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. Sempre que você implantar o arquivo de pacote referenciado por um aplicativo de funções, deverá sincronizar gatilhos manualmente, incluindo a implantação inicial. Ao alterar o conteúdo do arquivo de pacote e não a URL em si, você também deve reiniciar seu aplicativo de funções para sincronizar gatilhos.

Onde o conteúdo do aplicativo é armazenado: O conteúdo do aplicativo é armazenado na URL especificada. Isso pode estar nos Blobs do Azure, possivelmente na conta de armazenamento especificada pela conexão AzureWebJobsStorage. Algumas ferramentas de cliente podem usar como padrão a implantação em um blob nessa conta. Por exemplo, para aplicativos de Consumo do Linux, a CLI do Azure tentará implantar por meio de um pacote armazenado em um blob na conta especificada por AzureWebJobsStorage.

Implantação de zip

Use a implantação de zip para enviar por push um arquivo. zip que contém seu aplicativo de funções para o Azure. Opcionalmente, você pode configurar seu aplicativo para iniciar a execução a partir do pacoteou especificar que ocorra uma compilação remota.

Como usar: Faça a implantação usando sua ferramenta de cliente favorita: Visual Studio Code, Visual Studio ou a linha de comando, com o Azure Functions Core Tools. Por padrão, essas ferramentas usam a implantação zip e são executadas a partir do pacote. O Core Tools e a extensão do Visual Studio Code habilitam a compilação remota em implantações no Linux. Para implantar manualmente um arquivo zip em seu aplicativo de funções, siga as instruções em Implantar a partir de um arquivo zip ou de uma URL.

Ao fazer a implantação usando a implantação zip, você pode configurar seu aplicativo para ser executado a partir do pacote. Para executar a partir do pacote, defina o valor de configuração do aplicativo WEBSITE_RUN_FROM_PACKAGE como 1. Recomendamos a implantação zip. Ele produz tempos de carregamento mais rápidos para seus aplicativos e é o padrão para o VS Code, o Visual Studio e a CLI do Azure.

Quando usar: A implantação zip é a tecnologia de implantação recomendada para o Azure Functions.

Onde o conteúdo do aplicativo é armazenado: Por padrão, o conteúdo do aplicativo de uma implantação zip é armazenado no sistema de arquivos, que pode ser apoiado por Arquivos do Azure da conta de armazenamento especificada quando o aplicativo de funções foi criado. No Consumo do Linux, o conteúdo do aplicativo é persistido em um blob na conta de armazenamento especificada pela conexão AzureWebJobsStorage.

Contêiner do Docker

Você pode implantar um aplicativo de funções em execução em um contêiner do Linux.

Como usá-lo:crie suas funções em um contêiner do Linux e implante o contêiner em um plano Premium ou Dedicado no Azure Functions ou em outro host de contêiner. Use o Azure Functions Core Tools para criar um Dockerfile personalizado para o projeto que você usa para compilar um aplicativo de funções em contêiner. Você pode usar o contêiner nas seguintes implantações:

Quando usar: Use a opção de contêiner do Docker quando precisar de mais controle sobre o ambiente do Linux onde seu aplicativo de funções é executado e onde o contêiner está hospedado. Esse mecanismo de implantação está disponível somente para as funções em execução no Linux.

Onde o conteúdo do aplicativo é armazenado: O conteúdo do aplicativo é armazenado no registro de contêiner especificado como parte da imagem.

Controle do código-fonte

Você pode habilitar a integração contínua entre seu aplicativo de funções e um repositório de código-fonte. Com o controle do código-fonte habilitado, uma atualização para o código no repositório de origem conectado dispara a implantação do código mais recente do repositório. Para obter mais informações, consulte Implantação contínua do Azure Functions.

Como usá-lo: a maneira mais fácil de configurar a publicação do controle do código-fonte é do Centro de Implantação na área Funções do portal. Para saber mais, confira Implantação contínua do Azure Functions.

Quando usar: Usar o controle do código-fonte é a melhor prática para equipes que trabalham de forma colaborativa em aplicativos de funções. O controle do código-fonte é uma boa opção de implantação que permite pipelines de implantação mais sofisticados. O controle do código-fonte geralmente é habilitado em um slot de preparo, que pode ser trocado para produção após a validação de atualizações do repositório. Para obter mais informações, consulte Slots de implantação do Azure Functions.

Onde o conteúdo do aplicativo é armazenado: O conteúdo do aplicativo está no sistema de controle do código-fonte, mas um conteúdo de aplicativo clonado e criado localmente é armazenado no sistema de arquivos do aplicativo, o que pode ser apoiado por Arquivos do Azure da conta de armazenamento especificada quando o aplicativo de funções foi criado.

Git local

Você pode usar o Git local para enviar códigos por push do computador local para o Azure Functions usando o Git.

Como usar: Siga as instruções em Implantação do Git local para o Serviço de Aplicativo do Azure.

Quando usá-lo: para reduzir a chance de erros, você deve evitar o uso de métodos de implantação que exigem a etapa adicional de sincronização manual de gatilhos. Use a implantação em zip quando possível.

Onde o conteúdo do aplicativo é armazenado: O conteúdo do aplicativo é armazenado no sistema de arquivos, que pode ser apoiado por Arquivos do Azure da conta de armazenamento especificada quando o aplicativo de funções foi criado.

FTP/S

Você pode usar FTP/S para transferir arquivos diretamente para o Azure Functions, embora esse método de implantação não seja recomendado. Quando não estiver planejando usar o FTP, você deverá desabilitá-lo. Se você optar por usar o FTP, deverá impor FTPS. Para saber como no portal do Azure, consulte Impor FTPS.

Como usá-lo: siga as instruções nas configurações de implantação do FTPS para obter o URL e as credenciais que você pode usar para implantar em seu aplicativo de funções usando FTPS.

Quando usá-lo: para reduzir a chance de erros, você deve evitar o uso de métodos de implantação que exigem a etapa adicional de sincronização manual de gatilhos. Use a implantação em zip quando possível.

Onde o conteúdo do aplicativo é armazenado: O conteúdo do aplicativo é armazenado no sistema de arquivos, que pode ser apoiado por Arquivos do Azure da conta de armazenamento especificada quando o aplicativo de funções foi criado.

Edição do portal

No editor baseado em portal, você pode editar diretamente os arquivos que estão em seu aplicativo de funções (essencialmente, implantando sempre que salvar suas alterações).

Como usar: Para poder editar suas funções no portal do Azure, você deve ter criado suas funções no 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. Para retornar a um estado no qual você pode editar os arquivos no portal do Azure, você pode reativar manualmente o modo de edição para Read/Write e remover as configurações de aplicativo relacionadas à implantação (como WEBSITE_RUN_FROM_PACKAGE).

Quando usá-lo: O portal é uma boa maneira de começar a usar o Azure Functions. Para trabalhos de desenvolvimento mais avançados, recomendamos que você use uma das seguintes ferramentas de cliente:

Onde o conteúdo do aplicativo é armazenado: O conteúdo do aplicativo é armazenado no sistema de arquivos, que pode ser apoiado por Arquivos do Azure da conta de armazenamento especificada quando o aplicativo de funções foi criado.

A tabela a seguir mostra os sistemas operacionais e os idiomas que suportam a edição do portal:

Idioma Consumo em Windows Windows Premium Windows Dedicado Consumo em Linux Linux Premium Linux Dedicado
C#1
Java
JavaScript (Node.js)
Python2
PowerShell
TypeScript (Node.js)

1 A edição no portal só tem suporte para arquivos de script C#, que são executados em processo com o host. Para obter mais informações, consulte a referência do desenvolvedor do script C# do Azure Functions (.csx).
2 A edição no portal só tem suporte para o modelo de programação do Python v1.

Comportamentos de implantação

Quando você implanta atualizações no código do aplicativo de funções, as funções em execução são encerradas nesse momento. Após a conclusão da implantação, o novo código é carregado para iniciar o processamento de solicitações. Confira Melhorar o desempenho e a confiabilidade do Azure Functions para aprender a gravar funções sem estado e defensivas.

Se precisar de mais controle sobre essa transição, você deverá usar slots de implantação.

Slots de implantação

Ao implantar seu aplicativo de funções no Azure, você pode fazer a implantação em um slot de implantação separado em vez de diretamente na produção. Implantar em um slot de implantação e depois alternar para produção após a verificação é a maneira recomendada de configurar a implantação contínua.

A maneira como você implanta em um slot depende da ferramenta de implantação específica que você usa. Por exemplo, ao usar o Azure Functions Core Tools, você inclui a opção--slot para indicar o nome de um slot específico para o comando func azure functionapp publish.

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.

Próximas etapas

Leia estes artigos para saber mais sobre como implantar seus aplicativos de funções: