Partilhar via


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 c:\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 funções 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).
  • Verifica os arquivos que estão sendo executados em seu aplicativo.
  • Melhora o desempenho das implantações do Azure Resource Manager.
  • Reduz 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

Os aplicativos de função no plano de hospedagem Flex Consumption são executados a partir de um pacote por padrão. Nenhuma configuração especial precisa ser feita.

Para permitir que seu aplicativo de função seja executado a partir de um pacote nos planos de hospedagem Consumo, Elastic Premium e Dedicado (Serviço de Aplicativo), adicione uma WEBSITE_RUN_FROM_PACKAGE configuração de aplicativo ao seu aplicativo de função. A WEBSITE_RUN_FROM_PACKAGE configuração do aplicativo pode ter um dos seguintes valores:

valor Description
1 Indica que o aplicativo de função é executado a partir de um arquivo de pacote local implantado c:\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 os valores recomendados 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

  • Não adicione a configuração do WEBSITE_RUN_FROM_PACKAGE aplicativo aos aplicativos no plano Flex Consumption .
  • O arquivo de pacote deve ser .zip formatado. Os formatos tar e gzip não são suportados.
  • 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 é somente leitura e você recebe um erro se você 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 é 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 obter mais informações, consulte Compilação remota.

Nota

A WEBSITE_RUN_FROM_PACKAGE configuração do aplicativo não funciona com MSDeploy conforme descrito em MSDeploy VS. ZipDeploy. Você receberá um erro durante a implantação, como ARM-MSDeploy Deploy Failed. Para resolver esse erro, altere /MSDeploy para /ZipDeploy.

Adicionar 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.

Criando o arquivo zip

O arquivo zip que você implanta deve conter todos os arquivos necessários para executar seu aplicativo de função. Você pode criar manualmente um arquivo zip a partir do conteúdo de uma pasta de projeto do Functions usando a funcionalidade de compactação de .zip interna ou ferramentas de terceiros.

O arquivo deve incluir o arquivo host.json na raiz da pasta extraída. A pilha de idiomas selecionada para o aplicativo de função cria requisitos adicionais:

Importante

Para idiomas que geram saída compilada para implantação, certifique-se de compactar o conteúdo da pasta de saída que você planeja publicar e não toda a pasta do projeto. Quando o Functions extrai o conteúdo do arquivo zip, o host.json arquivo deve existir na raiz do pacote.

Utilização 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 executar a partir do pacote de implantação, exceto quando executado em 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 c:\home\data\SitePackages pasta (Windows) ou /home/data/SitePackages (Linux) tem um arquivo chamado packagename.txt. Este 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 c:\home\data\SitePackages pasta (Windows) ou /home/data/SitePackages (Linux).

Quando você define o valor de configuração do WEBSITE_RUN_FROM_PACKAGE aplicativo como 1, as APIs de implantação zip copiam seu pacote para a c:\home\data\SitePackages pasta (Windows) ou /home/data/SitePackages (Linux) em vez de extrair os arquivos para c:\home\site\wwwroot (Windows) ou /home/site/wwwroot (Linux). Ele também cria o packagename.txt arquivo. Depois que seu aplicativo de função é reiniciado automaticamente, 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. Para obter informações sobre como escrever funções defensivas e sem estado, sett Write funções para ser stateless.

Use 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 hospedado no Linux com um plano de consumo. Esta opção não é suportada no plano Flex Consumption .

Considerações para implantar a partir de uma URL

  • Não defina WEBSITE_RUN_FROM_PACKAGE = <URL> em aplicativos no plano Flex Consumption . Esta opção não é suportada.
  • Os aplicativos funcionais executados no Windows experimentam um ligeiro aumento no tempo de inicialização a frio quando o pacote de aplicativos é implantado em um ponto de extremidade de URL via WEBSITE_RUN_FROM_PACKAGE = <URL>.
  • 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.
  • Não implante seu pacote no Armazenamento de Blobs do Azure como um blob público. Em vez disso, use um contêiner privado com uma assinatura de acesso compartilhado (SAS) 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.
  • Quando estiver a executar um plano Dedicado, certifique-se de que ativa o Always On.
  • Você pode usar o Gerenciador de Armazenamento do Azure para carregar arquivos de pacote em 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. O procedimento a seguir é implantado em um contêiner no Armazenamento de Blob:

  1. Crie um pacote de .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 na lista de 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 Anônimo é 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, em seguida, selecione Carregar.

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

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

  9. Na sua aplicação de funções, expanda Definições e, em seguida, selecione Variáveis de ambiente.

  10. Na guia Configurações do aplicativo, selecione + Adicionar.

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

  12. Selecione Aplicar e, em seguida, selecione Aplicar e Confirmar para salvar a configuração e reiniciar o aplicativo de função.

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

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

Você pode configurar o Armazenamento de Blobs do Azure para autorizar solicitações com a ID do Microsoft Entra. Essa configuração significa que, em vez de gerar uma chave SAS com uma expiração, você pode confiar na identidade gerenciada do aplicativo. Por padrão, a identidade atribuída ao sistema do aplicativo é usada. Se desejar especificar uma identidade atribuída pelo usuário, você pode definir a configuração do WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID aplicativo para a ID de recurso dessa identidade. A configuração também pode ser aceita SystemAssigned como um valor, o que equivale a omitir a configuração.

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 Storage Blob Data Reader 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 WEBSITE_RUN_FROM_PACKAGE aplicativo para a URL de blob do pacote. Este URL é geralmente da forma https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package} ou similar.