Compartilhar via


Tecnologias de implantação no Azure Functions

Você pode usar várias tecnologias diferentes para implantar seu código de projeto Azure Functions para 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 abrangente e detalhes importantes sobre as tecnologias de implantação subjacentes.

Métodos de implantação

A tecnologia de implantação que você usa 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 teste, você pode implantar diretamente de sua ferramenta de desenvolvimento, como 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 CLI do Azure
Visual Studio Code publicar
Publicar no Visual Studio
Publicação do Core Tools
Implantações durante o desenvolvimento e outras implantações improvisadas. Implantando 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. A plataforma do Serviço de Aplicativo (Kudu) gerencia implantações.
Pipelines externos Azure Pipelines
GitHub Actions
Pipelines de produção que incluem validação, testes e outras ações que devem ser executadas como parte de uma implantação automatizada. O pipeline gerencia as implantações.

Use a melhor tecnologia para seu cenário específico. Muitos dos métodos de implantação são baseados na implantação do 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 cinco opções para hospedar seus aplicativos de funções:

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 Flexível Consumo Elástico Premium Dedicado Aplicativos de Contêiner
One deploy
Implantação de zip
URL de pacote externo1
Contêiner do Docker Somente Linux Somente Linux Somente Linux
Controle do código-fonte somente Windows
Git local1 somente Windows
FTPS1 somente Windows
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 dos principais conceitos são fundamentais para entender como as implantações funcionam em 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ê sempre deve sincronizar gatilhos manualmente ao usar estas opções de implantação:

Você pode sincronizar gatilhos manualmente de uma destas maneiras:

  • Reinicie seu aplicativo de funções no portal Azure. O host do Functions realiza uma sincronização de gatilhos em segundo plano após o início do aplicativo.

  • Use o comando az rest para enviar uma solicitação HTTP POST que chama a API syncfunctiontriggers, como neste exemplo:

    az rest --method post --url https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Web/sites/<APP_NAME>/syncfunctiontriggers?api-version=2016-08-01
    

Tenha estas considerações em mente para a operação de gatilhos de sincronização:

  • Você deve reiniciar manualmente o aplicativo de funções sempre que implantar uma versão atualizada do pacote de implantação usando a mesma URL de pacote externo.
  • Para aplicativos executados em um plano Consumption ou Elastic Premium, você também deve sincronizar manualmente os gatilhos nestes cenários:
    • Quando as implantações usam uma URL de pacote externo com uma implantação baseada no gerenciador de recursos usando modelos do ARM ou arquivos Bicep ou Terraform.
    • Quando você atualiza o pacote de implantação in-place usando a mesma URL de pacote.
  • Ao adicionar restrições de rede a um aplicativo de funções existente, você deve garantir a conectividade com a conta de armazenamento de host padrão definida na configuração do AzureWebJobsStorage aplicativo. Para obter mais informações, consulte Como usar uma conta de armazenamento protegida com Azure Functions.

Build remoto

Você pode solicitar Azure Functions para executar um build remoto do seu projeto de código durante a implantação. Nesses cenários, solicite uma construção remota ao invés de montar localmente:

  • Você está implantando um aplicativo em um aplicativo de funções baseado em Linux que você desenvolveu em um computador Windows. Essa situação geralmente é o caso para Python desenvolvimento de aplicativos. Você pode acabar com bibliotecas incorretas ao criar o pacote de implantação localmente em Windows.
  • Seu projeto tem dependências em um índice de pacotes personalizado.
  • Você quer reduzir o tamanho do seu pacote de implantação.

A forma como você solicita um build remoto depende se seu aplicativo é executado em Azure em Windows ou Linux.

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

Quando você implanta um aplicativo para Windows, o processo de implantação executa comandos específicos da linguagem, como dotnet restore (C#) ou npm install (JavaScript).

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 Dedicated (App Service) têm um site scm (Kudu), mas o site é limitado em comparação com o Windows.
  • Compilações remotas não ocorrem quando um aplicativo usa run-from-package. Para saber como usar o build remoto nesses casos, confira Implantação zip.
  • Você pode ter problemas com o build remoto quando seu aplicativo foi criado antes do 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

Os métodos de implantação baseados em pacote armazenam o pacote na conta de armazenamento associada ao aplicativo de funções, que a configuração AzureWebJobsStorage define. Se disponíveis, os aplicativos do plano de Consumo e Elástico Premium tentam usar o compartilhamento de conteúdo do Arquivos do Azure da sua conta, mas você também pode manter o pacote em outro local. Os aplicativos de plano de consumo flex usam um contêiner de armazenamento na conta de armazenamento padrão, a menos que você configure uma conta de armazenamento diferente a ser usada para implantação. Para obter mais informações, revise os detalhes em Onde o conteúdo do aplicativo é armazenado em 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.

Redes virtuais protegidas

Quando seu aplicativo de funções tem pontos de extremidade privados habilitados e o acesso à rede pública é desabilitado, o site de implantação (Kudu) não estará acessível publicamente. Quando a conta de armazenamento usada pelo aplicativo de funções também é protegida por pontos de extremidade privados, as tecnologias que precisam acessar o armazenamento são bloqueadas da mesma forma. Devido a essas restrições, as tecnologias de implantação descritas neste artigo não podem acessar um aplicativo de funções totalmente protegido pela rede de fora da rede virtual.

Para implantar o código em um aplicativo de funções protegido pela rede, suas ferramentas de implantação devem ter conectividade com a rede virtual. Você pode obter essa conectividade destas maneiras:

Para obter mais informações sobre como configurar seu aplicativo de funções em uma rede virtual, consulte Como configurar Azure Functions com uma rede virtual.

Detalhes da tecnologia de implantação

Os métodos de implantação a seguir estão disponíveis no Azure Functions. Para determinar quais tecnologias cada plano de hospedagem dá suporte, consulte a tabela de disponibilidade de tecnologia de implantação .

One deploy

A tecnologia One Deploy é a única tecnologia de implantação suportada para apps em um plano de Consumo Flex. O resultado final será um pacote .zip pronto para execução no qual seu aplicativo de funções será executado.

Como usá-lo: Implantar usando o recurso de publicação do Visual Studio Code, ou a partir da linha de comando usando o Azure Functions Core Tools ou o CLI do Azure. Nossa tarefa Azure Dev Ops e GitHub Action aproveitam de forma semelhante uma implantação quando detectam que um aplicativo de Consumo Flex está sendo implantado.

Ao criar um aplicativo Flex Consumption, é necessário especificar um contêiner de armazenamento de implantação (blob) e um método de autenticação para ele. Por padrão, é usada a mesma conta de armazenamento da conexão AzureWebJobsStorage, com uma cadeia de conexão como método de autenticação. Assim, suas definições de implantação são configuradas durante a criação do aplicativo sem a necessidade de configurações de aplicativo.

Quando usá-la: uma implantação é a única tecnologia de implantação disponível para os aplicativos de funções em execução em um plano de Consumo Flex.

Onde o conteúdo do aplicativo é armazenado: Quando você cria um aplicativo de funções de Consumo Flex, você especifica um contêiner de armazenamento de implantação. Esse contêiner de blob é onde suas ferramentas carregam o conteúdo do aplicativo que você implantou. Para alterar o local, você pode visitar a folha Configurações de Implantação no portal do Azure ou usar o CLI do Azure.

Dica

Uma ferramenta de diagnóstico Flex Consumption Deployment está disponível no portal Azure. Abra o aplicativo Flex Consumption, selecione Diagnosticar e resolver problemas e faça uma pesquisa em Flex Consumption Deployment. Essa ferramenta exibe informações detalhadas sobre suas implantações, incluindo histórico de implantação, status do pacote e recomendações de solução de problemas.

Implantação de zip

A implantação Zip é a tecnologia de implantação padrão e recomendada para aplicativos de funções nos planos Consumo, Elastic Premium e Serviço de Aplicativo (Dedicado). O resultado final será um pacote .zip pronto para execução no qual seu aplicativo de funções será executado. Ela difere da URL do pacote externo , pois a plataforma é responsável por compilar remotamente e armazenar o conteúdo do aplicativo.

Como usá-lo: Implantar usando sua ferramenta de cliente favorita: Visual Studio CodeVisual Studio ou na linha de comando usando Azure Functions Core Tools ou o CLI do Azure. Nossa tarefa Azure Dev Ops e GitHub Action também aproveitam a implantação zip.

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 gera tempos de carregamento mais rápidos para seus aplicativos e é o padrão para o VS Code, Visual Studio e o CLI do Azure.

Quando usá-la: Implantação Zip é a tecnologia de implantação padrão e recomendada para aplicativos de funções nos planos Windows Consumo, Windows e Linux Elastic Premium, e Windows e Linux App Service (Dedicado).

Onde o conteúdo do aplicativo é armazenado: o conteúdo do aplicativo de um deploy zip é armazenado por padrão no sistema de arquivos, que o Azure pode suportar com o Arquivos do Azure da conta de armazenamento especificada ao criar o aplicativo função. Em Consumo em Linux, o conteúdo do aplicativo é persistido em um blob na conta de armazenamento especificada pela configuração do aplicativo AzureWebJobsStorage, e a configuração do aplicativo WEBSITE_RUN_FROM_PACKAGE assume o valor da URL do blob.

URL de pacote externo

A URL do pacote externo é uma opção se você quiser controlar manualmente como as implantações são realizadas. Você é responsável por fazer o upload de um pacote .zip pronto para execução contendo seu conteúdo de aplicativo interno para o armazenamento de blobs e referenciar essa URL externa como uma configuração de aplicativo no seu aplicativo de funções. Sempre que seu aplicativo é reiniciado, ele busca o pacote, monta-o e executa 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 de blob apontando para a localização do pacote específico que você deseja que seu aplicativo execute. Você pode adicionar configurações no portal ou usando o CLI do Azure.

Se você usar o Armazenamento de Blobs do Azure, seu aplicativo de funções poderá acessar o contêiner usando uma conexão baseada em identidade gerenciada ou com uma assinatura de acesso compartilhado (SAS). A opção escolhida afeta o tipo de URL que você usa como o valor para WEBSITE_RUN_FROM_PACKAGE. Identidade gerenciada é recomendada para maior segurança e porque os tokens SAS expiram e devem ser mantidos manualmente.

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. Consulte nosso guia de instruções sobre como configurar essa tecnologia de implantação.

Quando usá-lo: URL de pacote externo é o único método de implantação com suporte para aplicativos executados no plano de Consumo em Linux quando você não deseja que ocorra uma compilação remota. Esse método também é a tecnologia de implantação recomendada quando você criar seu aplicativo sem Arquivos do Azure. Para aplicativos escalonáveis executados no Linux, você deve considerar o uso de hosting no plano de Consumo Flex.

Onde o conteúdo do aplicativo é armazenado: Você é responsável por fazer o upload do conteúdo do seu aplicativo para o armazenamento de blobs. Você pode usar qualquer conta de armazenamento de blobs, embora Armazenamento de Blobs do Azure seja recomendado.

contêiner do Docker

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

Como usá-lo:Criar suas funções em um contêiner do Linux implantar o contêiner em um plano Premium ou Dedicado em Azure Functions ou em outro host de contêiner. Use o Azure Functions Core Tools para criar um Dockerfile personalizado para seu projeto que você usa para criar um aplicativo de funções em contêineres. 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: Você armazena o conteúdo do aplicativo 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. Quando você habilita o controle do código-fonte, 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 para 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 obter mais informações, consulte Implantação contínua para 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. Normalmente, você habilita o controle de versão em um ambiente de teste (staging), que pode ser trocado para produção após a validação das 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 sistema de controle do código-fonte armazena o conteúdo do aplicativo. O sistema de arquivos do aplicativo armazena uma forma de conteúdo do aplicativo clonada e construída localmente, que pode ser suportada pelo Arquivos do Azure da conta de armazenamento especificada quando o aplicativo de funções foi criado.

Git local

Use o Git local para enviar código por push do computador local para Azure Functions usando o Git.

Como usá-lo: Siga as instruções em implantação local do Git para Serviço de Aplicativo do Azure.

Quando usá-lo: Para reduzir a chance de erros, evite usar métodos de implantação que exigem a etapa adicional de sincronização manual de gatilhos. Use a implantação do zip quando possível.

Onde o conteúdo do aplicativo é armazenado: O conteúdo do aplicativo é armazenado no sistema de arquivos, que pode ser suportado por Arquivos do Azure da conta de armazenamento especificada ao criar o function app.

FTP/S

Você pode usar FTP/S para transferir arquivos diretamente para Azure Functions, mas não use esse método de implantação. Quando você não estiver planejando usar FTP, desabilite-o. Se você optar por usar FTP, imponha FTPS. Para aprender como no portal do Azure, consulte Enforce FTPS.

Como usá-lo: Siga as instruções nas configurações de implantação do FTPS para obter a 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, evite usar métodos de implantação que exigem a etapa adicional de sincronização manual de gatilhos. Use a implantação do zip quando possível.

Onde o conteúdo do aplicativo é armazenado: O conteúdo do aplicativo é armazenado no sistema de arquivos. As implantações FTP/FTPS falham quando o sistema de arquivos do aplicativo é apoiado por Arquivos do Azure na conta de armazenamento de host padrão. O FTP/FTPS falha com Arquivos do Azure como armazenamento montado devido a limitações do FTP.

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 usá-lo: Para editar suas funções no portal do Azure, você deve criar 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 seus arquivos no portal do Azure, você pode retornar 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 Azure Functions. Devido às limitações de desenvolvimento no portal Azure, você deve usar uma das seguintes ferramentas de cliente para um trabalho de desenvolvimento mais avançado:

Onde o conteúdo do aplicativo é armazenado: o conteúdo do aplicativo é armazenado no sistema de arquivos, que pode ser suportado por Arquivos do Azure da conta de armazenamento especificada ao criar o aplicativo de funções.

Comportamentos de implantação

Quando você implanta atualizações no código do aplicativo de funções, o comportamento da implantação depende do seu plano de hospedagem:

Consumo, Elastic Premium e planos dedicados: No momento, as funções em execução são encerradas quando o novo código é implantado. Após a conclusão da implantação, o novo código é carregado para iniciar o processamento de solicitações. Esse comportamento de encerramento forçado é conhecido como uma estratégia de recriação. Para implantações de tempo de inatividade quase zero em planos de Consumo, Elástico Premium e Dedicado, use slots de implantação.

Examine Prove o desempenho e a confiabilidade do Azure Functions para saber como escrever funções sem estado e defensivas.

Plano de consumo flex: O comportamento padrão também usa a estratégia de recriação, encerrando funções atualmente em execução durante a implantação. No entanto, o Consumo Flex dá suporte exclusivo a duas estratégias de atualização de site diferentes. Você pode configurar atualizações sem interrupção para implantações de tempo de inatividade zero.

Slots de implantação

Ao implantar seu app de funções no Azure, você pode implantá-lo 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 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 Slots de Implantação do Azure Functions.

Próximas etapas

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