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

Você pode usar algumas tecnologias diferentes para implantar seu código de projeto do Azure Functions 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. Ele também fornece uma lista exaustiva e os principais detalhes 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ção 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 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 • Publicação de código do Visual Studio
• Publicação do Visual Studio
• Publicação de ferramentas principais
Implantações durante o desenvolvimento e outras implantações improvisadas. Implantando seu código sob demanda usando ferramentas de desenvolvimento local.
Serviço de Aplicativo gerenciado • 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. As implantações são gerenciadas pela plataforma do Serviço de Aplicativo (Kudu).
Condutas externas • Azure Pipelines
• Ações do GitHub
Pipelines de produção que incluem validação, testes e outras ações que devem ser executadas 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 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 Dedicada Aplicativos de contêiner
OneDeploy
Implantação Zip
URLdo pacote externo 1
Contêiner do Docker Somente Linux Somente Linux Somente Linux
Controle do código-fonte Apenas para Windows
Gitlocal 1 Apenas para Windows
FTPS1 Apenas para Windows
Ediçãono portal 2

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 é desativada quando o código é implantado no seu aplicativo de função 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.

Conceitos-chave

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

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.

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

Você pode sincronizar gatilhos de uma destas maneiras:

  • Reinicie seu aplicativo de função no portal do Azure.

  • 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
    

Quando você implanta uma versão atualizada do pacote de implantação e mantém a mesma URL de pacote externo, você precisa reiniciar manualmente seu aplicativo de função. Isso indica ao host que ele deve sincronizar e reimplantar suas atualizações a partir da mesma URL do pacote. O host Functions também executa uma sincronização de gatilho em segundo plano após o aplicativo ser iniciado. No entanto, para os planos de hospedagem Consumo e Elastic Premium, você também deve sincronizar manualmente os 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 do pacote externo.

Compilação remota

Você pode solicitar que o Azure Functions execute uma compilação remota do seu projeto de código durante a implantação. Nesses cenários, você deve solicitar uma compilação remota em vez de criar localmente:

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

A forma como você solicita uma compilação remota depende se seu aplicativo é executado no Azure no Windows ou Linux.

Todos os aplicativos funcionais executados no Windows têm um pequeno aplicativo de gerenciamento, o scm site fornecido pelo Kudu. Este site lida com grande parte da lógica de implantação e compilação do Azure Functions.

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

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

  • Compilações remotas são suportadas para aplicativos de função executados 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 scm site (Kudu).
  • Os aplicativos funcionais executados no Linux em um plano Premium ou em um plano Dedicado (Serviço de Aplicativo) têm um scm site (Kudu), mas é limitado em comparação com o Windows.
  • As compilações remotas não são executadas quando um aplicativo está usando 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 que o recurso fosse 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 implantação baseados em pacote armazenam o pacote na conta de armazenamento associada ao aplicativo de função, que é definida na configuração AzureWebJobsStorage . Quando disponíveis, os aplicativos do plano Consumo e Elastic Premium tentam usar o compartilhamento de conteúdo dos Arquivos do Azure dessa conta, mas você também pode manter o pacote em outro local. Em vez disso, os aplicativos do plano Flex Consumption 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 seguintes métodos de implantação estão disponíveis no Azure Functions.

Uma implantação

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

Como usá-lo: implante com o recurso de publicação de código do Visual Studio ou a partir da linha de comando usando as Ferramentas Principais do Azure Functions ou a CLI do Azure. Nossa Tarefa de Operações de Desenvolvimento do Azure e a Ação do GitHub também aproveitam uma implantação quando detetam que um aplicativo Flex Consumption está sendo implantado.

Ao criar um aplicativo Flex Consumption, você precisará especificar um contêiner de armazenamento de implantação (blob), bem como um método de autenticação para ele. Por padrão, a mesma conta de armazenamento da AzureWebJobsStorage conexão é usada, 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 usá-lo: uma implantação é a única tecnologia de implantação disponível para aplicativos funcionais executados no 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 é um contêiner de blob onde a plataforma carregará 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 a CLI do Azure.

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 de .zip pronto para execução no qual seu aplicativo de função é executado. Ele difere do URL do pacote externo porque nossa plataforma é responsável pela criação remota e armazenamento do conteúdo do seu aplicativo.

Como usá-lo: implante usando sua ferramenta de cliente favorita: Visual Studio Code, Visual Studio ou na linha de comando usando as Ferramentas Principais do Azure Functions ou a CLI do Azure. Nossa Tarefa de Operações de Desenvolvimento do Azure e a Ação do GitHub também aproveitam a implantação zip.

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

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

Onde o conteúdo do aplicativo é armazenado: o conteúdo do aplicativo de uma implantação zip por padrão é armazenado no sistema de arquivos, que pode ser apoiado pelos Arquivos do Azure da conta de armazenamento especificada quando o aplicativo de função foi criado. No Consumo do Linux, o conteúdo do aplicativo é persistido em um blob na conta de armazenamento especificada pela configuração do AzureWebJobsStorage aplicativo, e a configuração WEBSITE_RUN_FROM_PACKAGE do aplicativo 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 executadas. Você assume a responsabilidade de carregar um pacote de .zip pronto para execução contendo o conteúdo do aplicativo criado para o armazenamento de blob e referenciar essa URL externa como uma configuração de aplicativo em seu aplicativo de função. Sempre que seu aplicativo é reiniciado, ele busca o pacote, monta-o e é executado 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. Você pode adicionar configurações no portal ou usando a CLI do Azure.

Se você usar o Armazenamento de Blobs do Azure, seu aplicativo Function 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 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. Esse método também é a tecnologia de implantação recomendada quando você cria seu aplicativo sem os Arquivos 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. Você pode usar qualquer conta de armazenamento de blob, embora o Armazenamento de Blob do Azure seja recomendado.

Contêiner do Docker

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

Como usá-lo: crie suas funções em um contêiner Linux e implante o contêiner em um plano Premium ou Dedicado no Azure Functions ou em outro host de contêiner. Use as Ferramentas Principais do Azure Functions para criar um Dockerfile personalizado para seu projeto que você usa para criar um aplicativo de função em contêiner. 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 do aplicativo é armazenado: o conteúdo do aplicativo é armazenado no registro de contêiner 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. Com o controle do código-fonte habilitado, uma atualização do código no repositório de origem conectado aciona 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 a partir do controle do código-fonte é a partir do Centro de Implantação na área Funções do portal. Para obter mais informações, consulte Implantação contínua para o Azure Functions.

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. O controle do código-fonte geralmente é ativado em um slot de preparação, 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 conteúdo do aplicativo está no sistema de controle de origem, mas um conteúdo de aplicativo clonado e criado localmente é armazenado no sistema de arquivos do aplicativo, que pode ser apoiado pelos Arquivos do Azure da conta de armazenamento especificada quando o aplicativo de função foi criado.

Git Local

Você pode usar o Git local para enviar código de sua máquina local para o Azure Functions usando o Git.

Como usá-lo: siga as instruções em Implantação do Git Local no 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 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 pelos Arquivos do Azure a partir da conta de armazenamento especificada quando o aplicativo de função foi criado.

FTP/S

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

Como usá-lo: Siga as instruções nas configurações de implantação de FTPS para obter a URL e as credenciais que você pode usar para implantar em seu aplicativo de função 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 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 pelos Arquivos do Azure a partir da conta de armazenamento especificada quando o aplicativo de função 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ção (essencialmente implantando toda vez que você salvar suas alterações).

Como usá-lo: 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, 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 retornar a um estado no qual você pode editar seus arquivos no portal do Azure, você pode ativar manualmente o modo de edição de volta e Read/Write remover todas 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 um trabalho de desenvolvimento mais avançado, 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 pelos Arquivos do Azure a partir da conta de armazenamento especificada quando o aplicativo de função foi criado.

A tabela a seguir mostra os sistemas operacionais e idiomas que oferecem suporte à edição no 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ó é suportada 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ó é suportada para o modelo de programação Python v1.

Comportamentos de implantação

Quando você implanta atualizações no código do aplicativo de função, as funções atualmente em execução são encerradas. Após a conclusão da implantação, o novo código é carregado para começar a processar solicitações. Revisão Melhore o desempenho e a confiabilidade do Azure Functions para saber como escrever funções defensivas e sem monitoração de estado.

Se precisar de mais controle sobre essa transição, use slots de implantação.

Blocos de implementação

Ao implantar seu aplicativo de função no Azure, você pode implantar em um slot de implantação separado em vez de diretamente na produção. Implantar em um slot de implantação e, em seguida, trocar para a 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 as Ferramentas Principais do Azure Functions, você inclui a opção para indicar o--slot nome de um slot específico para o func azure functionapp publish comando.

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óximos passos

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