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 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. Este gráfico fornece informações sobre as tecnologias de implantação suportadas:

Tecnologia de implantação Consumo em Windows Windows Premium Windows Dedicado Consumo em Linux Linux Premium Linux Dedicado
URLdo pacote externo 1
Implantação Zip
Contêiner do Docker
Controle do código-fonte
Gitlocal 1
FTPS1
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 três maneiras:

  • Reinicie seu aplicativo de função no portal do Azure.
  • Envie uma solicitação HTTP POST para https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> usar a chave mestra.
  • 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 pela ID da assinatura, pelo nome do grupo de recursos e pelo nome do aplicativo de função. Essa solicitação requer um token de acesso no cabeçalho da Authorization solicitação.

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

Quando seu aplicativo de função é 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.

Compilação remota

O Azure Functions pode executar compilações automaticamente no código que recebe após implantações zip. Essas compilações diferem dependendo se seu aplicativo está sendo executado 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 de função 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

Vários métodos de implantação armazenam a carga útil do aplicativo implantado ou criado na conta de armazenamento associada ao aplicativo de função. O Functions tenta usar o compartilhamento de conteúdo dos Arquivos do Azure quando configurado, mas alguns métodos armazenam a carga útil na instância de armazenamento de blob associada à AzureWebJobsStorage conexão. Consulte 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 seguintes métodos de implantação estão disponíveis no Azure Functions.

URL do pacote externo

Você pode usar uma URL de pacote externo para fazer referência a um arquivo de pacote remoto (.zip) que contém seu aplicativo de função. O arquivo é baixado da URL fornecida e o aplicativo é 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 (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 assinatura de acesso compartilhado (SAS) para conceder ao Functions acesso ao pacote. Sempre que o aplicativo for reiniciado, ele buscará uma cópia do conteúdo. A sua referência deve ser válida durante todo o período de vigência do pedido.

Quando usá-lo: a URL do pacote externo é o único método de implantação com suporte para o 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 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.

Onde o conteúdo do aplicativo é armazenado: o conteúdo do aplicativo é armazenado no URL especificado. Isso pode estar nos Blobs do Azure, possivelmente na conta de armazenamento especificada pela AzureWebJobsStorage conexão. 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 pelo AzureWebJobsStorage.

Implantação Zip

Use zip deploy para enviar por push um arquivo de .zip que contém seu aplicativo de função para o Azure. Opcionalmente, você pode definir seu aplicativo para começar a ser executado a partir do pacote ou especificar que uma compilação remota ocorra.

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. Por padrão, essas ferramentas usam a implantação zip e são executadas a partir do pacote. As ferramentas principais e a extensão Visual Studio Code habilitam a compilação remota ao implantar no Linux. Para implantar manualmente um arquivo .zip em seu aplicativo de função, siga as instruções em Implantar a partir de um arquivo .zip ou URL.

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: a implantação Zip é a tecnologia de implantação recomendada para o Azure Functions.

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 AzureWebJobsStorage conexão.

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, em seguida, 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:

Linguagem 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: