Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
No Azure, podes executar as tuas funções diretamente a partir de um ficheiro de pacote de deployment na tua aplicação de funções. A outra opção é implantar os teus ficheiros no diretório c:\home\site\wwwroot (Windows) ou /home/site/wwwroot (Linux) da tua aplicação de funções.
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 implementações Azure Resource Manager.
- Reduz os tempos de arranque a frio, particularmente para funções JavaScript com grandes árvores de pacotes npm.
Permitir que as funções sejam executadas a partir de um pacote
As aplicações de função no plano de hospedagem Flex Consumption são executadas a partir de um pacote por padrão. Nenhuma configuração especial precisa ser feita.
Para permitir que o seu aplicativo de função seja executado de um pacote nos planos de alojamento Consumo, Elastic Premium e Dedicado (Serviço de Aplicações), adicione uma WEBSITE_RUN_FROM_PACKAGE definição à aplicação do seu aplicativo de função. A WEBSITE_RUN_FROM_PACKAGE configuração do aplicativo pode ter um dos seguintes valores:
| valor | Descrição |
|---|---|
1 |
Indica que a function app corre a partir de um ficheiro de pacote local instalado na pasta c:\home\data\SitePackages (Windows) ou /home/data/SitePackages (Linux) da tua function app. Esta é a opção padrão quando usas Funções do Azure Core Tools. |
<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. |
| Prémio | O 1 é recomendado. |
O 1 é recomendado. |
| Dedicado | O 1 é recomendado. |
O 1 é recomendado. |
Considerações gerais
- Não adicione a configuração da
WEBSITE_RUN_FROM_PACKAGEaplicação para as aplicações 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 implementar a sua aplicação de funções para Windows, deve definir
WEBSITE_RUN_FROM_PACKAGEpara1e publicar com deployment zip. - Quando você executa a partir de um pacote, a
wwwrootpasta é somente leitura e você recebe um erro se você gravar arquivos nesse diretório. Os ficheiros também são só de leitura no portal do Azure. - O tamanho máximo de um arquivo de pacote de implantação é de 1 GB.
- A implantação usa armazenamento temporário ao descompactar seus arquivos de projeto. Isso significa que seu aplicativo de função deve ter espaço de armazenamento temporário disponível suficiente para armazenar o conteúdo do seu pacote. Lembre-se de que o limite de armazenamento temporário para um plano de consumo é de 500 MB por plano. Para saber como resolver problemas com armazenamento temporário, veja Como resolver problemas de armazenamento temporário em Serviço de Aplicações do Azure.
- 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_PACKAGEaplicativo. Em vez disso, adicione a configuração do aplicativo de personalização deSCM_DO_BUILD_DURING_DEPLOYMENT=trueimplantação. Para Linux, adicione também aENABLE_ORYX_BUILD=trueconfiguração. Para obter mais informações, consulte Compilação remota.
Nota
A WEBSITE_RUN_FROM_PACKAGE definição da aplicação não funciona com MSDeploy como descrito em MSDeploy VS. ZipDeploy. Recebe um erro durante a implementaçã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. Pode criar manualmente um arquivo zip a partir do conteúdo de uma pasta de projeto Functions usando funcionalidades de compressão .zip incorporadas ou ferramentas não Microsoft.
O arquivo deve incluir o arquivo host.json na raiz da pasta extraída. A pilha de linguagens selecionada para a aplicação de funções cria outros requisitos:
- .NET (modelo de trabalhador isolado)
- .NET (modelo em processo)
- Java
- Javascript
- TypeScript
- PowerShell
- Python
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.
- Implantação Zip é a maneira recomendada de enviar um pacote de implantação para o seu site.
- Quando não estiver a usar deployment zip, certifique-se de que a pasta
c:\home\data\SitePackages(Windows) ou/home/data/SitePackages(Linux) tem um ficheiro chamadopackagename.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 em formato zip é uma funcionalidade do Serviço de Aplicações do Azure que permite implementar o seu projeto de aplicação de função no diretório wwwroot. O projeto é empacotado como um arquivo de implantação .zip. As mesmas APIs podem ser usadas para implementar o seu pacote na pasta c:\home\data\SitePackages (Windows) ou /home/data/SitePackages (Linux).
Quando defines o valor de definição da aplicação WEBSITE_RUN_FROM_PACKAGE para 1, as APIs de implementação do zip copiam o teu pacote para a pasta c:\home\data\SitePackages (Windows) ou /home/data/SitePackages (Linux) em vez de extraírem os ficheiros para c:\home\site\wwwroot (Windows) ou /home/site/wwwroot (Linux). Também cria o ficheiro packagename.txt. Depois que seu aplicativo de função é reiniciado automaticamente, o pacote é montado wwwroot como um sistema de arquivos somente leitura. Para mais informações sobre a implementação do zip, consulte Zip deployment para Funções do Azure.
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 sem estado e defensivas, defina as funções de escrita como sem estado.
Usar WEBSITE_RUN_FROM_PACKAGE = <URL>
Esta secção fornece informações sobre como executar o seu aplicativo de função a partir de um pacote implantado num local 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 configures
WEBSITE_RUN_FROM_PACKAGE = <URL>em aplicações no plano Flex Consumption. Esta opção não é suportada. - As aplicações funcionais a correr em Windows experienciam um ligeiro aumento no tempo de cold start quando o pacote de aplicação é implementado num endpoint 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 runtime das Functions deve ter permissões para aceder à URL do pacote.
- Não implementes o teu 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 um plano Premium, certifique-se de eliminar arrancos a frio.
- Quando estiver a executar um plano Dedicado, certifique-se de que ativa Always On.
- Podes usar Explorador de Armazenamento do Azure para carregar ficheiros de pacotes para contentores de blob na tua conta de armazenamento.
Carregar 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 seguinte é implementado num contentor no Armazenamento de Blobs:
Crie um pacote de .zip para o seu projeto usando o utilitário de sua escolha.
No portal Azure, procure o nome da sua conta de armazenamento ou procure-o na lista de contas de armazenamento.
Na conta de armazenamento, selecione Contêineres em Armazenamento de dados.
Selecione + Contentor para criar um novo contentor de Armazenamento de Blobs na sua conta.
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.
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.
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.
Pesquise pelo seu aplicativo de função ou procure por ele na página Aplicativo de função.
Na sua aplicação de funções, expanda Definições e, em seguida, selecione Variáveis de ambiente.
Na guia Configurações do aplicativo, selecione + Adicionar.
Introduza o valor
WEBSITE_RUN_FROM_PACKAGEpara o Name, e cole o URL do seu pacote em Armazenamento de Blobs para o Value.Selecione Aplicar e, em seguida, selecione Aplicar e Confirmar para salvar a configuração e reiniciar o aplicativo de função.
Agora pode executar a sua função no Azure para verificar se a implementação do pacote de ficheiro .zip de implementação foi bem-sucedida.
Obter um pacote do Armazenamento de Blobs do Azure usando uma identidade gerida
Pode configurar Armazenamento de Blobs do Azure para autorizar pedidos com Microsoft Entra ID. 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 aceitar SystemAssigned como um valor, o que equivale a omitir a configuração.
Para permitir que o pacote seja buscado usando a identidade:
Verifique se o blob está configurado para acesso privado.
Atribua à identidade a função Storage Blob Data Reader com âmbito sobre o blob do pacote. Consulte Atribuir uma função do Azure para acesso a dados de blobs para detalhes sobre como criar a atribuição de função.
Defina a configuração da
WEBSITE_RUN_FROM_PACKAGEaplicação para a URL de blob do pacote. Este URL é geralmente da formahttps://<storage-account-name>.blob.core.windows.net/<container-name>/<path-to-package>ou similar.Se desejar especificar uma identidade atribuída pelo usuário, você pode definir a configuração do
WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_IDaplicativo para a ID de recurso dessa identidade. A definição também pode aceitar SystemAssigned como valor, embora isto seja o mesmo que omitir a definição por completo. Um ID de recurso é uma representação padrão para um recurso no Azure. Para uma identidade gerida atribuída pelo utilizador, isso será/subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name. O ID de recurso de uma identidade gerida atribuída a um utilizador pode ser obtido em Definições>Propriedades>ID para a identidade gerida atribuída pelo utilizador.