Execute suas funções a partir de um arquivo de pacote no Azure

No Azure, você pode executar suas funções diretamente de um arquivo de pacote de implantação em seu aplicativo de função. A outra opção é implantar seus arquivos no d:\home\site\wwwroot diretório (Windows) ou /home/site/wwwroot (Linux) do seu aplicativo funcional.

Este artigo descreve os benefícios de executar suas funções a partir de um pacote. Ele também mostra como habilitar essa funcionalidade em seu aplicativo de função.

Benefícios da execução a partir de um arquivo de pacote

Há vários benefícios em executar a partir de um arquivo de pacote:

  • Reduz o risco de problemas de bloqueio de cópia de ficheiros.
  • Pode ser implantado em um aplicativo de produção (com reinicialização).
  • Você pode ter certeza dos arquivos que estão sendo executados em seu aplicativo.
  • Melhora o desempenho das implantações do Azure Resource Manager.
  • Pode reduzir os tempos de arranque a frio, particularmente para funções JavaScript com grandes árvores de pacotes npm.

Para obter mais informações, consulte este anúncio.

Permitir que as funções sejam executadas a partir de um pacote

Para permitir que seu aplicativo de função seja executado a partir de um pacote, adicione uma WEBSITE_RUN_FROM_PACKAGE configuração às configurações do seu aplicativo de função. A WEBSITE_RUN_FROM_PACKAGE configuração pode ter um dos seguintes valores:

Valor Descrição
1 Indica que o aplicativo de função é executado a partir de um arquivo de pacote local implantado d:\home\data\SitePackages na pasta (Windows) ou /home/data/SitePackages (Linux) do seu aplicativo de função.
<URL> Define uma URL que é o local remoto do arquivo de pacote específico que você deseja executar. Necessário para aplicativos de funções executados no Linux em um plano de consumo.

A tabela a seguir indica as opções recomendadas WEBSITE_RUN_FROM_PACKAGE para implantação em um sistema operacional e plano de hospedagem específicos:

Plano de alojamento Windows Linux
Consumo 1 é altamente recomendado. Só o <URL> é suportado.
Premium 1 é recomendado. 1 é recomendado.
Dedicado 1 é recomendado. 1 é recomendado.

Considerações gerais

  • O arquivo de pacote deve ser .zip formatado. Os formatos tar e gzip não são suportados atualmente.
  • A implantação zip é recomendada.
  • Ao implantar seu aplicativo de função no Windows, você deve definir WEBSITE_RUN_FROM_PACKAGE e 1 publicar com implantação zip.
  • Quando você executa a partir de um pacote, a wwwroot pasta se torna somente leitura e você receberá um erro ao gravar arquivos nesse diretório. Os arquivos também são somente leitura no portal do Azure.
  • O tamanho máximo de um arquivo de pacote de implantação é atualmente de 1 GB.
  • Não é possível usar o cache local ao executar a partir de um pacote de implantação.
  • Se o seu projeto precisar usar a compilação remota, não use a configuração do WEBSITE_RUN_FROM_PACKAGE aplicativo. Em vez disso, adicione a configuração do aplicativo de personalização de SCM_DO_BUILD_DURING_DEPLOYMENT=true implantação. Para Linux, adicione também a ENABLE_ORYX_BUILD=true configuração. Para saber mais, consulte Compilação remota.

Nota

WEBSITE_RUN_FROM_PACKAGE não funciona com MSDeploy como descrito aqui. Você receberá um erro durante a implantação, como ARM-MSDeploy Deploy Failed. Altere /MSDeploy para /ZipDeploy e este erro será resolvido.

Adicionando a configuração WEBSITE_RUN_FROM_PACKAGE

Há várias maneiras de adicionar, atualizar e excluir as configurações do aplicativo de função:

As alterações nas configurações do aplicativo de função exigem que seu aplicativo de função seja reiniciado.

Usando WEBSITE_RUN_FROM_PACKAGE = 1

Esta seção fornece informações sobre como executar seu aplicativo de função a partir de um arquivo de pacote local.

Considerações para implantação a partir de um pacote local

  • Usar um pacote no local é a opção recomendada para execução a partir do pacote de implantação, exceto no Linux hospedado em um plano de consumo.
  • A implantação Zip é a maneira recomendada de carregar um pacote de implantação em seu site.
  • Quando não estiver usando a implantação zip, verifique se a d:\home\data\SitePackages pasta (Windows) ou /home/data/SitePackages (Linux) tem um arquivo chamado packagename.txt. Esse arquivo contém apenas o nome, sem qualquer espaço em branco, do arquivo de pacote nesta pasta que está sendo executada no momento.

Integração com implementação zip

A implantação Zip é um recurso do Serviço de Aplicativo do Azure que permite implantar seu projeto de aplicativo de função no wwwroot diretório. O projeto é empacotado como um arquivo de implantação .zip. As mesmas APIs podem ser usadas para implantar seu pacote na d:\home\data\SitePackages pasta (Windows) ou /home/data/SitePackages (Linux).

Com o WEBSITE_RUN_FROM_PACKAGE valor de configuração do aplicativo de , as APIs de implantação zip copiam seu pacote para a d:\home\data\SitePackages pasta (Windows) ou (Linux) em vez de 1extrair os arquivos para d:\home\site\wwwroot (Windows) ou /home/data/SitePackages/home/site/wwwroot (Linux). Ele também cria o packagename.txt arquivo. Após uma reinicialização, o pacote é montado wwwroot como um sistema de arquivos somente leitura. Para obter mais informações sobre implantação zip, consulte Implantação zip para Azure Functions.

Nota

Quando ocorre uma implantação, uma reinicialização do aplicativo de função é acionada. As execuções de função atualmente em execução durante a implantação são encerradas. Consulte Melhorar o desempenho e a fiabilidade do Azure Functions para saber como escrever funções defensivas e sem estado.

Usando WEBSITE_RUN_FROM_PACKAGE = URL

Esta seção fornece informações sobre como executar seu aplicativo de função a partir de um pacote implantado em um ponto de extremidade de URL. Esta opção é a única suportada para execução a partir de um pacote no Linux hospedado em um plano de consumo.

Considerações para implantar a partir de uma URL

  • Ao executar um aplicativo de função no Windows, a configuração WEBSITE_RUN_FROM_PACKAGE = <URL> do aplicativo oferece pior desempenho de inicialização a frio e não é recomendada.
  • Ao especificar uma URL, você também deve sincronizar manualmente os gatilhos depois de publicar um pacote atualizado.
  • O tempo de execução do Functions deve ter permissões para acessar a URL do pacote.
  • Você não deve implantar seu pacote no Armazenamento de Blobs do Azure como um blob público. Em vez disso, use um contêiner privado com uma SAS (Assinatura de Acesso Compartilhado) ou use uma identidade gerenciada para habilitar o tempo de execução do Functions para acessar o pacote.
  • Você deve manter todas as URLs SAS usadas para implantação. Quando um SAS expira, o pacote não pode mais ser implantado. Nesse caso, você deve gerar uma nova SAS e atualizar a configuração em seu aplicativo de função. Você pode eliminar essa carga de gerenciamento usando uma identidade gerenciada.
  • Ao executar em um plano Premium, certifique-se de eliminar partidas a frio.
  • Ao executar um plano dedicado, certifique-se de que ativou o Always On.
  • Você pode usar o Gerenciador de Armazenamento do Azure para carregar arquivos de pacote para contêineres de blob em sua conta de armazenamento.

Carregando manualmente um pacote para o Armazenamento de Blobs

Para implantar um pacote compactado ao usar a opção URL, você deve criar um pacote de implantação compactado .zip e carregá-lo no destino. Este exemplo implanta em um contêiner no Armazenamento de Blobs.

  1. Crie um pacote .zip para o seu projeto usando o utilitário de sua escolha.

  2. No portal do Azure, procure o nome da sua conta de armazenamento ou procure por ele em contas de armazenamento.

  3. Na conta de armazenamento, selecione Contêineres em Armazenamento de dados.

  4. Selecione + Contêiner para criar um novo contêiner de Armazenamento de Blob em sua conta.

  5. Na página Novo contêiner, forneça um Nome (por exemplo, "implantações"), verifique se o nível de acesso público é Privado e selecione Criar.

  6. Selecione o contêiner que você criou, selecione Carregar, navegue até o local do arquivo de .zip que você criou com seu projeto e selecione Carregar.

  7. Após a conclusão do carregamento, escolha o arquivo de blob carregado e copie o URL. Talvez seja necessário gerar uma URL SAS se não estiver usando uma identidade

  8. Pesquise seu aplicativo de função ou procure por ele na página Aplicativo de função.

  9. No seu aplicativo de função, selecione Configurações em Configurações.

  10. Na guia Configurações do aplicativo, selecione Nova configuração do aplicativo

  11. Insira o valor WEBSITE_RUN_FROM_PACKAGE para o Nome e cole a URL do seu pacote no Armazenamento de Blobs como o Valor.

  12. Selecione OK. Em seguida, selecione Salvar>continuar para salvar a configuração e reiniciar o aplicativo.

Agora você pode executar sua função no Azure para verificar se a implantação foi bem-sucedida usando o pacote de implantação .zip arquivo.

A seguir mostra um aplicativo de função configurado para ser executado a partir de um arquivo .zip hospedado no armazenamento de Blob do Azure:

WEBSITE_RUN_FROM_ZIP app setting

Buscar um pacote do Armazenamento de Blobs do Azure usando uma identidade gerenciada

O Armazenamento de Blobs do Azure pode ser configurado para autorizar solicitações com a ID do Microsoft Entra. Isso significa que, em vez de gerar uma chave SAS com uma expiração, você pode confiar na identidade gerenciada do aplicativo. Por predefinição, será utilizada a identidade atribuída pelo sistema da aplicação. Se desejar especificar uma identidade atribuída pelo usuário, você pode definir a configuração do aplicativo para a WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID ID de recurso dessa identidade. A configuração também pode aceitar "SystemAssigned" como um valor, embora isso seja o mesmo que omitir a configuração completamente.

Para permitir que o pacote seja buscado usando a identidade:

  1. Verifique se o blob está configurado para acesso privado.

  2. Conceda à identidade a função Leitor de Dados de Blob de Armazenamento com escopo sobre o blob do pacote. Consulte Atribuir uma função do Azure para acesso a dados de blob para obter detalhes sobre como criar a atribuição de função.

  3. Defina a configuração do aplicativo para a WEBSITE_RUN_FROM_PACKAGE URL de blob do pacote. Isso provavelmente será do formato "https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}" ou similar.

Próximos passos