Compartilhar via


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 CLI do Azure
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 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 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 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 os gatilhos ao usar essas opções de implantação:

Você pode sincronizar gatilhos de uma destas maneiras:

  • Reinicie seu aplicativo de funções no portal do Azure.

  • 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
    

Ao implantar uma versão atualizada do pacote de implantação e manter a mesma URL de pacote externo, você precisará reiniciar manualmente seu aplicativo de funções. Isso indica ao host que ele deve sincronizar e reimplantar suas atualizações da mesma URL do pacote. O host do Functions também executa uma sincronização de gatilho em segundo plano depois que o aplicativo é iniciado. No entanto, para os planos de hospedagem de Consumo e Elastic Premium, você também deve sincronizar manualmente gatilhos nestes cenários:

  • Implantações usando uma URL de pacote externo com modelos ARM ou Terraform.
  • Ao atualizar o pacote de implantação na mesma URL de pacote externo.

Build remoto

Você pode solicitar ao Azure Functions para realizar uma compilação remota do seu projeto de código durante a implantação. Nestes cenários, você deverá solicitar uma compilação remota em vez de compilar localmente:

  • Você está implantando um aplicativo em um aplicativo de funções baseado em Linux que foi desenvolvido em um computador Windows. Isso é comum no caso do desenvolvimento de aplicativos Python. Você pode acabar com bibliotecas incorretas sendo usadas ao construir o pacote de implantação localmente no Windows.
  • Seu projeto tem dependências em um índice de pacotes personalizado.
  • Você quer reduzir o tamanho do seu pacote de implantação.

Como você solicita uma compilação remota depende se seu aplicativo roda no 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 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).
  • Os aplicativos de funções executados no Linux em um Plano Premium ou em um Plano Dedicado (Serviço de Aplicativo) têm um scmsite (Kudu), mas é limitado em comparação ao 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

Métodos de implantação baseados em pacotes armazenam o pacote na conta de armazenamento associada ao aplicativo de funções, que é definida na configuração AzureWebJobsStorage. Quando disponível, os aplicativos nos planos Consumo e Elastic Premium tentam usar o compartilhamento de conteúdo do Arquivos do Azure desta conta, mas você também pode manter o pacote em outro local. Os aplicativos no plano de Consumo Flex, em vez disso, usam um contêiner de armazenamento na conta de armazenamento padrão, a menos que você configure uma conta de armazenamento diferente para usar na 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.

Detalhes da tecnologia de implantação

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

One deploy

One deploy é a única tecnologia de implantação suportada para aplicativos no 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 usar: Implante com o recurso de publicação do Visual Studio Code, ou de linha de comando usando Azure Functions Core Tools ou o a CLI do Azure. Nosso Tarefa do Azure Dev Ops e Ação do GitHub também aproveitam a implantado única quando detectam que um aplicativo de Consumo Flex está sendo implantado.

Quando você cria um aplicativo de Consumo Flex, você precisa especificar um contêiner de armazenamento (blob) de implantação, bem como um método de autenticação para ele. Por padrão, a mesma conta de armazenamento que a conexão AzureWebJobsStorage é usada, 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 usar: One deploy é a única tecnologia de implantação disponível para aplicativos de funções executados no 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. Este é um contêiner de blob em que a plataforma fará o upload do conteúdo do aplicativo que você implantou. Para alterar a localização, você pode visitar a folha de Configurações de Implantação no portal do Azure ou usar a CLI do Azure.

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. Difere da URL do pacote externo pelo fato de nossa plataforma ser responsável pela compilação remota e armazenamento do seu conteúdo de aplicativo.

Como usar: Implante usando sua ferramenta cliente favorita: Visual Studio Code, Visual Studio, ou de linha de comando usando Azure Functions Core Tools ou o CLI do Azure. Nosso Tarefa do Azure Dev Ops e Ação do GitHub 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 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 padrão e recomendada para aplicativos de funções nos planos de Consumo em Windows, Windows e Linux Elastic Premium e Serviço de Aplicativo do Windows e Linux (Dedicado).

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 em Linux, o conteúdo do aplicativo é mantido em um blob na conta de armazenamento especificada pela configuração de aplicativo AzureWebJobsStorage, e a configuração WEBSITE_RUN_FROM_PACKAGE assumirá o valor da 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 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 a CLI do Azure.

Se você usar o Armazenamento de Blobs do Azure, seu Aplicativo de Funções poderá acessar o contêiner tanto usando uma conexão baseada em identidade gerenciada quanto com uma assinatura de acesso compartilhado (SAS). A opção que você escolher afeta o tipo de URL que você usa como 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ê cria seu aplicativo sem o 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 o 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: Crie suas funções em um contêiner Linux e depois 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. Devido a limitações de desenvolvimento no portal do Azure, você deve usar uma das seguintes ferramentas de cliente para trabalhos de desenvolvimento mais avançados:

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.

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: