Partilhar via


Tecnologias de implementação no Funções do Azure

Pode usar várias tecnologias diferentes para implementar o código do seu projeto Funções do Azure no Azure. Este artigo fornece uma visão geral dos métodos de implantação disponíveis para você e recomendações para o melhor método a ser usado em vários cenários. Também fornece uma lista abrangente e detalhes chave sobre as tecnologias de implementação subjacentes.

Métodos de implantação

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

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

Tipo de implementação Métodos Melhor para...
Baseado em ferramentas CLI do Azure
Publicação do Visual Studio Code
Visual Studio Publish
• Publicação de ferramentas principais
Implantações durante o desenvolvimento e outras implantações improvisadas. Implementar o seu código on-demand usando ferramentas de desenvolvimento local.
Serviço de Aplicações gerido • Centro de Implantação (CI/CD)
• Implantações de contêineres
Implantação contínua (CI/CD) a partir do controle do código-fonte ou de um registro de contêiner. A plataforma App Service (Kudu) gere as implementaçõ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 implementação automatizada. O pipeline gere as implementações.

Use a melhor tecnologia para o seu cenário específico. Muitos dos métodos de implantação baseiam-se na implantação zip, que é recomendada para implantação.

Disponibilidade da 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ção.

Atualmente, o Functions oferece cinco opções para hospedar seus aplicativos de função:

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

Tecnologia de implantação Consumo Flexível Consumo Elástico Premium Dedicado Container Apps
Uma implantação
Deploy Zip
URL do pacote externo1
Container Docker Somente Linux Somente Linux Somente Linux
Controle do código-fonte Apenas para Windows
Git Local1 Apenas para Windows
FTPS1 Apenas para Windows
Edição dentro do 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 interior do portal é desativada quando o código é implantado na sua aplicação de funções por fonte externa ao portal. Para obter mais informações, incluindo detalhes de suporte a idiomas para edição no portal, consulte Detalhes de suporte a idiomas.

Conceitos-chave

Alguns conceitos-chave são críticos para compreender como funcionam as implementações no Funções do Azure.

Sincronização de gatilhos

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

Deve sempre sincronizar manualmente os gatilhos ao usar estas opções de implementação:

Pode sincronizar manualmente os gatilhos de uma destas formas:

  • Reinicie a sua aplicação de funções no portal Azure. O host de funções realiza uma sincronização de gatilhos em segundo plano após o início da aplicação.

  • Use o az rest comando para enviar uma solicitação HTTP POST que chama a syncfunctiontriggers API, 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 dos gatilhos de sincronização:

  • Deve reiniciar manualmente a sua aplicação de funções sempre que implementar uma versão atualizada do pacote de implementação usando o mesmo URL externo do pacote.
  • Para aplicações a correr num plano Consumption ou Elastic Premium, deve também sincronizar manualmente os gatilhos nestes cenários:
    • Quando as implementações usam uma URL de pacote externa com uma implementação baseada no gestor de recursos, utilizando templates ARM ou ficheiros Bicep ou Terraform.
    • Quando atualizas o pacote de implementação no local usando o mesmo URL externo do pacote.
  • Quando adiciona restrições de rede a uma aplicação de funções existente, deve garantir a conectividade à conta de armazenamento padrão do host definida nas AzureWebJobsStorage definições da aplicação. Para mais informações, consulte Como usar uma conta de armazenamento segura com Funções do Azure.

Compilação remota

Pode pedir ao Funções do Azure para realizar uma compilação remota do seu projeto de código durante a implementação. Nestes cenários, solicite uma build remota em vez de construir localmente:

  • Estás a implementar uma aplicação numa aplicação de funções baseada em Linux que desenvolveste num computador Windows. Esta situação é comum no desenvolvimento de aplicações em Python. Podes acabar com bibliotecas incorretas quando constróis o pacote de implementação localmente no Windows.
  • O seu projeto tem dependências de um índice de pacotes personalizado.
  • Você deseja reduzir o tamanho do seu pacote de implantação.

A forma como solicitas uma build remota depende se a tua aplicação corre no Azure no Windows ou no Linux.

Todas as aplicações de funções a correr em Windows têm uma pequena aplicação de gestão, o site scm fornecido por Kudu. Este site trata de grande parte da lógica de implementação e construção do Funções do Azure.

Quando implementas uma aplicação para Windows, o processo de implementação executa comandos específicos da linguagem, como dotnet restore (C#) ou npm install (JavaScript).

As seguintes considerações se aplicam ao usar compilações remotas durante a implantação:

  • As compilações remotas são suportadas para funções que correm em sistemas 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 scm site (Kudu).
  • As aplicações funcionais a correr em Linux num plano Premium ou num plano Dedicado (App Service) têm um site scm (Kudu), mas é limitado em comparação com Windows.
  • Compilações remotas não ocorrem quando uma aplicação usa run-from-package. Para saber como usar a compilação remota nesses casos, consulte Zip deploy.
  • Você pode ter problemas com a compilação remota quando 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ção ou execute az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> para atualizar seu aplicativo de função. Este comando pode levar duas tentativas para ter êxito.

Armazenamento de conteúdo do aplicativo

Os métodos de implementação baseados em pacotes armazenam o pacote na conta de armazenamento associada à função app, conforme definido pela definição AzureWebJobsStorage. Quando disponíveis, as aplicações dos planos Consumption e Elastic Premium tentam usar a partilha de conteúdo do Ficheiros do Azure a partir desta conta, mas também pode manter o pacote noutro local. As aplicações do plano Flex Consumption usam um contentor de armazenamento na conta de armazenamento por defeito, a menos que configure uma conta de armazenamento diferente para usar na implementaçã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 seguras

Quando a sua aplicação de função tem endpoints privados ativados e o acesso à rede pública está desativado, o site de implementação (Kudu) não é acessível publicamente. Quando a conta de armazenamento usada pela aplicação de funções também está protegida atrás de endpoints privados, as tecnologias que têm de aceder ao armazenamento são igualmente bloqueadas. Devido a estas restrições, as tecnologias de implementação descritas neste artigo não conseguem aceder a uma aplicação de funções totalmente segura em rede a partir de fora da rede virtual.

Para implementar código numa aplicação de função segura em rede, as suas ferramentas de implementação devem ter conectividade à rede virtual. Pode alcançar esta conectividade das seguintes formas:

Para mais informações sobre como configurar a sua aplicação de funções numa rede virtual, consulte Como configurar Funções do Azure com uma rede virtual.

Detalhes da tecnologia de implantação

Os seguintes métodos de implementação estão disponíveis no Funções do Azure. Para determinar quais tecnologias cada plano de hospedagem suporta, consulte a tabela de disponibilidade de tecnologia de implantação .

Uma implantação

Uma única implantação é a tecnologia de implementação suportada para aplicações num plano Flex Consumption. O resultado final é um pacote .zip pronto para execução no qual seu aplicativo de função é executado.

Como usá-la: Implementar usando a funcionalidade Visual Studio Code publicar, ou a partir da linha de comandos usando Funções do Azure Core Tools ou a CLI do Azure. O nosso Azure Dev Ops Task e GitHub Action utilizam de forma semelhante um único deploy ao detetarem que uma aplicação Flex Consumption está a ser utilizada para implementação.

Ao criar um aplicativo Flex Consumption, você deve especificar um contêiner de armazenamento de implantação (blob), bem como um método de autenticação para ele. Por defeito, é usada a mesma conta de armazenamento da ligação AzureWebJobsStorage, com uma cadeia de conexão como método de autenticação. Assim, suas configurações de implantação são definidas durante o tempo de criação do aplicativo sem qualquer necessidade de configurações do aplicativo.

Quando utilizá-lo: O deploy é a única tecnologia de implantação disponível para aplicações de funções executadas num plano Flex Consumption.

Onde o conteúdo do aplicativo é armazenado: ao criar um aplicativo da função Flex Consumption, você especifica um contêiner de armazenamento de implantação. Este contentor de blob é onde as suas ferramentas carregam o conteúdo da aplicação que implementou. Para alterar a localização, pode visitar a lâmina Definições de Implementação no portal Azure ou usar o CLI do Azure.

Sugestão

Uma ferramenta de diagnóstico Flex Consumption Deployment está disponível no portal Azure. Abra a sua aplicação Flex Consumption, selecione Diagnosticar e resolver problemas, e procure por Flex Consumption Deployment. Esta ferramenta apresenta informações detalhadas sobre as suas implementações, incluindo histórico de implementações, estado do pacote e recomendações de resolução de problemas.

Implantação Zip

Zip deploy é a tecnologia de implantação padrão e recomendada para aplicativos funcionais nos planos Consumo, Elastic Premium e Serviço de Aplicativo (Dedicado). O resultado final é um pacote .zip pronto para execução no qual seu aplicativo de função é executado. Difere do URL de pacotes externos porque a plataforma é responsável pela construção remota e armazenamento do conteúdo da sua aplicação.

Como usá-lo: Implementa usando a tua ferramenta cliente favorita: Visual Studio Code, Visual Studio, ou a partir da linha de comandos usando Funções do Azure Core Tools ou a CLI do Azure. O nosso Azure Dev Ops Task e GitHub Action aproveitam igualmente o zip deploy.

Ao implantar usando zip deploy, você pode definir seu aplicativo para ser executado a partir do pacote. Para executar a partir do pacote, defina o valor da configuração do WEBSITE_RUN_FROM_PACKAGE aplicativo como 1. Recomendamos o desdobramento do arquivo zip. Proporciona tempos de carregamento mais rápidos para as tuas aplicações, e é o padrão para VS Code, Visual Studio e CLI do Azure.

Quando usá-lo: Zip deploy é a tecnologia de implementação padrão e recomendada para aplicações funcionais nos planos Windows Consumption, Windows e Linux Elastic Premium, e Windows e Linux App Service (Dedicado).

Onde o conteúdo da aplicação está armazenado: O conteúdo da aplicação de uma implementação em zip é, por defeito, armazenado no sistema de ficheiros, que o Azure pode suportar através do Ficheiros do Azure, a partir da conta de armazenamento que especificar ao criar a aplicação de funções. Na configuração Linux Consumption, o conteúdo da aplicação é armazenado num blob na conta de armazenamento especificada pela definição da aplicação AzureWebJobsStorage, e a definição da aplicação WEBSITE_RUN_FROM_PACKAGE assume o valor do URL do blob.

URL do pacote externo

A URL do pacote externo é uma opção se você quiser controlar manualmente como as implantações são executadas. Você assume a responsabilidade de carregar um pacote .zip pronto para ser executado que contém o conteúdo da aplicação criada para o armazenamento de blobs e referenciar essa URL externa como uma definição de aplicação na sua aplicação de funções. Sempre que a sua aplicação é reiniciada, ela busca o pacote, monta-o e é executada no modo Executar a partir do Pacote.

Como usá-lo: adicione WEBSITE_RUN_FROM_PACKAGE às configurações do seu aplicativo. O valor dessa configuração deve ser uma URL de blob apontando para o local do pacote específico que você deseja que seu aplicativo execute. Pode adicionar definições no portal ou usando o CLI do Azure.

Se usar Armazenamento de Blobs do Azure, a sua aplicação Function pode aceder ao contentor através de uma ligação gerida baseada em identidade ou com uma assinatura de acesso partilhada (SAS). A opção que escolhes afeta o tipo de URL que usas como valor para WEBSITE_RUN_FROM_PACKAGE. A identidade gerenciada é recomendada para segurança geral e porque os tokens SAS expiram e devem ser mantidos manualmente.

Sempre que você implantar o arquivo de pacote ao qual um aplicativo de função faz referência, deverá sincronizar manualmente os gatilhos, incluindo a implantação inicial. Quando você altera o conteúdo do arquivo de pacote e não a URL em si, você também deve reiniciar seu aplicativo de função para sincronizar gatilhos. Consulte nosso guia de instruções sobre como configurar essa tecnologia de implantação.

Quando usá-lo: a URL do pacote externo é o único método de implantação suportado para aplicativos executados no plano de Consumo do Linux quando você não deseja que uma compilação remota ocorra. Este método é também a tecnologia de implementação recomendada quando criar a sua aplicação sem Ficheiros do Azure. Para aplicativos escaláveis executados no Linux, você deve considerar a hospedagem do plano Flex Consumption.

Onde o conteúdo do aplicativo é armazenado: você é responsável por carregar o conteúdo do aplicativo para o armazenamento de blobs. Pode usar qualquer conta de armazenamento de blobs, embora o Armazenamento de Blobs do Azure seja recomendado.

contentor Docker

Você pode implantar um aplicativo funcional em execução em um contêiner Linux.

Como usá-lo:Cria as tuas funções num contentor Linux depois implementa o contentor num plano Premium ou Dedicado no Funções do Azure ou noutro host de container. Usa as Ferramentas Centrais Funções do Azure para criar um ficheiro Docker personalizado para o teu projeto, que usas para criar uma aplicação de funções containerizada. Você pode usar o contêiner nas seguintes implantações:

Quando usá-lo: use a opção de contêiner do Docker quando precisar de mais controle sobre o ambiente Linux onde seu aplicativo de função é executado e onde o contêiner está hospedado. Este mecanismo de implementação está disponível apenas para funções em execução no Linux.

Onde o conteúdo da aplicação é armazenado: Armazena o conteúdo da aplicação no registo de contentores especificado como parte da imagem.

Controlo de origem

Você pode habilitar a integração contínua entre seu aplicativo de função e um repositório de código-fonte. Quando ativas o controlo de versão, uma atualização do código no repositório de origem ligado desencadeia a implementação do código mais recente do repositório. Para mais informações, consulte o Desdobramento contínuo para Funções do Azure.

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

Quando usá-lo: usar o controle do código-fonte é a prática recomendada para equipes que colaboram em seus aplicativos de função. O controle do código-fonte é uma boa opção de implantação que permite pipelines de implantação mais sofisticados. Normalmente, ativas o controlo de código fonte num slot de staging, que podes adicionar à produção após a validação das atualizações do repositório. Para mais informações, consulte Funções do Azure slots de implementação.

Onde o conteúdo da aplicação é armazenado: O sistema de controlo de versões armazena o conteúdo da aplicação. O sistema de ficheiros da aplicação armazena um formulário de conteúdo da aplicação clonado e construído localmente, que o Ficheiros do Azure da conta de armazenamento especificada quando a aplicação de funções foi criada pode recuperar.

Git Local

Use o Git local para enviar código da sua máquina local para o Funções do Azure usando o Git.

Como usá-lo: Siga as instruções em Implantação Git Local para Serviço de Aplicações do Azure.

Quando usá-lo: Para reduzir a probabilidade de erros, evite usar métodos de implementação que exijam o passo adicional de sincronizar manualmente os gatilhos. Utilize a implantação zip quando possível.

Onde o conteúdo da aplicação é armazenado: O conteúdo da aplicação é armazenado no sistema de ficheiros, que pode ser suportado por Ficheiros do Azure da conta de armazenamento que especifica ao criar a aplicação funcional.

FTP/S

Podes usar FTP/S para transferir diretamente ficheiros para o Funções do Azure, mas não uses este método de implementação. Quando não planeias usar FTP, desativa-o. Se optares por usar FTP, aplica FTPS. Para saber como fazer isto no portal Azure, veja Enforce FTPS.

Como usá-lo: Siga as instruções nas definições de implementação do FTPS para obter o URL e as credenciais que pode usar para implementar na sua aplicação de funções usando FTPS.

Quando usá-lo: Para reduzir a probabilidade de erros, evite usar métodos de implementação que exijam o passo adicional de sincronizar manualmente os gatilhos. Utilize a implantação zip quando possível.

Onde o conteúdo do aplicativo é armazenado: O conteúdo do aplicativo é armazenado no sistema de arquivos. As implementações FTP/FTPS falham quando o sistema de ficheiros da sua aplicação é suportado pelo Ficheiros do Azure na conta de armazenamento padrão do anfitrião. FTP/FTPS falha com Ficheiros do Azure como armazenamento montado devido às limitações dos protocolos FTP.

Edição do portal

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

Como usá-lo: Para editar as suas funções no portal Azure, deve criar as suas funções no portal. Para preservar uma única fonte de verdade, o uso de qualquer outro método de implantação torna sua função somente leitura e impede a edição contínua do portal. Para regressar a um estado em que possa editar os seus ficheiros no portal de Azure, pode manualmente voltar a ativar o modo de edição para Read/Write e remover quaisquer definições de aplicação relacionadas com a implementação (como WEBSITE_RUN_FROM_PACKAGE).

Quando usá-lo: O portal é uma boa forma de começar com Funções do Azure. Devido às limitações desenvolvimento no portal Azure, deve usar uma das seguintes ferramentas de cliente para trabalhos de desenvolvimento mais avançados:

Onde o conteúdo da aplicação é armazenado: O conteúdo da aplicação é armazenado no sistema de ficheiros, que pode ser suportado por Ficheiros do Azure da conta de armazenamento que especifica ao criar a aplicação funcional.

Comportamentos de implantação

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

Planos de consumo, Elastic Premium e dedicado: As funções atualmente em execução são encerradas quando um novo código é implantado. Após a conclusão da implantação, o novo código é carregado para começar a processar solicitações. Esse comportamento de terminação forçada é conhecido como uma estratégia de recriação. Para implantações quase sem tempo de inatividade nos planos Consumo, Elastic Premium e Dedicado, use slots de implantação.

Revise Melhore o desempenho e a fiabilidade do Funções do Azure para aprender a escrever funções sem estado e defensivas.

Plano Flex Consumption: 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 Flex Consumption suporta exclusivamente duas estratégias diferentes de atualização de site. Você pode configurar atualizações contínuas para implantações sem tempo de inatividade.

Blocos de implementação

Quando implementas a tua aplicação de funções no Azure, podes implementar para um slot de implementação separado em vez de diretamente para produção. Implantar em um slot de implantação e, em seguida, mudar para produção após 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 Funções do Azure Core Tools, inclui a opção --slot para indicar o nome de um slot específico para o comando func azure functionapp publish.

Para mais informações sobre slots de implementação, consulte a documentação de Slots de Implementação do Funções do Azure.

Próximos passos

Leia estes artigos para saber mais sobre como implantar seus aplicativos de função: